2011-07-26 12 views
4

私のアプリは、いくつかの操作にTelephonyManager.ACTION_PHONE_STATE_CHANGEDを使用しています。しかし、私は、ユーザーが存在していたとき(画面がオン)に電話が鳴っていて、ユーザーがいないとき(画面がオフだったとき)に別のアクションが必要です。私はonReceiveのちょうど始めにisScreenOn()メソッドを試しました(スクリーンがオフで、着信があったので、しばらく画面が消えていたからです)。運がない - 時にはうまくいく、時にはうまくいかない。放送はどのようにコールが到着したときに電話が眠っていた場合、本当に判断するために自分のコードを変更することができ...着信中に画面のオン/オフを区別する方法は?

public void onReceive(Context context, Intent intent) { 
    pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    Boolean screenOn = pm.isScreenOn(); 
    Log.w(TAG, "Screen on is " + screenOn.toString()); 

画面状態とは非同期のですか?画面がロックされている場合

public void onReceive(Context context, Intent intent) { 
    KeyguardManager kg = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    Boolean screenBlocked = !kg.inKeyguardRestrictedInputMode(); 
    Log.w(TAG, "Screen lock is " + screenBlocked.toString()); 

そのような解決策は、情報を提供します:

答えて

1

[OK]を、私は私を満足させる答えを得ました。そして、私の場合、着信中に画面がロックされていれば、ユーザーがいないことを意味します。

+0

こんにちは、私はあなたの助けが必要です。画面のロックが偽または真の場合、私はデバイスの画面を切り替える必要があります、あなたは私を助けることができますか? –

関連する問題