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

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

Home遥控键问题

描述

Anylauncher本是表桌面软件,Home按键正常是可唤起。怎奈本会议遥控器,没有Home按键。起动后进入会议,就无法再打开签到App。也就是定制的桌面。

解决

前期在设定自定义ATV盒子的时候,提到过按键映射,修补遥控的功能。于是思路就是用看起来闲着的菜单按键,映射成Home。
首先捕获keylayout 配置文件,通过观察 adb 后 dumpsys input 来查看,遥控字段的 layout文件。kl结尾。位置在/system/usr/leulayout .
把此文件 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/.
adb reboot
用遥控器测试,1,可以在会议画面打开,签到桌面App。
然后想找一个,没有任何意义的按键。因为1还有别的用。结果没有找到,因为logcat在keycode,1显示8.其它按键的keycode虽然能看到,但不知道怎么转换成这个文件中的key 码。于是就放弃了。
打到了两处菜单MENU的定义。打MENU替换为HOME。因为本身会议App没有用到MENU。
按上面步骤,再来一次,菜单按键可以成功唤出签到桌面。

会议机消息提醒

描述

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

解决

  1. 分步骤说说,Toast是个闪现的消息,在android下不需要干什么。只会闪出2秒最多3.5、昨天不知怎么搜到的一个,webkit,调用toast的案列。是百度AI给的提示吧。亦test.html.和一个接口文件。超级简单,下面分别列出。
    html 放在web一处App可达的地址网页加入这一段核心代码。
<script>
Android.showToast("toast:")
</script>

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 . 第二步,集成到现有结构中,包括flask中,socketio处的emit消息发送。发送时机。和android 的App中单点网页,on what message then showtoast。对于第一个flask下app的处理,我先用了一个讨巧的办法,就是上文提到的,有任何新上线,就发送出提醒消息。

@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);
------------------------
”“”

到此,加然时机没有打到太合适的。但是也算是第次打开会有一条消息。在繁忙时段会有成群消息过来。 在上文中的监测页还可加入一个手动提醒按钮。
虽然不强制。但是也能让人注意一下。网上还没有答到信息。对于当前状况有所了解。
在这里插入图片描述
回到后台是无法截屏的。所以这里就是有上线时,发来的一条消息。 字休和显示时间以不打打扰为主。

最后

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