从本文开始,详细讲述一个音乐播放器的实现,以及从网络解析数据获取最新推荐歌曲以及歌曲下载的功能。
功能介绍如下:
1、获取本地歌曲列表,实现歌曲播放功能。
2、利用硬件加速感应器,摇动手机实现切换歌曲的功能
3、利用jsoup解析网页数据,从网络获取歌曲列表,同时实现歌曲和歌词下载到手机本地的功能。
4、通知栏提醒,实现仿QQ音乐播放器的通知栏功能.
涉及的技术有:
1、jsoup解析网络网页,从而获取需要的数据
2、android中访问网络,获取文件到本地的网络请求技术,以及下载文件到本地实现断点下载
3、线程池
4、图片缓存
5、service一直在后台运行
6、手机硬件加速器
7、notification通知栏设计
8、自定义广播
9、android系统文件管理
主要技术是这些,其中,利用jsoup解析网络网页,从而获取需要的数据,请参考我的博文:
android中使用JSOUP如何解析网页数据详述
下面是最终结果展示:
图一 本地歌曲列表
图二 网络歌曲列表
图三 播放歌曲界面
图四 播放界面歌词显示部分
图五 通知栏展示 播放和下载时的展示
在本地歌曲列表界面长按菜单键可以显示菜单:
在网络歌曲列表中,点击歌曲,可以显示下载和取消菜单项:
基本的界面就是上面的图所展示的。大家觉得还可以的话,就给留个言~~^_^【握手】
下面就开始详细讲述实现细节。首先提一点,播放器中获取的网络歌曲部分,请参看我的博文:
android中使用JSOUP如何解析网页数据详述
网络歌曲列表的获取就是利用jsoup从网页抓取数据进行展示的。关于这部分的东西,在本系列博文中不再详细说明了。
关于音乐播放器部分,需要使用到service服务,总共需要两个,一个是音乐播放的service,一个是歌曲下载的service,关于service一直在后台运行的问题,请参考我的博文:
实现音乐播放器后台Service服务一直存在的解决思路
根据这篇博文的说明,很容易设计application类的实现,application类实现代码如下:
* 2015年8月15日 16:34:37
* 博文地址:http://blog.csdn.net/u010156024
public
class
App
extends
Application
{
public
static
Context sContext;
public
static
int
sScreenWidth;
public
static
int
sScreenHeight;
@Override
public
void
onCreate
() {
super
.onCreate();
sContext = getApplicationContext();
startService(
new
Intent(
this
, PlayService.class));
startService(
new
Intent(
this
, DownloadService.class));
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm =
new
DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
sScreenWidth = dm.widthPixels;
sScreenHeight = dm.heightPixels;
application类中启动了上面的两个service服务,同时获取了手机屏幕的宽和高。手机宽和高是为了后i面设计界面使用的。
有了application之后就可以设计Activity类,首先设计BaseActivity类,把复用的代码放在基类中,子类覆盖或重写BaseActivity中的方法,代码如下:
* 2015年8月15日 16:34:37
* 博文地址:http://blog.csdn.net/u010156024
public
abstract
class
BaseActivity
extends
FragmentActivity
{
protected
PlayService mPlayService;
protected
DownloadService mDownloadService;
private
final
String TAG = BaseActivity.class.getSimpleName();
private
ServiceConnection mPlayServiceConnection =
new
ServiceConnection() {
@Override
public
void
onServiceDisconnected
(ComponentName name) {
L.l(TAG,
"play--->onServiceDisconnected"
);
mPlayService =
null
;
@Override
public
void
onServiceConnected
(ComponentName name, IBinder service) {
mPlayService = ((PlayService.PlayBinder) service).getService();
mPlayService.setOnMusicEventListener(mMusicEventListener);
onChange(mPlayService.getPlayingPosition());
private
ServiceConnection mDownloadServiceConnection =
new
ServiceConnection() {
@Override
public
void
onServiceDisconnected
(ComponentName name) {
L.l(TAG,
"download--->onServiceDisconnected"
);
mDownloadService =
null
;
@Override
public
void
onServiceConnected
(ComponentName name, IBinder service) {
mDownloadService = ((DownloadService.DownloadBinder) service).getService();
* 音乐播放服务回调接口的实现类
private
PlayService.OnMusicEventListener mMusicEventListener =
new
PlayService.OnMusicEventListener() {
@Override
public
void
onPublish
(
int
progress) {
BaseActivity.
this
.onPublish(progress);
@Override
public
void
onChange
(
int
position) {
BaseActivity.
this
.onChange(position);
* Fragment的view加载完成后回调
* 注意:
* allowBindService()使用绑定的方式启动歌曲播放的服务
* allowUnbindService()方法解除绑定
* 在SplashActivity.java中使用startService()方法启动过该音乐播放服务了
* 那么大家需要注意的事,该服务不会因为调用allowUnbindService()方法解除绑定
* 而停止。
public
void
allowBindService
() {
getApplicationContext().bindService(
new
Intent(
this
, PlayService.class),
mPlayServiceConnection,
Context.BIND_AUTO_CREATE);
* fragment的view消失后回调
public
void
allowUnbindService
() {
getApplicationContext().unbindService(mPlayServiceConnection);
@Override
protected
void
onCreate
(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
bindService(
new
Intent(
this
, DownloadService.class),
mDownloadServiceConnection,
Context.BIND_AUTO_CREATE);
@Override
protected
void
onDestroy
() {
unbindService(mDownloadServiceConnection);
super
.onDestroy();
public
DownloadService
getDownloadService
() {
return
mDownloadService;
* 更新进度
* 抽象方法由子类实现
* 实现service与主界面通信
*
@param
progress 进度
public
abstract
void
onPublish
(
int
progress);
* 切换歌曲
* 抽象方法由子类实现
* 实现service与主界面通信
*
@param
position 歌曲在list中的位置
public
abstract
void
onChange
(
int
position);
下面给出启动界面,启动界面非常简单,延时2秒进入主界面,代码如下:
* 2015年8月15日 16:34:37
* 博文地址:http://blog.csdn.net/u010156024
public
class
SplashActivity
extends
Activity
{
@Override
protected
void
onCreate
(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash_layout);
new
Handler().postDelayed(
new
Runnable() {
@Override
public
void
run
() {
startActivity(
new
Intent(SplashActivity.
this
, MainActivity.class));
finish();
},
2000
);
以上算是准备工作,有了上面的准备,可以设计主界面和主机面中的两个Fragment了。下面一篇博文讲述主界面的实现。
音乐播放器源码下载
PS:
代码已更新,本地手机没有MP3文件的话,也不会出现崩溃。
从本文开始,详细讲述一个音乐播放器的实现,以及从网络解析数据获取最新推荐歌曲以及歌曲下载的功能。 功能介绍如下: 1、获取本地歌曲列表,实现歌曲播放功能。 2、利用硬件加速感应器,摇动手机实现切换歌曲的功能 3、利用jsoup解析网页数据,从网络获取歌曲列表,同时实现歌曲和歌词下载到手机本地的功能。 4、通知栏提醒,实现仿QQ音乐播放器的通知栏功能. 涉及的技术有: 1、jsoup解析
课 程 设 计 报 告目 录1. 引言11.1 目的11.2 背景12. 需求分析13. 系统设计13.1总体设计13.2功能设计14. 系统开发24.1源程序清单24.2功能
实现
25. 系统测试25.1测试方法25.2测试
实现
25.3测试结果26. 结论与心得27. 参考文献3安卓APP
源码
和报告——
音乐播放器
安卓APP
源码
和报告——
音乐播放器
[/caption]1.
4.2功能
实现
import
android
.content.Context;
import
android
.database.sqlite
import
android
.content.Context;
import
android
.database.sqlite.SQLiteDatabase;
import
android
.database.sqlite.SQLiteDatabase.CursorFactory;
import
android
.database.sqlite.SQLiteOpenHelper;
public class DBhelper extends SQLiteOpenHelper {
public DBhelper(Context context) {
super(context, "stud", null, 1);
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table Lg(LgId nvarchar(20) ,LgName nvarchar(20))");
db.execSQL("insert into Lg values('120','120')");
db.execSQL("insert into Lg values('1201','1201')");
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
功能介绍如下: 1、获取本地歌曲列表,
实现
歌曲播放功能。 2、利用硬件加速感应器,摇动手机
实现
切换歌曲的功能 3、利用
jsoup
解析网页数据,从网络获取歌曲列表,同时
实现
歌曲和歌词
下载
到手机本地的功能。 4、通知栏提醒,
实现
仿QQ
音乐播放器
的通知栏功能. 涉及的技术有: 1、
jsoup
解析网络网页,从而获取需要的数据 2、
android
中访问网络,获取文件到本地的网络请求技术,以及
下载
文件到本地
实现
断点
下载
3、线程池 4、图片缓存 5、
service
一直在后台运行 6、手机硬件加速器 7、notification通知栏设计 8、自定义广播 9、
android
系统文件管理
音乐播放器
的讲述博文地址:http://blog.csdn.net/u010156024/article/details/47685141
Android
音乐播放器
源码
是一个功能完备的
Android
应用程序开发框架,用于
实现
音乐播放器
应用程序的基本功能。该
源码
提供了一个全面的
音乐播放器
应用程序界面,包括播放、暂停、停止、下一曲、上一曲和循环播放等功能。除此之外,该
源码
还提供了音乐列表的管理功能,允许用户通过添加、删除、编辑和排序等方式管理音乐文件。该
源码
还提供了一些高级功能,比如支持通知栏控制、定时停止等功能。同时,该
源码
是开源的,可供广大开发者免费使用和修改。在使用该
源码
进行开发时,需要先导入相关的库和资源文件,并根据具体的开发需求进行定制化配置。总之,该
源码
为
Android
应用程序开发者提供了快速开发
音乐播放器
应用程序的基础框架,可以大大提高开发的效率和质量。
android-音乐播放器实现及源码下载(一)
Foooooooooooood:
android-音乐播放器实现及源码下载(一)
阳禾407:
微信小程序-在线音乐播放器及源码
weixin_40543590:
android-音乐播放器实现及源码下载(一)
Garra_only: