9

電話が黒い画面モードから復帰したことを検出し、そのイベントのハンドラーを作成する方法を見つけたいと思います。それは可能ですか?これは、ブロードキャスト レシーバーが処理する必要があるように思えますか? または、より良い、またはより適切な方法はありますか?

4

3 に答える 3

3

アクティブなサービスがある場合は、これらのイベントをキャッチできます

registerReceiver(new BroadcastReceiver() {

  @Override
  public void onReceive(Context context, Intent intent) {
    // do something
  }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));

ただし、これは永続的に実行されているサービスに依存しており、最近知ったサービスは脆弱であり (OS はそれらを閉じるのが好き)、リソースを永続的に使用するため、お勧めできません。

残念なことに、マニフェストに SCREEN_ON イベントをインターセプトするレシーバーを含めることはできないようです。

これはごく最近出てきました:

android.intent.action.SCREEN_ON がレシーバー インテント フィルターとして機能しない

また

Android - ブロードキャスト インテント ACTION_SCREEN_ON/OFF を受信する方法は?

于 2010-04-05T07:24:10.280 に答える
3

ユーザーがデバイスのロックを解除したときの USER_PRESENT ブロードキャスト インテントをキャッチするブロードキャスト レシーバーを使用することもできます。当然のことながら、Honeycomb のいくつかのバージョンはこれを尊重しませんが、Android のすべての非脳死バージョン (2.x および 4.x) ではうまく機能します。

于 2012-06-20T00:05:23.653 に答える
0

あなたは放送受信機にいます。SCREEN_ONおよびSCREEN_OFFブロードキャストイベントを聞くことができます。

于 2010-04-05T07:26:51.833 に答える