1. Analyse de la demande
Utilisation complète de la conception de l'interface utilisateur, du stockage de données Sqlite, de l'activité (activité), du service (service), de MusicPlayer (classe de lecteur de musique), de ListView (liste), de GridView (liste de grille), de Fragment (fragment), de BaseAdapter (adaptateur) et autres connaissance, conception et développement d'un lecteur de musique avec liste de musique.
2. Analyse de conception
Ci-dessous sont tous les fichiers de code
3. Analyse du fichier de ressources
Tous les fichiers musicaux de ce projet sont stockés localement, il n'y a pas de serveur, bien sûr il peut être utilisé. Les fichiers musicaux sont stockés dans le dossier raw sous le dossier res, les ressources d'image sont stockées dans les dossiers drawable et mipmap, les styles de contrôle sont également stockés dans drawable et les couleurs sont définies dans les couleurs sous les valeurs.
4. Environnement de développement
élément d'environnement | paramètre |
---|---|
JDK | 1.8 |
Version Androïd | 10.0 |
API Android | 29 |
5. Page de connexion
La première est l'interface de connexion au système, qui est la première interface que les utilisateurs voient après l'installation de l'application. Ils doivent utiliser le nom d'utilisateur et le mot de passe corrects pour accéder au lecteur. Sur cette page, vous pouvez choisir de mémoriser le mot de passe et automatiquement connectez-vous. Si vous choisissez simplement de mémoriser le mot de passe, après avoir quitté l'application et ressaisi le mot de passe du compte sera enregistré, mais ne se connectera pas automatiquement. Si la connexion automatique est cochée, il se connectera automatiquement en fonction du mot de passe du compte. La prochaine fois que vous le démarrerez, vous ignorerez la connexion et l'invite que vous avez déjà connectées automatiquement.
6. Page d'inscription
L'utilisateur accède à l'interface d'enregistrement de l'utilisateur en cliquant sur "Pas encore enregistré ? Cliquez ici pour essayer" sur l'interface de connexion. Le mot de passe entré deux fois doit être le même et le nom d'utilisateur et le mot de passe ne peuvent pas être vides pour s'enregistrer avec succès. Une fois l'enregistrement réussi, utiliser le compte enregistré Vous pouvez utiliser le lecteur en vous connectant au système avec le mot de passe.
7. La page principale du lecteur de musique
Lorsque l'utilisateur se connecte pour la première fois, il sera invité à autoriser l'application Wangyiyun à obtenir l'autorisation de stockage. Après avoir obtenu l'autorisation, l'application analysera automatiquement les fichiers audio dans le téléphone et reviendra à la liste audio sur le interface principale. L'utilisateur peut cliquer pour commencer à écouter la chanson, et il y a une pause sur l'interface principale. Jouer, arrêter de jouer, chanson suivante et chanson précédente, vous pouvez régler le volume du téléphone et faire glisser la barre de progression de la lecture .
Huit, la barre de menu du lecteur de musique
Cliquez en haut à droite pour entrer dans la barre de menu en haut à droite, il y a 6 fonctions au total, à savoir le thème, le mode de lecture, le réglage du sommeil, à propos, la sortie, la déconnexion
Neuf, thème de réglage du lecteur de musique
Cliquez sur le thème dans la barre de menu dans le coin supérieur droit pour afficher la fenêtre contextuelle du thème, sélectionnez un thème dans la fenêtre contextuelle et l'image d'arrière-plan correspondante sera automatiquement commutée pour le lecteur.
10. Mode de lecture du lecteur de musique
Cliquez sur le mode de lecture dans la barre de menus dans le coin supérieur droit et l'interface de sélection du mode de jeu apparaîtra. Vous avez le choix entre quatre modes, à savoir la lecture séquentielle, la boucle unique, la boucle de liste et la lecture aléatoire.
11. Paramètres de veille du lecteur de musique
Cliquez sur Paramètres de veille dans la barre de menu en haut à droite pour faire apparaître l'option Paramètres de veille, faites glisser la barre de progression pour sélectionner l'heure correspondante, cliquez sur pour activer le commutateur, cliquez sur OK pour définir l'heure de veille, et l'application se fermera automatiquement lorsque le Le temps s'est écoulé.
12. Lecteur de musique pour afficher les paroles
Cliquez sur Télécharger les paroles dans la barre de menu dans le coin supérieur droit ou glissez sur 300 pixels pour accéder à l'interface Paroles, il ira automatiquement sur Fanfan.com pour interroger les paroles de la chanson en cours de lecture, s'il y a un résultat, il le fera renvoie les paroles, s'il n'y a pas de résultat, il n'affichera aucune parole.
Treize, une partie du code
Scannez les fichiers audio dans le téléphone mobile pour initialiser le code de la clé de la liste de musique
Rappelez-vous le mot de passe sur la page de connexion, quelques codes
Le code d'implémentation de la clé pour le réglage du mode veille
Donnez le code activity_musicplayer.xml complet
<?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. Résumé
Pour obtenir le code source, veuillez m'envoyer un message privé directement.