android 返回桌面的广播,Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能...

由于项目没有设计返回键,一旦进入别的应用,就无法回到桌面。只能通过串口输入input keyevent 4(返回键)来返回桌面,为了方便调试,在Framework 中监听手势,实现返回功能。

在frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager中有这么一段代码

mSystemGestures = new SystemGesturesPointerEventListener(context,

new SystemGesturesPointerEventListener.Callbacks() {

@Override

public void onSwipeFromTop() {

Log.i("gyx","onSwipeFromTop");

if (mStatusBar != null) {

requestTransientBars(mStatusBar);

}

}

@Override

public void onSwipeFromBottom() {

Log.i("gyx","onSwipeFromBottom");

if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_BOTTOM) {

requestTransientBars(mNavigationBar);

}

}

@Override

public void onSwipeFromRight() {

Log.i("gyx","onSwipeFromRight");

sendKeyCode(4);

Log.i("gyx","sendKeyCode 4");

if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_RIGHT) {

requestTransientBars(mNavigationBar);

}

}

@Override

public void onSwipeFromLeft() {

Log.i("gyx","onSwipeFromLeft");

if (mNavigationBar != null && mNavigationBarPosition == NAV_BAR_LEFT) {

requestTransientBars(mNavigationBar);

}

}

@Override

public void onFling(int duration) {

if (mPowerManagerInternal != null) {

mPowerManagerInternal.powerHint(

PowerHint.INTERACTION, duration);

}

}

@Override

public void onDebug() {

// no-op

}

@Override

public void onDown() {

mOrientationListener.onTouchStart();

}

@Override

public void onUpOrCancel() {

mOrientationListener.onTouchEnd();

}

@Override

public void onMouseHoverAtTop() {

mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);

Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);

msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS;

mHandler.sendMessageDelayed(msg, 500);

}

@Override

public void onMouseHoverAtBottom() {

mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);

Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);

msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION;

mHandler.sendMessageDelayed(msg, 500);

}

@Override

public void onMouseLeaveFromEdge() {

mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);

}

});

代码中监听了手势操作,其中onSwipeFromRight()就是当从屏幕的右侧向左滑动时会触发,只要在这里加入返回的功能即可;

实现返回按键的功能代码如下

private void sendKeyCode(final int keyCode) {

new Thread(new Runnable() {

@Override

public void run() {

try {

// 创建一个Instrumentation对象

Instrumentation inst = new Instrumentation();

// 调用inst对象的按键模拟方法

inst.sendKeyDownUpSync(keyCode);

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}

总结

到此这篇关于Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能的文章就介绍到这了,更多相关Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-04-13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值