日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現音樂播放進度條傳遞信息的兩種方式(在service和activity中)

瀏覽:22日期:2022-09-24 11:33:08

實現播放時的進度條顯示,或是定時從service獲取某些信息,是我們日常開發中經常遇到的需求,下面介紹當音樂再service中運行時,activity如果獲取音樂進度信息的兩種方式:

一、在activity中建立消息接收機制

我們需要在activity中建立一個用于接收信息的handler(handler簡單的說是在android中可以發送消息和也可以處理消息的一種機制,當然它的用途更加強大,有時間可以去自己了解)

我們需要在onCreate方法之前添加handler,這樣才能保證當我們的activity被destroy之后,再重建時可以第一時間獲取當前音樂的進度。

下面是代碼,有的同學可能看出來了,這個Handler的handleMessage被重寫了,handleMessage寫在了new Handler.Callback()回調函數中,返回值變成了boolean,其實這樣做是為了防止內存泄漏,當然如果你能忍受Android Studio那一坨巨大的黃色警告你也可以選擇用原本的handler方法,

//當前音樂播放進度 private static TextView nowTime;//音樂進度條 static SeekBar songseek; //運用Handler中的handleMessage方法接收service傳遞的音樂播放進度信息 public static Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { // super.handleMessage(msg); // 將SeekBar位置設置到當前播放位置, // msg.arg1是service傳過來的音樂播放進度信息,將其設置為進度條進度 songseek.setProgress(msg.arg1); //將進度時間其轉為mm:ss時間格式 nowTime.setText(new SimpleDateFormat('mm:ss',Locale.getDefault()).format(new Date(msg.arg1))); return false; } });//下面才是android的onCreate方法protected void onCreate(Bundle savedInstanceState) {......}

二、在service中建立一個定時器來定時發送音樂進度信息

//開始播放音樂 mediaPlayer.start(); //每隔50毫秒發送音樂進度 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { //實例化一個Message對象Message msg = Message.obtain();//Message對象的arg1參數攜帶音樂當前播放進度信息,類型是int msg.arg1 = mediaPlayer.getCurrentPosition(); //使用MainActivity中的handler發送信息 MainActivity.handler.sendMessage(msg); } }, 0, 50);

當然你也可以使用線程的方式來發現音樂進度信息,不過在這里并不推薦,因為單純的音樂播放進度信息而已,沒有必要用到線程來傳信息,而已每一次執行都會創建一個線程,這樣很浪費資源

//創建一個線程每隔100毫秒發送一次信息 Runnable runnable = new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } Message msg = Message.obtain(); msg.arg1 = mediaPlayer.getCurrentPosition(); MainActivity.handler.sendMessage(msg); } } }; Thread musicThread = new Thread(runnable); musicThread.start();

附:MediaPlayer做音樂播放器采坑以及解決辦法1.千萬不要把mediaPlayer.getDuration()放在定時任務里,線程和定時器都不能放

因為mediaPlayer.prepare()的執行速度很低,有概率出現mediaPlayer.prepare()還在執行中,突然定時器里剛剛好到時間該調用mediaPlayer.getDuration()這個方法,結果就是mediaPlayer.prepare()因為沒有初始化成功就調用mediaPlayer.getDuration()而報下面的錯誤導致程序閃退。

java.lang.IllegalStateException android.media.MediaPlayer._prepare(Native Method)

(當然如果你的定時操作間隔越大出錯的概率就越小,不過我強迫癥就是忍不了)

2.上面提到mediaPlayer.prepare()的執行速度很低,如何解決

使用mediaPlayer.prepare()時,正常操作是:

mediaPlayer.prepare();mediaPlayer.start();

建議使用 mediaPlayer.prepareAsync()來代替mediaPlayer.prepare(),下面的代碼可以取代上面

mediaPlayer.prepareAsync();//需要設置一個監聽器mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mediaPlayer.start();}});

看一下效果

Android實現音樂播放進度條傳遞信息的兩種方式(在service和activity中)

Android作業 音樂播放器

總結

到此這篇關于Android實現音樂播放進度條傳遞信息的兩種方式(在service和activity中)的文章就介紹到這了,更多相關android 實現音樂播放進度條內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品黄色| 国产精品毛片一区二区三区| 99在线精品免费视频九九视| 91国语精品自产拍| 亚洲欧美激情诱惑| 亚洲理论在线| 国产精品一区二区精品视频观看 | 麻豆精品视频在线观看| 久久精品国产999大香线蕉| 色在线中文字幕| 精品一区在线| 亚洲v天堂v手机在线| 国产精品久久久久久久久久妞妞 | 亚洲无线观看| 久久av资源| 日韩一区二区三区在线免费观看| 999久久久91| 亚洲精一区二区三区| 国产日韩欧美一区二区三区在线观看| 国产精品天堂蜜av在线播放| 蜜桃视频在线网站| 日韩影院精彩在线| 国产色噜噜噜91在线精品| 欧美激情aⅴ一区二区三区| 久久久精品日韩| 亚洲精品极品| 日韩精品永久网址| 蜜臀久久99精品久久久画质超高清| 日韩欧美久久| 人在线成免费视频| 日韩影院精彩在线| 久久精品亚洲一区二区| 91精品高清| 国产日韩1区| 亚洲成人不卡| 日韩中文字幕无砖| 成人国产精选| 蜜臀av国产精品久久久久| 91精品国产自产观看在线| a日韩av网址| 三级久久三级久久久| 欧美日韩精品免费观看视完整| 天堂久久一区| 久久国产免费| 国产一区 二区| 久久精品导航| 国产亚洲一区二区三区不卡| 今天的高清视频免费播放成人| 精品一区二区三区中文字幕| 久久视频国产| 日韩1区2区日韩1区2区| 日本在线精品| 国产精品v亚洲精品v日韩精品 | 国产日韩欧美中文在线| 99久久久久国产精品| 国产伦一区二区三区| 亚洲成人一区| 国产激情在线播放| 欧美欧美黄在线二区| 欧美另类专区| 美女av在线免费看| 国产亚洲欧美日韩在线观看一区二区 | 国产一区二区高清| 色欧美自拍视频| 国产亚洲高清一区| 久色成人在线| 欧美sm一区| 国产精品久久久久久久久免费高清 | 免费高清在线一区| 136国产福利精品导航网址| 美女精品久久| 视频一区中文字幕精品| 久久影院午夜精品| 国产精品成人国产| 日本大胆欧美人术艺术动态| 国产精品原创| 欧美成人精品一级| 国产欧美日韩一区二区三区四区 | 日韩精品不卡一区二区| 久久精品国产成人一区二区三区| 亚洲麻豆一区| 亚洲欧美网站| 国产日韩综合| 91国语精品自产拍| 国精品一区二区三区| 韩国精品主播一区二区在线观看 | 麻豆一区二区99久久久久| 日本va欧美va欧美va精品| 日韩影院在线观看| 亚洲视频播放| 亚洲在线一区| 欧美日韩免费观看一区=区三区 | 亚洲精品88| 精品美女在线视频| 久久精品资源| 精品免费av一区二区三区| 国产精品自在| 国产精品久久久久久久久久白浆| 久久精品av麻豆的观看方式| 婷婷久久免费视频| 日韩精品免费视频人成| 亚洲精品在线a| 日韩国产91| 国产九九精品| 国产成人a视频高清在线观看| 国产精品xxx| 国产精品久久久久蜜臀 | 91大神在线观看线路一区| 日韩高清不卡一区二区| 日本欧美一区二区| 国产亚洲一区| 精品久久91| 日韩电影免费网站| 久久久成人网| 丝袜美腿一区二区三区| 日韩精品午夜视频| 久久精品一区二区国产| 日韩在线第七页| 亚洲欧洲一区二区天堂久久| 热久久国产精品| 欧美片网站免费| 日韩综合在线| 日韩超碰人人爽人人做人人添| 日韩在线播放一区二区| 91国内精品| 福利一区在线| 好吊视频一区二区三区四区| 亚洲一区二区免费在线观看| 久久激情五月激情| www.九色在线| 一本色道精品久久一区二区三区| 亚洲aa在线| 国产成人精品福利| 黄色日韩在线| 国产日韩精品视频一区二区三区| 日本免费久久| 男女性色大片免费观看一区二区| 国产日产一区| 精品一区毛片| 欧美亚洲福利| 日韩欧美字幕| 亚洲精品人人| a天堂资源在线| 在线视频精品| 欧美91在线| 香蕉精品视频在线观看| 国产毛片久久久| 久久久久亚洲| 日本aⅴ免费视频一区二区三区| 日韩一区三区| 国产一卡不卡| 欧美日韩高清| 欧美国产另类| 在线观看视频免费一区二区三区| 精品亚洲成人| 亚洲网址在线观看| 日韩一区二区三区免费播放| 日韩成人一级| 久久精品影视| 欧美国产中文高清| 水蜜桃久久夜色精品一区的特点| 国际精品欧美精品| 蜜臀av国产精品久久久久 | 国产精品夜夜夜| 中文在线一区| 欧美成人a交片免费看| 日韩激情网站| 国产视频欧美| 老司机精品视频在线播放| 欧美日韩精品一本二本三本 | 99视频精品全国免费| 国产区精品区| 视频在线观看91| 日韩精品永久网址| 国产精品免费精品自在线观看| 精品91久久久久| 日韩精品第一区| 久久久免费人体| 日本不卡中文字幕| 中文国产一区| 中文字幕高清在线播放| 国产精品sm| 涩涩涩久久久成人精品| 久久久久久久久丰满| 麻豆免费精品视频| 欧美亚洲三区| 日韩va欧美va亚洲va久久| 夜夜嗨网站十八久久| 久久麻豆精品| 999久久久91| 久久一区二区三区喷水| 日韩在线视频精品| 日本在线高清| 国产66精品| 香蕉久久99| 欧美日中文字幕| 欧美日韩亚洲在线观看| 人人精品亚洲| 国产一区二区三区日韩精品| 国产精品久一|