1
我曾希望實現一個可以處理與傳感器相關的所有事件的類,但這顯然需要我啓動一項新的活動。實用程序活動 - SensorManager
我不想這樣做 - 只是運行計算。使用服務處理此問題的最佳方法是,可以從服務調用活動方法嗎?
我曾希望實現一個可以處理與傳感器相關的所有事件的類,但這顯然需要我啓動一項新的活動。實用程序活動 - SensorManager
我不想這樣做 - 只是運行計算。使用服務處理此問題的最佳方法是,可以從服務調用活動方法嗎?
完全可以創建一個類 - 這不是一個活動 - 管理傳感器。你是對的,爲了「訂閱」傳感器,你需要一個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」實例,並可以從加速度計中獲取最後一個度量。
如果您的方法是靜態的,您可以從服務調用活動方法 – itsrajesh4uguys