Android 音量调节(一)

本文介绍了Android系统中的不同音量类型,如媒体、通话、铃声、闹钟和蓝牙音量,并提供了AudioManager类的方法,用于获取和设置各种音量值,以及控制扬声器状态。
摘要由CSDN通过智能技术生成

音量类型

android系统中存在不同的音量设置。在应用层可做设置的,整理有如下五种

流类型最大音量最小音量默认音量含义
STREAM_VOICE_CALL514通话音量
STREAM_RING705铃声、通知音量等
STREAM_MUSIC1505多媒体音量
STREAM_ALARM706闹钟音量
STREAM_BLUETOOTH_SCO1507蓝牙音量

 以下工具类可以获取制定音量类型的最大 最小或当前音量值。也可以设置指定音量值。

import android.app.Service;
import android.content.Context;
import android.media.AudioManager;

/**
 * 音量工具类
 */
public class VolumeUtil {
    private AudioManager mAudioManager;

    private VolumeUtil(){}

    public VolumeUtil(Context context){
        mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE);
    }
    //获取最大多媒体音量
    public int getMediaMaxVolume(){
        return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
    }
    //获取当前多媒体音量
    public int getMediaVolume(){
        return mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
    }

    //获取最大通话音量
    public int getCallMaxVolume(){
        return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );
    }

    //获取当前通话音量
    public int getCallVolume(){
        return mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL );
    }

    //获取最大系统音量
    public int getSystemMaxVolume(){

        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM );
    }

    //获取当前系统音量
    public int getSystemVolume(){

        return mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM );
    }

    //获取最大提示音量
    public int getAlermMaxVolume(){
        return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM );
    }

    //获取当前提示音量
    public int getAlermVolume(){
        return mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM );
    }

    // 设置多媒体音量
    public void setMediaVolume(int volume){
        mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, //音量类型
                volume,
                AudioManager.FLAG_PLAY_SOUND
                        | AudioManager.FLAG_SHOW_UI);
    }

    //设置通话音量
    public void setCallVolume(int volume){
        mAudioManager.setStreamVolume( AudioManager.STREAM_VOICE_CALL,
                volume,
                AudioManager.FLAG_PLAY_SOUND
                    | AudioManager.FLAG_SHOW_UI);
    }

    //设置提示音量
    public void setAlermVolume(int volume){
        mAudioManager.setStreamVolume( AudioManager.STREAM_ALARM,
                volume,AudioManager.FLAG_PLAY_SOUND
                        |AudioManager.FLAG_SHOW_UI);
    }

    // 关闭/打开扬声器播放
    public void setSpeakerStatus(boolean on) {
        if (on) { //扬声器
            mAudioManager.setSpeakerphoneOn(true);
            mAudioManager.setMode(AudioManager.MODE_NORMAL);
        } else {
            // 设置最大音量
            int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
            mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, max, AudioManager.STREAM_VOICE_CALL);
            // 设置成听筒模式
            mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
            mAudioManager.setSpeakerphoneOn(false);// 关闭扬声器
            mAudioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
        }
    }
}

在以上代码中有个方法mAudioManager.setStreamVolume方法,对应的参数解释如下

/**
参数1:音量类型
参数2:音量数值
参数3:
    AudioManager.FLAG_SHOW_UI 调整音量时显示系统音量进度条 , 0 则不显示
    AudioManager.FLAG_ALLOW_RINGER_MODES 是否铃声模式
    AudioManager.FLAG_VIBRATE 是否震动模式
    AudioManager.FLAG_SHOW_VIBRATE_HINT 震动提示
    AudioManager.FLAG_SHOW_SILENT_HINT 静音提示
    AudioManager.FLAG_PLAY_SOUND 调整音量时播放声音
**/
mAudioManager.setStreamVolume(int streamType, int index, int flags);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值