android按键静音键功能实现
#define KEY_MUTE113
#define KEY_F1 59
#define KEY_F2 60
#define KEY_BRIGHTNESSDOWN 224
#define KEY_BRIGHTNESSUP 225
key 60 F2
key 61 F3
key 113 MUTE
key 0x1d0 FN
key 224 BRIGHTNESSDOWN
key 225 BRIGHTNESSUP
#the end by huanggenda
3>.framework/core/res/res/values/attrs.xml
此文件为linux映射到应用的值,以供应用程序调用
<enum name="KEYCODE_F1" value="131" />
<enum name="KEYCODE_F2" value="132" />
<enum name="KEYCODE_VOLUME_MUTE" value="164" />
<!--add by huanggenda-->
<enum name="KEY_BRIGHTNESSDOWN" value="211" />
<enum name="KEY_BRIGHTNESSUP" value="212" />
<!--the end add by huanggenda-->
4>.在framework/base/policy/src/com/android/impl/PhoneWindowManager.java
按键code察看调试:
//modify false to true for debug
if (true) {
Log.d(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
+ repeatCount + " keyguardOn=" + keyguardOn + " mHomePressed=" + mHomePressed);
}
//The function of F2 and F1 add by huanggenda
if(keyCode == KeyEvent.KEYCODE_F2)
Log.d(TAG, "interceptKeyTi keyCode=" + keyCode + " F2");
if(keyCode == KeyEvent.KEYCODE_F3)
Log.d(TAG, "interceptKeyTi keyCode=" + keyCode +" F3");
if(keyCode == KeyEvent.KEYCODE_BRIGHTNESSDOWN)
Log.d(TAG, "interceptKeyTi keyCode=" + keyCode + " BRIGHTNESSDOWN");
if(keyCode == KeyEvent.KEYCODE_BRIGHTNESSUP)
Log.d(TAG, "interceptKeyTi keyCode=" + keyCode +" BRIGHTNESSUP");
//The end by huanggenda
5>.framework/base/media/java/android/media/AudioManager.java
处理音量键方法:
/**
* @hide
*/
public void handleKeyDown(int keyCode, int stream) {
boolean mute = isStreamMute(AudioManager.STREAM_MUSIC);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
/* *
* if audio is mute, turn off mute.
* Add by huanggenda
* */
if (mute) {
setStreamMute(AudioManager.STREAM_MUSIC, false);
int volume = getStreamVolume(AudioManager.STREAM_MUSIC);
if (volume == 0) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
setStreamMute(AudioManager.STREAM_MUSIC, true);
break;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
setStreamMute(AudioManager.STREAM_SYSTEM, false);
setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
}
} else {
setStreamMute(AudioManager.STREAM_SYSTEM, false);
setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_SAME,
AudioManager.FLAG_SHOW_UI);
break;
}
}
/* The end to add by huanggenda */
/*
* Adjust the volume in on key down since it is more
* responsive to the user.
*/
int flags = FLAG_SHOW_UI | FLAG_VIBRATE;
if (mVolumeControlStream != -1) {
stream = mVolumeControlStream;
flags |= FLAG_FORCE_STREAM;
}
adjustSuggestedStreamVolume(
keyCode == KeyEvent.KEYCODE_VOLUME_UP
? ADJUST_RAISE
: ADJUST_LOWER,
stream,
flags);
/* *
* If the volume is 0, turn on mute.
* Add by huanggenda
* */
if (stream == AudioManager.STREAM_MUSIC) {
int v = getStreamVolume(AudioManager.STREAM_MUSIC);
mute = isStreamMute(AudioManager.STREAM_MUSIC);
if (!mute && (v == 0)) {
setStreamMute(AudioManager.STREAM_SYSTEM, true);
setStreamMute(AudioManager.STREAM_MUSIC, true);
setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
adjustStreamVolume(stream,
AudioManager.ADJUST_SAME,
AudioManager.FLAG_SHOW_UI);
}
}
/* The end to add by huanggenda */
break;
case KeyEvent.KEYCODE_VOLUME_MUTE:
// TODO: Actually handle MUTE.
mute = !mute;
setStreamMute(AudioManager.STREAM_SYSTEM, mute);
setStreamMute(AudioManager.STREAM_MUSIC, mute);
setStreamMute(AudioManager.STREAM_NOTIFICATION, mute);
adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_SAME,
AudioManager.FLAG_SHOW_UI);
break;
}
}
lunch 3 (android4.0.1是10,android4.0.3是4)
make clean
make
android按键静音键功能实现相关推荐
- android升级功能键,Android 按键添加转载
按键从Linux到Android 现在的普通按键也集成到Linux Input子系统中了,只需要把按键对应的IO端口配置好,按键就可以工作了.所以一般提供的BSP(或者叫作解决方案)中,已经完善了按键 ...
- Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期
按键响应的第一种方式: 在XML文件里面设置按键的onClick绑定函数.就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这 ...
- Android开发常用功能 https://www.2cto.com/kf/201611/561847.html
Android开发常用功能 2016-11-03 09:43:58 来源:EvanJames的专栏 收藏 我要投稿 1.定时器的实现 (1)采用Handler的postDelay ...
- android按键精灵执行流程,android按键精灵学习_框架搭建
android按键精灵脚本的思路 1.主线循环 2.支线循环 3.功能模块 4.代码命令 5.固定模块 6.检测状态模块, 通常是启动一个线程,监控多少分钟后状态还没改变,就跳出支线循环并记录时间和结 ...
- Android按键字符映射文件
按键字符映射文件(.kcm 文件)负责将 Android 按键代码与修饰符的组合映射到Unicode字符. 如果只是告诉系统该设备仅用于特殊用途(非全键盘),那么对于具有按键的所有内部(内置)输入设备 ...
- Android按键唤醒原理
系统默认的唤醒按键值 http://androidxref.com/9.0.0_r3/xref/frameworks/base/services/core/java/com/android/serve ...
- Android 实现闹钟功能
原文地址:Android 实现闹钟功能作者:Android_Learners 一.手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以 ...
- android 添加附件功能,Android实现带附件的邮件发送功能
本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助gmail app客户端,缺点是必须使用gmail帐号 ...
- android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...
最新文章
- ​​清华大学举办疫情防控期间首场在线学位论文答辩
- 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现
- 在哪里可以免费学python-在合肥哪里可以学Python
- react中遇到的问题
- 【ruoyi若依】layer 重置大小/resize
- vc6.0能编辑html,科学网—VC6.0的18个实用小技巧 - 梁才的博文
- 实战:如何对磁盘和网络IO进行评估、监控、定位和优化?
- OC类导入Swift工程演示
- New ipad与ipad2有何不同
- Technical Art Director
- Atitit 计算软件简史 艾提拉著 目录 1.1. 第二代软件(1959~1965) 高级语言 第三代软件(1965~1971) os	1 1.2. 第四代软件(1971~1989)结构化的程序
- java之pdf打印
- 2018年马哥Linux
- seata分布式事务处理教程
- JDBC Driver介绍
- 阿里 达摩院 cv 算法 面经
- tipask 3.5 出错get_class() expects parameter 1 to be object 解决方案及说明
- ImportError: No module named 'win32api'
- 互联网金融数据分析体系
- 学习OpCode前言
热门文章
- BootDo架构-基于 Springboot 和 Mybatis 的后台管理系统
- 如何搭建一个自己图床网站
- java设计模式 建造模式_java设计模式(三)建造者模式
- 移动文件需要计算机管理员权限,win7系统提示“需要管理员权限才能移动文件夹”的解决方法...
- 基于Webmagic的爬取B站用户数据的爬虫
- 2所非211院校挺进全球高校600强,甩开一众985 | 泰晤士世界大学排行榜出炉
- 次世代教程——美队盾牌雕刻
- 学习分布式系统需要的知识
- 7-56 福到了 (15 分)
- 如何在iPhone和iPad上使用Group FaceTime