学习安卓开发有一年了,想想这一年的努力,确实也收获了不少。也找到了比較如意的工作。

今天准备分享一个以前在初学阶段练习的一个项目。通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正规。这个项目是当时借鉴Mars老师的初学视频做的安州手机的MP3播放器。自己又进行了改进,特别在歌词的优化和加入进度条方面的。因为是8个月前做的,水平非常0基础,bug应该非常多,如今自己又懒得再一次改进,仅仅希望可以给初学的朋友们提供一些帮助。或者起到抛砖引玉的效果。那我就心惬意足了。

先整体介绍下这个MP3播放器。非常easy,首先是本地列表页面(界面非常low,大家不要笑):

列表左边是歌曲名,右边是对应的歌曲大小(字节)。

点击一首歌曲,进入播放页面,就能够播放、暂停和停止音乐。任意调整进度条调整歌曲播放的进度,歌词也相应调整:

首先从本地音乐列表入手来谈,比較简单先看代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;public class LocalMp3Activity  extends ListActivity{List<MP3Info> mp3Infos = null;SimpleAdapter simpleAdapter = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.localmp3);}/*** 每次启动本地列表页面又一次加载本地MP3*/@Overrideprotected void onResume() {FileUtil fileutil = new FileUtil();mp3Infos = fileutil.getMp3("mp3/");//       for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {/
//          MP3Info mp3Info = (MP3Info) iterator.next();
//          Log.d("yinan", "LocalMp3Activity--------"+mp3Info.toString());
//      }if(mp3Infos.size() == 0){Toast.makeText(this, "没有本地音乐", 0).show();simpleAdapter = buildAdapter(mp3Infos);setListAdapter(simpleAdapter);}else{simpleAdapter = buildAdapter(mp3Infos);setListAdapter(simpleAdapter);}super.onResume();}/*** 封装了ListView的适配器* @param mp3Infos* @return*/private SimpleAdapter buildAdapter(List<MP3Info> mp3Infos){List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {MP3Info mp3Info = (MP3Info)iterator.next();HashMap<String,String> map = new HashMap<String,String>();map.put("mp3_name", mp3Info.getMp3Name());map.put("mp3_size", mp3Info.getMp3Size());list.add(map);}SimpleAdapter simpleAdapter = new SimpleAdapter(this,list,R.layout.locallist,new String[]{"mp3_name","mp3_size"},new int[]{R.id.mp3_name,R.id.mp3_size});return simpleAdapter;}/*** 实现ListView的列表点击事件*/@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {if(mp3Infos != null){MP3Info mp3Info = mp3Infos.get(position);Intent intent = new Intent();intent.putExtra("mp3Info", mp3Info);intent.setClass(this, PlayActivity.class);startActivity(intent);}}}
   

看到加载本地MP3这里有一个FileUtil类,是这个程序处理文件的类,看看getMp3方法怎样实现:

/**获取手机sd卡文件夹下path文件夹下的以“MP3”为后缀的文件,返回mp3文件集合* 不仅获得了歌曲文件名称,还获得了相应的歌词文件名称* @param path* @return*/public List<MP3Info> getMp3(String path){List<MP3Info> mp3Infos = new ArrayList<MP3Info>();//File f = new File(SDPATH+"/"+path);File[] files = f.listFiles();for (int i = 0; i < files.length; i++) {//获取名字包括mp3字样的文件if(files[i].getName().indexOf("mp3")>0){MP3Info mp3Info = new MP3Info();mp3Info.setMp3Name(files[i].getName());mp3Info.setMp3Size(files[i].length()+"");//以.为标志将文件名称分开。存入字符串数组String s[] = mp3Info.getMp3Name().split("\\.");String lrcName = s[0]+".lrc";mp3Info.setLrcName(lrcName);mp3Infos.add(mp3Info);}}//}return mp3Infos;}
}

当中   String SDPATH  = Environment.getExternalStorageDirectory() + "";

每次进入本地列表,都会调用Activity的onResume方法。随后载入全部本地MP3歌曲的信息。然后通过一个SimpleAdapter,将MP3的信息显示出来。最后为列表加入了点击事件。该点击事件是点击某歌曲进入播放列表的事件。

好了。第一部分很easy,第二部分我们再来看关于音乐播放部分。

安卓MP3播放器开发实例(1)之音乐列表界面相关推荐

  1. 安卓MP3播放器开发实例(3)之进度条和歌词更新的实现

    上一次谈了音乐播放的实现,这次说下最复杂的进度条和歌词更新.因为须要在播放的Activity和播放的Service间进行交互,所以就涉及了Activity对Service的绑定以及绑定后数据的传输,这 ...

  2. 音乐播放器开发实例(可毕设含源码)

    一.开发基础 最近很多大学生都快毕业了在整理毕业论文以及毕业作品,其实在大三的时候就可以开始考虑了并且可以提前和自己的导师进行沟通,让自己的作品直接成为论文选题,在国产操作系统上开发一个简易音乐播放器 ...

  3. 安卓音乐播放器开发实例

    本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的 ...

  4. java 3gpp转mp3_Android音频以及音频播放器开发实例

    Android 系统支持三种不同来源的音频播放: 1)本地资源 存储在应用程序中的资源,例如存储在 RAW 文件夹下的媒体文件,只能被当前应用程序访问. 2)外部资源 存储在文件系统中的标准媒体文件, ...

  5. html在线音频播放器实训总结,HTML5音乐列表播放器SMusic开发总结

    前段时间写过一篇介绍简单音乐播放器效果开发的博文<为你的博客添加简单的CSS3音乐播放器>,实现了单曲循环播放效果,这个效果也是我的博客首页一直有的效果,同时文中也介绍了一些简单的HTML ...

  6. android音乐播放器开发 SweetMusicPlayer 加载歌曲列表

    上一篇写了播放器的整体实现思路,http://blog.csdn.net/huweigoodboy/article/details/39855653,现在来总结下加载歌曲列表. 代码地址:https: ...

  7. 仿酷狗音乐播放器开发日志十五——音乐电台列表控件的实现

    转载请说明原文出处,谢谢~~ 前些日子封装了好几天控件,把webkit浏览器控件,vlc视频播放控件,音频播放控件做好了,做这些控件一来是可以单独使用,用到其他项目中,而来可以直接用到这个仿酷狗播放器 ...

  8. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器

    上一篇写了个简单的MP3播放器 ,这次写一个可以播放网络音频资源的播放器 本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边 ...

  9. ESP32 开发笔记(八)ESP32 MP3 播放器

    ESP32 MP3 播放器 ESP32 MP3 播放器 开发环境 环境搭建 编译运行 运行结果 ESP32 MP3 播放器 源码地址:GitHub 开发环境 开发框架:ESP-IDF.ESP-ADF ...

最新文章

  1. antv图例出现分页_带图例、文本的饼图
  2. C语言各种变量的初始化
  3. ACM模式数组构建二叉树
  4. 如何在 ES5 环境下实现一个const ?
  5. qt 二次开发 研华daq_研华DAQ数据采集卡编程
  6. 【 js 算法类】这么全的数组去重,你怕不怕?
  7. Amos实操教程|调节效应检验
  8. JDBC bug : You must configure either the server or JDBC driver
  9. 高级语言是如何运行的——语言的运行方式
  10. 基于Gensim创建词向量
  11. 查询省会python
  12. 运用Python完成五角星随机颜色的绘制
  13. 项目构建工具--webpack
  14. 交换机的几种配置方法
  15. nopi 缩小字体填充_我在超市里改字体
  16. npm删除项目所有依赖和清缓存清缓存的办法
  17. Python中int32转int64
  18. 失物招领信息管理系统
  19. 无需埋点,使用App渠道统计SDK进行收集数据
  20. SAP Memory ABAP Memory超级详细解析

热门文章

  1. 必须掌握的八个【cmd 命令行】[
  2. ROS学习(十):ROS URDF-joint
  3. JS 设计模式之初识(一)-单例模式
  4. html使用共同的头部导航
  5. 《C++编程风格(修订版)》——1.1 抽象
  6. 浅谈Iframe和FRAME的区别
  7. 企业级Java应用最重要的4个性能指标
  8. 搭建通用性多用户后台-思路
  9. JavaWeb应用开发环境-Tomcat服务器
  10. jQuery设置和获取HTML、文本和值