Android AudioManager 音频管理器

一丶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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值