消息关闭
    暂无新消息!
package com.example.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Calendar;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity implements SensorEventListener {
    private TextView txt_r;
    private TextView txt_x;
    private TextView txt_y;
    private TextView txt_z;
    private Sensor sensor;
    private Socket socket;
    private Thread thread;
    private PrintWriter printwriter;
    private SensorManager sensormanager;
    private int mx,my,mz;
    private long time;
    private Calendar calendar;
    private void init(){
     txt_r=(TextView)findViewById(R.id.textView2);
     txt_x=(TextView)findViewById(R.id.tv1);
     txt_y=(TextView)findViewById(R.id.tv2);
     txt_z=(TextView)findViewById(R.id.tv3);
     sensormanager=(SensorManager)getSystemService(SENSOR_SERVICE);
     sensor=sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
     thread = new Thread(runnable);
    }
private void send(String Str) {
printwriter.print(Str);
printwriter.flush();
    }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
thread.start();
init();
sensormanager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuuracy) {
// TODO Auto-generated method stub

}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if(event.sensor==null){
txt_r.setText("sensor为空");
return;
}
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
int  x=(int)event.values[0];
int  y=(int)event.values[1];
int  z=(int)event.values[2];
txt_x.setText(String.valueOf(x));
txt_y.setText(String.valueOf(y));
txt_z.setText(String.valueOf(z));
if(x>-2&&x<2&&y>-2&&y<2&&z>7){
char ch[]=new char[]{0x30,0x30,0x00,0x00,0x34};
String str=new String(ch);
send(str);
}
if(x>-2&&x<2&&y>-10&&y<-5&&z>5){
char ch[]=new char[]{0x30,0x31,0x00,0x00,0x34};
String str=new String(ch);
send(str);
}
if(x>-2&&x<2&&y>-3&&y<-9&&z>4){
char ch[]=new char[]{0x30,0x32,0x00,0x00,0x34};
String str=new String(ch);
send(str);
}
if(x>5&&x<10&&y>-2&&y<2&&z>5){
char ch[]=new char[]{0x30,0x33,0x00,0x00,0x34};
String str=new String(ch);
send(str);
}
if(x>-10&&x<-5&&y>-2&&y<2&&z>5){
char ch[]=new char[]{0x30,0x34,0x00,0x00,0x34};
String str=new String(ch);
send(str);
}
}
}
Runnable runnable=new Runnable(){
public void run(){
try {
socket=new Socket("192.168.6.1",2001);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
};
}

7个回答

︿ 2
你在初始化的时候,新建了一个子线程去创建socket,你可以去查下是否是socket 新建异常导致的退出。
另外权限是否添加,你可以往这两个方面去查下原因。