博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓MP3播放器开发实例(1)之音乐列表界面
阅读量:4919 次
发布时间:2019-06-11

本文共 3655 字,大约阅读时间需要 12 分钟。

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

今天准备分享一个以前在初学阶段练习的一个项目。通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正规。这个项目是当时借鉴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
mp3Infos = null; SimpleAdapter simpleAdapter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.localmp3); } /** * 每次启动本地列表页面又一次加载本地MP3 */ @Override protected 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
mp3Infos){ List
> list = new ArrayList
>(); for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) { MP3Info mp3Info = (MP3Info)iterator.next(); HashMap
map = new HashMap
(); 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的列表点击事件 */ @Override protected 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
getMp3(String path){ List
mp3Infos = new ArrayList
(); // 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,第二部分我们再来看关于音乐播放部分。

转载于:https://www.cnblogs.com/mengfanrong/p/5175279.html

你可能感兴趣的文章
修改服务器的3389端口
查看>>
greedy算法(python版)
查看>>
编码(4)
查看>>
How to Transfer Audio Output from Mac OS X to Ubuntu via a Network?
查看>>
Hibernate Annotation笔记
查看>>
spring学习-ApplicationContext-spring上下文深入理解
查看>>
日、周、月活跃用户数,用户流失率
查看>>
java学习-消息队列rabbitmq的组成
查看>>
hdu 4611 Balls Rearrangement
查看>>
在同一iphone项目添加lite版
查看>>
jsp实现仿QQ空间新建多个相册名称,向相册中添加照片
查看>>
NSOperation、NSOperationQueue(III)
查看>>
DB120连接TTL--OpenWRT
查看>>
20155234 2016-2017-2 《Java程序设计》第8周学习总结
查看>>
自定义复选框 checkbox 样式
查看>>
jQuery选择器
查看>>
Day2:字符串常用方法
查看>>
正则表达式不匹配括号
查看>>
HBase相关
查看>>
spring IoC容器的实现。
查看>>