初识AudioManager
来源:互联网 发布:ubuntu ifconfig 编辑:程序博客网 时间:2024/05/01 23:06
我今天在群里看到有人发了一个调节声音的小软件 可以调节各种声音 感觉挺方便 就 想借代码看看
可是不借 真小气 ╭(╯^╰)╮ 于是我自己写个一个简单版本 初识一下AudioManager
当然 之后会对适配机型 进行进一步深入 让我先了解一下AudioManager
首先我们需要获取管理这方面的对象代码如下
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
之后我们要了解下音的种类
①通话音量
AudioManager.STREAM_VOICE_CALL
②系统音量
AudioManager.STREAM_SYSTEM
③铃声音量
AudioManager.STREAM_RING
④音乐音量
AudioManager.STREAM_MUSIC
⑤提示声音音量
AudioManager.STREAM_NOTIFICATION
⑥闹铃音量
AudioManager.STREAM_ALARM
7双音多频
AudioManager.STREAM_DTMF max=15
了最后我们要了解一下控制音量大小的方法
//参数一调节音量类型 参数第二参数表示改变后的音量 第三个参数可以使同步显示音量调节条mAudioManager.setStreamVolume(type, i, i);好了很简单 最后我就展示下代码 很短一节
public class Main2Activity extends AppCompatActivity { SeekBar seekBar_alarm; SeekBar seekBar_call; SeekBar seekBar_music; SeekBar seekBar_noti; SeekBar seekBar_ring; SeekBar seekBar_system; AudioManager mAudioManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); seekBar_alarm= (SeekBar) findViewById(R.id.seekBar_alarm); seekBar_call= (SeekBar) findViewById(R.id.seekBar_call); seekBar_music= (SeekBar) findViewById(R.id.seekBar_music); seekBar_noti= (SeekBar) findViewById(R.id.seekBar_noti); seekBar_ring= (SeekBar) findViewById(R.id.seekBar_ring); seekBar_system= (SeekBar) findViewById(R.id.seekBar_system); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); setListener(seekBar_alarm,mAudioManager.STREAM_ALARM,"闹钟音量"); setListener(seekBar_call,mAudioManager.STREAM_VOICE_CALL,"通话音量"); setListener(seekBar_music,mAudioManager.STREAM_MUSIC,"音乐音量"); setListener(seekBar_noti,mAudioManager.STREAM_NOTIFICATION,"提示音量"); setListener(seekBar_ring,mAudioManager.STREAM_RING,"铃声音量"); setListener(seekBar_system,mAudioManager.STREAM_SYSTEM,"系统音量"); seekBar_alarm.setProgress( mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM )); seekBar_call.setProgress(mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL )); seekBar_music.setProgress(mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC )); seekBar_noti.setProgress(mAudioManager.getStreamVolume( AudioManager.STREAM_NOTIFICATION )); seekBar_ring.setProgress(mAudioManager.getStreamVolume( AudioManager.STREAM_RING )); seekBar_system.setProgress(mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM )); //通话音量 int max_call = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL ); int current_call = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL ); Log.i("VIOCE_CALL", "max_call : " + max_call + " current_call : " + current_call); //系统音量 int max_system = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM ); int current_system = mAudioManager.getStreamVolume( AudioManager.STREAM_SYSTEM ); Log.i("VIOCE_CALL", "max_system : " + max_system + " current_system : " + current_system);// ③铃声音量 int max_ring = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING ); int current_ring = mAudioManager.getStreamVolume( AudioManager.STREAM_RING ); Log.i("VIOCE_CALL", "max_ring : " + max_ring + " current_ring : " + current_ring); // ④音乐音量 int max_music = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC ); int current_music = mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC ); Log.i("VIOCE_CALL", "max_music : " + max_music + " current_music : " + current_music);// ⑤提示声音音量 int max_noti = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_NOTIFICATION ); int current_noti = mAudioManager.getStreamVolume( AudioManager.STREAM_NOTIFICATION ); Log.i("VIOCE_CALL", "max_noti : " + max_noti + " current_noti : " + current_noti);// ⑥闹铃音量 int max_alarm = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_ALARM ); int current_alarm = mAudioManager.getStreamVolume( AudioManager.STREAM_ALARM ); Log.i("VIOCE_CALL", "max_alarm : " + max_alarm + " current_alarm : " + current_alarm);
// 7双音多频int max_dtmf = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_DTMF );int current_dtmf = mAudioManager.getStreamVolume( AudioManager.STREAM_DTMF );Log.i("VIOCE_CALL", "max_dtmf : " + max_dtmf + " current_dtmf : " + current_dtmf);} public void setListener(SeekBar seekBar, final int type, final String str){ seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { Log.i("VIOCE_CALL", i+""); //参数一调节音量类型 参数第二参数表示改变后的音量 第三个参数可以使同步显示音量调节条 mAudioManager.setStreamVolume(type, i, i); } @Override public void onStartTrackingTouch(SeekBar seekBar) { Log.i("VIOCE_CALL11", "开始+"); } @Override public void onStopTrackingTouch(SeekBar seekBar) { Log.i("VIOCE_CALL1", str+"结束"+mAudioManager.getStreamVolume( type)); } }); }}
这样就可以 了 记住seekbar的最大值要和该类型音量的最大值一样才好控制
给大家列一下
①通话音量
AudioManager.STREAM_VOICE_CALL max=6
②系统音量
AudioManager.STREAM_SYSTEM max=15
③铃声音量
AudioManager.STREAM_RING max=15
④音乐音量
AudioManager.STREAM_MUSIC max=60
⑤提示声音音量
AudioManager.STREAM_NOTIFICATION max=15
⑥闹铃音量
AudioManager.STREAM_ALARM max=15
7双音多频
AudioManager.STREAM_DTMF max=15
最后一种双音多频 最后加上去 还没测试 大家自己加一下吧O(∩_∩)O哈哈~
希望能对初学者有帮助
谢谢O(∩_∩)O谢谢
- 初识AudioManager
- AudioManager
- AudioManager
- AudioManager
- AudioManager
- 【AudioManager】AudioManager 详解
- Android AudioManager
- AudioManager学习
- AudioManager简述
- AudioManager详解
- AudioManager使用方法
- AudioManager详解
- 浅谈AudioManager
- AudioManager简介
- AudioManager服务
- android之AudioManager详解_什么是AudioManager
- android之AudioManager详解_什么是AudioManager
- android audioManager获取音量
- Unity发布的ios包在iphone上声音小的原因
- 深入研究java.lang.Object类
- HTML入门学习笔记--基础标签(2)
- Linux 下 pip 升级遇到的问题 python3.5
- Android Service AIDL 简单使用
- 初识AudioManager
- 杨春歌 简单谈谈OC与Swift的异同
- 程序员面试金典: 9.7数学与概率 7.6在二维平面上,有一些点,请找出经过点最多的那条线
- Struts2总结-1
- 万事不求人聊天机器人正式投入试用
- Java DbUtils的使用
- 今天很忙啊
- [leetcode][461]461. Hamming Distance
- 项目初始点(一)