效果:

问题:可拖动进度条随进度条移动时,会致使音乐卡顿(待解决)

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.chenshuai.myapplication.ActivityMusic"android:orientation="vertical"><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"style="@android:style/Widget.ProgressBar.Horizontal"android:id="@+id/pb"/><SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/sbr" /><TextViewandroid:layout_width="match_parent"android:layout_height="40sp"android:text="播放状态"android:textSize="20sp"android:gravity="center_horizontal"android:id="@+id/tv_1"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="播放"android:onClick="play_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="暂停"android:onClick="pause_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="停止"android:onClick="stop_onclick"/><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="退出"android:onClick="exit_onclick"/></LinearLayout></LinearLayout>

Service

package com.example.chenshuai.myapplication;import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;public class MyServiceMusic extends Service {public MyServiceMusic() {}public class Mybind extends Binder{//获取歌曲长度public int getMusicDuration(){int rtn = 0;if (mediaPlayer != null){rtn = mediaPlayer.getDuration();}return rtn;}//获取当前播放进度public int getMusicCurrentPosition(){int rtn = 0;if (mediaPlayer != null){rtn = mediaPlayer.getCurrentPosition();}return rtn;}  public void seekTo(int position){if (mediaPlayer != null){mediaPlayer.seekTo(position);}}}@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.//throw new UnsupportedOperationException("Not yet implemented");return  new Mybind();}private MediaPlayer mediaPlayer;@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {//获取意图传递的信息String action = intent.getStringExtra("action");switch (action){case "play":if (mediaPlayer == null){mediaPlayer = MediaPlayer.create(this,R.raw.onceagain);}mediaPlayer.start();break;case "stop":if (mediaPlayer !=null){mediaPlayer.stop();mediaPlayer.reset();mediaPlayer.release();mediaPlayer = null;}break;case "pause":if (mediaPlayer !=null && mediaPlayer.isPlaying()){mediaPlayer.pause();}break;}return super.onStartCommand(intent, flags, startId);}
}

java

package com.example.chenshuai.myapplication;import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;public class ActivityMusicservice extends AppCompatActivity {TextView tv_1;ProgressBar pb;SeekBar sbr;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_activity_music);tv_1 = (TextView)findViewById(R.id.tv_1);tv_1.setText("播放状态11:停止播放。。。");pb = (ProgressBar)findViewById(R.id.pb);sbr = (SeekBar)findViewById(R.id.sbr);}ServiceConnection serviceConnection;MyServiceMusic.Mybind mybind;public void play_onclick(View view){Intent intent = new Intent(this,MyServiceMusic.class);intent.putExtra("action","play");startService(intent);tv_1.setText("播放状态11:正在播放。。。");if (serviceConnection == null) {serviceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mybind = (MyServiceMusic.Mybind) service;//设置进度条的最大长度int max = mybind.getMusicDuration();pb.setMax(max);sbr.setMax(max);sbr.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {mybind.seekTo(progress);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}});//连接之后启动子线程设置当前进度new Thread(){public void run(){//改变当前进度条的值//设置当前进度while (true) {pb.setProgress(mybind.getMusicCurrentPosition());// sbr.setProgress(mybind.getMusicCurrentPosition());try {Thread.sleep(100);} catch (Exception e) {e.printStackTrace();}}}}.start();}@Overridepublic void onServiceDisconnected(ComponentName name) {}};//以绑定方式连接服务
            bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);}}public void stop_onclick(View view){Intent intent = new Intent(this,MyServiceMusic.class);intent.putExtra("action","stop");startService(intent);tv_1.setText("播放状态11:停止播放。。。");}public void pause_onclick(View view){Intent intent = new Intent(this, MyServiceMusic.class);intent.putExtra("action","pause");startService(intent);tv_1.setText("播放状态11:暂停播放。。。");}public void exit_onclick(View view){stop_onclick(view);finish();}
}

manifest.xml

<serviceandroid:name=".MyServiceMusic"android:enabled="true"android:exported="true" />

转载于:https://www.cnblogs.com/Chenshuai7/p/5429695.html

Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条(未待解决完问题)...相关推荐

  1. 音乐播放器的实现(五)—— 音量的加减和静音

    音乐播放器的实现(五)-- 音量的加减和静音 传送门: 音乐播放器的实现(一)-- Audio Listener和Audio Source面板的介绍 音乐播放器的实现(二)-- UI面板的制作 音乐播 ...

  2. Android FFmpeg视频播放器三 音频封装格式解码播放

    Android FFmpeg视频播放器一解封装 Android Android FFmpeg视频播放器二 视频封装格式解码播放 视频解封装之后就会得到音频流和视频流,解封状得到的数据是AVPackag ...

  3. Android 12.0 系统多个播放器app时,设置默认播放器

    目录 1.概述 2.系统多个播放器app时,设置默认播放器的核心类

  4. 仿迅雷播放器教程 -- 基于VLC的MFC播放器 (6)

    代码下载: http://download.csdn.net/detail/qq316293804/6409417 昨天的教程里写着预计MFC播放器会隔得久一点,但是今晚仔细看了下VLC的常用代码,发 ...

  5. html5 mp3播放器源码,HTML5自定义mp3播放器源码

    audio对象 src兼容.ogg .wav .mp3 width autoplay loop muted静音 播放play() var myAudio = new Audio(); myAudio. ...

  6. 自定义音频播放器_创建自定义HTML5音频播放器

    自定义音频播放器 在本教程中,我将向您介绍HTML5音频,并向您展示如何创建自己的播放器. 如果您想走捷径,请查看Envato市场上可用的现成的HTML5音频播放器 . 它使您可以从各种来源创建播放列 ...

  7. 带倍速音频播放器_带有播放列表HTML5音频播放器

    带倍速音频播放器 HTML5 Audio player with playlist HTML5 audio player. Many of you faced with the task of cre ...

  8. [微信音频播放器] html5 audio 制作的微信播放器

    weixinAudio.js 一个简单的微信样式播放器 播放器DOM及CSS是微信里内置的音频播放器的样式,重新创建了控制层js,方便在在公众号,APP等场景使用. 例子 demo 地址 github ...

  9. 自定义制作音频播放器_使用HTML5制作音频播放器,第3部分:微数据和皮肤

    自定义制作音频播放器 In the first two articles of this series I introduced the concept and code of a customize ...

  10. JWPlayer Flash播放器如何实现视频分段载入播放从而节省带宽?

    近期由于一个项目的需要,对Flash版本的播放器JWPlayer做了一些改进以支持一些功能,这里把中间用到的一些思路和做法记录下. 首先一个功能是:客户的很多flv视频都是完整的一个大视频,希望JWP ...

最新文章

  1. rest-framework 视图
  2. python红色_python把红玫瑰变成蓝色女巫,将,红色,转化,为,蓝色妖姬
  3. 我的Java教程,不断整理,反复学习,记录着那些年大学奋斗的青春
  4. 下pg负载均衡_SAE 场景下,应用流量的负载均衡及路由策略配置实践
  5. 「日常训练」 Genghis Khan the Conqueror(HDU-4126)
  6. 历史上的今天:阿帕网退役;Quintus 收购 Mustang;同步电流磁芯存储器获得专利...
  7. Hadoop启动脚本概览
  8. cmd 登录oracle
  9. 烟台大学举办首届ACM程序设计大赛
  10. 微波天线及各种天线概念解析
  11. c# spire.xls 设置文字为微软雅黑_微软自带de白板应用,超好用
  12. TiDB分布式数据库培训实战教程(分布式集群架构、分布式大数据平台)
  13. 高通开发-烧写及异常启动分析
  14. java在360运行不了_电脑360安全卫士打不开如何解决_360安全卫士无法打开的处理方法...
  15. vue聊天功能模块(五)pre标签使得消息表情换行
  16. 明清时期江右商的宗族教育——江西流坑村的历史人类学考察
  17. 微软测试管理框架(Microsoft Test Manager)
  18. 云开发平台开源应用中心一次体验
  19. webservice wsdl 转java对象
  20. Android调试工具ADB

热门文章

  1. Oracle Sys和system用户区别
  2. GPS模块数据放入谷歌地图显示,不准
  3. OCP考点实战演练02-日常维护篇
  4. iredmail开源邮件系统部署
  5. free C# Ebook (Amazing amount of ebooks available)
  6. 计算机硬盘是通用的吗,通用账务系统安装到计算机硬盘前需要进行的准备工作有()。A.清理硬盘B.校准计算机系统时间C.重设C - 作业在线问答...
  7. android 7.0 截图,Android,_7.0系统拍照后,使用系统截图功能,截图保存时崩溃如何解决,Android - phpStudy...
  8. 二叉树 --5.1.3 Binary Tree Zigzag Level Order Traversal --图解
  9. Java 8 新日期时间 API ( 下 ) – 时区日期时间
  10. android 缩放组件,Android控件之ZoomControls缩放控件