2012-02-10 47 views
2

アラームが設定されています。 WakeLock.acquire()KeyguardLock.disableKeyguard()を使用して、画面を起動して自分の活動を表示できます。しかし、私はダイアログを表示することを好むでしょう。私のHTCとサムスンのデバイスの内蔵アラームは、このように動作します。私はKeyguardLockオブジェクトでメソッドを見つけることを期待していましたが、私はこの方向で私を導いたドキュメントで何も見ませんでした。どのようにしてKeyguardLockをオンにすることができますか?内蔵のアラームと同じようにダイアログを表示します。ここでonCreate()目覚し画面とロック画面のダイアログを表示

KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
    keyguardLock = km.newKeyguardLock(KeyguardLockTag); 
    keyguardLock.disableKeyguard(); 

    final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    int flags = PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP; 
    wakeLock = pm.newWakeLock(flags, WakeLockTag); 
    wakeLock.acquire(); 
+0

解決策は見つかりましたか? – Behzad

+0

@Behzad私は説明したようにそれをやっていませんでしたが、今戻って(このスレッドは1歳以上です)、あなたは同じ結果を達成するためにダイアログのようにあなたの活動をスタイルすることができます。あなたがこれを行う方法に慣れていない場合は、Googleの "アンドロイドスタイルのアクティビティをダイアログとして"。これはマニフェストのActivity要素で簡単に実行できます。 – Rich

+0

はい、あなたは正しいです。ありがとう。 – Behzad

答えて

0

で実行される私の現在のコードはジャストでもロックであなたのデバイスの画面を覚ますために、これをしようとしています。

package android.taskscheduler; 

import android.app.IntentService; 
import android.content.Context; 
import android.content.Intent; 
import android.os.PowerManager; 

public abstract class WakeIntentService extends IntentService 
{ 
abstract void doReminderWork(Intent intent); 
public static final String LOCK_NAME_STATIC = "your_package_name"; 
private static PowerManager.WakeLock lockStatic = null; 

public static void acquireStaticLock(Context context){ 
    getLock(context).acquire(); 
} 

synchronized private static PowerManager.WakeLock getLock(Context context) 
{ 
    if(lockStatic == null) 
     { 
      PowerManager powManager = (PowerManager)  context.getSystemService(Context.POWER_SERVICE); 

    lockStatic = powManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, LOCK_NAME_STATIC); 
    lockStatic.setReferenceCounted(true); 
    } 
    return (lockStatic); 
} 
public WakeIntentService(String name) 
{ 
    super(name); 
} 
@Override 
     final protected void onHandleIntent(Intent intent) 
{ 
     try{ 
      doReminderWork(intent); 

     }finally 
    { 
     getLock(this).release(); 

     } 
    } 
} 
関連する問題