【问题标题】:Is it possible to determine whether an Android device is plugged into a computer or just power?是否可以确定 Android 设备是插入计算机还是只是电源?
【发布时间】:2011-10-05 13:19:24
【问题描述】:

我想知道是否有可能专门确定 Android 设备是插入计算机还是只是电源。

主要原因是我希望我的手机在我开发过程中插入计算机时“保持清醒”,而不是当它每晚插入电源插座时。

我在想,如果我能知道我连接的是什么,我可以使用 ACTION_POWER_CONNECTED 来启动服务并检查我连接的 USB。

【问题讨论】:

标签: android android-intent


【解决方案1】:

首先您需要注册一个接收器来收听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

【讨论】:

    【解决方案2】:

    我实际上找到了选择在插入 AC、USB 时是否保持屏幕开启的确切方法,或者通过查看源代码 http://google.com/codesearch#409TP6F96yI/src/com/android/settings/DevelopmentSettings.java&l=95

    需要权限: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);
    

    交流电:BatteryManager.BATTERY_PLUGGED_AC

    对于 USB:BatteryManager.BATTERY_PLUGGED_USB

    对于任何一个:(BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB)

    【讨论】:

      【解决方案3】:

      好吧,如果它已连接到电源并且您希望它进入睡眠状态,只需短按POWER 按钮即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        相关资源
        最近更新 更多