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