音频管理器 AudioManager

本文介绍如何在Android中使用AudioManager类来管理系统音量、调整不同类型的音量、设置静音及控制麦克风等,并通过示例代码展示了如何实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中提供的 AudioManager类 可以管理系统音量,或者让系统静音, 程序一样要调用getSystemService()方法.来获取系统的音频管理器.
在获取了 AudioManager对象之后 就可以调用如下方法:

  1. adjustStreamVolume(int StreamType,int direction,int flags): 调整手机指定类型的声音.其中第一个参数streamType指定声音类型.该参数可接受如下几个值.
  2. STREAM_ALARM : 手机闹铃声音.
  3. STREAM_MUSIC : 手机音乐的声音.
  4. STREAM_NOTIFICATION :手机通知的声音.
  5. STREAM_RING:电话铃声的声音.
  6. STREAM_SYSTEM : 手机系统的声音.
  7. STREAM_VOICE_CALL : 手机语音通话的声音.
    第2个参数是指定对声音增大 还是减少,
    第3个参数是调整声音时的标志, 例如指定Flag_show_ui,则指定调整声音时显示音量的进度条.

  1. setMircrophoneMute(boolean on) : 设置是否让麦克风静音.
  2. setMode(int mode) :设置声音模式.可设置为 Normal,RingTone,和IN_CALL.
  3. setRingerMode(int ringerMode) : 设置手机的电话铃音的模式.可以支持如下几个属性.
  4. RINGER_MODE_NORMAL 正常手机铃声.
  5. RINGER_MODE_SILENT 手机铃声静音.
  6. RINGER_MODE_VIBRATE 手机震动.
  7. setSpeakerphoneOn (boolean on) : 是否打开扩音器.
  8. setStreamMute (int streamType, boolean state) :将手机指定的类型的声音调整为静音.其中streamType参数是 adjustStreamVolume方法中第一个参数的意义相同.
  9. setStreamVolume (int streamType, int index, int flags) : 直接设置手机的指定类型的音量值. 其中streamType参数是 adjustStreamVolume方法中第一个参数的意义相同.

package com.test.audiomanagerdemo;

import android.app.Service;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

/**
 * 使用 AudioManager 调整手机音频
 */
public class AudioActivity extends AppCompatActivity {
    Button btnUp, btnDown, btnPlay, btnStop;
    ToggleButton btnSwitch;
    AudioManager mManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_audio);

        mManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);

        btnUp = (Button) findViewById(R.id.up);
        btnDown = (Button) findViewById(R.id.down);
        btnPlay = (Button) findViewById(R.id.play);
        btnStop = (Button) findViewById(R.id.stop);

        btnSwitch = (ToggleButton) findViewById(R.id.mute);

        initListener();
    }

    MediaPlayer mediaPlayer;

    private void initListener() {
        btnPlay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //初始化 android.media.MediaPlayer 对象,准备播放音乐
                mediaPlayer = MediaPlayer.create(AudioActivity.this, R.raw.earth);

                //设置循环播放
                mediaPlayer.setLooping(true);
                //开始播放
                mediaPlayer.start();

            }
        });
        //停止播放音乐
        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mediaPlayer.stop();
            }
        });

        //音量加 
        btnUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //指定调整音乐的音乐,增大音量,而且显示音量图形示意
                mManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);

            }
        });

        //音量减
        btnDown.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //指定调整音乐的音乐,降低音量,而且显示音量图形示意
                mManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);

            }
        });
//        ToggleButton 按钮
        btnSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //指定调节音乐的音频,根据 isChecked 确定是否需要静音
                mManager.setStreamMute(AudioManager.STREAM_MUSIC, isChecked);
            }
        });


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值