首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当检测到充电时,Android应用程序KIOSK模式打开显示

当检测到充电时,Android应用程序KIOSK模式打开显示
EN

Stack Overflow用户
提问于 2022-11-15 07:51:52
回答 1查看 29关注 0票数 0

我正在为平板电脑开发应用程序,这是一个汽车导航。我需要做的是-如果司机打开汽车,平板电脑打开屏幕,如果汽车关闭,显示是关闭的。我的第一个想法是让平板电脑插到汽车充电器上,如果检测到充电,就打开显示器。如果没有检测到充电,请关闭显示。App将以KIOSK模式运行。在屏幕关闭时检测充电状态的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-11-15 13:22:26

这相当简单。

首先,您需要侦听充电状态的更改。可以通过以下方式做到这一点:

代码语言:javascript
复制
//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()方法:

代码语言:javascript
复制
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权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.WAKE_LOCK" />

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74442173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档