Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android三種路徑的音樂播放

Android三種路徑的音樂播放

編輯:關於Android編程

Android三種路徑的音樂播放:儲存在不同路徑中音樂有不同的獲取方式,過程大同小異,結果當然是一樣。但是它們最重要的不同點是什麼呢。

一.應用內的音頻文件

public void isPlayOrPause(View view){

final ImageButton imageButton= (ImageButton) view

if(mediaPlayer==null){

//實例化MediaPlayer

//播放應用內

//mediaPlayer = MediaPlayer.create(this, R.raw.love);

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//獲取音樂的總時長

int duration=mediaPlayer.getDuration();

//設置進度條的最大值為音樂的總時長

seekBar.setMax(duration);

new MyThread().start();

}

});

}else if(mediaPlayer.isPlaying()){

mediaPlayer.pause();

//把圖標修改為播放的圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else{

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

二.手機內的音頻文件

手機內得在清單文件中配置可閱讀文件權限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">uses-permission>

public void isPlayOrPause(View view){

final ImageButton imageButton= (ImageButton) view;

if(mediaPlayer==null){

//播放內存卡中音頻文件

mediaPlayer=new MediaPlayer();

//設置類型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//設置音源

try {

mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/f.mp3"));

//准備一下(內存卡)

mediaPlayer.prepare();

} catch (IOException e) {

e.printStackTrace();

}

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//獲取音樂的總時長

int duration=mediaPlayer.getDuration();

//設置進度條的最大值為音樂的總時長

seekBar.setMax(duration);

new MyThread().start();

}else if(mediaPlayer.isPlaying()){

mediaPlayer.pause();

//把圖標修改為播放的圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else{

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

三.網絡上的音頻文件

網絡權限

<uses-permission android:name="android.permission.INTERNET" />

public void isPlayOrPause(View view){

final ImageButton imageButton= (ImageButton) view;

if(mediaPlayer==null){

//實例化MediaPlayer

//設置類型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

//設置音源

try {

//播放網絡音樂

mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.135/internet.mp3"));

//准備(網絡)

mediaPlayer.prepareAsync();

} catch (IOException e) {

e.printStackTrace();

}

//監聽:准備完成的監聽

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

@Override

public void onPrepared(MediaPlayer mediaPlayer) {

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

//獲取音樂的總時長

int duration=mediaPlayer.getDuration();

//設置進度條的最大值為音樂的總時長

seekBar.setMax(duration);

new MyThread().start();

}

});

}else if(mediaPlayer.isPlaying()){

mediaPlayer.pause();

//把圖標修改為播放的圖標

imageButton.setImageResource(android.R.drawable.ic_media_play);

}else{

mediaPlayer.start();

//把圖標修改為暫停的圖標

imageButton.setImageResource(android.R.drawable.ic_media_pause);

}

}

音樂播放器由一SeekBar作為展示,他的進度隨著音樂的播放而前進,當我們對它拖拽時音樂也會相對應

的前進,這時就需要一個線程對它進行操作,同時需要監聽到他當前位置

class MyThread extends Thread{

@Override

public void run() {

super.run();

while(seekBar.getProgress()<=seekBar.getMax()){

//獲取當前音樂播放的位置

int currentPosition=mediaPlayer.getCurrentPosition();

//讓進度條動起來

seekBar.setProgress(currentPosition);

}

}

}

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

//獲取拖動結束之後的位置

int progress=seekBar.getProgress();

//跳轉到某個位置播放

mediaPlayer.seekTo(progress);

}

});
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved