Android實現(xiàn)多媒體之播放音樂
閑來無聊,最近了解了一下多媒體的一些初步知識。
音頻播放主要設(shè)計到MediaPlayer這個類,播放音頻的路徑可以來源于三個地方。
1.應(yīng)用內(nèi)的音頻
public class MediaPlayActivity extends AppCompatActivity {
private SeekBar seekBar;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media_play);
seekBar = (SeekBar) findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//獲取拖動結(jié)束后的位置
int progress=seekBar.getProgress();
//跳轉(zhuǎn)到某個位置播放
mediaPlayer.seekTo(progress);
}
});
}
public void isPlayOrPause(View view){
ImageButton imageButton= (ImageButton) view;
if(mediaPlayer==null){//代表第一次播放音樂
mediaPlayer = MediaPlayer.create(this, R.raw.Loser);
mediaPlayer.start();
//把圖標(biāo)改成暫停的圖標(biāo)(這里的暫停圖標(biāo)就是播放時的狀態(tài))
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//獲取音樂的總時長
int duration=mediaPlayer.getDuration();
//設(shè)置進度條的最大值為音樂的總時長
seekBar.setMax(duration);
new MyThread();
}else if(mediaPlayer.isPlaying()){//正在播放音樂
mediaPlayer.pause();
//把圖標(biāo)改成播放的圖標(biāo)(暫停狀態(tài))
imageButton.setImageResource(android.R.drawable.ic_media_play);
}else{
mediaPlayer.start();
imageButton.setImageResource(android.R.drawable.ic_media_pause);
}
}
class MyThread extends Thread{
@Override
public void run() {
super.run();
while(seekBar.getProgress()<seekBar.getMax()){
//獲取當(dāng)前音樂播放的位置
int currentPosition=mediaPlayer.getCurrentPosition();
//讓進度條跟著時間走
seekBar.setProgress(currentPosition);
}
}
}
}
2. 播放內(nèi)存卡里的音樂,這一部分代碼就是替換前面的mediaPlayer = MediaPlayer.create(this, R.raw.Loser);
//播放內(nèi)存卡內(nèi)的音頻
mediaPlayer=new MediaPlayer();
//設(shè)置類型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//設(shè)置音源
try {
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/f.mp3"));
//必須在播放前加載音頻文件
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
3.播放網(wǎng)絡(luò)上的音頻文件
首先我們要把網(wǎng)絡(luò)環(huán)境搭配,
1).找到我們tomcat放的位置,
2)然后雙擊startup.bat運行,最小化界面
3)然后打開cmd命令,輸入config找到我們本機的IPv4地址
4)然后在瀏覽器上試一下,是否能夠打開tomcat的主頁
5)在把自己的mp3文件放到tomcat的ROOT目錄下
6)然后在自己的模擬器上,用瀏覽器同樣的去打開,用自己本機的IPv4地址去打開tomcat的主頁,在后面加上音樂的名字,看能不能放出來,如果可以,就代表環(huán)境已經(jīng)搭配好了
7)接下來我們上代碼
把之前播放內(nèi)存卡上的音頻路徑改成網(wǎng)絡(luò)上的
//播放網(wǎng)絡(luò)上的
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.164/internet.mp3"));
//必須在播放前加載音頻文件(異步準(zhǔn)備)
mediaPlayer.prepareAsync();
然后準(zhǔn)備完成的監(jiān)聽
//監(jiān)聽:準(zhǔn)備完成的監(jiān)聽
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
//把圖標(biāo)改成暫停的圖標(biāo)(這里的暫停圖標(biāo)就是播放時的狀態(tài))
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//獲取音樂的總時長
int duration=mediaPlayer.getDuration();
//設(shè)置進度條的最大值為音樂的總時長
seekBar.setMax(duration);
new MyThread();
}
});
最后,注意一個細(xì)節(jié),在Manifasit里面加上聯(lián)網(wǎng)的權(quán)限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
最后運行一下,就大功告成了,界面非常的簡單

如果你們想加上歌詞啊,時間啊,可以繼續(xù)完善,但是思路都差不多,今天的分享就到此了
- Android實現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法
- android多媒體音樂(MediaPlayer)播放器制作代碼
- Android多媒體之VideoView視頻播放器
- Android多媒體教程之播放視頻的四種方法
- Android 多媒體播放API簡單實例
- Android開發(fā)之MediaPlayer多媒體(音頻,視頻)播放工具類
- Android開發(fā)之多媒體文件獲取工具類實例【音頻,視頻,圖片等】
- Android開發(fā)實現(xiàn)的IntentUtil跳轉(zhuǎn)多功能工具類【包含視頻、音頻、圖片、攝像頭等操作功能】
- Android開發(fā)之媒體播放工具類完整示例
相關(guān)文章
Android?imageVIew實現(xiàn)鏡像旋轉(zhuǎn)的方法
在Android應(yīng)用開發(fā)中,有時候我們需要對ImageView中的圖片進行鏡像旋轉(zhuǎn),以展示不同的效果,本文將介紹如何使用代碼實現(xiàn)ImageView的鏡像旋轉(zhuǎn)效果,這篇文章主要介紹了Android?imageVIew如何做鏡像旋轉(zhuǎn),需要的朋友可以參考下2024-06-06
Android仿優(yōu)酷圓形菜單學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Android仿優(yōu)酷圓形菜單學(xué)習(xí)筆記,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
丟失Android系統(tǒng)庫或者Conversion to Dalvik format failed with error
這篇文章主要介紹了丟失Android系統(tǒng)庫或者Conversion to Dalvik format failed with error 1錯誤的解決方法,分析了Android系統(tǒng)庫丟失及版本問題的處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-12-12
Android中Service實時向Activity傳遞數(shù)據(jù)實例分析
這篇文章主要介紹了Android中Service實時向Activity傳遞數(shù)據(jù)的方法,實例分析了Service組件基于線程操作實現(xiàn)數(shù)值實時傳遞的相關(guān)技巧,需要的朋友可以參考下2015-09-09
Android自定義控件ScrollView實現(xiàn)上下滑動功能
這篇文章主要為大家詳細(xì)介紹了Android自定義控件ScrollView實現(xiàn)上下滑動功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07

