package com.example.mom;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
public class MainActivity extends Activity {
private String ip = "192.168.1.40"; // IP
private int port = 28000; // PORT번호
private Socket socket;
private DataOutputStream outStream;
private BufferedReader networkReader;
private BufferedWriter networkWriter;
static BufferedWriter bw ;
static BufferedReader in;
static DataInputStream dis;
ImageButton ib;
ImageButton ib2;
static Socket tcpSock = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this,Loading.class));
setContentView(R.layout.activity_main);
ib = (ImageButton)findViewById(R.id.menu_edit);
ib2 = (ImageButton)findViewById(R.id.menu_e);
//ib2.setEnabled(false);
}
public void pic(View v){
new AsTempTask().execute(4);
Intent intent = new Intent(this, Image.class);
Log.i("kk", "picture");
startActivity(intent);
}
public void play(View v){
//ib.setEnabled(false);
//ib2.setEnabled(true);
new AsTempTask().execute(2);
Log.i("kk", "play");
}
public void notplay(View v){
//ib.setEnabled(true);
//ib2.setEnabled(false);
Log.i("kk", "notplay");
new AsTempTask().execute(3);
}
public void setSocket(String ip, int port) throws IOException {
try {
socket = new Socket(ip, port);
Log.i("kk", "socket");
networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
outStream = new DataOutputStream(this.socket.getOutputStream());
//networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
System.out.println(e);
e.printStackTrace();
}
}
class AsTempTask extends AsyncTask<Integer, Integer, Long>{
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(Long result) {
//dialog.dismiss();
//RegisterActivity.lv.setAdapter(RegisterActivity.listAdapter);
//pb.setVisibility(0);
//pd.dismiss();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
//pb.setVisibility(1);
Log.i("kk", "pre");
//pd.show(Temperature.this, "", "Wait");
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
@Override
protected Long doInBackground(Integer... params) {
Log.i("kk", "Do");
long result = 0;
int a = params[0];
String ind = params[0].toString();
//Socket tcpSock = null;
Log.i("kk", "pre "+ ind);
//log.d("kk","a="+ params[0].toString());
//Log.d("dd", "a=" + a);
try {
Log.i("kk", "socket!");
tcpSock = new Socket(ip, port);
Log.i("kk", "socket!!!");
bw = new BufferedWriter(new OutputStreamWriter(tcpSock.getOutputStream()));
in = new BufferedReader(new InputStreamReader(tcpSock.getInputStream()));
Log.i("kk", "trans = " + ind);
bw.write(ind);
Log.i("kk", "transsss");
bw.flush();
//dis = new DataInputStream(MainActivity.tcpSock.getInputStream());
//Log.i("kk", "dis.read = " +MainActivity.dis.read(buff, 0, 30) +" "+ "dsdf = " + MainActivity.dis.read() + " dis.tostring = " + MainActivity.dis.toString());
// setSocket(ip, port);
//outStream.writeChars("d");
//PrintWriter out = new PrintWriter(networkWriter, true);
// Log.i("kk", "lgo");
//out.println(params[0].toString());
} catch (IOException e1) {
Log.i("kk", "socketFailed");
e1.printStackTrace();
}
/*
try {
tcpSock.close();
// Log.i("kk", "socketclose");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} */
return result;
}
}
}
여기 두잉 백그라운데에서요 bw.write를 하게 다음 액티비티에서는 bw.write하나만 먹고 다음에 오는 datainputstream이 안먹습니다.
지금 몇시간째 고민중인데 안되네요 좀 도와주세요 ㅠㅠ
메인에서 bw를 주석처리하면 문제없이 진행되는데 혹시 연속해서 bw를 사용해서 쓰면 인풋이 안먹나요?ㅠ