Android簡(jiǎn)易音樂播放器實(shí)現(xiàn)代碼
本文實(shí)例為大家分享了Android音樂播放器的具體代碼,供大家參考,具體內(nèi)容如下
1.播放項(xiàng)目?jī)?nèi)的音樂
package com.thm.g150820_android26_playmusic; import Android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.SeekBar; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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) { //獲取拖動(dòng)結(jié)束之后的位置 int progress = seekBar.getProgress(); //跳轉(zhuǎn)到某個(gè)位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ //把View強(qiáng)轉(zhuǎn)為ImageButton ImageButton imageButton = (ImageButton) view; if(mediaPlayer==null) { //實(shí)例化MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.yao); //開始播放 mediaPlayer.start(); //圖標(biāo)修改為暫停的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的總時(shí)長(zhǎng) int duration = mediaPlayer.getDuration(); //設(shè)置進(jìn)度條的最大值為音樂的總時(shí)長(zhǎng) seekBar.setMax(duration); new MyThre().start(); }//判斷如果音樂在播放 else if(mediaPlayer.isPlaying()){ //就暫停音樂 mediaPlayer.pause(); //圖標(biāo)修改為播放的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); //圖標(biāo)修改為暫停的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_pause); } } //寫內(nèi)部類 class MyThre extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()<=seekBar.getMax()){ //獲取當(dāng)前音樂播放的位置 int currentPosition = mediaPlayer.getCurrentPosition(); //讓進(jìn)度條動(dòng)起來(lái) seekBar.setProgress(currentPosition); } } } }
2.播放內(nèi)存卡中的音樂
package com.thm.g150820_android26_playmusic; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.SeekBar; import java.io.IOException; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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) { //獲取拖動(dòng)結(jié)束之后的位置 int progress = seekBar.getProgress(); //跳轉(zhuǎn)到某個(gè)位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ //把View強(qiáng)轉(zhuǎn)為ImageButton ImageButton imageButton = (ImageButton) view; if(mediaPlayer==null) { //實(shí)例化MediaPlayer //播放應(yīng)用內(nèi)的音樂 //mediaPlayer = MediaPlayer.create(this, R.raw.yao); //播放內(nèi)存卡中的音樂 mediaPlayer = new MediaPlayer(); //設(shè)置類型 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); //設(shè)置音樂路徑 try { mediaPlayer.setDataSource(this, Uri.parse("storage/sdcard0/Music/a.mp3")); //播放之前準(zhǔn)備一下 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //開始播放 mediaPlayer.start(); //圖標(biāo)修改為暫停的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂的總時(shí)長(zhǎng) int duration = mediaPlayer.getDuration(); //設(shè)置進(jìn)度條的最大值為音樂的總時(shí)長(zhǎng) seekBar.setMax(duration); new MyThre().start(); }//判斷如果音樂在播放 else if(mediaPlayer.isPlaying()){ //就暫停音樂 mediaPlayer.pause(); //圖標(biāo)修改為播放的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_play); }else{ mediaPlayer.start(); //圖標(biāo)修改為暫停的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_pause); } } //寫線程內(nèi)部類 class MyThre extends Thread{ @Override public void run() { super.run(); while(seekBar.getProgress()<=seekBar.getMax()){ //獲取當(dāng)前音樂播放的位置 int currentPosition = mediaPlayer.getCurrentPosition(); //讓進(jìn)度條動(dòng)起來(lái) seekBar.setProgress(currentPosition); } } } }
3.添加讀取內(nèi)存的權(quán)限
更多關(guān)于播放器的內(nèi)容請(qǐng)點(diǎn)擊《java播放器功能》進(jìn)行學(xué)習(xí)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)簡(jiǎn)單音樂播放器(MediaPlayer)
- 教你輕松制作Android音樂播放器
- android暫?;蛲V蛊渌魳凡シ牌鞯牟シ艑?shí)現(xiàn)代碼
- Android編程開發(fā)音樂播放器實(shí)例
- Android音樂播放器制作 掃描本地音樂顯示在手機(jī)(一)
- android實(shí)現(xiàn)音樂播放器進(jìn)度條效果
- Android MediaPlayer實(shí)現(xiàn)音樂播放器實(shí)例代碼
- 簡(jiǎn)單實(shí)現(xiàn)Android本地音樂播放器
- Android 音樂播放器的開發(fā)實(shí)例詳解
- Android實(shí)現(xiàn)簡(jiǎn)單的音樂播放器
相關(guān)文章
解析:繼承ViewGroup后的子類如何重寫onMeasure方法
本篇文章是對(duì)繼承ViewGroup后的子類如何重寫onMeasure方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題
今天小編就為大家分享一篇詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-08-08協(xié)程作用域概念迭代RxTask?實(shí)現(xiàn)自主控制
這篇文章主要為大家介紹了協(xié)程作用域概念迭代RxTask實(shí)現(xiàn)自主控制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Android控件PullRefreshViewGroup實(shí)現(xiàn)下拉刷新和上拉加載
這篇文章主要為大家詳細(xì)介紹了Android控件PullRefreshViewGroup實(shí)現(xiàn)下拉刷新和上拉加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android Mms之:對(duì)話與聯(lián)系人關(guān)聯(lián)的總結(jié)詳解
本篇文章是對(duì)Android中對(duì)話與聯(lián)系人的關(guān)聯(lián)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Android數(shù)據(jù)存儲(chǔ)之SQLite使用
SQLite是D.Richard Hipp用C語(yǔ)言編寫的開源嵌入式數(shù)據(jù)庫(kù)引擎。它支持大多數(shù)的SQL92標(biāo)準(zhǔn),并且可以在所有主要的操作系統(tǒng)上運(yùn)行2016-01-01