android 耳机长按,Android全局键(home键_长按耳机键)详解【android源码解析八】.doc

Android全局键(home键_长按耳机键)详解【android源码解析八】

Android全局键(home键_长按耳机键)详解【android源码解析八】

Android的全局键(home键/长按耳机键)详解【android源码解析八】Android的全局键(home键/长按耳机键)详解【android源码解析八】

如果想在Android手机要想扩展一个实体键,就我知道而言有两种方法,基于Android4.0的源码来分析的与2.3的源码有点区别,区别不大,下面分享给大家:

转载请标明出处:

(一)可以在frameworks层的KeyEvent.java这个类中定义一个值,在PhoneWindowManager.java这个类中做处理就可以了。(Home键就是这么实现的)。效果图如下:

(二)可以利用广播的形式,frameworks层PhoneWindow.java这个类的onKeyDown( )对这个实体键发广播,上层接受这个广播来处理也可以达到这个效果。耳机键就是利用广播来接受的。无论在哪个界面长按耳机键,都会进入到音乐的界面。(长按耳机键的)效果图如下:

下面我详细展开来说明一下:

一、先说Home键的实现的大致流程,即---->为什么点击Home键,都进入到launcher的待机界面;

(1)Home键的定义在

step1: frameworks/base/core/java/android/view/KeyEvent.java这个类中,在KeyEvent.java这个类中有个static的静态块:

static { populateKeycodeSymbolicNames(); }

step2: 这个populateKeycodeSymbolicNames()方法其实就是加载了许多键的定义,把这些键对应的值都放到Array数组中。

private static void populateKeycodeSymbolicNames() { SparseArray names = KEYCODE_SYMBOLIC_NAMES; names.append(KEYCODE_UNKNOWN, "KEYCODE_UNKNOWN"); names.append(KEYCODE_SOFT_LEFT, "KEYCODE_SOFT_LEFT"); names.append(KEYCODE_SOFT_RIGHT, "KEYCODE_SOFT_RIGHT"); names.append(KEYCODE_HOME, "KEYCODE_HOME"); names.append(KEYCODE_BACK, "KEYCODE_BACK"); names.append(KEYCODE_CALL, "KEYCODE_CALL"); names.append(KEYCODE_ENDCALL, "KEYCODE_ENDCALL"); names.append(KEYCODE_0, "KEYCODE_0"); names.append(KEYCODE_1, "KEYCODE_1"); names.append(KEYCODE_2, "KEYCODE_2"); names.append(KEYCODE_3, "KEYCODE_3"); names.append(KEYCODE_4, "KEYCODE_4"); names.append(KEYCODE_5, "KEYCODE_5"); names.append(KEYCODE_6, "KEYCODE_6"); names.append(KEYCODE_7, "KEYCODE_7"); names.append(KEYCODE_8, "KEYCODE_8"); names.append(KEYCODE_9, "KEYCODE_9");

step3: 而Home键对应的值如下:

/** Key code constant: Home key. * This key is handled by the framework and is never delivered to applications. */ public static final int KEYCODE_HOME = 3;

(2)Home键的处理如下:在 step1: frameworks/base/policy/src/com/android/internal/pol

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值