Android 11 定制系统全局监听触摸事件接口
Posted 青春给了狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11 定制系统全局监听触摸事件接口相关的知识,希望对你有一定的参考价值。
1.定义创建aidl接口(由于需要回调这里优先需要增加一个回调接口 )
frameworks\\base\\core\\java\\android\\app\\IOnTouchListener.aidl
package android.app;
oneway interface IOnTouchListener
void onTouchEvent( int action);
2.新增调用接口 在 base/core/java/android/view/IWindowManager.aidl
修改如下:
import android.app.IOnTouchListener;
...
void registerIOnTouchListener(IOnTouchListener touchListener);
void unregisterIOnTouchListener();
3.剩下就是在frameworks\\base\\services\\core\\java\\com\\android\\server\\wm\\WindowManagerService.java
中修改 也是最重要的一步
新增两个实现方法 :
@Override
public void registerIOnTouchListener(IOnTouchListener touchListener )
this.touchListener = touchListener ;
pointerEventListener = new PointerEventListener()
@Override
public void onPointerEvent(MotionEvent motionEvent)
if (ydTouchListener != null)
try
touchListener .onTouchEvent(motionEvent.getAction());
catch(RemoteException e)
Slog.e(TAG, "RemoteException: onTouchEvent " );
;
registerPointerEventListener(pointerEventListener, Display.DEFAULT_DISPLAY);
@Override
public void unregisterIOnTouchListener()
if (touchListener != null) touchListener = null;
if (pointerEventListener != null)
unregisterPointerEventListener(pointerEventListener, Display.DEFAULT_DISPLAY);
pointerEventListener=null;
4.上层APP调用:
//全局监听触摸事件 try WindowManagerGlobal.getWindowManagerService().registerIOnTouchListener(new IOnTouchListener.Stub() @Override public void onTouchEvent(int action ) Log.d("lmj","action :"+action); ); catch (Exception e) e.printStackTrace();
全局监听接口定制就实现完成!!
由于此版本是针对Android11 做的定制!!其他版本可以有差异
觉得我写的好的兄弟 帮忙点个赞!!!
谢谢!!你们的肯定是我写下去的动力!!!!!!
以上是关于Android 11 定制系统全局监听触摸事件接口的主要内容,如果未能解决你的问题,请参考以下文章