Proyecto Android: reproductor de música

1. Análisis de la demanda

Uso integral del diseño de la interfaz de usuario, almacenamiento de datos Sqlite, Actividad (actividad), Servicio (servicio), MusicPlayer (clase de reproductor de música), ListView (lista), GridView (lista de cuadrícula), Fragmento (fragmento), BaseAdapter (adaptador) y otros conocimiento, diseño y desarrollo de un reproductor de música con lista de música.

2. Análisis de diseño

A continuación se muestran todos los archivos de código
inserte la descripción de la imagen aquí

3. Análisis de archivos de recursos

Todos los archivos de música en este proyecto se almacenan localmente, no hay servidor, por supuesto que se puede usar. Los archivos de música se almacenan en la carpeta raw dentro de la carpeta res, los recursos de imagen se almacenan en las carpetas drawable y mipmap, los estilos de control también se almacenan en drawable y los colores se definen en colors bajo valores.

4. Entorno de desarrollo

elemento del medio ambiente parámetro
JDK 1.8
versión de Android 10.0
API de Android 29

5. Página de inicio de sesión

La primera es la interfaz de inicio de sesión del sistema, que es la primera interfaz que ven los usuarios después de instalar la aplicación. Necesitan usar el nombre de usuario y la contraseña correctos para ingresar al reproductor. En esta página, puede elegir si desea recordar la contraseña y automáticamente iniciar sesión. Si solo elige recordar la contraseña, después de salir de la aplicación y volver a ingresar, la contraseña de la cuenta se guardará, pero no se iniciará sesión automáticamente. Si se marca el inicio de sesión automático, se iniciará automáticamente de acuerdo con el guardó la contraseña de la cuenta, y el próximo inicio omitirá directamente el inicio de sesión y le indicará que se ha iniciado sesión automáticamente.
Interfaz de inicio de sesión de la aplicación Wangyiyun

6. Página de registro

El usuario salta a la interfaz de registro de usuario haciendo clic en "¿Aún no está registrado? Haga clic aquí para probar" en la interfaz de inicio de sesión. La contraseña ingresada dos veces debe ser la misma y el nombre de usuario y la contraseña no pueden estar vacíos para registrarse correctamente. Después de un registro exitoso, utilizar la cuenta registrada Puede utilizar el reproductor iniciando sesión en el sistema con la contraseña.
inserte la descripción de la imagen aquí

7. La página principal del reproductor de música.

Cuando el usuario inicia sesión por primera vez, se le preguntará si desea autorizar la aplicación Wangyiyun para obtener el permiso de almacenamiento. Después de obtener el permiso, la aplicación escaneará automáticamente los archivos de audio en el teléfono y volverá a la lista de audio en el interfaz principal. El usuario puede hacer clic para comenzar a escuchar la canción, y hay una pausa en la interfaz principal. Reproducir, dejar de reproducir, siguiente canción y canción anterior, puede ajustar el volumen del teléfono y deslizar la barra de progreso de reproducción .
inserte la descripción de la imagen aquí

Ocho, la barra de menú del reproductor de música

Haga clic en la parte superior derecha para ingresar a la barra de menú superior derecha, hay 6 funciones en total, a saber, tema, modo de reproducción, configuración de suspensión, acerca de, salir, cerrar sesión
inserte la descripción de la imagen aquí

Nueve, tema de configuración del reproductor de música

Haga clic en el tema en la barra de menú en la esquina superior derecha para mostrar la ventana emergente del tema, seleccione un tema en la ventana emergente y la imagen de fondo correspondiente se cambiará automáticamente para el reproductor.
inserte la descripción de la imagen aquí

10. Modo de reproducción del reproductor de música

Haga clic en el modo de reproducción en la barra de menú en la esquina superior derecha y aparecerá la interfaz para seleccionar el modo de reproducción. Hay cuatro modos para elegir, a saber, reproducción secuencial, bucle único, bucle de lista y reproducción aleatoria.
inserte la descripción de la imagen aquí

11. Configuración de suspensión del reproductor de música

Haga clic en Configuración de suspensión en la barra de menú superior derecha para que aparezca la opción Configuración de suspensión, deslice la barra de progreso para seleccionar la hora correspondiente, haga clic para encender el interruptor, haga clic en Aceptar para configurar el tiempo de suspensión y la aplicación se cerrará automáticamente cuando el El tiempo ha terminado.
inserte la descripción de la imagen aquí

12. Reproductor de música para ver letras.

Haga clic en Descargar letras en la barra de menú en la esquina superior derecha o deslícese sobre 300 píxeles para saltar a la interfaz de Letras, e irá automáticamente a Fanfan.com para consultar la letra de la canción que se está reproduciendo. devolverá la letra y, si no hay ningún resultado, no mostrará la letra.
inserte la descripción de la imagen aquí

Trece, parte del código

Escanee los archivos de audio en el teléfono móvil para inicializar el código clave de la lista de música
inserte la descripción de la imagen aquí
Recuerde la contraseña en la página de inicio de sesión, algunos códigos
inserte la descripción de la imagen aquí
El código de implementación clave para la configuración del modo de suspensión
inserte la descripción de la imagen aquí
Proporcione el código completo de activity_musicplayer.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayout1"
    android:background="@drawable/bg_snow">

    <ListView   android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@drawable/widget_bg"
        android:layout_above="@+id/linearLayout1"
        android:layout_margin="6dp"
        />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/widget_bg"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_margin="6dp">

        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <RelativeLayout
            android:id="@+id/relativeLayout2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:text="00:00"
                android:textColor="#4e4c4c" />
            <ImageView
                android:id="@+id/main_sleep"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@+id/textView1"
                android:background="@drawable/sleep_timer"
                android:src="@drawable/sleep_timer"/>
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="00:00"
                android:textColor="#4e4c4c" />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/textView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ellipsize="marquee"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:marqueeRepeatLimit="marquee_forever"
                    android:text="未在播放"
                    android:textColor="#000"
                    android:textAlignment="center"/>

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ellipsize="marquee"
                    android:focusable="true"
                    android:focusableInTouchMode="true"
                    android:marqueeRepeatLimit="marquee_forever"
                    android:text=""
                    android:textColor="#2196F3"
                    android:textAlignment="center"/>
                <LinearLayout
                    android:id="@+id/volumeLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:gravity="center"
                    >
                    <ImageView
                    android:layout_width="12dp"
                    android:layout_height="12dp"
                    android:id="@+id/slience"
                    android:background="@drawable/slience"
                    />

                    <SeekBar
                        android:id="@+id/volumeBar"
                        android:layout_width="266dp"
                        android:layout_height="wrap_content" />
                    <ImageView
                        android:layout_width="15dp"
                        android:layout_height="17dp"
                        android:id="@+id/voicemax"
                        android:background="@drawable/voicemax"
                        />
                </LinearLayout>
            </LinearLayout>
        </RelativeLayout>

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="340dp"
            android:layout_height="wrap_content"
            android:gravity="center">

            <ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_margin="10dp"
                android:background="@drawable/button_previous" />

            <ImageButton
                android:id="@+id/imageButton2"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_margin="10dp"
                android:background="@drawable/button_play" />

            <ImageButton
                android:id="@+id/imageButton3"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_margin="10dp"
                android:background="@drawable/button_stop" />

            <ImageButton
                android:id="@+id/imageButton4"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_margin="10dp"
                android:background="@drawable/button_next" />
        </LinearLayout>

    </LinearLayout>
</RelativeLayout>

14. Resumen

Para obtener el código fuente, envíeme un mensaje privado directamente.

Supongo que te gusta

Origin blog.csdn.net/Soncat2000/article/details/127567100
Recomendado
Clasificación