2011-06-13 55 views
2

我將如何去實現貫穿整個應用程序的線程。我看過服務,但我很確定這不是我想要的。即使應用程序已關閉,我也不希望線程不斷檢查。我只想在應用程序的後臺運行一個線程(即使我在活動之間切換),以便持續檢查用戶是否將電話擡到了他/她的耳邊。如果用戶那麼它會執行一個動作。這樣的事情的任何例子?連續線程來監視硬件接近傳感器

回答

5

您不需要此線程或服務。請參閱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. 
    } 
} 
1

這是最好的服務。在您的活動開始時綁定到服務,並在活動完成時解除綁定。該服務應該在綁定時開始監聽,並在從未綁定時停止。

+0

現在在此服務中,我將運行一個線程來檢查傳感器?如果它識別出這個動作,然後執行某個任務? – 2011-06-13 19:39:56

+1

您不需要運行線程來管理這個線程,只需在加速度計傳感器服務上註冊一個監聽器即可。如果您使用Google SENSOR_ACCELEROMETER,可以使用各種示例(檢測不同的動作類型 - 主要是搖動)。 – mah 2011-06-13 20:28:09