Android锁屏状态获取音量按键事件
来源:互联网 发布:汕头澄海美工招聘 编辑:程序博客网 时间:2024/06/05 04:22
Android系统没有提供音量按键的广播,而Activity的onKeyDown方法只有在界面显示时才能捕获音量变化,
要在锁屏状态或后台获得音量按键事件,可以通过判断音量值的改变来判断是否按下了音量键。实现的具体思路是:
开一个子线程,持续判断当前音量值和之前音量值是否一致,如果不同说明按下了音量键,并且重置音量值,使音量不在最大值或最小值上。
要在锁屏状态或后台获得音量按键事件,可以通过判断音量值的改变来判断是否按下了音量键。实现的具体思路是:
开一个子线程,持续判断当前音量值和之前音量值是否一致,如果不同说明按下了音量键,并且重置音量值,使音量不在最大值或最小值上。
package com.hy2014.phonesafer.activity;import android.app.Activity;import android.content.Context;import android.media.AudioManager;import android.os.Bundle;/** * * @author Dawin Create 2015-01-19 */public class VolumeChangeActivity extends Activity{/** * 当前音量 */private int currentVolume;/** * 控制音量的对象 */public AudioManager mAudioManager;/** * 系统最大音量 */private int maxVolume;/** * 确保关闭程序后,停止线程 */private boolean isDestroy;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);isDestroy = false;// 获得AudioManager对象mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//音乐音量,如果要监听铃声音量变化,则改为AudioManager.STREAM_RINGmaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);}@Overrideprotected void onDestroy(){super.onDestroy();isDestroy = true;}/** * 监听音量按键的线程 */private Thread volumeChangeThread;/** * 持续监听音量变化 说明: 当前音量改变时,将音量值重置为最大值减2 */public void onVolumeChangeListener(){currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);volumeChangeThread = new Thread(){public void run(){while (!isDestroy){int count = 0;boolean isDerease = false;// 监听的时间间隔try{Thread.sleep(20);} catch (InterruptedException e){System.out.println("error in onVolumeChangeListener Thread.sleep(20) " + e.getMessage());}if (currentVolume < mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)){count++;currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);// 设置音量等于 maxVolume-2的原因是:当音量值是最大值和最小值时,按音量加或减没有改变,所以每次都设置为固定的值。mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume - 2,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);}if (currentVolume > mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)){count++;currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume - 2,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);if (count == 1){isDerease = true;}}if (count == 2){System.out.println("按下了音量+");} else if (isDerease){System.out.println("按下了音量-");}}};};volumeChangeThread.start();}}
1 1
- Android锁屏状态获取音量按键事件
- 获取手机左边音量+ -按键的事件方法或私有api
- 获取手机左边音量+ -按键的事件方法或私有api
- 通过代码调整系统音量,监听音量实体按键事件
- android audioManager获取音量
- Android 获取Mic 音量
- Android 获取系统音量
- android audioManager获取音量
- 获取android 系统音量
- Android 如何修改拨号按键音量大小
- 获取键盘的按键状态
- iOS如何拦截音量按键事件(前台+后台)
- Android中的按键和触屏事件
- android获取音量分贝值
- Android 按键事件小结
- Android事件处理--按键
- android的按键事件
- android 按键事件小结
- 可以使用ActualHeight来判断textblock是否已经trimming
- android缓存数据到本地放在哪儿最好?
- SCARA机器人与 DELTA机器人
- 验证哥德巴赫猜想(函数专题)
- jquery.validate使用攻略
- Android锁屏状态获取音量按键事件
- 搜狗输入法自动化性能测试
- HDU-balloons-求颜色最多的气球的颜色
- Android SDK与Eclipse最新版开发环境搭建
- zookeeper分布式锁(二)
- WinDBG工具配置及蓝屏dump简单分析
- Foundation框架(5)——NSMutableString的创建、拼接、替换、插入、删除等操作
- Android上的GIF图片缩放库的开发
- --BIOS特工