一丶AudioManager 简介
提供对音量和铃声模式控制的访问
官网API
二丶实现控制音频
这里我们加入MediaPlayer播放音乐,让声音变化更明显一点,如果不了解MediaPlayer,请参考:Android MediaPlayer 实现音乐播放器节学习一下。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放"/>
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="暂停"/>
<Button
android:id="@+id/btn_higher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="调高音量"/>
<Button
android:id="@+id/btn_lower"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="调低音量"/>
<Button
android:id="@+id/btn_quite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="静音"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
private Button btnStart,btnStop,btnHigher,btnLower,btnQuite;
private MediaPlayer mediaPlayer;
private AudioManager audioManager;
//定义一个标志用来标示是否点击了静音按钮
private int flag = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得系统的音频对象
audioManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
//初始化 mediaPlayer对象,这里播放的是raw文件中的mp3资源
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.xiaye);
//设置循环播放
mediaPlayer.setLooping(true);
bindViews();
setOnClick();
}
private void bindViews(){
btnStart = findViewById(R.id.btn_start);
btnStop = findViewById(R.id.btn_stop);
btnHigher = findViewById(R.id.btn_higher);
btnLower = findViewById(R.id.btn_lower);
btnQuite = findViewById(R.id.btn_quite);
}
private void setOnClick() {
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
btnStop.setEnabled(true);
mediaPlayer.start(); //播放
btnStart.setEnabled(false);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
btnStart.setEnabled(true);
mediaPlayer.pause(); //暂停
btnStop.setEnabled(false);
}
});
btnHigher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//指定调节音乐的音频,增大音量,而且显示音量图形示意
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,AudioManager.FLAG_SHOW_UI);
}
});
btnLower.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//指定调节音乐的音频,降低音量,只有声音,不显示图形条
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,AudioManager.FLAG_PLAY_SOUND);
}
});
btnQuite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//指定调节音乐的音频,根据isChecked确定是否需要静音
flag *= -1;
if (flag == -1){
//将指定类型的声音调整为静音
audioManager.setStreamMute(AudioManager.STREAM_MUSIC,true); //API 23 过期
//audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_MUTE,AudioManager.FLAG_SHOW_UI); //23以上的版本用这个
btnQuite.setText("取消静音");
}else {
//取消静音
audioManager.setStreamMute(AudioManager.STREAM_MUSIC,false);
//audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_UNMUTE,AudioManager.FLAG_SHOW_UI);
//关闭麦克风
audioManager.setMicrophoneMute(false);
btnQuite.setText("静音");
}
}
});
}
}
三丶总结
AudioManager,简单来说就是用来控制系统音量和声音模式的,更多其他API请参考官网,每个方法的含义我们都在对应代码块做了详细的说明,好了,那本节先到这里,有疑问可以加我主页QQ,VX。