我想知道是否可以明確確定Android設備是插入計算機還是電源。是否有可能確定Android設備是插入計算機還是電源?
最主要的原因是我想讓我的手機在開發過程中插入電腦時「保持清醒」,但不是在夜晚插入電源插座時。
我在想,如果我能分辨出我連接的是什麼,我可以使用ACTION_POWER_CONNECTED來啓動服務並檢查我連接的USB。
我想知道是否可以明確確定Android設備是插入計算機還是電源。是否有可能確定Android設備是插入計算機還是電源?
最主要的原因是我想讓我的手機在開發過程中插入電腦時「保持清醒」,但不是在夜晚插入電源插座時。
我在想,如果我能分辨出我連接的是什麼,我可以使用ACTION_POWER_CONNECTED來啓動服務並檢查我連接的USB。
我居然發現選擇是否通過查看源在http://google.com/codesearch#409TP6F96yI/src/com/android/settings/DevelopmentSettings.java&l=95
時保留插入AC,USB或放在畫面的確切方式需要權限: android.permission.WRITE_SETTINGS
Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN,
mKeepScreenOn.isChecked() ?
(BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);
對於AC:BatteryManager.BATTERY_PLUGGED_AC
對於USB:BatteryManager.BATTERY_PLUGGED_USB
對於:(BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB)
那麼,如果它連接到電源,並希望它進入睡眠狀態,只需短按POWER
按鈕即可。
首先,您需要註冊一個接收器才能收聽Intent.ACTION_BATTERY_CHANGED
並檢查BatteryManager.BATTERY_PLUGGED_USB
。下面是代碼這樣做:
BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
if (plugged == BatteryManager.BATTERY_PLUGGED_USB) {
Toast.makeText(getApplicationContext(), "Connected to USB, Stay Awake", Toast.LENGTH_LONG).show();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "WakeLock");
wl.acquire();
}
}
};
// register the receiver to listen to battery change
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, filter);
您還需要允許在AndroidManifest.xml中,以使保持清醒
<uses-permission android:name="android.permission.WAKE_LOCK" />
另外一個音符,在某些時候,你需要註銷接收器。你可以提供通過設置頁面調用unregisterReceiver
哇,這太棒了。這讓我很難過!你看過[BATTERY_PLUGGED_USB](http://developer.android.com/reference/android/os/BatteryManager.html#BATTERY_PLUGGED_USB)嗎? – Knickedi
重複的http://stackoverflow.com/questions/5547359/battery-charging-notification。那個問題有你的答案。 –
有一個[app](https://market.android.com/details?id=net.leppoc.android.dashboard)它已經做到了。謝謝你的提示。 – Knickedi