我正在开发平板电脑的应用程序,这是一个汽车导航。我需要做的是-如果司机打开汽车,平板电脑打开屏幕,如果汽车关闭,显示器关闭。我的第一个想法是保持平板电脑插入汽车充电器,如果检测到充电,打开显示器。如果没有检测到充电,关闭显示器。应用程序将在KIOSK模式下运行。屏幕关闭时检测充电状态的最佳方法是什么?
ijxebb2r1#
这很简单首先,您需要监听充电状态的变化。这可以通过以下方式完成:
//Create receiver BroadcastReceiver powerChangeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(Intent.ACTION_POWER_CONNECTED.equals(action)){ turnScreenOn(); } else if(Intent.ACTION_POWER_DISCONNECTED.equals(action)){ turnScreenOff(); } } }; //Register receiver IntentFilter i = new IntentFilter(); i.addAction(Intent.ACTION_POWER_CONNECTED); i.addAction(Intent.ACTION_POWER_DISCONNECTED); registerReceiver(powerChangeReceiver, i);
现在您需要做的就是实现turnScreenOn()和turnScreenOff()方法:
turnScreenOn()
turnScreenOff()
public void turnScreenOn(){ runOnUiThread(() -> { PowerManager pm = (PowerManager) getApplicationContext().getSystemService(POWER_SERVICE); @SuppressWarnings("deprecation") PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "example:tag"); wl.acquire(); }); } public void turnScreenOff(){ if(policyManager.isDeviceOwnerApp(getPackageName())) { runOnUiThread(() -> { policyManager.lockNow(); }); } }
不要忘记向清单添加WAKE_LOCK权限:
WAKE_LOCK
<uses-permission android:name="android.permission.WAKE_LOCK" />
希望能有所帮助!
1条答案
按热度按时间ijxebb2r1#
这很简单
首先,您需要监听充电状态的变化。这可以通过以下方式完成:
现在您需要做的就是实现
turnScreenOn()
和turnScreenOff()
方法:不要忘记向清单添加
WAKE_LOCK
权限:希望能有所帮助!