MediaPlayer
https://developer.android.com/reference/android/media/MediaPlayer
reset(); // 设置到 Idle(空闲)状态,是未 setDataSource 的状态
setDataSource(String path); // 指定音频文件的路径,设置到 Initialized(初始化)状态——准备状态之前,可以通过 prepare() 或 prepareAsync() 使用同步或异步方式准备,涉及网络资源常用异步准备
prepare(); // 让 MediaPlayer 进入到 prepare(准备)状态
setLooping(true); // 设置循环,在准备状态后设置,在播放结束后进入 playbackComplete 状态,会通
过 start() 方法进入 started 状态,不会通过 onComplete() 执行设置的方法
start(); // 进入启动状态
getDuration() // 获得播放长度,整形,在 prepare 状态后才能使用
isPlaying() // 判断是否在播放,在 prepare 状态后才能使用
getCurrentPosition() // 得到当前播放位置,整形,在 prepare 状态后才能使用
pause(); // 暂停播放,可以通过 start() 方法再次进入 started 状态或使用 stop() 进入 stop 状态
stop(); // 停止状态,可以通过 prepare() 进入准备状态
setOnCompletionListener(this); // 当 setLooping(false),播放结束将回调 onComplete() 方法,之后进入 playbackComplete 状态
release(); // 进入 end 状态,MediaPlayer 不能再使用
VideoView
resume:重新播放,与 MediaPlayer 的 reset 相同
suspend:释放,与 MediaPlayer 的 release 相同
音量修改
https://developer.android.com/guide/topics/media-apps/volume-and-earphones
导航音频是一种音频流,音乐是一种音频流,是不一样的。我记得的音乐是类型是: AudioManager.STREAM_MUSIC(还有STREAM_VOICE_CALL通话音频,其音量大小根据声音更改、STREAM_RING铃声、STREAM_ALARM警报、STREAM_SYSTEM系统声、STREAM_MUTE静音、STREAM_UNMUTE非静音……)
通过 AudioManager 可以控制各个音频流;
获取 AudioManager:
AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
获取最大音量值、当前音量值:
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
设置媒体音量为最大值,当然也可以设置媒体音量为其他给定的值:
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0);
按系统设置加大音量、降低音量,并显示 UI:
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);