Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 9中按下电源按钮的时间有多长_Android - Fatal编程技术网

Android 9中按下电源按钮的时间有多长

Android 9中按下电源按钮的时间有多长,android,Android,你好,我正在尝试检测android p中的长按电源按钮, 但是,经过几次尝试,我还是没能得到它 我以下这条线索作为参考: 我实现的代码如下所示: 活动 public类MainActivity扩展了AppCompatActivity{ 按钮btn; 公共最终静态int请求_代码=10101; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout

你好,我正在尝试检测android p中的长按电源按钮, 但是,经过几次尝试,我还是没能得到它

我以下这条线索作为参考:

我实现的代码如下所示:

活动

public类MainActivity扩展了AppCompatActivity{
按钮btn;
公共最终静态int请求_代码=10101;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=findViewById(R.id.按钮);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(checkDrawOverlyPermission()){
startService(新意图(MainActivity.this、PowerButtonService.class));
}
}
});
}
公共布尔值checkDrawOverlypermission(){
if(Build.VERSION.SDK_INT
服务

public类PowerButtonService扩展服务{
公共电源按钮服务(){
}
@凌驾
public void onCreate(){
super.onCreate();
LinearLayout mLinear=新的LinearLayout(getApplicationContext()){
//主页或最近的按钮
公共void onCloseSystemDialogs(字符串原因){
如果(“全球行动”。等于(理由)){
Log.i(“按键”,“长按电源按钮”);
}否则,如果(“homekey.”等于(原因)){
//按home键
}else if(“recentapps”.equals(reason)){
//最近的应用程序按钮已单击
}
}
@凌驾
公共布尔dispatchKeyEvent(KeyEvent事件){
如果(event.getKeyCode()==KeyEvent.KEYCODE\u返回
||event.getKeyCode()==KeyEvent.KEYCODE\u VOLUME\u UP
||event.getKeyCode()==KeyEvent.KEYCODE\u音量\u下降
||event.getKeyCode()==KeyEvent.KEYCODE\u摄像机
||event.getKeyCode()==KeyEvent.KEYCODE\u电源){
Log.i(“Key”、“keycode”+event.getKeyCode());
}
返回super.dispatchKeyEvent(事件);
}
};
mLinear.setFocusable(真);
查看mView=布局更平坦。从(此)开始。充气(R.layout.activity\u service\u layou,mLinear);
WindowManager wm=(WindowManager)getSystemService(窗口服务);
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.O){
LAYOUT_FLAG=WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
}否则{
//LAYOUT_FLAG=WindowManager.LayoutParams.TYPE_PHONE;
LAYOUT_FLAG=WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
}
WindowManager.LayoutParams params=新建WindowManager.LayoutParams(
100,
100,
WindowManager.LayoutParams.WRAP_内容,
WindowManager.LayoutParams.WRAP_内容,
布图(u)旗,,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_model
|WindowManager.LayoutParams.FLAG\u不可聚焦
|WindowManager.LayoutParams.FLAG_全屏显示
|WindowManager.LayoutParams.FLAG\u布局在屏幕中
|WindowManager.LayoutParams.FLAG_保持屏幕_打开,
像素格式(半透明);
params.gravity=gravity.LEFT | gravity.CENTER_VERTICAL;
wm.addView(mView,params);
}
@凌驾
公共IBinder onBind(意向){
返回null;
}
}
清单


服务布局



在装有Android 9的摩托罗拉Moto One上运行此代码,我可以毫无问题地检测到按钮电源,但是在装有Android 9的三星Galaxy A10上运行相同的应用程序,但它没有检测到电源按钮。

因为在安卓p中,onCloseSystemDialogs功能不起作用。此外,如果屏幕关闭,无论Android P还是其他系统,此功能都不起作用。

因为在Android P中,onCloseSystemDialogs功能不起作用。此外,如果屏幕关闭,无论Android P或其他系统,此功能都无法工作