2017-12-07 12 views
0

私はハードウェアボタンの押下を検出しようとしています。デバイスがロックされたときに起動するBroadcastReceiverを作成しました。&がロックされていません。私はそれの後に立ち往生しています... どのような解決策? アンドロイドデバイスがロックされている間にハードウェアボタンの押下を検出します。

私のコードサンプル:

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

レシーバクラス:

public class UnlockReceiver extends BroadcastReceiver { 

     private String TAG = "UnlockReceiver"; 


     @Override 
     public void onReceive(final Context context, Intent intent) { 
      // Now I'm trying to detect power button 
      // press & long press while the device is locked 
     } 

    } 
+0

共有あなたのコード、それだけを検出 – Kuls

答えて

1
@Override 
protected void onPause() { 
super.onPause(); 

PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE); 
    boolean isScreenOn = false; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) 
     { 
     if (powerManager != null) 
      { 
      isScreenOn = powerManager.isInteractive(); 
      } 
    } 
    else 
     { 
     if (powerManager != null) 
     { 
      isScreenOn = powerManager.isScreenOn(); 
     } 
    } 

    if (!isScreenOn) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
      Intent startMain = new Intent(Intent.ACTION_MAIN); 
      startMain.addCategory(Intent.CATEGORY_HOME); 
      startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(startMain); 
     } 

     // The screen has been locked 

    } 
} 
+0

アプリがフォアグラウンドまたはバックグラウンドで今あるある:/ – cimac

+0

それはフォアグラウンドで検出し、 –

+0

ロックスクリーンの内側でフォアグラウンドにある間にハードウェアキーの押下を検出するには、どうすれば使用できますか? – cimac

関連する問題