很早之前就有制作音乐播放器APP的想法了。最近有空实现了一下。
我是使用的Android Studio编程开发环境,在我的华为mate30手机中测试安装。
音乐播放器app实现了音乐文件播放、暂停功能和音乐文件的显示、选择。APP包括2个Activity和1个service。另外有实现播放控制条。
我是先设计app的显示,然后添加activty中的按钮事件实现activity跳转,再添加service实现播放功能和进度条功能,最后实现音乐文件显示和播放功能。
一、activity显示设计
1、播放功能的Activity:
实现的代码为:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文件" />
<Button
android:id="@+id/button_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/menu">
<TextView
android:id="@+id/textView_lyric"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="歌词显示" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/tools">
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textView_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="时长" />
</LinearLayout>
<LinearLayout
android:id="@+id/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/button_previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一首"
android:visibility="invisible" />
<Button
android:id="@+id/button_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放" />
<Button
android:id="@+id/button_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="暂停" />
<Button
android:id="@+id/button_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一首"
android:visibility="invisible" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
2、显示音乐文件的Activity:
实现的代码为:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FileActivity">
<LinearLayout
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button_file2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文件" />
<Button
android:id="@+id/button_view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/menu">
<TextView
android:id="@+id/textView_path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择文件路径"
android:visibility="invisible" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center_horizontal"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/button_confirm_path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确认" />
<Button
android:id="@+id/button_cancel_path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
二、activity中实现点击事件以及进度条
1、播放activity实现音乐播放、暂停按钮
按钮点击事件处理中,跳转到音乐播放service中提供的音乐播放功能,实现音乐的播放、暂停功能。
2、播放activity中实现进度条
定时任务定时发送消息给进度条handle跟新进度。
3、文件activity实现音乐文件的显示、文件的选择
文件操作打开音乐文件夹,显示在listview中,格式显示为单选。
三、service中实现音乐播放功能
1、路径为raw的音乐文件的播放
service在oncreate时创建音乐播放的mediaplayer实例。在onstart时播放、暂停音乐功能。
2、路径存放为手机外部存储的音乐文件的播放
service在onstart时创建音乐的播放。
四、最后,音乐文件存放路径为/Android/Data/项目名称路径(com.example.mymusicplayer)/Files/Music/
好了,现在可以把自己喜欢的音乐放在存放路径中,带在手机中随时播放听音乐了。
链接:
https://github.com/luwei-pixsel/mymusicplayer
Android studio使用GitHub对项目进行版本管理_sunbinkang的博客-CSDN博客_android studio使用github