Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Wear应用程序在注册传感器侦听器时崩溃_Java_Android_Android Studio_Wear Os - Fatal编程技术网

Java Android Wear应用程序在注册传感器侦听器时崩溃

Java Android Wear应用程序在注册传感器侦听器时崩溃,java,android,android-studio,wear-os,Java,Android,Android Studio,Wear Os,我正在尝试为Android Wear创建一个步进计数器应用程序。我的问题是当我注册一个传感器侦听器时 protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_FASTEST); } 应用程序崩溃,但如果我删除了上面的代码,应用程序工作,但传感器侦听器不工作,那么我如何才能使其工作,这是代码

我正在尝试为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中注销传感器

非常感谢您让我开心