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
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.
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.
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 .
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
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.
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.
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.
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.
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
Recuerde la contraseña en la página de inicio de sesión, algunos códigos
El código de implementación clave para la configuración del modo de suspensión
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.