Android-4.0.4 添加触摸屏按键处理及java中使用重定位命令
来源:互联网 发布:ubuntu 根目录扩容 编辑:程序博客网 时间:2024/05/20 23:04
某公司的产品中,有一个在触摸屏上叫做手电筒的按键。我的工作就实现这样一件事情:通过手电筒按键控制闪光灯的亮灭。在android系统上做这么一个东西没有什么思路啊。
于是google一下,发现以下链接一个 ,参考这个链接就会明白设置流程,就不细说了,链接在文章后面给出。
目标:通过手电筒按键控制闪关灯亮灭。
已有资源:驱动部分,驱动工程师已经做好,并且提供了通过读写一个state的文件方法来点亮灯。
cat xxx/state //查看灯的亮灭状态
echo "torch" > xxx/state //点灯
echo "off" > xxx/state //灭灯
下面是我在android4.0.4系统源码修改的文件清单:
frameworks/base/include/ui/KeycodeLabels.h
frameworks/base/native/include/android/keycodes.h
frameworks/base/libs/ui/Input.cpp
frameworks/base/core/res/res/values/attrs.xml
frameworks/base/data/keyboards/Generic.kl
frameworks/base/core/java/android/view/KeyEvent.java
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
1、修改指定的文件后,执行make update-api。
2、编译系统,烧写镜像。
具体每一个修改的介绍,我就不详细介绍了,主要是免去大家修改4.0.4系统的时候,不用再去找具体的修改文件位置。在这里我主要详细介绍一下java中使用重定位部分。
java中使用exec来实现执行shell命令,但是执行ls这些命令还比较简单,执行我上述所给出的命令可能就要花点功夫去弄了。我是说对于像我这种java基础不太好的人,java大神请勿喷。
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
。。。
else if (keyCode == KeyEvent.KEYCODE_GPS){
System.out.println("######press gps");
if (down && repeatCount == 0) {
try {
Process p;
BufferedReader br;
InputStreamReader isr;
FileInputStream is;
String state;
File file = new File("/sys/class/camera_led/ctrl/state");
is = new FileInputStream(file);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
state = br.readLine();
if(state.toString().equals("off")){
p = Runtime.getRuntime().exec("sh");
String cmd1 = new String("echo \"torch\" > /sys/class/camera_led/ctrl/state\n");
p.getOutputStream().write(cmd1.getBytes());
p.getOutputStream().flush();
}
else {
p = Runtime.getRuntime().exec("sh");
String cmd1 = new String("echo \"off\" > /sys/class/camera_led/ctrl/state\n");
p.getOutputStream().write(cmd1.getBytes());
p.getOutputStream().flush();
}
br.close();
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
}else if (keyCode == KeyEvent.KEYCODE_MENU) {
// Hijack modified menu keys for debugging features
final int chordBug = KeyEvent.META_SHIFT_ON;
。。。
}
参考文章:http://blog.csdn.net/acm2008/article/details/7065546
- Android-4.0.4 添加触摸屏按键处理及java中使用重定位命令
- android 实现触摸屏按键
- (转载)收集android事件处理,按键、触摸屏部分
- ANDROID中按键的添加配置(linux按键到android处理)
- Android 4.0中按键的处理流程
- Android 4.0中按键的处理流程
- Android 4.0中按键的处理流程
- Android 4.0中按键的处理流程
- Android 4.0中按键的处理流程
- Android 4.0中按键的处理流程
- Android 4.0 添加按键及KEY映射(转载)
- Android按键添加和处理的方案
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- android系统触摸屏虚拟按键
- PHP里10个鲜为人知但却非常有用的函数
- Linux下使用LibXML2处理XML文件
- 虚函数和纯虚函数的区别
- JS操作cookie
- LESSCSS是CSS的扩展
- Android-4.0.4 添加触摸屏按键处理及java中使用重定位命令
- C变量的声明和定义
- presentation and techniques for 3d object recognition and scene interpretation一书阅读笔记(更新中)
- JS如何判断包括IE11在内的IE浏览器
- free命令详解
- Android系统多媒体框架添加对.wma格式的支持
- 高性能设计思路,兼谈12306
- 【springMVC】从一开始——杂乱手记二
- 转:Provisioning profile XXXX can't be found