我假设你已经读过这个。
因此,您可以将 SensorEventListener 与 MainActivity 分开。您只需在 MainActivity 中正确注册您的侦听器(用您的 DataCollection 对象替换“this”):
mSensorManager.registerListener(yourDataCollectionObject, mLight, SensorManager.SENSOR_DELAY_NORMAL);
你还必须注销它:
mSensorManager.unregisterListener(yourDataCollectionObject);
它应该可以正常工作。
编辑:你可以这样尝试。
public class MainActivity extends Activity{
DataCollection mDataCollection = null;
@Override
public final void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDataCollection = new DataCollection(this);
}
@Override
protected void onResume(){
super.onResume();
mDataCollection.register();
}
@Override
protected void onPause(){
super.onPause();
mDataCollection.unregister();
}
}
public class DataCollection implements SensorEventListener{
private SensorManager mSensorManager;
private Sensor mLight;
public DataCollection(Context context){
mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1){
// TODO
}
@Override
public void onSensorChanged(SensorEvent arg0){
// TODO
}
public void register(){
mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
}
public void unregister(){
mSensorManager.unregisterListener(this);
}
}