Java Android服务使设备处于唤醒状态以接收串行端口命令
我正在用平板电脑(Asus MemoPad ME572C)制造一台汽车电脑。 我有一个arduino通过usb到串行适配器与平板电脑连接。现在我需要能够从待机状态打开屏幕 我尝试的是将其放在活动的oncreate中Java Android服务使设备处于唤醒状态以接收串行端口命令,java,android,serial-port,wakelock,Java,Android,Serial Port,Wakelock,我正在用平板电脑(Asus MemoPad ME572C)制造一台汽车电脑。 我有一个arduino通过usb到串行适配器与平板电脑连接。现在我需要能够从待机状态打开屏幕 我尝试的是将其放在活动的oncreate中 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManag
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_cause_WAKEUP),
“标签”);
wakeLock.acquire()
要释放屏幕锁定,请执行以下操作:
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文档:
如果这不起作用,您需要调查服务是否正在关闭。您应该能够通过调用服务上的startForeground()
来防止这种情况发生。有关说明和示例代码,请参阅