android 音量设置工具类
来源:互联网 发布:企业海关数据免费查询 编辑:程序博客网 时间:2024/06/04 23:32
一个类似电视项目 ,用的是android 开发板,由于android 音量设置分很多种 ,系统音量,闹钟音量 ,媒体音量....
那么问题来了,如果我的设备没有实体按键 ,没有触摸该怎么处理呢 ?
而且在统一状态下 如何设置相应的音量,我遇到的问题就是,在播放媒体的时候,弹出的是通话音量,本来想找底层开发人员帮我把音量全部统一 ,方案公司懒得改 ,那就只能从应用层来做了,所有的音量统一设置 ,要加一起加,要剪一起剪 。
直接看代码 ,
在Activity service中直接调用AddVoice(); 或者reduiceVoice().方法就可以实现音量统一增减 ,里面有做判断,最大音量和最小音量,拿去浪吧
package com.mirror.util;import android.app.Service;import android.content.Context;import android.media.AudioManager;import android.util.Log;/** * 音量控制管理器 */public class VoiceManager { private static final String TAG = "VoiceManager"; Context context; AudioManager mAudioManager; public VoiceManager(Context context) { this.context = context; if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } } /*** * 增大音量 */ public void addVoide() { dealCallVoice(true); dealSystemVoice(true); dealRingVoice(true); dealMediaVoice(true); dealMessageVoice(true); } /*** * 减少声音 */ public void reduceVoide() { dealCallVoice(false); dealSystemVoice(false); dealRingVoice(false); dealMediaVoice(false); dealMessageVoice(false); } /** * 提示音设置 * * @param b */ private void dealMessageVoice(boolean b) { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM); int current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM); Log.i(TAG, "===处理前提示音音量====" + current + " /" + max); if (b) { if (current == max) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, current + 1, 0); } else { if (current < 1) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, current - 1, 0); } int maxdeal = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM); int currentdeal = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM); Log.e(TAG, "===处理前后提示音音量====" + currentdeal + " /" + maxdeal); } /*** * 处理媒体音量 * @param b */ private void dealMediaVoice(boolean b) { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } int mediamax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); int mediacurrent = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); Log.i(TAG, "===处理前媒体音量====" + mediacurrent + " /" + mediamax); if (b) { if (mediacurrent == mediamax) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mediacurrent + 1, 0); } else { if (mediacurrent < 1) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mediacurrent - 1, 0); } } /*** * 铃声音量 * @param b */ private void dealRingVoice(boolean b) { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } int ringmax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING); int ringcurrent = mAudioManager.getStreamVolume(AudioManager.STREAM_RING); Log.i(TAG, "===处理前铃声音量====" + ringcurrent + " /" + ringmax); if (b) { if (ringcurrent == ringmax) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_RING, ringcurrent + 1, 0); } else { if (ringcurrent < 1) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_RING, ringcurrent - 1, 0); } } /*** * 处理系统音量 * @param b */ private void dealSystemVoice(boolean b) { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } int sysmax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM); int syscurrent = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM); Log.i(TAG, "===设置前系统音量====" + syscurrent + " /" + sysmax); if (b) { if (syscurrent == sysmax) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, syscurrent + 1, 0); } else { if (syscurrent < 1) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, syscurrent - 1, 0); } } /*** * 处理通话音量 * @param isAdd * true 是音量+ * false 是音量- */ private void dealCallVoice(boolean isAdd) { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } int callmax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL); int callcurrent = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL); Log.e(TAG, "=====设置前通话音量==" + callcurrent + "/" + callmax); if (isAdd) { if (callcurrent == callmax) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, callcurrent + 1, 0); } else { if (callcurrent < 1) { return; } mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, callcurrent - 1, 0); } } /*** * 静音 */ public void stopMediaVoice() { if (mAudioManager == null) { mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE); } mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); //设置媒体音量为 0 }}
阅读全文
0 0
- android 音量设置工具类
- android设置音量
- android 音量设置条
- android 系统音量设置
- Android设置手机音量
- android 设置最大音量
- android 系统音量设置
- android设置音量(话音)
- android audio 音量设置分析
- android 音量设置源码分析
- Android Audio音量设置流程
- android audio 音量设置分析
- android常用工具类之铃声、音量的设置
- Android 程序获取、设置铃声和音量
- Android 各种音量的获取和设置
- Android 各种音量的获取和设置
- Android 各种音量的获取和设置
- Android 各种音量的获取和设置
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 1.简介
- 习题7.7
- mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType
- break循环
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 2.线程安全性
- android 音量设置工具类
- MFC的dll导出的界面不能输入
- HTML5教程-超文本标记语言编程
- JavaScript获取浏览器名称、版本等信息
- 3. 打包和工具链(Go Tutorial)
- python实现MongoDB数据同步到ES(Elasticsearch)
- linux下单机配置tomcat集群
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 3.对象的共享
- Mqtt入门之请求连接信息Connect