导读:
Android提供了可以进行对原生系统进行控制API。AudioManager用来对音量、模式(静音,震动,震动加声音等模式)等进行管理。可以用Vibrator、HapticFeedback进行管理手机震动。本人带着案例进行讲解,先温柔点讲控制系统音量,再说撩人的震动棒...呸..是振荡器。
一、AudioManager (音频管理)
1、音乐的播放方式
//1、自定义音频文件test
MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.test);
//2、系统电话铃声TYPE_RINGTONE\系统通知铃声TYPE_NOTIFICATION
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(PlayerService.this, uri);
————————————————————————————————————————————————————————————————
mMediaPlayer.setLooping(true); // 设置循环播放
mMediaPlayer.prepare();//准备
mMediaPlayer.start();//播放
2、修改音量方式
首先,拿到音频管理实例对象。 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
然后,设置音量。例如 audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 30, 0);
(1)修改音量
adjustVolume(int direction , int flag) //修改音量
direction(方向):顾名思义,就是点击事件发生,往上增加音量,往下减少音量,和保持音量不变。
- AudioManager.ADJUST_LOWER(降低)
- AudioManager.ADJUST_RAISE(升高)
- AudioManager.ADJUST_SAME(锁定不变)
(2) 修改类型、音量
adjustStreamVolume(int streamType ,int direction , int flag) //修改类型、音量
streamType(音频流类型):即指定声音类型,有下述几种声音类型:
STREAM_ALARM:手机闹铃 STREAM_MUSIC:手机音乐
STREAM_RING:电话铃声 STREAM_SYSTEAM:手机系统
STREAM_DTMF:音调 STREAM_NOTIFICATION:系统提示
STREAM_VOICE_CALL:语音电话
flag(标志):其实是点击事件发生后,音量的表现形式。
- AudioManager.FLAG_SHOW_UI :会弹出调节音量的界面
- AudioManager.FLAG_ALLOW_RINGER_MODES :最低声音会振动
(3)设置音量大小
setStreamVolume(int streamType, int index, int flags)//直接设置音量大小
index(音量的值) ,int类型。
4、实用小案例
XML 写一个SeekBar控件
<android.support.v7.widget.AppCompatSeekBar
android:id="@+id/play_volume"
android:layout_width="match_parent"
android:layout_height=&#