安卓第一阶段实训项目:基于存储卡音乐播放器V0.5----实训报告(五)
文章目录
- 功能要求
- 一、运行效果
- 二、实现步骤
-
- 1.创建安卓应用【SDCardMusicPlayerV0.5】
- 2.将图片素材拷贝到drawable目录与mipmap目录
- 3.播放按钮背景图片选择器 - play_button_selector.xml
- 4.暂停按钮背景图片选择器 - pause_button_selector.xml
- 5.上一首按钮背景图片选择器 - previous_button_selector.xml
- 6.下一首按钮背景图片选择器 - next_button_selector.xml
- 7.主布局资源文件activity_main.xml
- 8.字符串资源文件strings.xml
- 9.创建音乐名列表项模板music_name_list_item.xml
- 10.创建ui子包,将MainActivity拖进ui子包
- 11.创建entity子包,在里面创建音乐实体类Music
- 12.创建app子包,在里面创建音乐播放器应用程序类MusicPlayerApplication
- 13.在项目清单文件里个音乐播放器应用程序类注册并授权读外置存储卡
- 14.创建adapter子包,在里面创建音乐适配器MusicAdapter
- 15.在app子包常见应用程序常量接口 - AppConstants
- 16.主界面类 - MainActivity
- 总结
文章目录
- 功能要求
- 一、运行效果
- 二、实现步骤
-
- 1.创建安卓应用【SDCardMusicPlayerV0.5】
- 2.将图片素材拷贝到drawable目录与mipmap目录
- 3.播放按钮背景图片选择器 - play_button_selector.xml
- 4.暂停按钮背景图片选择器 - pause_button_selector.xml
- 5.上一首按钮背景图片选择器 - previous_button_selector.xml
- 6.下一首按钮背景图片选择器 - next_button_selector.xml
- 7.主布局资源文件activity_main.xml
- 8.字符串资源文件strings.xml
- 9.创建音乐名列表项模板music_name_list_item.xml
- 10.创建ui子包,将MainActivity拖进ui子包
- 11.创建entity子包,在里面创建音乐实体类Music
- 12.创建app子包,在里面创建音乐播放器应用程序类MusicPlayerApplication
- 13.在项目清单文件里个音乐播放器应用程序类注册并授权读外置存储卡
- 14.创建adapter子包,在里面创建音乐适配器MusicAdapter
- 15.在app子包常见应用程序常量接口 - AppConstants
- 16.主界面类 - MainActivity
- 总结
功能要求
在基于存储卡音乐播放器V0.4基础上,作如下修改:
-
创建应用程序常量接口保存广播频道常量
-
在音乐播放器应用程序类里添加两个属性
– currentMusicIndex
– currentPosition
– 访问它们的方法 -
创建MusicPlayService来完成音乐的播放、暂停以及切换工作
-
利用广播来实现MainActivity与MusicPlayService之间的通信
一、运行效果
二、实现步骤
1.创建安卓应用【SDCardMusicPlayerV0.5】
2.将图片素材拷贝到drawable目录与mipmap目录
3.播放按钮背景图片选择器 - play_button_selector.xml
去我上一篇看吧
4.暂停按钮背景图片选择器 - pause_button_selector.xml
去我上一篇看吧
5.上一首按钮背景图片选择器 - previous_button_selector.xml
去我上一篇看吧
6.下一首按钮背景图片选择器 - next_button_selector.xml
去我上一篇看吧
7.主布局资源文件activity_main.xml
去我上一篇看吧
8.字符串资源文件strings.xml
<resources>
<string name="app_name">基于存储卡音乐播放器V0.4</string>
<string name="scan_music">扫描外置存储卡上全部MP3音乐,请耐心等待……</string>
</resources>
9.创建音乐名列表项模板music_name_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/tvMusicName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
10.创建ui子包,将MainActivity拖进ui子包
11.创建entity子包,在里面创建音乐实体类Music
package net.yq.SDCardMusicPlayerV05.entity;
public class Music {
private String musicName; // 音乐名
public String getMusicName() {
return musicName;
}
public void setMusicName(String musicName) {
this.musicName = musicName;
}
@Override
public String toString() {
return "Music{" +
"musicName='" + musicName + '\'' +
'}';
}
}
12.创建app子包,在里面创建音乐播放器应用程序类MusicPlayerApplication
package net.yq.SDCardMusicPlayerV05.app;
import android.app.Application;
import android.os.Environment;
import net.yq.SDCardMusicPlayerV05.entity.Music;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class MusicPlayerApplication extends Application {
private SimpleDateFormat sdf; // 简单日期格式
private int currentMusicIndex; // 当前音乐索引
private int currentPosition; // 当前播放位置
@Override
public void onCreate() {
super.onCreate();
// 实例化简单日期格式
sdf = new SimpleDateFormat("mm:ss");
}
public int getCurrentMusicIndex() {
return currentMusicIndex;
}
public void setCurrentMusicIndex(int currentMusicIndex) {
this.currentMusicIndex = currentMusicIndex;
}
public int getCurrentPosition() {
return currentPosition;
}
public void setCurrentPosition(int currentPosition) {
this.currentPosition = currentPosition;
}
/**
* 获取格式化时间
*
* @param time 单位是毫秒
* @return mm:ss格式的时间
*/
public String getFormatTime(int time) {
return sdf.format(time);
}
/**
* 生成指定目录下某种类型的文件列表
*
* @param dir
* @param suffix
* @param typeFileList
*/
public void makeTypeFileList(File dir, String suffix, List<String> typeFileList) {
// 获取指定目录下的File数组(File既可以指向目录,也可以指向文件)
File[] files = dir.listFiles();
// 遍历File数组
for (File file : files) {
// 判断file是否是文件
if (file.isFile()) {
// file是文件
// 按照后缀来过滤文件
if (file.getName().endsWith(suffix)) {
// 将满足条件的文件添加到文件列表
typeFileList.add(file.getAbsolutePath());
}
} else {