初识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谢谢




0 0
原创粉丝点击