제가 핸드폰의 (가속도)센서값을 pc로 tcp/ip 통신으로 보내려고합니다.
처음에는 자꾸 변화하는 센서값을 버튼을 누른 순간의 값을 보내는 것 까진 성공했는데,
그 다음 문제인 계속 변화하는 값 자체를 보내는 걸 어찌하나 고민하다가, 버튼을 누르고 있는 동안 값이 보내지게끔 설정하려합니다.
제가 이 분야에 처음이라, 코딩 하는게 뭔지 잘 몰라서.. 되는대로 하는데,, 어떻게해야할지...
public class TCPsoketTest extends Activity implements SensorEventListener {
/** Called when the activity is first created. */
Socket socket;
SensorManager sensorManager = null;
TextView outputX2;
TextView outputY2;
TextView outputZ2;
float azimuth;
float pitch;
float roll;
private String return_msg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
outputX2 = (TextView) findViewById(R.id.X2);
outputY2 = (TextView) findViewById(R.id.Y2);
outputZ2 = (TextView) findViewById(R.id.Z2);
//final EditText et = (EditText)findViewById(R.id.EditText01);
Button btn1 = (Button)findViewById(R.id.Button01);
Button btn2 = (Button)findViewById(R.id.Button02);
//btn.performClick();
final TextView tv = (TextView)findViewById(R.id.TextView01);
btn1.setOnClickListener(new OnClickListener(){
public void onClick(View v){
// if(et.getText().toString() != null || !et.getText().toString().equals("")){
//TCPclient tp = new TCPclient(et.getText().toString());
if( outputX2.getText().toString() != null || !outputX2.getText().toString().equals("")){
TCPclient tp = new TCPclient(outputX2.getText().toString());
tp.run();
Toast t = Toast.makeText(getApplicationContext(), return_msg, Toast.LENGTH_LONG);
t.show();
tv.setText(return_msg);
}
}
});
btn2.setOnClickListener(new OnClickListener(){
public void onClick(View v){
try{
socket.close();
socket = null;
}catch (Exception e){
}
}
});
}
private class TCPclient implements Runnable {
private static final String serverIP = "123.4567.8";
private static final int serverPort = 7766; // ex: 5555
private String msg;
//private String return_msg;
public TCPclient(String _msg){
this.msg = _msg;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
if(socket == null)
{InetAddress serverAddr = InetAddress.getByName(serverIP);
Log.d("TCP", "C: Connecting...");
socket = new Socket(serverAddr, serverPort);}
try {
Log.d("TCP", "C: Sending: '" + msg + "'");
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(msg);
Log.d("TCP", "C: Sent.");
Log.d("TCP", "C: Done.");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
return_msg = in.readLine();
Log.d("TCP", "C: Server send to me this message -->" + return_msg);
} catch(Exception e) {
Log.e("TCP", "C: Error1", e);
}
} catch (Exception e) {
Log.e("TCP", "C: Error2", e);
}
}
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), sensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
super.onStop();
sensorManager.unregisterListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION));
}
.
.
.
.
.
}
분명히 thread에서 잘못한 거 같은데,, 아무튼 버튼을 누르는동안 저 동작이 실행되게끔 어찌하는지..ㅜㅜㅜㅜ