Android – 计算电源按钮单击和开始活动

我使用下面的代码,但没有找到解决方案。

MyReceiver.java:

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.v("onReceive", "Power button is pressed."); Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) .show(); } } 

MainActivity.java:

  import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

AndroidManifest.xml:

                   

但是我没有点击Power Button获得任何Toast消息。 请帮助我了解如何获得PowerButton点击次数,如果点击次数等于5,则转到另一种行为。 请帮助我实现这个目标?

尝试这个,

 public class MyReceiver extends BroadcastReceiver { static int countPowerOff=0; private Activity activity=null; public MyReceiver (Activity activity) { this.activity=activity; } @Override public void onReceive(Context context, Intent intent) { Log.v("onReceive", "Power button is pressed."); Toast.makeText(context, "power button clicked", Toast.LENGTH_LONG) .show(); if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { countPowerOff++; } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { if(countPowerOff==5) { Intent i =new Intent(activity,NewActivity.class); activity.startActivity(i); } } } 

和,

 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); MyReceiver mReceiver = new MyReceiver (this); registerReceiver(mReceiver, filter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

试试这个以获得电源按钮事件

  @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { return true; } return super.dispatchKeyEvent(event); }