我正在編寫一個程序,我能夠獲取光線傳感器值和當前電池電量,但只有光線值發生變化以及電池電量發生變化時。有沒有辦法隨時獲得這兩個值?就像用戶運行我的程序時一樣,我想立即獲取當前值,而不必等待它們改變。如何隨時爲Android獲取光線傳感器值和電池電量?
2
A
回答
2
如果你的代碼,以獲得的價值,當它改變時,你可以存儲在每一個變化的變量的值,並在剛更新的setter方法的變量。然後,無論何時您需要當前值,只需使用getter方法調用該變量即可。
所以,如果你的方法是這樣的
private void monitorBatteryState() {
BroadcastReceiver battReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
int health = intent.getIntExtra("health", -1);
int level = -1; // percentage, or -1 for unknown
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100)/scale;
}
setBatteryLevel(rawlevel); // setter method.
}
}
public void setBatteryLevel(rawlevel) {
batteryLevel = rawlevel;
}
public int getBatteryLevel() {
return rawlevel;
}
你可以有一個getter方法返回currentl電池電量,rawlevel
,並且可以爲光傳感器值做同樣的。
0
把這個在您的mainActivity: 這是不僅是因爲我看到別人發佈了有關電池電量的光傳感器值。
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
Sensor mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
//don't know if you can put lightSensorValue here, if not try adding it as a member field
final int lightSensorValue;
mSensorManager.registerListener(new SensorEventListener()
{
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
//do something when accuracy is changed, you probably don't need this
}
public void onSensorChanged(SensorEvent event)
{
lightSensorValue = event.values[0];
}
}, mLight, SensorManager.SENSOR_DELAY_NORMAL);
編輯:我再次閱讀你的問題,看到你想要手動隨時獲得它。那麼,只要價值被改變,這個值就會被更新,所以你總是得到最新的信息。
您可以嘗試將延遲更改爲SensorManager.SENSOR_DELAY_FASTEST
,並且刷新率會快很多。
相關問題
- 1. 如何獲取光線傳感器值
- 2. 獲取光傳感器值
- 3. 實時繪製光電池傳感器數據
- 4. 獲取電池電量
- 5. Android電池電量
- 6. Android - 傳感器讀數如何影響電池使用壽命
- 7. 當使用intent和BroadcastReceiver來獲取android電池電量時的怪異行爲
- 8. 如何獲取Android的傳感器值
- 9. Android攝像頭取光傳感器值
- 10. 使用服務獲取電池電量
- 11. SocketScan在Swift中獲取電池電量
- 12. Android線程和電池使用時間
- 13. Android的電池電量低
- 14. 電池電量不足。 Android行爲
- 15. 獲取電池充電時間
- 16. 獲取電池電壓
- 17. 線程和電池
- 18. Android硬件電池溫度,傳感器在哪裏?
- 19. 使用Android SDK僅獲取一次電池電量
- 20. 在android小部件中獲取電池電量
- 21. 在Android服務中使用BroadcastReceiver獲取電池電量
- 22. 在特定代碼後獲取Android上的電池電量
- 23. 當電池電量達到10%時開始/取消計時器
- 24. 如何在連接到BLE設備後獲取電池電量?
- 25. iOS:如何正確獲取電池電量
- 26. 如何從Arduino讀取電池電量,同時通過9v電池電池桶插孔
- 27. 如何檢測電池電量低時:Android?
- 28. 如何測量android手機電池的電流電壓和電流?
- 29. 如何使用光線傳感器
- 30. Android:獲取光傳感器的最大值
這對我不起作用,經過研究,我發現它有一些:在當前SDK中沒有android.os.SystemProperties。這是源代碼中僅供固件使用的類。 是否有任何其他方式獲得光傳感器值和電池電量而不用等待它改變? – John 2010-02-15 06:58:55
我更新了我的答案,如果在給定時間沒有* direct *方式返回值,那麼這是一種替代方法。 – 2010-02-15 14:17:28