2016-04-04 8 views
0

私は仮想センサー歩数計を使用するAndroidのクラスのプロジェクトを行っていますが、このセンサーには "SensorListener is null"というエラーがあります。歩数計、SensorListenerはヌルです

private SensorManager mSensorManager; 
private Sensor stepDetector; 
private Sensor accelerometer; 
private Sensor magnetometer; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_step_monitor); 



    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    stepDetector = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); 
    accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 

protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, stepDetector, SensorManager.SENSOR_DELAY_FASTEST); // problem 
    mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI); 
    mSensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_UI); 
} 

protected void onPause() { 
    super.onPause(); 

    mSensorManager.unregisterListener(this); 
} 

答えて

2

stepDetector, accelerometer, magnetometerを初期化した場所でコードを共有できますか?

いくつかの基本的なキーポイントは次のとおりです。

:その後、あなたは次のように使用するセンサーを初期化する必要があります

public class myClass implements SensorEventListener{ } 

2):

1)あなたのクラスはSensorEventListenerとそのすべてのメソッドを実装する必要があります次のように

SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
Sensor accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) 

3)センサーを登録します

if(accelerometer!=null){ 
    mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} //you will get the sensor as null if phone does not have it 
登録解除のための

4)そして最後に使用この:

mSensorManager.unregisterListener(this, accelerometer); 

希望これは私が初期化して投稿を編集

+0

を支援 –