9

私のアプリケーションでは、デバイスがいつロックされているかを知る必要があります(HTCでは「電源」ボタンを短く押すように見えます)。したがって、問題は、デバイスがロックされたときにどのイベントがトリガーされるかということです。または、デバイスはスリープ状態になりますか?

4

3 に答える 3

5

次のように、 拡張BroadcastReceiverして実装する必要があります。onReceive

public class YourBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) {
            //screen has been switched off!
        }
    }
}

次に、それを登録するだけで、画面がオフになっているときにイベントの受信を開始します。

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
appBroadcastReceiver = new AppBroadcastReceiver(yourActivity);
registerReceiver(appBroadcastReceiver, filter);
于 2011-05-31T11:06:17.330 に答える
3

より良い方法があります:

KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode()) {
 //it is locked
} else {
 //it is not locked
}
于 2011-12-29T13:45:00.027 に答える
0

上記の回答に加えて、アプリがフォアグラウンドにあるときに何らかのアクションをトリガーしたい場合:

onResume()というイベントを使用して、アプリが以前の休止状態からスポットライトを当てたとき、つまりアプリがバックグラウンド(一時停止/最小化...)にあったときに、独自の関数をトリガーできます。

protected void onResume()
{
    super.onResume();

    //call user-defined function here
}
于 2011-05-31T11:18:01.523 に答える