您好,登錄后才能下訂單哦!
使用android如何制作一個多媒體音樂播放器?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
首先,在AndroidManifest.xml中配置權限
<!-- 讀取手機中的音樂 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
注釋:Android多媒體音樂的幾種來源
1.在andriod的應用中
MediaPlayer.create(this, R.raw.roar); //mnt/sdcard/手機內存卡
2.放在自己的sd卡中(內存卡)
mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/1/123.mp3"));
3.在網絡上(要知道哪個路徑)
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){ //播放應用的音頻文件 // 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); } }
寫了一個子線程 extends Thread(seekbar進度條):
class Mythrod extends Thread{ @Override public void run() { super.run(); while (seekBar.getProgress()<=seekBar.getMax()){ //獲取音樂的當前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); seekBar.setProgress(currentPosition); } } }
另建一個類SoundActivity,通過soundPool例化音頻池可以實現多種聲音一起播放
//實例化音頻池 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){ //釋放內存 soundPool.release(); soundPool=null; } }
看完上述內容,你們掌握使用android如何制作一個多媒體音樂播放器的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。