安卓第一阶段实训项目:基于存储卡音乐播放器V0.5----实训报告(五)

本文是基于存储卡音乐播放器V0.5的实训报告,主要介绍了如何创建应用程序常量接口,音乐播放器服务MusicPlayService,以及利用广播实现MainActivity与服务之间的通信,详细涵盖了从项目创建、资源文件设置到各组件的实现步骤。
摘要由CSDN通过智能技术生成

安卓第一阶段实训项目:基于存储卡音乐播放器V0.5----实训报告(五)



功能要求

在基于存储卡音乐播放器V0.4基础上,作如下修改:

  1. 创建应用程序常量接口保存广播频道常量

  2. 在音乐播放器应用程序类里添加两个属性
    – currentMusicIndex
    – currentPosition
    – 访问它们的方法

  3. 创建MusicPlayService来完成音乐的播放、暂停以及切换工作

  4. 利用广播来实现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 {
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值