Android仿音樂播放器功能
本文實(shí)例為大家分享了Android仿音樂播放器功能的具體代碼,供大家參考,具體內(nèi)容如下
讀取本地音樂文件
源代碼:
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ā)生改變時tv_mian_start的值發(fā)生變化
//new TimeUtil().secToTime()一個外部類(時間格式轉(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é)束
//獲取拖動結(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);
//獲取音樂的總時長
int muiscsum=mediaPlayer.getDuration();
//設(shè)置進(jìn)度條的最大值為總時長
seekBar.setMax(muiscsum);
//執(zhí)行一個多線程的耗時操作
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)前值小于最大值時進(jìn)度條發(fā)生改變
while(seekBar.getProgress()<=seekBar.getMax()){
//獲取當(dāng)前音樂播放的位置
musicaction = mediaPlayer.getCurrentPosition();
//讓進(jìn)度條動起來
seekBar.setProgress(musicaction);
}
}
}
}
時間格式轉(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ī)效果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android音樂播放器制作 點(diǎn)擊歌曲實(shí)現(xiàn)播放(二)
- Android音樂播放器制作 掃描本地音樂顯示在手機(jī)(一)
- Android簡易音樂播放器實(shí)現(xiàn)代碼
- 詳解Android應(yīng)用開發(fā)--MP3音樂播放器代碼實(shí)現(xiàn)(一)
- Android MediaPlayer實(shí)現(xiàn)音樂播放器實(shí)例代碼
- Android 開源在線音樂播放器
- Android 音樂播放器的開發(fā)實(shí)例詳解
- Android基于Service的音樂播放器
- Android繪制音樂播放器示波器
- Android音樂播放器制作 加入控制臺(三)
相關(guān)文章
Android 動態(tài)注冊監(jiān)聽網(wǎng)絡(luò)變化實(shí)例詳解
這篇文章主要介紹了Android 動態(tài)注冊監(jiān)聽網(wǎng)絡(luò)變化實(shí)例詳解的相關(guān)資料,這里提供簡單實(shí)例及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2017-07-07
Kotlin中List的Lambda表達(dá)式應(yīng)用與解析實(shí)例詳解
相比于Java的Lambda表達(dá)式只是一種簡化寫法,Kotlin中的Lambda功能極為強(qiáng)大,本文介紹Kotlin中List的Lambda表達(dá)式應(yīng)用與解析,感興趣的朋友一起看看吧2024-03-03
OpenGL Shader實(shí)現(xiàn)光照發(fā)光體特效
這篇文章主要介紹了如何通過OpenGL Shader實(shí)現(xiàn)光照發(fā)光體特效,不同于陰影遮蓋,它是利用圓形繪制向內(nèi)部。感興趣的小伙伴可以了解一下2022-02-02
Android有效獲取狀態(tài)欄(StatusBar)高度的方法
這篇文章主要介紹了Android有效獲取狀態(tài)欄(StatusBar)高度的方法,涉及Android針對狀態(tài)欄(StatusBar)屬性操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08
android 控件同時監(jiān)聽單擊和雙擊實(shí)例
這篇文章主要介紹了android 控件同時監(jiān)聽單擊和雙擊實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Flutter實(shí)現(xiàn)購物車功能(代碼+邏輯)
本文主要介紹了Flutter實(shí)現(xiàn)購物車功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
實(shí)例講解Android中的AutoCompleteTextView自動補(bǔ)全組件
AutoCompleteTextView組件被用在輸入框中能實(shí)現(xiàn)輸入內(nèi)容自動補(bǔ)全的功能,類似于大家平時用Google時的輸入聯(lián)想,這里我們來用實(shí)例講解Android中的AutoCompleteTextView自動補(bǔ)全組件,特別是實(shí)現(xiàn)郵箱地址補(bǔ)全的例子,非常實(shí)用2016-05-05

