ITKeyword,专注技术干货聚合推荐

注册 | 登录

AudioManager类:调节系统各种音量

pengkv 分享于 2015-11-24

推荐:【Android】系统音量及屏幕亮度调节

屏幕亮度调节 /** * 滑动改变亮度,不需要权限 * * @param percent 亮度百分比,值为0.0----1.0 */private void onBrightnessSlide(float percent) { if

2018阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=gh9qh5ki&utm_source=gh9qh5ki

效果图:

这里写图片描述

方法解析:

增大/降低音量值

public void adjustStreamVolume(int streamType, int direction, int flags)

设置音量值

public void setStreamVolume(int streamType, int index, int flags)

参数介绍

streamType是需要调整音量的类型,可以是:
STREAM_ALARM 警报
STREAM_MUSIC 音乐回放即媒体音量
STREAM_NOTIFICATION 窗口顶部状态栏Notification,
STREAM_RING 铃声
STREAM_SYSTEM 系统
STREAM_VOICE_CALL 通话
STREAM_DTMF 双音多频

推荐:ubuntu中root下无法用快捷键调节音量及“正在等待声音系统响应”解决办法

原因:root用户没有对pulsaudio的访问权限,而且pulsaudio默认是不能在root下自动启动的。 解决办法: 一、 1、 修改自动启动: 编辑 vim /etc/default/pulseaud

direction是调整的方向,增加或减少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不变,这个主要用于向用户展示当前的音量

flags是一些附加参数,只介绍两个常用的
FLAG_PLAY_SOUND 调整音量时播放声音
FLAG_SHOW_UI 调整时显示音量条

index是要设置的音量值,类型为int

示例代码

public class SunActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener {
    private int VOICE_TYPE;
    private SeekBar sb_media, sb_calling, sb_system, sb_clock;
    private AudioManager audioManager;
    private int startPoint;

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

        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

        sb_media = (SeekBar) findViewById(R.id.sb_media);
        sb_calling = (SeekBar) findViewById(R.id.sb_ring);
        sb_system = (SeekBar) findViewById(R.id.sb_system);
        sb_clock = (SeekBar) findViewById(R.id.sb_alarm);

        //为了SeekBar的效果明显,将音量值乘以10显示
        sb_media.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) * 10);
        sb_calling.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_RING) * 10);
        sb_system.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM) * 10);
        sb_clock.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_ALARM) * 10);

        sb_media.setOnSeekBarChangeListener(this);
        sb_calling.setOnSeekBarChangeListener(this);
        sb_system.setOnSeekBarChangeListener(this);
        sb_clock.setOnSeekBarChangeListener(this);
    }


    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        startPoint = seekBar.getProgress();
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        switch (seekBar.getId()) {
            case R.id.sb_media:
                VOICE_TYPE = AudioManager.STREAM_MUSIC;
                break;
            case R.id.sb_ring:
                VOICE_TYPE = AudioManager.STREAM_RING;
                break;
            case R.id.sb_system:
                VOICE_TYPE = AudioManager.STREAM_SYSTEM;
                break;
            case R.id.sb_alarm:
                VOICE_TYPE = AudioManager.STREAM_ALARM;
                break;
        }

// if (seekBar.getProgress() > startPoint) { //提升音量
// audioManager.adjustStreamVolume(VOICE_TYPE, AudioManager.ADJUST_RAISE, 0);
// } else {//降低音量
// audioManager.adjustStreamVolume(VOICE_TYPE, AudioManager.ADJUST_LOWER, 0);
// }

        audioManager.setStreamVolume(VOICE_TYPE, seekBar.getProgress() / 10, AudioManager.FLAG_SHOW_UI);
    }
}

部分布局代码

    <LinearLayout  android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:padding="20dp">

        <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:background="@drawable/shape_text" android:padding="3dp" android:text="媒体" android:textColor="#ffffff" />

        <SeekBar  android:id="@+id/sb_media" android:layout_width="match_parent" android:layout_height="wrap_content" />
    </LinearLayout>

推荐:Android调节屏幕亮度、系统音量、wifi、bluetooth、振动等常用设置的整合demo

。。。还在上班 。。。 先空着找时间填。。。。。

效果图: 方法解析: 增大/降低音量值 public void adjustStreamVolume(int streamType, int direction, int flags) 设置音量值 public void setStreamVolume(int streamType, int index, int
在线网页数据采集器

相关阅读排行


用户评论

游客

在线网页数据采集器

相关内容推荐

vivo京东自营官方旗舰店

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。