Android本地網路播放
和本地音樂不同的是非同步準備,以及在非同步準備完畢的時候採取回撥方式來進行音樂的播放
public class MainActivity extends Activity {
private TextView et_path;
private Button bt_play;
private Button bt_pause;
private Button bt_stop;
private Button bt_replay;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
et_path = (TextView) findViewById(R.id.et_path);
bt_play = (Button) findViewById(R.id.bt_play);
bt_pause = (Button) findViewById(R.id.bt_pause);
bt_stop = (Button) findViewById(R.id.bt_stop);
bt_replay = (Button) findViewById(R.id.bt_replay);
}
public void play(View view) {
String path = et_path.getText().toString();
if(!path.startsWith("http://")){
Toast.makeText(getApplicationContext(), "檔案路徑錯誤", Toast.LENGTH_SHORT).show();
return;
}
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(path);
mediaPlayer.prepareAsync(); //非同步準備
mediaPlayer.setOnPreparedListener(new OnPreparedListener() { //非同步準備完畢的回撥方法
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start(); //開始播放
bt_play.setEnabled(false); //設定按鈕不可按
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() { //播放完成時的回撥方法
@Override
public void onCompletion(MediaPlayer mp) {
bt_play.setEnabled(true); //設定按鈕可按
}
});
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "播放失敗", Toast.LENGTH_SHORT).show();
}
}
public void pause(View view) {
if(mediaPlayer!=null&&mediaPlayer.isPlaying()){ //在播放狀態按暫停後
mediaPlayer.pause(); //播放暫停
bt_pause.setText("繼續"); //暫停按鈕顯示繼續
}else if(mediaPlayer!=null&&!mediaPlayer.isPlaying()){ //在暫停狀態按繼續後
mediaPlayer.start(); //播放繼續
bt_pause.setText("暫停"); //暫停按鈕顯示暫停
}
}
public void stop(View view) {
if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
mediaPlayer.stop(); //暫停播放
mediaPlayer.release(); //釋放資源
mediaPlayer = null;
}
}
public void replay(View view) {
if(mediaPlayer!=null){
mediaPlayer.seekTo(0);
}else{
play(view);
}
}
}
相關文章
- Android本地音樂播放Android
- C#中呼叫libvlc實現本地、網路節目流的播放C#
- Android使用VideoView播放網路視訊,獲取網路視訊縮圖AndroidIDEView
- Android音訊播放(本地/網路)繪製資料波形,根據特徵有節奏的改變顏色Android音訊特徵
- Android下載網路pdf檔案儲存至本地Android
- ios網路學習------9 播放網路視訊iOS
- 使用Vitamio開源專案在Android實現播放網路視訊Android
- Mac 檢視本地網路配置Mac
- 更安全的本地Docker網路Docker
- HTML video 播放本地視訊HTMLIDE
- 網路播放器的補充 (轉)播放器
- yum本地源及網路源配置
- 音視訊學習 (九) 從 0 ~ 1 開發一款 Android 端播放器(支援多協議網路拉流/本地檔案)Android播放器協議
- 筆記 - 本地攔截genymotion或者Android模擬器的網路請求筆記Android
- centos同步yum源到本地,建立本地網路yum源CentOS
- Android播放flashAndroid
- Android踩坑記錄:部分網站在WebView上播放影片會重複播放Android網站WebView
- 【筆記】Android 網路筆記Android
- Android面試之網路Android面試
- Android -- 網路管理分析Android
- android 音訊播放 SoundPoolAndroid音訊
- android播放swf檔案Android
- Java 獲取本地時間與網路時間Java
- RedHat 6下配置本地及網路yum倉庫Redhat
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- Android網路請求(2)Android
- iOS 播放遠端網路音樂的核心技術點iOS
- Android用ImageView顯示本地和網上的圖片AndroidView
- Virtualbox 虛擬機器實現與本地、網際網路互通虛擬機
- 微信小程式 實現網路圖片本地快取微信小程式快取
- Azure File Storage(一)為本地機器配置網路磁碟
- LSA:網路消費者與本地企業報告
- python獲取網路時間和本地時間Python
- Substrate 區塊鏈開發之本地網路啟動區塊鏈
- Android中用SoundPool播放音訊Android音訊
- Android播放swf類視訊Android