`
- 浏览:
168318 次
-
在android 系统中,可能有的朋友需要这样的功能.
按下Activity中的一个button,它的反映就象按下了硬件的home键. 应该来说这样的功能是可以实现的.为什么这样说呢?
按了硬件,驱动程序会生成消息放到系统的消息队列里,我突然想到了MFC的消息队列.呵呵,什么是消息队列呢?你见过消息队列吗? 呵呵,消息队列只是一中数据结构,双向连表完全可以是消息队列啊.呵呵。跑题了.
既然驱动能把消息放到消息队列,那AP是否可以主动生成一个消息,放到消息队列呢?原理来说是可以的.
那如何生成消息呢?又如何传到系统的消息队列呢? 如果解决了这两个问题,就可以了.操作系统不管你消息是硬件产生的,还是软件模拟产生的,有消息来了,我就读,然后做处理就好了.
恩,那开始解决这两个问题.
首先我们得明白我是要模拟一个按键消息,那自然想到是个keyEvent事件了.
那又如何放到消息队列中呢?那得看framework ,行好,我替你看了.
口说无凭,看例子.
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.DeadObjectException;
- import android.os.ServiceManager;
- import android.view.IWindowManager;
- import android.view.KeyEvent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- public class SimualteKeyInput extends Activity {
- final IWindowManager windowManager = IWindowManager.Stub
- .asInterface(ServiceManager.getService("window"));
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.main);
- this.findViewById(R.id.cmd_simulate_key).setOnClickListener(
- new OnClickListener() {
- public void onqisda changerClick(View arg0) {
- new Thread(new Runnable() {
- public void run() {
- simulateKeystroke(KeyEvent.KEYCODE_HOME);
- }
- }).start();
- }
- });
- }
- private void simulateKeystroke(int KeyCode) {
- InjectKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyCode));
- InjectKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyCode));
- }
- private void InjectKeyEvent(KeyEvent kEvent) {
- try {
- windowManager.injectchangerchangerKeyEvent(kEvent,true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
哎,这就很高兴了,终于出来了.但是有点问题.什么问题呢?
该代码不能在android sdk 1.6上运行,无法编译,import android.view.IWindowManager;关键是这句不行.这没办法,这需要在有framework的地方就可以了.
如果你有兴趣你可以仔细看看。 具体的如何把消息放到消息队列了,是通过Binder连接到WindowManagerService里,通过IWindowMangaer.aidl传递了消息.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Android 模拟按键,实现按键发送消息
Android代码模拟按键事件,demo中以按数字键1为例子,响应power按键事件,系统进待机。按数字键1可以替换成接收消息,广播,接口回调,等等
主要介绍了Android 跨进程模拟按键(KeyEvent )实例详解的相关资料,类似手机遥控器的需求就可以这么做,需要的朋友可以参考下
博文源码《Android基于Socket无线遥控(2)--无线控制篇》 http://blog.csdn.net/zzp16/article/details/7939852 为Android系统添加模拟按键对外接口
模拟android长按home键,弹出近期任务。对应的文章为:http://blog.csdn.net/yanbin1079415046/article/details/8026613
模拟键盘按键自动输入文字,焦点文字,模拟键盘输入
使用设备是一种模拟键盘输入的读卡器设备,该设备可以直接在Windows下使用,在安卓系统下由于输入法的干扰,大多数无法直接使用。本安卓项目用于拦截该设备扫描内容,可以读出原始字节并转义为卡号,提供更好的兼容...
实现自动后台测试模拟android 按键.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 媒体键监听以及模拟媒体键盘的实现 ;
手机维护精灵是一款极具易用性和良好用户体验的Android设备远程维护软件;提供可视化的远程设备维护、FTP文件管理、程序和进程管理、用户信息备份等多项实用性功能,令用户足不出户即可享受专业级的维护体验。手机...
android模拟屏幕点击。利用无障碍服务,并申请悬浮窗口权限,全屏幕点击记录触摸控制点,并定时重新模拟点击.zip
在android 平台上,通过三种方式实现模拟按键控制的功能
基于UiAutomator框架,自动模拟用户手势操作,类似于触摸精灵,按键精灵的app。
那个android 下面,触摸屏按键模拟 ,截屏 , 抓取颜色 等功能 源代码 花费了一两天时间搞定, 基本功能从技术上实现, 界面和流程自己去完善吧
Android 模拟数字拨号界面及打电话监听功能,将创建一个数字按钮的ID数组,定义OnClickListener为View的内部接口,负责监听鼠标点击事件,为拨号按钮添加监听器,获取输入的电话号码,根据获取的电话号码创建Intent...
关于Android 单元测试的一个案例,按键点击事件测试
android系统模拟点击事件发送QQ消息.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android用adb模拟按键,操作手机
参考网上代码,自己写的一个模拟物理分页的DEMO,本人技术有限,未能做到很好的拓展和封装,仅供新手参考,下一步准备将封装好一个下拉刷新
主要给大家介绍了关于android命令行模拟输入事件,例如文字、按键、触摸等的相关资料,文中通过示例代码介绍的非常详细,对各位android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧