本帖最后由 879792799 于 2023-8-19 13:23 编辑  
 
坐等大神出手 占楼备用! 
 
  ====================================================== 
 
求大神写一小段MediaPlayer类 播放代码!! 
 
https://blog.csdn.net/nanoage/article/details/127363147 
 
 
【非整套代码】音频播放器代码框架已经搭好了      
 
自带MediaPlayer代码是从头播放到尾然后播放下一个音频【下面是常见调用代码】 
MediaPlayer的工作流程是这样的:1、首先创建MediaPlaer对象; 2、然后调用setDataSource()方法来设置音频文件的路径; 3 、再调用prepare()方法使MediaPlayer进入到准备状态; 4 、调用start方法就可以播放音频。       mPlayer = new MediaPlayer();               实例化    
 
      mPlayer.setDataSource(mAudioFileName);      设置需要播放mp3的路径 
 
      mPlayer.prepare();            准备 
 
      mPlayer.start();         开始播放 
 
      mPlayer.setLooping(true);   设置循环模式 
 
MediaPlayer其相关方法有: 
 
       void seekTo(int msec):从指定位置播放,参数为用毫秒定义的位置 
 
       int getDuration():得到音频长度,即总的毫秒数 
 
       void setVolume(float leftVolume, float rightVolume):设置音量 
 
 
==================以下搜索得来 仅供参考================== 
 
MediaPlayer其主要方法有: 
 
 
void setDataSource(String path):设置要播放的音频文件位置,参数path为文件路径或Uri 
void prepare():setDataSource并不载入资源,需要调用此方法准备资源 
void start():开始/恢复播放 
void stop():停止播放,调用后无法再播放 
void pause():暂停播放,可以再用start恢复播放 
void reset():重置到刚刚创建后的状态 
void release():释放掉相关的资源 
void seekTo(int msec):从指定位置播放,参数为用毫秒定义的位置 
int getCurrentPosition():得到当前播放位置,即播放的毫秒数 
int getDuration():得到音频长度,即总的毫秒数 
boolean isPlaying():得到当前音频是否正在播放 
void setLooping(boolean looping) / boolean isLooping():循环播放 
void setVolume(float leftVolume, float rightVolume):设置音量 
 
 
https://www.iteye.com/blog/deyum-1459255 
https://blog.csdn.net/speedpower/article/details/84172071 
 
近日在做一个的小应用,被MP3AB段复读的功能困扰了很久,最后终于在网上找到一个解决方法, 
 
就是使用CountDownTimer让MediaPlayer只播放MP3的某个区段,轻松解决了AB段复读的功能。详细代码如下: 
 
      // 复读第10秒到第20秒这个区间的音频   
        int startPos = 10000;   
        int endPos = 20000;   
    
        mMediaPlayer.seekTo(startPos);   
        mMediaPlayer.start();   
        CountDownTimer cntr_aCounter = new CountDownTimer(/* millisInFuture= */endPos - startPos, /* countDownInterval= */1000) {   
            public void onTick(long millisUntilFinished) {   
          
            }   
 
- public void play(final String filePath) throws Exception {  
 
 -     try {  
 
 -         if (mMediaPlayer == null) {  
 
 -             // 创建MediaPlayer对象并设置Listener  
 
 -             mMediaPlayer = new MediaPlayer();  
 
 -         } else {  
 
 -             // 复用MediaPlayer对象  
 
 -             mMediaPlayer.reset();  
 
 -         }  
 
 -         mMediaPlayer.setDataSource(filePath);  
 
 -         mMediaPlayer.prepare();  
 
 -         mMediaPlayer.setVolume(10.f, 1.0f);  
 
 -   
 
 -         // 复读第10秒到第20秒这个区间的音频  
 
 -         int startPos = 10000;  
 
 -         int endPos = 20000;  
 
 -         // Try to play three times  
 
 -         repeatAToB(startPos, endPos, 3);  
 
 -   
 
 -     } catch (Exception e) {  
 
 -         e.printStackTrace();  
 
 -     }  
 
 - }  
 
 -   
 
 - private void repeatAToB(final int startPos, final int endPos, final int repeatTimes)throws Exception {  
 
 -   
 
 -         mMediaPlayer.seekTo(startPos);  
 
 -         mMediaPlayer.start();  
 
 -         CountDownTimer cntr_aCounter = new CountDownTimer(/* millisInFuture= */endPos - startPos, /* countDownInterval= */1000) {  
 
 -             public void onTick(long millisUntilFinished) {  
 
 -                 // DO SOMETHING  
 
 -             }  
 
 -   
 
 -             public void onFinish() {  
 
 -                 // Code fire after finish  
 
 -                 if((repeatTimes - 1) > 0){  
 
 -                     try {  
 
 -                         repeatAToB(startPos, endPos, repeatTimes - 1);  
 
 -                     } catch (Exception e) {  
 
 -                         e.printStackTrace();  
 
 -                     }  
 
 -                 }else{  
 
 -                     mMediaPlayer.stop();  
 
 -                 }  
 
 -             }  
 
 -         };  
 
 -         cntr_aCounter.start();  
 
 -     } 
 
  复制代码 
==================以上搜索得来 仅供参考================== 
 
 
 
一下备份一下阿星大神的原帖 防止修改后看不懂 
 
 
 |