我正在为平板电脑开发应用程序,这是一个汽车导航。我需要做的是-如果司机打开汽车,平板电脑打开屏幕,如果汽车关闭,显示是关闭的。我的第一个想法是让平板电脑插到汽车充电器上,如果检测到充电,就打开显示器。如果没有检测到充电,请关闭显示。App将以KIOSK模式运行。在屏幕关闭时检测充电状态的最佳方法是什么?
发布于 2022-11-15 13:22:26
这相当简单。
首先,您需要侦听充电状态的更改。可以通过以下方式做到这一点:
//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()方法:
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权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />希望能帮上忙!
https://stackoverflow.com/questions/74442173
复制相似问题