android多媒體音樂(MediaPlayer)播放器制作代碼
本文實(shí)例為大家分享了android多媒體音樂播放器的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
首先,在AndroidManifest.xml中配置權(quán)限
<!-- 讀取手機(jī)中的音樂 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注釋:Android多媒體音樂的幾種來源
1.在andriod的應(yīng)用中
MediaPlayer.create(this, R.raw.roar); //mnt/sdcard/手機(jī)內(nèi)存卡
2.放在自己的sd卡中(內(nèi)存卡)
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/123.mp3"));
3.在網(wǎng)絡(luò)上(要知道哪個路徑)
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/sister.mp3"));
接下來,在Java代碼中寫
在onCreate方法中寫全局變量:
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private SurfaceView sv_main_suffce;
public void onplay(View view) throws IOException {
imageButton = (ImageButton) view;
if (mediaPlayer==null){
//播放應(yīng)用的音頻文件
// mediaPlayer = MediaPlayer.create(this, R.raw.roar);
//播放內(nèi)存卡中的音頻文件
mediaPlayer=new MediaPlayer();
//音頻流的類型
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//設(shè)置音頻的來源
// mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/roar.mp3"));
// mediaPlayer.prepare();//準(zhǔn)備一下
//播放網(wǎng)絡(luò)音樂
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/crickets.mp3"));
//一步準(zhǔn)備
mediaPlayer.prepareAsync();
//設(shè)置準(zhǔn)備完的監(jiān)聽
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
//開始播放
mediaPlayer.start();
//點(diǎn)擊播放改變圖標(biāo)
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//獲取音樂的播放最大時間
int durtion=mediaPlayer.getDuration();
//設(shè)置進(jìn)度條的最大值為音樂的播放最大時間
seekBar.setMax(durtion);
new Mythred().start();
}
});
//給進(jìn)度條設(shè)置一個事件
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) {
//獲取拖動的進(jìn)度
int progress=seekBar.getProgress();
//到那個位置播放
mediaPlayer.seekTo(progress);
}
});
}
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);
}
}
寫了一個子線程 extends Thread(seekbar進(jìn)度條):
class Mythrod extends Thread{
@Override
public void run() {
super.run();
while (seekBar.getProgress()<=seekBar.getMax()){
//獲取音樂的當(dāng)前播放位置
int currentPosition=mediaPlayer.getCurrentPosition();
seekBar.setProgress(currentPosition);
}
}
}
另建一個類SoundActivity,通過soundPool例化音頻池可以實(shí)現(xiàn)多種聲音一起播放
//實(shí)例化音頻池
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int i, int status) {
//播放
soundPool.play(i,1,1,1,-1,1);
}
});
//寫聲音按鈕的方法
public void playKFC(View view){
//音頻池的路徑
soundPool.load(this,R.raw.rooster,1);
}
public void playTwo(View view){
soundPool.load(this,R.raw.chimp,1);
}
public void playThree(View view){
soundPool.load(this,R.raw.crickets,1);
}
public void playFour(View view){
soundPool.load(this,R.raw.roar,1);
}
public void playDog(View view){
soundPool.load(this,R.raw.dogbark,1);
}
//銷毀音頻池soundPool
@Override
protected void onDestroy() {
super.onDestroy();
if(soundPool!=null){
//釋放內(nèi)存
soundPool.release();
soundPool=null;
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法
- Android實(shí)現(xiàn)多媒體之播放音樂
- Android多媒體之VideoView視頻播放器
- Android多媒體教程之播放視頻的四種方法
- Android 多媒體播放API簡單實(shí)例
- Android開發(fā)之MediaPlayer多媒體(音頻,視頻)播放工具類
- Android開發(fā)之多媒體文件獲取工具類實(shí)例【音頻,視頻,圖片等】
- Android開發(fā)實(shí)現(xiàn)的IntentUtil跳轉(zhuǎn)多功能工具類【包含視頻、音頻、圖片、攝像頭等操作功能】
- Android開發(fā)之媒體播放工具類完整示例
相關(guān)文章
Android自定義View 實(shí)現(xiàn)水波紋動畫引導(dǎo)效果
在android程序開發(fā)中,我們經(jīng)常簡單通過自定義view實(shí)現(xiàn)水波紋動畫引導(dǎo)功能,下面通過本文給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下2017-01-01
Android編程實(shí)現(xiàn)變化的雙重選擇框功能示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)變化的雙重選擇框功能,結(jié)合實(shí)例形式分析了Android雙重選擇框功能的樣式布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10
Android TextWatcher三個回調(diào)以及監(jiān)聽EditText的輸入案例詳解
這篇文章主要介紹了Android TextWatcher三個回調(diào)以及監(jiān)聽EditText的輸入案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
移動端開發(fā)之Jetpack?Hilt技術(shù)實(shí)現(xiàn)解耦
Hilt的出現(xiàn)解決前兩點(diǎn)問題,因?yàn)镠ilt是Dagger針對Android平臺的場景化框架,比如Dagger需要我們手動聲明注入的地方,而Android聲明的地方不都在onCreate()嗎,所以Hilt就幫我們做了,除此之外還做了很多事情2023-02-02
Android 動畫之AlphaAnimation應(yīng)用詳解
本節(jié)講解AlphaAnimation 動畫,窗口的動畫效果,淡入淡出什么的,有些游戲的歡迎動畫,logo的淡入淡出效果就使用AlphaAnimation,具體的祥看本文,需要的朋友可以參考下2012-12-12
Android獲取和讀取短信驗(yàn)證碼的實(shí)現(xiàn)方法
這篇文章主要介紹了Android獲取和讀取短信驗(yàn)證碼的實(shí)現(xiàn)方法,文章內(nèi)容介紹了如何讀取剛收到的短信的相關(guān)內(nèi)容,以及Android獲取短信驗(yàn)證碼的方法,感興趣的小伙伴們可以參考一下2016-03-03
Android自定義View實(shí)現(xiàn)心形圖案
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)心形圖案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

