android多媒體音樂(lè)(MediaPlayer)播放器制作代碼
本文實(shí)例為大家分享了android多媒體音樂(lè)播放器的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
首先,在AndroidManifest.xml中配置權(quán)限
<!-- 讀取手機(jī)中的音樂(lè) --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注釋:Android多媒體音樂(lè)的幾種來(lái)源
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ò)上(要知道哪個(gè)路徑)
mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/sister.mp3"));
接下來(lái),在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è)置音頻的來(lái)源 // mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/roar.mp3")); // mediaPlayer.prepare();//準(zhǔn)備一下 //播放網(wǎng)絡(luò)音樂(lè) 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); //獲取音樂(lè)的播放最大時(shí)間 int durtion=mediaPlayer.getDuration(); //設(shè)置進(jìn)度條的最大值為音樂(lè)的播放最大時(shí)間 seekBar.setMax(durtion); new Mythred().start(); } }); //給進(jìn)度條設(shè)置一個(gè)事件 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) { //獲取拖動(dòng)的進(jìn)度 int progress=seekBar.getProgress(); //到那個(gè)位置播放 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); } }
寫了一個(gè)子線程 extends Thread(seekbar進(jìn)度條):
class Mythrod extends Thread{ @Override public void run() { super.run(); while (seekBar.getProgress()<=seekBar.getMax()){ //獲取音樂(lè)的當(dāng)前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); seekBar.setProgress(currentPosition); } } }
另建一個(gè)類SoundActivity,通過(guò)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; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)使用流媒體播放遠(yuǎn)程mp3文件的方法
- Android實(shí)現(xiàn)多媒體之播放音樂(lè)
- Android多媒體之VideoView視頻播放器
- Android多媒體教程之播放視頻的四種方法
- Android 多媒體播放API簡(jiǎn)單實(shí)例
- Android開發(fā)之MediaPlayer多媒體(音頻,視頻)播放工具類
- Android開發(fā)之多媒體文件獲取工具類實(shí)例【音頻,視頻,圖片等】
- Android開發(fā)實(shí)現(xiàn)的IntentUtil跳轉(zhuǎn)多功能工具類【包含視頻、音頻、圖片、攝像頭等操作功能】
- Android開發(fā)之媒體播放工具類完整示例
相關(guān)文章
Android ApplicationInfo 應(yīng)用程序信息的詳解
這篇文章主要介紹了Android ApplicationInfo 應(yīng)用程序信息的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10Android 5.1 WebView內(nèi)存泄漏問(wèn)題及快速解決方法
下面小編就為大家?guī)?lái)一篇Android 5.1 WebView內(nèi)存泄漏問(wèn)題及快速解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Flutter?彈性布局基石flex算法flexible示例詳解
這篇文章主要為大家介紹了Flutter?彈性布局基石flex算法flexible示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12android-獲取網(wǎng)絡(luò)時(shí)間、獲取特定時(shí)區(qū)時(shí)間、時(shí)間同步的方法
本篇文章主要介紹了android-獲取網(wǎng)絡(luò)時(shí)間、獲取特定時(shí)區(qū)時(shí)間、時(shí)間同步,小編覺(jué)得不錯(cuò),現(xiàn)在就分享給大家,有興趣的可以了解一下。2016-12-12Android使用GPS獲取用戶地理位置并監(jiān)聽位置變化的方法
這篇文章主要介紹了Android使用GPS獲取用戶地理位置并監(jiān)聽位置變化的方法,實(shí)例分析了Android編程中GPS定位的實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2015-12-12