Android仿音樂(lè)播放器功能
本文實(shí)例為大家分享了Android仿音樂(lè)播放器功能的具體代碼,供大家參考,具體內(nèi)容如下
讀取本地音樂(lè)文件
源代碼:
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; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar seekBar; private TextView tv_mian_stop; private TextView tv_mian_start; private int musicaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_mian_start = (TextView) findViewById(R.id.tv_mian_start); tv_mian_stop = (TextView) findViewById(R.id.tv_mian_stop); seekBar = (SeekBar) findViewById(R.id.seekBar); //進(jìn)度條的監(jiān)聽事件 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //改變 //每當(dāng)進(jìn)度條發(fā)生改變時(shí)tv_mian_start的值發(fā)生變化 //new TimeUtil().secToTime()一個(gè)外部類(時(shí)間格式轉(zhuǎn)化) tv_mian_start.setText(new TimeUtil().secToTime(mediaPlayer.getCurrentPosition()/1000)+""); } @Override public void onStartTrackingTouch(SeekBar seekBar) { //開始 } @Override public void onStopTrackingTouch(SeekBar seekBar) { //結(jié)束 //獲取拖動(dòng)結(jié)束之后的位置 int progrss=seekBar.getProgress(); mediaPlayer.seekTo(progrss); } }); } public void isPlay(View view){ ImageButton imageButton= (ImageButton) view; if (mediaPlayer==null){ mediaPlayer = MediaPlayer.create(this, R.raw.seve); mediaPlayer.start(); //把圖標(biāo)修改為暫停的圖標(biāo) imageButton.setImageResource(android.R.drawable.ic_media_pause); //獲取音樂(lè)的總時(shí)長(zhǎng) int muiscsum=mediaPlayer.getDuration(); //設(shè)置進(jìn)度條的最大值為總時(shí)長(zhǎng) seekBar.setMax(muiscsum); //執(zhí)行一個(gè)多線程的耗時(shí)操作 new MyThread().start(); tv_mian_stop.setText(new TimeUtil().secToTime(muiscsum/1000)+""); }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); } } class MyThread extends Thread{ @Override public void run() { super.run(); //當(dāng)進(jìn)度條的當(dāng)前值小于最大值時(shí)進(jìn)度條發(fā)生改變 while(seekBar.getProgress()<=seekBar.getMax()){ //獲取當(dāng)前音樂(lè)播放的位置 musicaction = mediaPlayer.getCurrentPosition(); //讓進(jìn)度條動(dòng)起來(lái) seekBar.setProgress(musicaction); } } } }
時(shí)間格式轉(zhuǎn)化類:
public class TimeUtil { public static String secToTime(int time) { String timeStr = null; int hour = 0; int minute = 0; int second = 0; if (time <= 0) return "00:00"; else { minute = time / 60; if (minute < 60) { second = time % 60; timeStr = unitFormat(minute) + ":" + unitFormat(second); } else { hour = minute / 60; if (hour > 99) return "99:59:59"; minute = minute % 60; second = time - hour * 3600 - minute * 60; timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second); } } return timeStr; } private static String unitFormat(int i) { String retStr = null; if (i >= 0 && i < 10) retStr = "0" + Integer.toString(i); else retStr = "" + i; return retStr; } }
真機(jī)效果圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android音樂(lè)播放器制作 點(diǎn)擊歌曲實(shí)現(xiàn)播放(二)
- Android音樂(lè)播放器制作 掃描本地音樂(lè)顯示在手機(jī)(一)
- Android簡(jiǎn)易音樂(lè)播放器實(shí)現(xiàn)代碼
- 詳解Android應(yīng)用開發(fā)--MP3音樂(lè)播放器代碼實(shí)現(xiàn)(一)
- Android MediaPlayer實(shí)現(xiàn)音樂(lè)播放器實(shí)例代碼
- Android 開源在線音樂(lè)播放器
- Android 音樂(lè)播放器的開發(fā)實(shí)例詳解
- Android基于Service的音樂(lè)播放器
- Android繪制音樂(lè)播放器示波器
- Android音樂(lè)播放器制作 加入控制臺(tái)(三)
相關(guān)文章
Android 動(dòng)態(tài)注冊(cè)監(jiān)聽網(wǎng)絡(luò)變化實(shí)例詳解
這篇文章主要介紹了Android 動(dòng)態(tài)注冊(cè)監(jiān)聽網(wǎng)絡(luò)變化實(shí)例詳解的相關(guān)資料,這里提供簡(jiǎn)單實(shí)例及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2017-07-07Kotlin中List的Lambda表達(dá)式應(yīng)用與解析實(shí)例詳解
相比于Java的Lambda表達(dá)式只是一種簡(jiǎn)化寫法,Kotlin中的Lambda功能極為強(qiáng)大,本文介紹Kotlin中List的Lambda表達(dá)式應(yīng)用與解析,感興趣的朋友一起看看吧2024-03-03OpenGL Shader實(shí)現(xiàn)光照發(fā)光體特效
這篇文章主要介紹了如何通過(guò)OpenGL Shader實(shí)現(xiàn)光照發(fā)光體特效,不同于陰影遮蓋,它是利用圓形繪制向內(nèi)部。感興趣的小伙伴可以了解一下2022-02-02Android有效獲取狀態(tài)欄(StatusBar)高度的方法
這篇文章主要介紹了Android有效獲取狀態(tài)欄(StatusBar)高度的方法,涉及Android針對(duì)狀態(tài)欄(StatusBar)屬性操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08android 控件同時(shí)監(jiān)聽單擊和雙擊實(shí)例
這篇文章主要介紹了android 控件同時(shí)監(jiān)聽單擊和雙擊實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Flutter實(shí)現(xiàn)購(gòu)物車功能(代碼+邏輯)
本文主要介紹了Flutter實(shí)現(xiàn)購(gòu)物車功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件
AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動(dòng)補(bǔ)全的功能,類似于大家平時(shí)用Google時(shí)的輸入聯(lián)想,這里我們來(lái)用實(shí)例講解Android中的AutoCompleteTextView自動(dòng)補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用2016-05-05