97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> 解讀Android MediaPlayer 詳細(xì)使用方法  
 
解讀Android MediaPlayer 詳細(xì)使用方法
分享到:

MediaPlayer具有非常強(qiáng)大的功能,對(duì)音視頻的播放均提供了支持,為了保證播放期間系統(tǒng)的正常工作,需要設(shè)置"android.permission.WAKE_LOCK"權(quán)限。

在MediaPlayer中,根據(jù)數(shù)據(jù)源為元數(shù)據(jù)、音頻文件、音頻流的不同情況,有著相應(yīng)的處理過(guò)程。基本的過(guò)程如下:

1)播放元數(shù)據(jù)

如果元數(shù)據(jù)位于Android工程的“res/raw”文件夾下。播放元數(shù)據(jù)的過(guò)程為:
    MediaPlayer mp=MediaPlayer.create(context, R.raw.sound_file_1);
    mp.start();

2)播放音頻文件

如果音頻文件的路徑為PATH_TO_FILE,播放音頻文件的過(guò)程為:
    MediaPlayer mp=new MediaPlayer();
    mp.setDataSource(PATH_TO_FILE); //設(shè)置數(shù)據(jù)源
    mp.prepare();
    mp.start();

3)播放音頻流

如果音頻文件的URL地址為URL_ADRESS,播放音頻流的過(guò)程為:
    MediaPlayer mp=new MediaPlayer();
    mp.setDataSource(URL_ADRESS); //設(shè)置數(shù)據(jù)源
    mp.prepare();
    mp.start();

下面是Android中的一個(gè)實(shí)例,介紹了Android的MediaPlayer播放器音頻文件的播放、暫停、回復(fù)、停止等操作的處理流程。需要注意的是,為了獲得更好的用戶體驗(yàn),在暫停和恢復(fù)播放時(shí),必須對(duì)靜音模式和獨(dú)放模式進(jìn)行處理。

代碼 靜音模式和獨(dú)放模式的處理

public class AudioManagerStub extends Activity
        {
           private final int MP3_TO_PLAY=R.raw.testmp3;
           private MediaPlayer mMediaPlayer;
           private AudioManager mAudioManager;
           private static CTSResult mCTSResult;
           …
           @Override
           protected void onCreate(Bundle savedInstanceState)
               {
                  super.onCreate(savedInstanceState);
                  //獲取音頻服務(wù)
                  mAudioManager=(AudioManager) getSystemService(Context.AUDIO_SERVICE);
                  mMediaPlayer=MediaPlayer.create (this, MP3_TO_PLAY); //設(shè)置音頻源
                  mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//設(shè)置流類型
                  mMediaPlayer.setLooping(false); //設(shè)置是否循環(huán)播放
                  mMediaPlayer.start(); //開始播放
               }
           @Override
           protected void onPause()
              {
                 super.onPause();
                 try
                   {
                       for (int i=0; i < AudioSystem.getNumStreamTypes(); i++)
                           {
                                mAudioManager.setStreamMute(i, false); //取消其他音頻應(yīng)用的靜音
                                mAudioManager.setStreamSolo(i, false); //設(shè)置為非獨(dú)放模式
                           }
                   }
                 catch (Exception e)
                   {
                       mCTSResult.setResult(CTSResult.RESULT_FAIL);
                       finish();
                   }
              }
           @Override
           protected void onResume()
             {
               super.onResume();
               try
                 {
                   for (int i=0; i< AudioSystem.getNumStreamTypes(); i++)
                     {
                         mAudioManager.setStreamMute(i, true); //設(shè)置其他音頻應(yīng)用靜音
                         mAudioManager.setStreamSolo(i, true); //設(shè)置為獨(dú)放模式
                     }
                 }
               catch (Exception e)
                 {
                   mCTSResult.setResult(CTSResult.RESULT_FAIL);
                   finish();
                   return;
                 }
               Intent intent=new Intent();
               intent.setClass(this, AudioManagerStubHelper.class);
               intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               startActivityForResult(intent, 1);
             }
           @Override
           protected void onActivityResult (int requestCode, int resultCode, Intent data)
             {
               super.onActivityResult(requestCode, resultCode, data);
               mMediaPlayer.stop(); //停止播放
               mMediaPlayer.release(); //釋放資源
               mCTSResult.setResult(CTSResult.RESULT_OK);
               finish();
             }
        }

 
 更多相關(guān)文章

·Android AudioTrack音頻播放分析
·Android音頻記錄的處理
·Android AudioManager音量控制流程
·Android音頻處理的基本接口
·Android編譯過(guò)程詳解(三)