【安卓AppHome按键和toast提醒-会议签到的补丁】

安卓App两个问题解决Home菜单和toast提醒-会议签到的补丁

Home遥控键问题

描述

Anylauncher本是桌面HOME软件,Home按键正常即可唤起。怎奈本会议遥控器,没有Home按键。开机后从AnyLaucher进入会议,就无法再打开签到,也就是本桌面。

解决

前期在设定自定义ATV盒子的时候,提到过按键映射,修补遥控的功能。于是思路就是用看起来闲着的菜单按键,映射成Home。
首先捕获keylayout 配置文件,通过观察 adb 后 dumpsys input 来查看,遥控字段的 layout文件。kl结尾。位置在/system/usr/keylayout .
把此文件 adb pull 到本地,用一个文本工具编辑。先测试了key 1 1 这个按键。 虽然在logcat中观察keycode =8,但是,文件:

key 1     ESCAPE
key 2     1
key 3     2
key 4     3
改为

key 1     ESCAPE
key 2     HOME
key 3     2
key 4     3

adb remount
adb push /path/. #没有提供文件名,根据厂家不同,kl结尾具体路径,/system/usr/keylayout
adb reboot
用遥控器测试,1,可以从会议画面打开Home桌面App。
然后想找一个,没有任何意义的按键。因为1还有别的用。结果没有找到,因为logcat在keycode,1显示8.其它按键的keycode虽然能看到,但不知道怎么转换成这个文件中的key 码。于是就放弃了。
找到了两处菜单MENU的定义。打MENU替换为HOME。因为本身会议App没有用到MENU。
按上面步骤,再来一次,菜单按键可以成功唤出签到桌面。

会议机消息提醒

描述

由于有些会场晃过了点名,直接进入了会议,或者中间换人,不知道是否已经签到成功。这时最好有一个提醒,如果尚未签到,就提示一个toast窗口

解决

  1. 分步骤说说,Toast是个闪现的消息,在android下不需要干权限。只会闪出2秒最多3.5、昨天不知怎么搜到的一个,webkit,调用toast的案列。是百度AI给的提示吧。亦test.html.和一个接口文件。超级简单,下面分别列出。
  • web端,也就就html页面
    他在Anylancher中webkit显示, 其中加入以下js调用代码。
<script>
Android.showToast("toast:")
</script>
  • App的源码中加入Andriod和showToast定义
    WebAppInterface.java放在工程目录
package com.tumuyan.fixedplay;

import android.content.Context;
import android.webkit.JavascriptInterface;
import android.widget.Toast;

public class WebAppInterface {
  Context mContext;

  WebAppInterface(Context c) {
    mContext = c;
  }

  @JavascriptInterface
  public void showToast(String toast) {
    Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
  }
}

在主APP,含有webkit在activity中oncreate 在webkit中加入以下配置这里的Android就是js中要引用的、

      webView.getSettings().setJavaScriptEnabled(true); // 如果需要,启用JavaScript
      webView.addJavascriptInterface(new WebAppInterface(this), "Android");

这样的app写成apk安装后,在家里的乐视,前台时可以出现提醒。一但切入后台,我用的setInteval就不会再出现了。不允许有这种操作。
今天在会议机测试了一下。在后台是可以存活,并出现toast的。虽然后来测试了Dialog,就只有前台时可以弹出。后台时应该需要其他激活手段,才能弹出了,于是放弃了。
但是Toast也可以满足目前需要。
存在一个小插曲,我的debugkey因为androidstudio升级,密码给清空了。怎么也找不到以前signed时看的教程。又申请了一个新的。结果,无法用 adb install -r安装。这对于已经安装了很多机器的我是个打击。后来在另一个网页才找到默认的debug信息。比照一输入,结果成功了。无安全可言、就当玩吧。
2 . 前面讲到toast实现html调用, 现在讲何时发送toast通知,
在flask中使用socketio的emit消息发送。发送时机: 可以是间隔10秒做一个检测, 而我之前使用了websocket, 可以做到任意时刻通过订阅的消息通知,调用提醒,当有新用户上线,我已经做了flask消息接受,在这个接收处理中, 加入向"null"组发送消息,emit, 会议机收到通知后就可以toast提醒消息。
flask代码:

@socketio.on('connect',namespace='/chat')
def test_connect():
    global last_status,online_users
    socketio.emit('null', {"data":'[闫]<^菜单键.签到!!!'},namespace='/chat');
    online_users[request.sid]=myip()
    logstatus()
    print(request.sid,"connected from"+myip())
    

发给null的接收方。

接受方是在flask中一处route path下:先查看单点信息有无 V,没有则 null,有能nil。无任何处置。

 @app.route("/onepoint/check/show/“
 def checkone():
     mark=( boots.find('V')>-1) and "nill" or "null"     
     return  template.format(mainstr=boots,day=day,room=mark)
 
 templage=“”“--------------
    function handleNull(msg) {{
   try {{
 Android.showToast(`会前提醒:${{msg.data}}`)   #因为做为网页使用,会报错,放在try中
}} catch (error) {{
// Code to handle the error
}}
  
 }}
var socket = io.connect('http://10.80.133.35:9000/chat'  );
socket.on('{room}',handleNull);
------------------------
”“”

到此,会前不签到,无论当前APP是什么,新用户上线就会有一条消息。
虽然不强制。但是也能让人注意一下.
在这里插入图片描述

最后

说点感受,每当有什么没解决的问题,过几天,好像在机缘碰巧下就突然有出路了, 开始想不到具体方案,随缘巧合而已。上月弄那个电视播放器按键时,也没想到会在这里用到。 这里用到技术还有,夏天时弄的一个无用的移植 flask。用到了css的捍取和设定,学到了位置颜色的精确定位。反正我不喜欢,一直在看一本书,从最初学起那种。当然 这种基本学习,在当初学python时,学了半年。也看了一些最初的常识。后来就不停在弄小东西们。正好又花了一个月,把这个签到算是弄成了。当然,依然看不出用处。
主要的是,用到的主流基础组件,vue,caddy。socketio,redis。这些,必竟哪里都有可能用到。以后会方便使用一些,所以我开始从头学一本书rust编程语言. 好此项目估计不会有大更新了。这个系列剩下有个小问题是自动更新apk。是不是可以,自己拉取,自已安装呢。如此简单一个程序。感觉必要性不大的。再说。
结果,最终采用了web推送安装的方式,也是始料不及的,因为看到了,screencpy的sh脚本.感觉精巧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjcroom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值