在App层实现虚拟按键消息发送
来源:互联网 发布:officeim网络办公 编辑:程序博客网 时间:2024/06/18 04:55
在App层实现虚拟按键消息发送
分类: Android开发2011-07-18 16:55 3275人阅读 评论(4) 收藏 举报
buttonkeyboardimportservicesystem测试
继续上一篇文章的结果,做个测试程序。实现点击虚拟power键进入睡眠状态的功能。
为了简单直接用一个Button,点击Button,发送一个Power键的按键消息。且为短按。
实现的关键源码如下:
- import android.os.RemoteException;
- import android.os.SystemClock;
- import android.view.InputDevice;
- import android.view.KeyCharacterMap;
- import android.view.KeyEvent;
- import android.view.IWindowManager;
- public void onClick(View v) {
- long mDownTime = SystemClock.uptimeMillis();
- long when = mDownTime;
- final KeyEvent ev = new KeyEvent(mDownTime, when, KeyEvent.ACTION_UP, 26, 0,
- 0, -1, 0, KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY, InputDevice.SOURCE_KEYBOARD);
- IWindowManager mWindowManager = IWindowManager.Stub.asInterface(
- ServiceManager.getService(Context.WINDOW_SERVICE));
- try {
- mWindowManager.injectInputEventNoWait(ev);
- } catch (RemoteException ex) {
- }
按下Button的效果和短按Power键效果一样,会使机子进入睡眠状态。这也解决了 goToSleep()这个接口函数因为权限问题无法在App层调用的问题。其实就是发送了一个power键的键值消息,插入按键消息队列。这样收到这个按键消息的函数自动会处理响应这个按键。
注意:由于需要用到WindowManagerService.java中的接口函数,而该类是hide类型,即对SDK是不开放的。因此只能在源码环境下引用,或者其它方式如果也能引用的话那更好,比如反射。我是在源码环境下实现的。
0 0
- 在App层实现虚拟按键消息发送
- 在App层实现虚拟按键消息发送
- 在App层实现虚拟按键消息发送
- 在Service中发送按键消息
- VB实现向窗口发送按键消息
- Android: 发送虚拟按键
- 模拟按键发送消息
- Android发送虚拟按键(转)
- Android 模拟按键发送消息
- 以android状态栏虚拟按键消息为例学习在input系统插入按键消息的处理
- 隐藏虚拟按键的实现
- Android 虚拟按键驱动实现
- android实现虚拟按键实例
- android虚拟按键的实现
- Android 虚拟按键驱动实现
- Android 虚拟按键驱动实现
- Android 虚拟按键驱动实现
- Android Framework层如何截获按键消息
- ubuntu下使用android studio
- Java 反射详解
- 软件设计工具
- android listview 设置某些按键不可单击
- WebView 使用JS遇到的问题
- 在App层实现虚拟按键消息发送
- (poj3107Godfather,树形dp,next数组)树的重心
- android布局方式之FrameLayout
- ASP.NET MVC网站中 return RedirectToAction()形式参数的传递与接收
- C#,ArcGIS Engine开发入门教程
- WDK目录
- POJ1149
- C# 网络通信大小端转换类
- C编译器剖析_5.3.2 中间代码生成及优化_switch语句的翻译