因此,我正在为一个带有安卓系统的类做一个项目,其中我们使用了虚拟传感器计步器,但我们有这个错误:“SensorListener is null”。
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);
}发布于 2016-04-05 01:24:08
你能在初始化stepDetector, accelerometer, magnetometer的地方分享你的代码吗?
一些基本关键点是:
1)您的类必须实现SensorEventListener及其所有方法:
public class myClass implements SensorEventListener{ }2)然后,您必须初始化要使用的传感器,如下所示:
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 it4)最后使用此命令取消注册:
mSensorManager.unregisterListener(this, accelerometer);希望这能有所帮助
https://stackoverflow.com/questions/36408433
复制相似问题