2012-02-12 59 views
0

我正试图在Android 2.2上创建一个应用程序,该应用程序必须运行,无论屏幕处于打开状态还是关闭状态。让我的应用程序保持活着 - Android

我试着通过服务实现它,但是当我的手机关闭服务停止工作的屏幕,我不明白为什么。

在我的应用程序使用

startService(new Intent(this, MyService.class)); 

当用户按下一个按键

Notification notification = new Notification(); 
startForeground(1, notification); 
在服务类

的OnCreate法

(我试过它也在onStart()方法中)

(我也找不到什么startForeground()的id场预期,所以我用1)

然后服务应该启动手机的无限振动模式,所以我知道它是否正在运行或不。 但是,当我关掉屏幕,手机立即停止振动

请帮助我。我不知道我怎么能解决这个问题(和谷歌是不是一个很大的帮助)

真诚 捷思

+0

当它暂停或关闭时,是否从活动调用stopService? – 2012-02-12 09:15:02

回答

1

Android设备进入睡眠模式,当空闲时(例如,当屏幕关闭),为了保存电池。

要保持服务正常运行,您需要获得WakeLock。有很多教程如何使用它,如this one

请注意,使服务始终运行将耗尽您的电池。当不需要时也绝对确保释放唤醒锁,否则你的手机将永远处于清醒状态。

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" /> 

所以,当您的通知或报警管理器服务运行时,屏幕会亮上和键盘锁将解锁。我希望它也适用于谁有这个问题。