1

ユーザーが電源キーを 2 回または 3 回連続して押すタイミングを知る必要があります。ただし、ユーザーがアプリケーションを使用していない場合は、ホーム画面で、または他のアプリケーションを使用していると言えます。

サービスではなくアクティビティで電源キーのリスナーイベントを取得しています。

   @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(KeyEvent.KEYCODE_POWER == event.getKeyCode()){

        Log.e("POWER", "pow");
          return true;//If event is handled, falseif 

    }
    return super.onKeyDown(keyCode, event);
}

ユーザーがアクティビティの外で電源ボタンを押したかどうかを知るにはどうすればよいですか?

4

1 に答える 1

3

アプリケーションから電源ボタンの押下をオーバーライドすることはできません。ただし、電源ボタンを押すと、画面がオン/オフになります。したがって、ブロードキャストレシーバーを使用してこれを検出できます

<receiver android:name=".MyBroadCastReciever">
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_OFF"/>
        <action android:name="android.intent.action.SCREEN_ON"/>
    </intent-filter>
</receiver>

および放送受信機クラス

public class MyBroadCastReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //Take count of the screen off position
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            //Take count of the screen on position
        }
    }
}

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

于 2013-10-09T05:55:39.377 に答える