繁体   English   中英

Java Android 服务保持设备唤醒以接收串口命令

[英]Java Android service keep device awake to receive serial port commands

我正在用平板电脑(华硕 MemoPad ME572C)创建车载电脑。 我有一个通过 USB 转串口适配器与平板电脑连接的 arduino。 现在我需要能够从待机状态打开屏幕。

我试过的是把它放在一个活动的oncreate中

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
    WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON        
);

这是有效的,但如果我离开平板电脑一分钟左右进入待机状态,我就无法再唤醒它。 看起来平板电脑已停止我的服务或只是不侦听串行端口。

我不知道如何调试或解决它。 希望你能帮忙。

PS:对不起,我的英语不是很好。

请注意,对于您使用的方法(WindowManager.LayoutParams 标志),您的活动需要全屏显示。

如果那不起作用试试这个答案。 这是一种折旧方法,因此您不想长期保留它。

引自@Yar:

唤醒屏幕:

 PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK |

PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "标记"); 唤醒锁。获取();

要解除屏幕锁定:

 KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG"); keyguardLock.disableKeyguard();

清单需要包含:

 <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

有关 PowerManager 的更多详细信息,请参阅 API 文档: http : //developer.android.com/reference/android/os/PowerManager.html

如果这不起作用,您需要调查该服务是否被关闭。 您应该能够通过在您的服务上调用startForeground()来防止这种情况发生。 有关说明和示例代码,请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM