连续线程来监视硬件接近传感器
问题描述:
我将如何去实现贯穿整个应用程序的线程。我看过服务,但我很确定这不是我想要的。即使应用程序已关闭,我也不希望线程不断检查。我只想在应用程序的后台运行一个线程(即使我在活动之间切换),以便持续检查用户是否将电话抬到了他/她的耳边。如果用户那么它会执行一个动作。这样的事情的任何例子?连续线程来监视硬件接近传感器
答
您不需要此线程或服务。请参阅SensorManager的Android API文档中的示例。另外,请参阅下面的示例:
public class SensorActivity extends Activity, implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mSensor;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
// TODO: implement your action here.
}
}
答
这是最好的服务。在您的活动开始时绑定到服务,并在活动完成时解除绑定。该服务应该在绑定时开始监听,并在从未绑定时停止。
现在在此服务中,我将运行一个线程来检查传感器?如果它识别出这个动作,然后执行某个任务? – 2011-06-13 19:39:56
您不需要运行线程来管理这个线程,只需在加速度计传感器服务上注册一个监听器即可。如果您使用Google SENSOR_ACCELEROMETER,可以使用各种示例(检测不同的动作类型 - 主要是摇动)。 – mah 2011-06-13 20:28:09