android第三次作业
一、实现的功能
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第三次作业相关推荐
- Android 第三次作业 contentprovider与resolver
作业要求: 1.contentprovider是安卓四大组件之一,请使用其方法类进行数据获取: 2.请自建一个provider,然后在另一个app中使用resolver调用这个provider. 3. ...
- 1600802047 android 第三次作业(音乐播放器)
一.实现的功能 播放.暂停.上一首.下一首 显示列表 二.UI界面截图 第一首歌 第二首歌 第三首歌 第四首歌 list列表 点击播放音乐时图片旋转,点击上一首切换上一首歌,专辑图片和歌曲信息跟 ...
- android 实训的背景,Android实训项目作业.doc
Android实训项目作业 2-1用整型数计算两个数的和2 2-7排列任意4个数的顺序,按从小到大顺序输出2 2.1编写显示下列图形的程序.2 3.1编写程序,当点击按钮命令后,页面标题及文本组件的文 ...
- 2017-2018-1 JAVA实验站 第三周作业
2017-2018-1 JAVA实验站 第三周作业 团队展示 队名 JAVA实验站 拟作的团队项目描述 (2048)增加其他模式,使得2048更加丰富多彩 团队的首次合照 团队的特色描述 团队内部很团 ...
- Android studio三周学习总结
因为疫情我们在线上已经进行了三个周的网课学习, 这半个月一直在学习Android方面的知识,对Android开发有了一个基本的认识,学会了Android studio的基本操作.刚开始接触Androi ...
- Android课程设计大作业-音乐播放器
Android课程设计大作业-音乐播放器 一.**主要实现界面效果** 1)登录界面 2)音乐列表界面 3)音乐播放界面 二.**系统设计** 1)使用Service播放音乐 2) 前台界面(Acti ...
- OO第三单元作业总结
OO第三次作业总结 一.JML (一)JML语言理论基础 (1)JML表达式: JML表达式包括以下几种: 原子表达式如\result(方法执行后的返回值).\old(表达式在相应方法执行前的取值): ...
- 程序设计第三次作业附加 代码规范
题目:第三次作业附加 myGithub 我的程序设计第三次作业 Calculator.h //==============================// //文件名称:calculator.h ...
- JML规格编程——BUAA OO第三单元作业总结
整体概述 这个单元整体围绕Java Model Language(JML)展开,通过学习JML规格了解契约式编程的过程,课上实验中进行了JML规格的简要编写,课下实验主要通过阅读规格并按照规格的要求正 ...
最新文章
- CodeForces Round #287 Div.2
- emui10是基于linux的么,华为EMUI10在意义上还能称作安卓吗?谷歌以后的安卓版本,华为是否有必要去更新?...
- C# 中的委托(Delegate)
- Solr学习总结(二)Solr的安装与配置
- Fiddler抓包使用教程-基本功能介绍
- Leetcode惊现马化腾每天刷题?为啥大佬都这么努力?代码你打算写到几岁?
- php ajax 分页phpapi,ajax分页_php ajax分页代码
- 在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入
- [转]G++与GCC的区别
- 比尔盖茨:有种事你永远不能等待!
- PG: Setting up streaming log replication (Hot Standby )
- maven远程私服发布jar包
- 人工智能和金融是天作之合的5个理由
- 深度学习文献阅读笔记(6)
- 链表的基本操作——学生信息管理表
- java生成32位id,java中生成32位随机ID
- c语言图形编程.pdf,C语言图形编程
- c语言旅馆信息管理系统,C语言旅馆信息管理系统
- 在浏览器连接linux服务器,使用浏览器连接Linux服务器
- Qt关于connect和拉姆达表达式
热门文章
- Java 的toString() 和 equals()函数简单介绍
- Java单例模式双重检查锁定中volatile关键字的作用
- javascript写入xml_Javascript学习笔记(1)
- python文件指针_在使用python写入文件之前,如何将文件指针放在上面一行?
- Maven的安装与Eclipse的配置
- Redis专题-缓存穿透、缓存雪崩、缓存击穿
- icem密度盒怎么设置_seo中关键词密度的问题
- 锐捷设备常用命令大全
- linux下hg无法运行_千万不要运行的 Linux 命令
- 阿里研究员谷朴:警惕软件复杂度困局