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。
按上面步骤,再来一次,菜单按键可以成功唤出签到桌面。
会议机消息提醒
描述
由于有些会场,晃过了点名,直接进入了会议,或者中间换人,不知道是否已经签到成功。这时最好有一个提醒,如果尚未签到,就提示一个提示窗口
解决
- 分步骤说说,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。是不是可以,自己拉取,自已安装呢。如此简单一个程序。感觉必要性不大的。再说。