怎么在Android中利用SeekBar实现音乐播放器功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一.Demo简介
利用AIDL为Activity绑定服务,利用Handler机制,发送消息更新SeekBar的UI,利用计时器定时更新SeekBar的进度。实现对音乐的开始播放,到暂停,继续,以及停止播放的功能。以及实现拖动进度条播放音乐的功能。
二.AIDL接口
利用AIDL机制提供给MainActivity访问MyMusicService的方法,实现播放暂停等功能。
三.主要类代码
MyMusicService
package my.com.mymusicp;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.Bundle;import android.os.IBinder;import android.os.Message;import android.os.RemoteException;import android.support.annotation.Nullable;import android.util.Log;import java.io.IOException;import java.util.Timer;import java.util.TimerTask;public class MyMusicService extends Service { private String tag="MyMusicService"; private MediaPlayer mediaPlayer; @Override public void onCreate() { super.onCreate(); mediaPlayer = new MediaPlayer(); } @Nullable @Override public IBinder onBind(Intent intent) { return new MyMusicBinder(); } class MyMusicBinder extends IMyMusicService.Stub{ @Override public void play() throws RemoteException { playmusic(); } @Override public void pause() throws RemoteException { pausemusic(); } @Override public void stop() throws RemoteException { stopmusic(); } @Override public void continuePlay() throws RemoteException { rePlayMusic(); } @Override public void seekPlayProgress(int position) throws RemoteException { seekPlayPositiom(position); } } //播放音乐 public void playmusic(){ mediaPlayer.reset(); String url = "sdcard/Music/Fade.mp3"; Log.i(tag,url); try { mediaPlayer.setDataSource(url); mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } // might take long! (for buffering, etc) mediaPlayer.start(); //更新播放进度条 seekPlayProgress(); } public void pausemusic(){ mediaPlayer.pause(); Log.i(tag,"暂停播放"); } public void stopmusic(){ mediaPlayer.reset(); Log.i(tag,"停止播放"); mediaPlayer.stop(); } @Override public void onDestroy() { super.onDestroy(); } public void seekPlayPositiom(int positon){ Log.i(tag,"设置播放位置"); mediaPlayer.seekTo(positon); } public void seekPlayProgress(){ final int duration=mediaPlayer.getDuration(); //计时器对象 final Timer timer=new Timer(); final TimerTask task=new TimerTask() { @Override public void run() { //开启线程定时获取当前播放进度 int currentposition=mediaPlayer.getCurrentPosition(); //利用message给主线程发消息更新seekbar进度 Message ms=Message.obtain(); Bundle bundle=new Bundle(); bundle.putInt("duration",duration); Log.i(tag,"歌曲总长度"+duration); bundle.putInt("currentposition",currentposition); Log.i(tag,"当前长度"+currentposition); //设置发送的消息内容 ms.setData(bundle); //发送消息 MainActivity.handler.sendMessage(ms); } }; timer.schedule(task,300,500); //当播放结束时停止播放 mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Log.i(tag,"取消计时任务"); timer.cancel(); task.cancel(); } }); } public void rePlayMusic() { Log.i(tag, "继续播放音乐"); mediaPlayer.start(); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机怎么在Android中利用SeekBar实现音乐播放器功能
后端开发2023-05-31
Android开发中怎么实现一个音乐播放器功能
后端开发2023-05-31
Android开发中如何实现一个音乐播放器功能
后端开发2023-05-31
PHP怎么实现音乐播放器的隐藏功能
后端开发2023-08-29
Android语音播放功能怎么实现
后端开发2023-10-22
如何在Android中实现一个音乐播放器
后端开发2023-06-15
怎么在Vue中利用node实现音频录制播放功能
后端开发2023-06-14
怎么在Android中使用Service方法实现本地音乐播放
后端开发2023-06-14
在Android应用中实现一个录音播放功能
后端开发2023-05-31
python怎么实现闹钟定时播放音乐功能
后端开发2023-08-17
Android怎么用Service开发简单的音乐播放功能
后端开发2023-07-06
利用Android怎么编写一个本地音乐播放器
后端开发2023-05-31
在Android 中利用Seekbar可以实现哪些功能
后端开发2023-05-31
怎么在HTML5页面中实现一个音乐播放器
后端开发2023-06-09
使用java怎么制作一个音乐播放器功能
后端开发2023-05-31
怎么使用C语言实现音乐播放器
后端开发2023-07-05
怎么使用Python制作一个多功能音乐播放器
后端开发2023-07-05
HTML5中怎么实现声音录制/播放功能
后端开发2023-06-09
如何在Android中利用 ViewPager实现一个循环播放功能
后端开发2023-05-31
怎么在c#中使用winform制作一个音乐播放器
后端开发2023-06-14
咦!没有更多了?去看看其它编程学习网 内容吧