android 音乐播放器论文,毕业论文:ANDROID音乐播放器

用于设置歌曲播放进度条和显示当前播放时间和总时间。第四个用于显示播放控制和音量进度条。

(3)界面的初始化操作

Android的每一个可视化界面,都有其的唯一的布局配置文件,该文件里面有各种布局方式,和各种资源文件如图像,文字,颜色的引用,程序在运行时,可以通过代码对各配置文件进行读取。这样就可以形成不同的可视化界面和炫丽的效果。播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法,如下代码是主要执行界面的初始化操作

@Override

Public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.play);}//设置界面布局

Activity设置布局的方法:Context.setContentView(layoutResID),

参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为play.xml。

3.3功能实现方法

Android项目目录结构如右图所示

在Firstpage中初始化列表界面,

设置获取歌曲信息和显示.实现UI和数据

的绑定并且设定列表点击响应事件处理方法

MusicListAdapter.java,显示歌曲信息

TimetoStr用于修改时间格式

play.java主要是用于播放歌曲功能实现

(1)播放列表的显示和响应

在Firstpage中初始化列表界面,设置获取歌曲信息和显示,在MusicListAdapter.java中通过重写ListActivity的onResume方法,构造一个新的MusicListAdapter对象,调用Activity的SetListAdapter方法实现ListView和歌曲的绑定,并且设定列表点击响应事件处理方法。

(a)通过数据共享存储Content Providers机制 获取歌曲信息

(1 Content Providers是所有应用程序之间数据存储和检索的一个桥梁,它的作用就是使得各个应用程序之间实现数据共享。在Android中,Content Providers是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取、操作数据。Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在android.provider包下面。

*所有的Content Providers都会实现一些共同的接口,包括数据的查询、添加、更改和删除。应用可以通过一个唯一的ContentResolver接口来使用具体的某个Content Providers。可以通过getContentResolver()方法来取得一个ContentResolver对象,然后就可以用ContentResolver提供的方法来操作你需要的Content Provider了。

ContentResolver resolver = getContentResolver();

对于媒体文件就提供了MediaScanner、MediaProvider、MediaStore.当手机开机或是插入SD卡时,系统会扫描SD卡和手机内存上的媒体文件,并且将这些媒体文件的信息存放起来,通过MediaStore等方式提供给用户。

(2 查询数据 获取歌曲信息

1.要查询Content Providers的内容,可以使用ContentResolver.query()方法

query(Uri uri,String[] projection,String[] selectionArgs,String sortOrder);通过uri进行查询,返回一个cursor

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;外部存储卡上的所有音乐

2.读取查询的数据由Cursor对象的方法来操作

//获取歌曲信息

//得到ContentResolver对象通过query方法取得SD卡上所有的音乐的信息

private Cursor allSongs(){

if(cursor != null)

return cursor;

//得到ContentResolver对象

ContentResolver resolver = getContentResolver();

//从Content Provider中获得SD卡上全部歌曲信息

cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,

null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

//查询并定位指针

return cursor;

}

(b)把音乐以列表方式显示出来

方法是 通过SimpleCursorAdapter实现UI和数据的绑定,然后显示歌曲信息

(1 SimpleCursorAdapter构造函数 适配器 Adapter

Cursor可以与适配器(Adapter)相结合,将Cursor指向的数据自动填充到Adapter所在的UI控件中。

public MusicListAdapter(Context context, int layout, Cursor c,

String[] from, int[] to)

Context:当前的程序的上下文对象 当前类所用到的对象

layout: 用来描述显示在适配器控件上的布局文件R类的应用

from : 根据需要显示出的列名组成的字符串数组

to : 由layout 所指定的布局文件中子控件的ID所组成的整型数组,与from相对应。

(2 生成MusicListAdapter对象并与UI绑定

通过重写firstpage的onResume方法,构造一个新的MusicListAdapter对象,调用Activity的SetListAdapter方法实现ListView和歌曲的绑定,这样每次从播放界面返回到播放列表时都能够执行一次列表更新。

@Override

protected void onResume() {

super.onResume();

cursor = allSongs();//获取歌曲全部信息

//创建Adapter并绑定到ListView

SimpleCursorAdapter adapter = new MusicListAdapter(this,

R.layout.songabout, cursor,new String[] {},new int[] {});

//构造一个MusicListAdapter对象

setListAdapter(adapter); //实现ListView和歌曲的绑定

}

(3 通过增加一个新的类MusicListAdapter继承SimpleCursorAdapter类,显示歌曲信息(歌名歌手专辑播放时间)重写bindView用于修改时间格式

其中,用cursor.get方法来获取歌曲具体信息。

程序片段如下

public class MusicListAdapter extends SimpleCursorAdapter{

//调用子类构造函数需要先调用父类的构造函数

public MusicListAdapter(Context context, int layout, Cursor c,

String[] from, int[] to) {

super(context, layout, c, from, to);

}

//重写public void bindView()函数

public void bindView(View view, Context context, Cursor cursor) {

super.bindView(view, context, cursor);

//通过获取id来取得控件对象(歌曲,歌手,专辑,播放时间)

TextView titleView =(TextView)view.findViewById(R.id.track_name);

TextView artistView = (TextView)view.findViewById(R.id.artist);

TextView albumView = (TextView)view.findViewById(R.id.album);

TextView durationView =(TextView)view.findViewById(R.id.duration);

//获取歌曲信息并且定义所要显示的内容,显示歌曲歌手专辑播放时间

titleView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)));//得到歌名信息并且显示

artistView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)));//得到歌手信息并且显示

albumView.setText(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)));//得到专辑信息并且显示

long duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));//得到播放时间信息

durationView.setText(TimetoStr.timeToString(duration));//显示播放时间

}

(4 MediaStore.Audio.Media.DURATION返回的歌曲时间单位是毫秒,需要修改成"分:秒"的形式,把它处理成一个类TimetoStr.java方便调用

public class TimetoStr {

public static String timeToString(long duration) {

if(duration < 0)

return "00:00";//如果时间小于0则返回显示为00:00

StringBuffer sb = new StringBuffer();//生成字符串暂存对象

long m = duration / (60 * 1000);//设定分

sb.append(m < 10 ? "0" + m : m);//分小于十时显示

sb.append(":");

long s = (duration % (60 * 1000)) / 1000;//设定秒

sb.append(s < 10 ? "0" + s : s);//秒小于十时的显示

return sb.toString();//以字符串格式返回

}

}

(c)列表点击事件处理

通过点击列表中个某一个歌曲实现跳转到播放界面的程序。

1 .通过重 ……(未完,全文共44666字,当前仅显示11763字,请阅读下面提示信息。收藏《毕业论文:ANDROID音乐播放器》)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一章 引 言 - 1 - 1.1 项目背景 - 1 - 1.2 编写目的 - 2 - 第二章 系统需求分析 - 3 - 2.1 功能需求(用例图分析) - 3 - 2.1.1 播放器的基本控制需求 - 3 - 2.1.2 播放清单列表管理需求 - 5 - 2.1.3 播放友好性需求 - 7 - 2.1.4 播放器扩展卡需求 - 8 - 2.1.5 功能需求(时序图)分析 - 9 - 2.2 系统结构图和流程图 - 10 - 2.3 系统界面需求 - 11 - 2.4 系统性能需求 - 12 - 2.5 运行环境需求 - 12 - 第三章 Android数据库设计 - 13 - 3.1 数据库及字段属性设计 - 13 - 3.1.1 字段设计(表、图) - 13 - 3.1.2 音乐播放器E-R图 - 15 - 3.2 数据库连接 - 15 - 3.2.1 创建数据库 - 15 - 3.2.2 操作数据库 - 16 - 3.2.3 数据显示 - 17 - 第四章 Android项目介绍 - 18 - 4.1 什么是Android? - 18 - 4.1.1 Android简介 - 18 - 4.1.2 Android Features特性 - 18 - 4.1.3 Android基本框架(Android Architecture) - 19 - 4.1.4 Android系统的四大组件 - 22 - 4.2 搭建Android开发环境 - 23 - 4.3 Android常用工具的使用 - 25 - 4.3.1 命令行的使用 - 25 - 4.3.2 Dalvik Debug Monitor Service (DDMS)的使用 - 26 - 4.4 Android 音乐播放器的工程 - 26 - 4.4.1 Android项目 - 26 - 4.4.2 Android工程程序结构 - 27 - 4.4.3 AndroidManifest.xml文件 - 29 - 第五章 播放器系统功能详细设计 - 31 - 5.1音乐播放器主界面功能实现 - 31 - 5.1.1 播放器主界面 - 31 - 5.1.2 播放界面音轨的实现 - 32 - 5.1.3 播放器播放、暂停、停止等功能 - 35 - 5.2 播放列表功能 - 36 - 5.3 菜单功能 - 38 - 5.3.1 菜单界面 - 38 - 5.3.2 菜单功能实现 - 39 - 5.4 播放设置界面 - 41 - 5.4.1 界面实现 - 41 - 5.4.2 歌词显示实现 - 42 - 5.5 手机扩展卡的访问 - 44 - 5.5.1 文件浏览器界面 - 45 - 5.5.2 文件浏览器功能实现 - 46 - 5.6 数据存储方式 - 47 - 5.6.1 SharedPreferences - 47 - 5.6.2 File存储方式 - 48 - 5.6.3 SQLiteDatabase数据库 - 48 - 第六章 结 论 - 49 -

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值