我正在尝试在Android 2.2上创建一个必须运行的应用程序,无论屏幕是打开还是关闭。
我尝试通过服务实现它,但是当我的手机关闭屏幕时,服务停止工作,我不明白为什么。
在我的应用程序中,我使用
startService(new Intent(this, MyService.class));
当用户按下按钮时
和
Notification notification = new Notification();
startForeground(1, notification);
在服务类的onCreate-Method
中(我也在onStart()方法中尝试过它)
(我也无法找出startForeground()所期望的id-field所以我使用了1)
然后服务应该启动手机的无限振动模式,以便我知道它是否正在运行。 但是当我关闭屏幕时,手机会立即停止振动
请帮帮我。我不知道如何解决这个问题(谷歌不是一个很大的帮助)
此致 ZED
答案 0 :(得分:1)
Android设备在空闲时(例如,当屏幕关闭时)进入睡眠模式,以节省电池电量。
要保持服务正常运行,您需要获取WakeLock。有很多教程如何使用它,比如this one。
请注意,让服务一直运行会耗尽电池电量。还要确保在不需要时释放唤醒锁,否则你的手机总是会醒着。
答案 1 :(得分:0)
尝试从'onStartCommand()'返回'START_STICKY'。这将使服务保持运行,必要时重新启动它,而不保持屏幕打开。
查看http://developer.android.com/reference/android/app/Service.html#START_STICKY
答案 2 :(得分:0)
试试这个
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire();
并在清单文件中
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
所以当你的通知或警报管理器服务运行时,屏幕会亮起,键盘锁将会解锁。我希望它能解决谁也遇到这个问题。