• 音乐播放器APP


    很早之前就有制作音乐播放器APP的想法了。最近有空实现了一下。

    我是使用的Android Studio编程开发环境,在我的华为mate30手机中测试安装。

    音乐播放器app实现了音乐文件播放、暂停功能和音乐文件的显示、选择。APP包括2个Activity和1个service。另外有实现播放控制条。

    我是先设计app的显示,然后添加activty中的按钮事件实现activity跳转,再添加service实现播放功能和进度条功能,最后实现音乐文件显示和播放功能。

    一、activity显示设计

    1、播放功能的Activity:

     实现的代码为:

    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. <LinearLayout
    9. android:id="@+id/menu"
    10. android:layout_width="match_parent"
    11. android:layout_height="wrap_content"
    12. android:layout_gravity="top"
    13. android:orientation="horizontal"
    14. app:layout_constraintTop_toTopOf="parent">
    15. <Button
    16. android:id="@+id/button_file"
    17. android:layout_width="wrap_content"
    18. android:layout_height="wrap_content"
    19. android:text="文件" />
    20. <Button
    21. android:id="@+id/button_view"
    22. android:layout_width="wrap_content"
    23. android:layout_height="wrap_content"
    24. android:text="显示" />
    25. LinearLayout>
    26. <LinearLayout
    27. android:layout_width="match_parent"
    28. android:layout_height="wrap_content"
    29. android:orientation="vertical"
    30. app:layout_constraintTop_toBottomOf="@id/menu">
    31. <TextView
    32. android:id="@+id/textView_lyric"
    33. android:layout_width="wrap_content"
    34. android:layout_height="match_parent"
    35. android:text="歌词显示" />
    36. LinearLayout>
    37. <LinearLayout
    38. android:layout_width="match_parent"
    39. android:layout_height="wrap_content"
    40. android:orientation="vertical"
    41. app:layout_constraintBottom_toTopOf="@id/tools">
    42. <SeekBar
    43. android:id="@+id/seekBar"
    44. android:layout_width="match_parent"
    45. android:layout_height="wrap_content" />
    46. <TextView
    47. android:id="@+id/textView_duration"
    48. android:layout_width="wrap_content"
    49. android:layout_height="wrap_content"
    50. android:layout_gravity="right"
    51. android:text="时长" />
    52. LinearLayout>
    53. <LinearLayout
    54. android:id="@+id/tools"
    55. android:layout_width="match_parent"
    56. android:layout_height="wrap_content"
    57. android:layout_gravity="bottom"
    58. android:gravity="center"
    59. android:orientation="horizontal"
    60. app:layout_constraintBottom_toBottomOf="parent">
    61. <Button
    62. android:id="@+id/button_previous"
    63. android:layout_width="wrap_content"
    64. android:layout_height="wrap_content"
    65. android:text="上一首"
    66. android:visibility="invisible" />
    67. <Button
    68. android:id="@+id/button_play"
    69. android:layout_width="wrap_content"
    70. android:layout_height="wrap_content"
    71. android:text="播放" />
    72. <Button
    73. android:id="@+id/button_pause"
    74. android:layout_width="wrap_content"
    75. android:layout_height="wrap_content"
    76. android:text="暂停" />
    77. <Button
    78. android:id="@+id/button_next"
    79. android:layout_width="wrap_content"
    80. android:layout_height="wrap_content"
    81. android:text="下一首"
    82. android:visibility="invisible" />
    83. LinearLayout>
    84. androidx.constraintlayout.widget.ConstraintLayout>

    2、显示音乐文件的Activity:

     实现的代码为:

    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".FileActivity">
    8. <LinearLayout
    9. android:id="@+id/menu"
    10. android:layout_width="match_parent"
    11. android:layout_height="wrap_content"
    12. android:orientation="horizontal"
    13. app:layout_constraintTop_toTopOf="parent">
    14. <Button
    15. android:id="@+id/button_file2"
    16. android:layout_width="wrap_content"
    17. android:layout_height="wrap_content"
    18. android:text="文件" />
    19. <Button
    20. android:id="@+id/button_view2"
    21. android:layout_width="wrap_content"
    22. android:layout_height="wrap_content"
    23. android:text="显示" />
    24. LinearLayout>
    25. <LinearLayout
    26. android:layout_width="match_parent"
    27. android:layout_height="wrap_content"
    28. android:orientation="vertical"
    29. app:layout_constraintTop_toBottomOf="@id/menu">
    30. <TextView
    31. android:id="@+id/textView_path"
    32. android:layout_width="wrap_content"
    33. android:layout_height="wrap_content"
    34. android:text="选择文件路径"
    35. android:visibility="invisible" />
    36. <ListView
    37. android:id="@+id/listView"
    38. android:layout_width="match_parent"
    39. android:layout_height="wrap_content">
    40. ListView>
    41. LinearLayout>
    42. <LinearLayout
    43. android:layout_width="match_parent"
    44. android:layout_height="wrap_content"
    45. android:layout_gravity="bottom"
    46. android:gravity="center_horizontal"
    47. android:orientation="horizontal"
    48. app:layout_constraintBottom_toBottomOf="parent">
    49. <Button
    50. android:id="@+id/button_confirm_path"
    51. android:layout_width="wrap_content"
    52. android:layout_height="wrap_content"
    53. android:text="确认" />
    54. <Button
    55. android:id="@+id/button_cancel_path"
    56. android:layout_width="wrap_content"
    57. android:layout_height="wrap_content"
    58. android:text="取消" />
    59. LinearLayout>
    60. 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

  • 相关阅读:
    VSCode怎么创建Java项目
    BeeWare官方教程中文版
    HP E1406A 端子模块
    产品经理,要有怎样的思维方式?
    Docker容器中的SSH免密登录
    【小技巧】苹果手机获取UDID的方法【两种UID的获取方法,非常实用】
    Openlayers 使用天地图Web服务
    Springboot自行车在线租赁系统毕业设计源码101157
    2022DASCTF MAY 出题人挑战赛 misc
    unity 点击3D物体
  • 原文地址:https://blog.csdn.net/rim32/article/details/126720192