添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从本文开始,详细讲述一个音乐播放器的实现,以及从网络解析数据获取最新推荐歌曲以及歌曲下载的功能。
功能介绍如下:
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); // no title requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.splash_layout); // 2s跳转到主界面 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 应用程序开发者提供了快速开发 音乐播放器 应用程序的基础框架,可以大大提高开发的效率和质量。
密碼中間穿插數字或符號字元 作者给的有错误:意思是在密码中的数字和符号,第一位和最后一位不计算。 重复字元也计算有错误(算法如下): char[] c = tlPassword.get().toCharArray(); boolean isRepeat = false; double nRepInc = 0d; int nRepChar = 0; int nUnqChar = 0; for (int i = 0; i < c.length; i++) { for (int t = 0; t < c.length; t++) { if (i != t && c[i] == c[t]) { isRepeat = true; nRepInc += Math.abs(c.length/(t-i)); if (isRepeat) { nRepChar++; nUnqChar = c.length - nRepChar; nRepInc = (nUnqChar > 0) ? Math.ceil(nRepInc/nUnqChar) : Math.ceil(nRepInc); isRepeat = false; return - (int)nRepInc; 最低要求标准计算也不对,如果长度大于等于8,4规则中必要至少3个符合要求不然为0;如果长度小于8,4规则中必须满足。 android-音乐播放器实现及源码下载(一) Foooooooooooood: 您好,可以求一份源码吗,谢谢! [email protected] android-音乐播放器实现及源码下载(一) 阳禾407: 大神,要一份源码可以吗,[email protected],万分感谢! 微信小程序-在线音乐播放器及源码 weixin_40543590: 求源码?[email protected] 谢谢 android-音乐播放器实现及源码下载(一) Garra_only: 大神,要一份源码行不,eclipse的,[email protected],感激不尽 表情包