AudioManager类:调节系统各种音量

效果图:

方法解析:

增大/降低音量值

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 双音多频

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>
时间: 2024-10-20 11:05:51

AudioManager类:调节系统各种音量的相关文章

AudioRecord类获取录音音量分贝数

转自:http://www.jb51.net/article/64806.htm public class AudioRecordDemo {   private static final String TAG = "AudioRecord";   static final int SAMPLE_RATE_IN_HZ = 8000;   static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_

android调节音量——AudioManager的应用

Android中可以通过程序获取系统手机的铃声和音量.同样,也可以设置铃声和音量.android中给出了AudioManager类来实现音量获取.音量控制. 本篇基于 Android API 中的 AudioManager 作讲述,最后给出实例. 下面是本篇大纲: 1.认识 AudioManager 2.AudioManager 主要方法介绍 3.参数解释 1.认识 AudioManager AudioManager 类位于 android.Media 包中,该类提供访问控制音量和钤声模式的操作

Android中文API(129) —— AudioManager

前言 本章内容是android.media.AudioManager,版本为Android 3.2 r1,翻译来自"文炜",欢迎访问他的博客:"http://www.cnblogs.com/iezhyg/",再次感谢"文炜"!欢迎你一起参与Android的中文翻译,联系我[email protected]. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com/ Android中文翻译组:http://g

【译】Android 6.0 Changes (机翻加轻微人工校对)

Android 6.0 Changes In this document Runtime Permissions Doze and App Standby Apache HTTP Client Removal BoringSSL Access to Hardware Identifiers Notifications AudioManager Changes Text Selection Browser Bookmark Changes Android Keystore Changes Wi-F

Android 6.0 新功能及主要 API 变更

伴随着新的特性和功能, Android 6.0 (API 级别 23)带来了一系列系统和 API 行为的变更.这篇文章中将介绍一些在应用程序中需要理解和注意的主要变更点. 如果你之前已经发布过 Android 应用程序,要意识到这些变更对应用程序的影响. 运行时权限 这个版本中引入了新的权限模型,现在用户可以在运行时直接管理应用程序的权限.这个模型基于用户对权限控制的更多可见性,同时为应用程序的开发者提供更流畅的应用安装和自动升级.用户可以为已安装的每个应用程序独立的授予或者取消权限. 在运行于

iOS调节系统音量

目录[-] 使用MPVolumeView 编程实现系统音量调节2 通过MPVolumeSlider的实例来操作系统音量 有问题!我不喜欢系统弹出音量提示 还有问题,我修改了系统音量但是不是通过我的UI iOS的AVFoundation框架提供了基本的音视频播放工具,我们基本上可以靠其中提供的类完成绝大部分的音视频播放任务.但是在音频播放的输出音量的处理上,苹果的策略比较保守.尽管AVPlayer和AVPAudiolayerzhe这些类提供了音量调节功能,但这些音量控制属于App级别的控制.好处就

Android audioManager解决MediaPlayer AudioTrack 调节音量问

在听筒模式下 am.setSpeakerphoneOn(false); setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); am.setMode(AudioManager.MODE_IN_CALL); 我用Mediaplayer AudioTrack调节音量总是失败 at.setStereoVolume(vol, vol); player.setVolume(vol,vol); 后来 决定用AudioManager来调节音量 Audio

Android 系统工具类SystemUtils收集整理(持续更新)

最近做的功能中涉及到了一些关于系统方面的东西,自己摸索以及网上搜集整理出来了一个工具类方便调用 包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若开则关闭.调节系统音量.设置亮度.获取屏幕的亮度.跳转到系统设置.获取文件夹下所有文件.获取视频的缩略图 .打开视频文件... 工具类会持续更新,与大家共同学习进步. SystemUtils.java p

Android开发之AudioManager(音频管理器)详解

AudioManager简介: AudioManager类提供了访问音量和振铃器mode控制.使用Context.getSystemService(Context.AUDIO_SERVICE)来得到这个类的一个实例. 公有方法: Public Methods int abandonAudioFocus(AudioManager.OnAudioFocusChangeListenerl) 放弃音频的焦点. void adjustStreamVolume(int streamType, int dir