Android Wear 应用程序在注册传感器侦听器时崩溃
Android Wear App Crashes when Register a Sensor Listener
我正在尝试为 Android Wear 创建计步器应用程序。我的问题是当我注册传感器侦听器时
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
应用程序崩溃,但如果我删除上面的代码,应用程序可以正常工作,但该死的是,传感器侦听器不起作用,所以我怎样才能让它工作,这是代码
public class WearMainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mStepDetectorSensor;
TextView stepNum;
int steps = 12;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wear_main);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
stepNum = (TextView) findViewById((R.id.stepNum));
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
}
});
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
stepNum.setText(String.valueOf(steps));
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
protected void onStop() {
super.onStop();
mSensorManager.unregisterListener(this,mStepDetectorSensor);
}
}
您应该在 onResume 方法中声明这两个变量:
protected void onResume() {
super.onResume();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
并在 onPause
中注销传感器
我正在尝试为 Android Wear 创建计步器应用程序。我的问题是当我注册传感器侦听器时
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
应用程序崩溃,但如果我删除上面的代码,应用程序可以正常工作,但该死的是,传感器侦听器不起作用,所以我怎样才能让它工作,这是代码
public class WearMainActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mStepDetectorSensor;
TextView stepNum;
int steps = 12;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wear_main);
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
stepNum = (TextView) findViewById((R.id.stepNum));
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
}
});
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {
stepNum.setText(String.valueOf(steps));
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
protected void onStop() {
super.onStop();
mSensorManager.unregisterListener(this,mStepDetectorSensor);
}
}
您应该在 onResume 方法中声明这两个变量:
protected void onResume() {
super.onResume();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
并在 onPause
中注销传感器