在App层实现虚拟按键消息发送

在App层实现虚拟按键消息发送

分类: Android开发   3275人阅读  评论(4)  收藏  举报
继续上一篇文章的结果,做个测试程序。实现点击虚拟power键进入睡眠状态的功能。

        为了简单直接用一个Button,点击Button,发送一个Power键的按键消息。且为短按。

实现的关键源码如下:

[java]  view plain copy print ?
  1. import android.os.RemoteException;  
  2. import android.os.SystemClock;  
  3. import android.view.InputDevice;  
  4. import android.view.KeyCharacterMap;  
  5. import android.view.KeyEvent;   
  6. import android.view.IWindowManager;  
[java]  view plain copy print ?
  1. public void onClick(View v) {  
  2.     long mDownTime = SystemClock.uptimeMillis();  
  3.     long when = mDownTime;  
  4.     final KeyEvent ev = new KeyEvent(mDownTime, when, KeyEvent.ACTION_UP, 260,  
  5.             0, -10, KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY, InputDevice.SOURCE_KEYBOARD);  
  6.     IWindowManager mWindowManager = IWindowManager.Stub.asInterface(  
  7.             ServiceManager.getService(Context.WINDOW_SERVICE));  
  8.     try {  
  9.         mWindowManager.injectInputEventNoWait(ev);  
  10.     } catch (RemoteException ex) {  
  11.     }  

       按下Button的效果和短按Power键效果一样,会使机子进入睡眠状态。这也解决了 goToSleep()这个接口函数因为权限问题无法在App层调用的问题。其实就是发送了一个power键的键值消息,插入按键消息队列。这样收到这个按键消息的函数自动会处理响应这个按键。

注意:由于需要用到WindowManagerService.java中的接口函数,而该类是hide类型,即对SDK是不开放的。因此只能在源码环境下引用,或者其它方式如果也能引用的话那更好,比如反射。我是在源码环境下实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现后台主动发送消息,需要使用 WebSocket 技术。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,允许服务器主动向客户端发送消息。在 uni-app 中,可以使用 uni-app 官方提供的 uni-socketio 插件来实现 WebSocket 通信。 以下是实现步骤: 1. 安装 uni-socketio 插件:在 HBuilderX 中打开项目,在左侧菜单栏的工具栏中找到插件市场,搜索“uni-socketio”,然后安装。 2. 在需要使用 WebSocket 的页面中引入插件:在 script 标签中添加以下代码: ``` import io from '@/js_sdk/socket.io-client/socket.io.js'; ``` 3. 创建 WebSocket 连接:在页面的 created 生命周期中添加以下代码: ``` let socket = io('ws://localhost:3000'); ``` 其中,ws://localhost:3000 是 WebSocket 服务器的地址。可以根据实际情况进行修改。 4. 监听服务器发送消息:在页面的 mounted 生命周期中添加以下代码: ``` socket.on('message', function(data) { console.log(data); }); ``` 其中,message 是服务器发送的事件名,可以根据实际情况进行修改。当服务器发送消息时,该函数会被触发,可以在该函数中进行消息处理。 5. 发送消息给服务器:在需要发送消息的地方添加以下代码: ``` socket.emit('send', message); ``` 其中,send 是发送事件名,可以根据实际情况进行修改。message 是要发送消息内容。 以上就是 uni-app 实现后台主动发送消息的基本步骤。可以根据实际情况进行修改和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值