2012-11-27 51 views
1

我曾希望實現一個可以處理與傳感器相關的所有事件的類,但這顯然需要我啓動一項新的活動。實用程序活動 - SensorManager

我不想這樣做 - 只是運行計算。使用服務處理此問題的最佳方法是,可以從服務調用活動方法嗎?

+0

如果您的方法是靜態的,您可以從服務調用活動方法 – itsrajesh4uguys

回答

1

完全可以創建一個類 - 這不是一個活動 - 管理傳感器。你是對的,爲了「訂閱」傳感器,你需要一個SensorManager。但是任何類都可以實例化SensorManager。

你可以想像一個類「mySensorClass」開頭是這樣的(想象你要收集來自加速度計的數據):

public class mySensorClass implements SensorEventListener { 
    public static final String TAG = "mySensorClass"; 

    private SensorManager mSensorManager; 
    private Sensor mAccelerometer; 

[...] 

然後,在構造函數中,你會實例化的SensorManager並註冊它:

public DeviceOrientation(Context context) { 
    mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} 

最後,你會使用方法儲存您從一個類變量加速度計接收數據:

@Override 
public void onSensorChanged(SensorEvent event) { ... } 

最終,您的活動只需創建一個「mySensorClass」實例,並可以從加速度計中獲取最後一個度量。

相關問題