最近在做一个音乐App,就一个MediaPlayer类,就忙了好久。
首先简单介绍MediaPlayer的Life cycle。
- When a MediaPlayer object is just created using
new
or afterreset()
is called, it is in the Idle state; and afterrelease()
is called, it is in the End state. Between these two states is the life cycle of the MediaPlayer object. - 意思是:MediaPlayer 的对象的生命周期是在reset()(空闲状态)与release()(结束状态)之间。
- Calling
setDataSource(FileDescriptor)
, orsetDataSource(String)
, orsetDataSource(Context, Uri)
, orsetDataSource(FileDescriptor, long, long)
transfers a MediaPlayer object in the Idle state to the Initialized state. - 意思是:调用完这些函数中的某一个方法就从空闲状态进入初始化状态。
- A MediaPlayer object must first enter the Prepared state before playback can be started.
- 意思是:MediaPlayer 对象被回放之前,必须进入准备状态。
- To start the playback,
start()
must be called. Afterstart()
returns successfully, the MediaPlayer object is in the Started state.isPlaying()
can be called to test whether the MediaPlayer object is in the Started state. - 意思是:开启播放需要调用start()f方法,isPlaying()方法返回布尔值判断MediaPlayer 对象是否在播放。
1.最重要的一点就是权限的设置
<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/><pre name="code" class="java"><uses-permission android:name="android.permission.RECORD_AUDIO"/>
2.创建MediaPlayer 对象
MediaPlayer mediaPlayer = new MediaPlayer();
3. 调用周期中的方法
mediaPlayer.reset();
mediaPlayer.setDataSource(file.path);//由于本人访问的是SD卡中的信息,所以调用了这个方法。
mediaPlayer.prepare();
mediaPlayer .start(); 按照这个流程走下来就可以播放文件(不要弄乱顺序)。
最后再说一下我遇到的问题:就是调试了好多,最后原来是MediaPlayer 的对象没有创建,就是上面的第二步。
.