项目QQ音乐开发记录


QQ音乐项目进度

QQ音乐项目进度

08.25 开始QQ音乐项目

了解MediaPlayer机制

672221dfgw1eykjvjcrkxj20e30h7wg1.jpg

使用MediaPlayer实现基本的音乐播放

  • 需要Service:保存当前播放的进度以及当前播放的状态

  • 需要启动Service

  • 绑定Service

672221dfgw1eykjzk2otpj20h80bk76b.jpg 672221dfgw1eykk1fap87j20b104l3yw.jpg 672221dfgw1eykk1vumibj20mo0a9dim.jpg 672221dfgw1eykk2fh5irj20bs04it9d.jpg
  • 按返回键,回到桌面,再点击进入

    思路:界面关闭,service依然存活着,service中的成员变量都还在

08.27 异步准备音乐

  • 异步准备:准备网络数据

    • 权限:android.permission.INTERNET

    • mPlayer.prepare();// 同步准备,阻塞主线程

    • mPlayer.prepareAsync();  // 异步准备,不会阻塞主线程

672221dfgw1eykkdzt1lwj20k5096gn0.jpg

09.23

完成了fragment切换动画,back stack进入退出动画

  • setCustomAnimations()四个参数那个,前两个是fragment之间切换的动画,后两个对应出入栈动画。动画资源文件放在anim文件夹下,与activity的动画一致。

    • 该方法必须在add,replace,remove方法前调用才有效

more界面(略丑)

扫描本地歌曲,在5.0版本上出现错误

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIAMOUNTED

解决:将Intent.ACTION_MEDIA_MOUNTED改为

ACTION_MEDIA_SCANNER_SCAN_FILE

在fragment中注册广播应该放在哪个方法里?

点击安装程序的隐式意图

Intent i = new Intent(Intent.ACTIONVIEW);

i.setDataAndType(Uri.parse("file://" + filepath,"application/vnd.android.package-archive");

i.addFlags(Intent.FLAGACTIVITYNEWTASK);

fragment随activity的生命周期而动

popupwindow监听

它的view.findview...然后一样的

09.24

  • 使用自定义toast时,setText()方法调用的是系统默认布局的TextView,不可用,正确的方法是findview出自定义布局中的控件做相应的显示设置

  • 得到堆栈中fragment的数量:mFragmentManager.getBackStackEntryCount()

09.28

  • 完成进度条自定义

    • layer-list:将多个图片或上面两种效果按照顺序层叠起来

    • maxHeight属性

你可能感兴趣的:(音乐播放)