在Android设备上,只有按钮是音量按钮和电源按钮,我想让应用程序对按下电源按钮(长和短)做出反应.这是怎么做到的?
当我按下电源键时,屏幕关闭(完全黑暗),系统会破坏我的活动,然后重新创建它:
03-28 22:48:00.934: V/[BB](5809): [GameControl] onPause
03-28 22:48:01.444: V/[BB](5809): [GameControl] onDestroy
03-28 22:48:01.724: V/[BB](5809): [GameControl] onCreate
03-28 22:48:03.016: V/[BB](5809): [GameControl] onResume
03-28 22:48:03.016: V/[BB](5809): [GameControl] onPause
Run Code Online (Sandbox Code Playgroud)
这是因为我的活动具有固定方向(横向)并且锁定屏幕是纵向.
我通过设置固定的纵向方向测试了这个理论,但问题没有发生.我还检查了getResources().getConfiguration()值:
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=36}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=1 layout=17 uiMode=17 seq=37}
{ scale=1.0 imsi=724/31 loc=pt_BR touch=3 keys=2/1/1 nav=1/1 orien=2 layout=17 uiMode=17 seq=38}
Run Code Online (Sandbox Code Playgroud)
怎么可以避免呢?我不希望锁定屏幕破坏我的活动!
我正在制作一个Android应用程序,需要检测设备电源按钮事件按两次/三次并在后台发送短信.监听器应该在后台运行(即使我的应用程序未打开,它应该检测到按键事件并相应地采取行动).
以下是我尝试过的代码无效...
我的代码:
public class MyBroadCastReciever extends BroadcastReceiver {
int Count=0;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Count++;
if(Count==2){
//Send SMS code..
}
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
//This is for screen ON option.
}
}
Run Code Online (Sandbox Code Playgroud)
清单文件:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<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>
</application>
Run Code Online (Sandbox Code Playgroud) 我正在尝试按下电源按钮时听.最后,我希望在按两次电源按钮时运行一些代码,以检查屏幕是锁定还是解锁.我目前有这个:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_POWER:
{
Toast.makeText(getBaseContext(), "Power button pressed", Toast.LENGTH_LONG).show();
return true;
}
case KeyEvent.KEYCODE_MENU:
Toast.makeText(getBaseContext(), "Menu Button Pressed", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
该代码可以很好地为菜单keyevent干杯,但不会为电源键事件做任何事情.有任何想法吗?
在按下电话开始按钮的Android中执行以下操作在技术上是否可行.让我们说用户的手机已关闭.当用户按下开启按钮时,会发生以下情况:
目前,我试图找到手机的START BUTTON 的KeyCode但无法在log cat中获得任何响应.
import android.view.KeyEvent;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
Log.e("KeyCode", "KeyCode:" + keyCode);
Log.e("KeyEvent", "KeyEvent" + event);
return true;
}
Run Code Online (Sandbox Code Playgroud)
期待以精确的技术细节提供可靠的答案.谢谢