一、实现的功能

1.实现播放,暂停,停止,播放上一首,下一首功能

2.实现了进度条与歌曲的匹配

3.实现了播放时候的专辑旋转效果

4.实现了播放列表

二、项目截图

播放界面

歌曲界面

三、主要代码

相关service的配置

package com.example.yc.musicbox;import android.app.Activity;
import android.app.Service;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Environment;
import android.os.IBinder;
import android.os.Parcel;
import android.os.RemoteException;
//import android.support.v4.app.ActivityCompat;
import android.widget.Toast;import java.io.File;import static android.os.Environment.DIRECTORY_MUSIC;public class MusicService extends Service {public static MediaPlayer mp = new MediaPlayer();//音乐File myfile=new File(Environment.getExternalStorageDirectory(),"Jony J - Team Work.mp3");public MusicService() {try {mp.setDataSource(myfile.getPath());mp.prepare();mp.setLooping(true);} catch (Exception e) {e.printStackTrace();}}private IBinder mBinder = new MyBinder();@Overridepublic IBinder onBind(Intent intent) {// 必须实现的接口return mBinder;}public class MyBinder extends Binder{@Overrideprotected boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {switch (code) {case 101://“还未播放”状态,点击开始播放
                    mp.start();break;case 102://“正在播放”状态,点击暂停
                    mp.pause();break;case 103://“正在暂停”状态,点击继续播放
                    mp.start();break;case 104://点击停止,进度条归零
                    mp.stop();try {mp.prepare();mp.seekTo(0);} catch (Exception e) {e.printStackTrace();}break;}return super.onTransact(code, data, reply, flags);}}}

service与activity的绑定,实现歌曲的读取

    public void service_connection() {mConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mBinder = service;}@Overridepublic void onServiceDisconnected(ComponentName name) {mConnection = null;}};Intent intent = new Intent(this, MusicService.class);startService(intent);bindService(intent, mConnection, Context.BIND_AUTO_CREATE);}

利用handle进行UI界面的更行,实现相应进度条的变化以及碟片的转动

 public void update() {new Thread(new Runnable() {@Overridepublic void run() {while (true) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}handler.obtainMessage(123).sendToTarget();}}}).start();handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 123://UI更新
                        progressTime.setText(t.format(MusicService.mp.getCurrentPosition()));seekBar.setProgress(MusicService.mp.getCurrentPosition());break;default:break;}}};}

拖动进度条改变歌曲进度

 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {if (fromUser) {MusicService.mp.seekTo(seekBar.getProgress());}}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}});}

四、代码链接

https://git.coding.net/insist_shen/musicplay.git

五、APK链接

https://git.coding.net/insist_shen/music_apk.git

六、演示展示

https://pan.baidu.com/s/1iZ_B5ccXk4EK2RwLO0sISg

转载于:https://www.cnblogs.com/insist666/p/10100144.html

android第三次作业相关推荐

  1. Android 第三次作业 contentprovider与resolver

    作业要求: 1.contentprovider是安卓四大组件之一,请使用其方法类进行数据获取: 2.请自建一个provider,然后在另一个app中使用resolver调用这个provider. 3. ...

  2. 1600802047 android 第三次作业(音乐播放器)

    一.实现的功能 播放.暂停.上一首.下一首    显示列表 二.UI界面截图 第一首歌 第二首歌 第三首歌 第四首歌 list列表 点击播放音乐时图片旋转,点击上一首切换上一首歌,专辑图片和歌曲信息跟 ...

  3. android 实训的背景,Android实训项目作业.doc

    Android实训项目作业 2-1用整型数计算两个数的和2 2-7排列任意4个数的顺序,按从小到大顺序输出2 2.1编写显示下列图形的程序.2 3.1编写程序,当点击按钮命令后,页面标题及文本组件的文 ...

  4. 2017-2018-1 JAVA实验站 第三周作业

    2017-2018-1 JAVA实验站 第三周作业 团队展示 队名 JAVA实验站 拟作的团队项目描述 (2048)增加其他模式,使得2048更加丰富多彩 团队的首次合照 团队的特色描述 团队内部很团 ...

  5. Android studio三周学习总结

    因为疫情我们在线上已经进行了三个周的网课学习, 这半个月一直在学习Android方面的知识,对Android开发有了一个基本的认识,学会了Android studio的基本操作.刚开始接触Androi ...

  6. Android课程设计大作业-音乐播放器

    Android课程设计大作业-音乐播放器 一.**主要实现界面效果** 1)登录界面 2)音乐列表界面 3)音乐播放界面 二.**系统设计** 1)使用Service播放音乐 2) 前台界面(Acti ...

  7. OO第三单元作业总结

    OO第三次作业总结 一.JML (一)JML语言理论基础 (1)JML表达式: JML表达式包括以下几种: 原子表达式如\result(方法执行后的返回值).\old(表达式在相应方法执行前的取值): ...

  8. 程序设计第三次作业附加 代码规范

    题目:第三次作业附加 myGithub 我的程序设计第三次作业 Calculator.h //==============================// //文件名称:calculator.h ...

  9. JML规格编程——BUAA OO第三单元作业总结

    整体概述 这个单元整体围绕Java Model Language(JML)展开,通过学习JML规格了解契约式编程的过程,课上实验中进行了JML规格的简要编写,课下实验主要通过阅读规格并按照规格的要求正 ...

最新文章

  1. CodeForces Round #287 Div.2
  2. emui10是基于linux的么,华为EMUI10在意义上还能称作安卓吗?谷歌以后的安卓版本,华为是否有必要去更新?...
  3. C# 中的委托(Delegate)
  4. Solr学习总结(二)Solr的安装与配置
  5. Fiddler抓包使用教程-基本功能介绍
  6. Leetcode惊现马化腾每天刷题?为啥大佬都这么努力?代码你打算写到几岁?
  7. php ajax 分页phpapi,ajax分页_php ajax分页代码
  8. 在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入
  9. [转]G++与GCC的区别
  10. 比尔盖茨:有种事你永远不能等待!
  11. PG: Setting up streaming log replication (Hot Standby )
  12. maven远程私服发布jar包
  13. 人工智能和金融是天作之合的5个理由
  14. 深度学习文献阅读笔记(6)
  15. 链表的基本操作——学生信息管理表
  16. java生成32位id,java中生成32位随机ID
  17. c语言图形编程.pdf,C语言图形编程
  18. c语言旅馆信息管理系统,C语言旅馆信息管理系统
  19. 在浏览器连接linux服务器,使用浏览器连接Linux服务器
  20. Qt关于connect和拉姆达表达式

热门文章

  1. Java 的toString() 和 equals()函数简单介绍
  2. Java单例模式双重检查锁定中volatile关键字的作用
  3. javascript写入xml_Javascript学习笔记(1)
  4. python文件指针_在使用python写入文件之前,如何将文件指针放在上面一行?
  5. Maven的安装与Eclipse的配置
  6. Redis专题-缓存穿透、缓存雪崩、缓存击穿
  7. icem密度盒怎么设置_seo中关键词密度的问题
  8. 锐捷设备常用命令大全
  9. linux下hg无法运行_千万不要运行的 Linux 命令
  10. 阿里研究员谷朴:警惕软件复杂度困局