国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

多媒體音樂播放器(MediaPlayer)

2019-11-08 01:33:32
字體:
來源:轉載
供稿:網友

我給大家分享一個我寫的一個簡單的音樂播放的功能 說起音樂播放器就會想到MediaPlayer這個類 首先音樂的播放來源有三種方式 1.在自己的應用中

MediaPlayer.create(this, R.raw.roar);

2.放在自己的sd卡中(內存卡)

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

3.在網絡上(要知道哪個路徑)

mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/crickets.mp3"));

我寫了一個點擊的方法具體如下:

public void onplay(View view) throws IOException { imageButton = (ImageButton) view; if (mediaPlayer==null){ //播放應用的音頻文件// mediaPlayer = MediaPlayer.create(this, R.raw.roar); //播放內存卡中的音頻文件 mediaPlayer=new MediaPlayer(); //音頻流的類型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設置音頻的來源// mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/roar.mp3"));// mediaPlayer.PRepare();//準備一下 //播放網絡音樂 mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.202:8080/crickets.mp3")); //一步準備 mediaPlayer.prepareAsync(); //設置準備完的監聽 mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { //開始播放 mediaPlayer.start(); //點擊播放改變圖標 imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的播放最大時間 int durtion=mediaPlayer.getDuration(); //設置進度條的最大值為音樂的播放最大時間 seekBar.setMax(durtion); new Mythred().start(); } }); //給進度條設置一個事件 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); } }); } 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 Mythred extends Thread{ @Override public void run() { super.run(); while (seekBar.getProgress()<=seekBar.getMax()){ //每循環一次就取到當前的位置 int cption=mediaPlayer.getCurrentPosition(); seekBar.setProgress(cption); } } }

千萬不要忘加了權限:

<!-- 讀取內存卡的權限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 聯網的權限 --> <uses-permission android:name="android.permission.INTERNET" />

我用SoundPool寫了一個東西具體代碼如下:

//實例化音頻池(在這里我設置了只能同時播放4個如果播放第五個,那么第一個就關閉了) soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0); soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int i, int i1) { //播放 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); } @Override protected void onDestroy() { super.onDestroy(); if(soundPool!=null){ //釋放內存 soundPool.release(); soundPool=null; } }

有啥不懂的或不清楚的,可以立即留言問博主


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古丈县| 达尔| 即墨市| 中牟县| 兴义市| 延边| 洞头县| 汨罗市| 玉林市| 会理县| 永福县| 安仁县| 桂东县| 时尚| 永胜县| 淮南市| 昭苏县| 青川县| 满城县| 新建县| 隆德县| 苍山县| 平罗县| 如皋市| 镇雄县| 淮阳县| 镇安县| 襄垣县| 土默特左旗| 万荣县| 文水县| 淮南市| 大名县| 乡宁县| 丰顺县| 垦利县| 沅江市| 自贡市| 镇赉县| 宁明县| 新宾|