I was wondering if it was possible to specifically determine if an Android device was plugged into a computer or just power.
The main reason is I\'d like for my phon
I actually found the exact way to choose whether to keep the screen on when plugged into AC, USB or either by looking into the source at http://google.com/codesearch#409TP6F96yI/src/com/android/settings/DevelopmentSettings.java&l=95
Requires permission: 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);
For AC: BatteryManager.BATTERY_PLUGGED_AC
For USB: BatteryManager.BATTERY_PLUGGED_USB
For Either: (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB)
First you need to register a receiver to listen to Intent.ACTION_BATTERY_CHANGED
and check for the BatteryManager.BATTERY_PLUGGED_USB
. Below is the code to do so:
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);
You also need the permission in your AndroidManifest.xml to enable staying awake
<uses-permission android:name="android.permission.WAKE_LOCK" />
One other note, at some point you will need to unregister the receiver. You could provide that via settings page to call unregisterReceiver
Well, if it's connected to the power supply and you want it to go to sleep just short press the POWER
button.