1

電話を振ると画面をロックするアプリを実行しています。画面をオフにするコードを書きましたが、問題は、画面がオフかオンかをチェックするブロードキャストレシーバーが必要なことです。どうすればよいですか?

4

2 に答える 2

3

特定の瞬間に画面がオフかオンかを確認する必要がある場合は、これが良い方法です。受信者を登録する必要はありません

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
if (!isScreenOn) {//lock screen
   //do something
}

画面が消えるたびに聞きたい場合は、レシーバーを登録する必要があります。Intent.ACTION_SCREEN_OFF と Intent.ACTION_SCREEN_ON については、Android マニフェストで宣言することはできませんが、JAVA コードの IntentFilter に登録する必要があり、権限を追加する必要はありません。

public class ScreenReceiver extends BroadcastReceiver {

    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
            wasScreenOn = true;
        }
    }

}

次に、アクティビティの onCreate にレシーバーを登録します

  @Override
    protected void onCreate() {
       //your code
        BroadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver, filter);            
    }

アクティビティの onDestroy で登録を解除します

 @Override
    protected void onDestroy() {
       //your code
        unregisterReceiver(mReceiver);         

    }

これがお役に立てば幸いです。

于 2013-01-16T07:19:50.473 に答える
0

このリンクを願っています

これは、Androidで画面がオフになっている場合にBroadCastReciever呼び出しを実装するためのより良い方法に役立ちます。

編集

次のように、マニフェストに権限を追加する必要があります。

<receiver android:name=".MyBroadCastReciever">
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_OFF"/>
        <action android:name="android.intent.action.SCREEN_ON"/>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
于 2013-01-16T05:23:00.737 に答える