Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Δημιουργήσετε μια εφαρμογή αναπαραγωγής μουσικής για το Android: Εγκατάσταση Project (Setup)

by
Difficulty:BeginnerLength:LongLanguages:

Greek (ελληνικά) translation by Iris Diakoumi (you can also view the original English article)

Η πλατφόρμα Android παρέχει πόρους για το χειρισμό αναπαραγωγής πολυμέσων, την οποία μπορούν να χρησιμοποιήσουν οι εφαρμογές σας για να δημιουργήσετε μια διασύνδεση μεταξύ του χρήστη και των αρχείων μουσικής του. Σε αυτή τη σειρά από tutorial, θα δημιουργήσουμε μια βασική εφαρμογή αναπαραγωγής μουσικής για το Android. Η εφαρμογή θα παρουσιάζει μια λίστα τραγουδιών στη συσκευή του χρήστη, έτσι ώστε ο χρήστης να μπορεί μα επιλέξει τραγούδια για να παίξει. Η εφαρμογή θα παρουσιάζει επίσης στοιχεία ελέγχου για την αλληλεπίδραση με την αναπαραγωγή και θα συνεχίσει να αναπαράγει, όταν ο χρήστης απομακρύνεται από την εφαρμογή, με μια ειδοποίηση που θα εμφανίζεται ενώ πραγματοποιείται η αναπαραγωγή.

Εισαγωγή

Η δημιουργία της εφαρμογής αναπαραγωγής μουσικής θα περιλάβει τη χρήση της κλάσης ContentResolver για να ανακτήσετε κομμάτια στη συσκευή, της κλάσης MediaPlayer για την αναπαραγωγή ήχου και της κλάσης MediaController για να ελέγχετε την αναπαραγωγή. Θα χρησιμοποιήσουμε επίσης ένα στιγμιότυπο Service για την αναπαραγωγή ήχου, όταν ο χρήστης δεν αλληλεπιδρά απευθείας με την εφαρμογή. Θα πρέπει να είστε σε θέση να ολοκληρώσετε αυτή τη σειρά, αν είστε ένας σχετικά προχωρημένος προγραμματιστής Android, έτσι εάν έχετε δημιουργήσει ήδη μερικές εφαρμογές, τότε αυτή η σειρά δεν θα πρέπει να είναι δύσκολη για σας. Εδώ είναι μια προεπισκόπηση της τελικής εφαρμογής:

Android Music Player

Σε αυτό το tutorial, θα δημιουργήσουμε την εφαρμογή και θα εξετάσουμε τη συσκευή του χρήστη για αρχεία ήχου χρησιμοποιώντας τις κλάσεις ContentResolver και Cursor. Στο επόμενο μέρος, θα χρησιμοποιήσουμε ένα στιγμιότυπο Adapter για να παρουσιάσουμε τα τραγούδια σε μια προβολή λίστας, ξεκινώντας την αναπαραγωγή, όταν ο χρήστης επιλέγει ένα στοιχείο από τη λίστα. Στο τελικό μέρος αυτής της σειράς, θα χρησιμοποιήσουμε την κλάση MediaController για να δώσουμε στο χρήστη τον έλεγχο της αναπαραγωγής, για να υλοποιήσουμε συναρτήσεις για να προχωρήσουμε προς τα εμπρός και προς τα πίσω και να συμπεριλάβουμε μια λειτουργία shuffle. Μετά από αυτή τη σειρά, θα εξερευνήσουμε άλλες πτυχές της αναπαραγωγής πολυμέσων που μπορεί να ενισχύσουν την εφαρμογή, όπως χειρισμός εστίασης ήχου, παρουσίαση αρχείων πολυμέσων με διαφορετικούς τρόπους και αναπαραγωγή πολυμέσων ροής.

1. Δημιουργήστε και Ρυθμίστε ένα νέο Project

Βήμα 1

Δημιουργήστε ένα νέο Android project. Εάν χρησιμοποιείτε το Eclipse, τότε αφήστε το IDE (ολοκληρωμένο περιβάλλον ανάπτυξης) να δημιουργήσει μια κύρια κλάση Activity και ένα αρχείο διάταξης για εσάς. Για ορισμένο από τον κώδικα που χρησιμοποιούμε στη σειρά, χρειάζεστε ένα ελάχιστο επίπεδο API 16, έτσι θα πρέπει να ακολουθήσετε πρόσθετα βήματα για την υποστήριξη παλαιότερων εκδόσεων. Αφού δημιουργηθεί το project σας, ανοίξτε το αρχείο Manifest του project. Μέσα στο στοιχείο manifest, προσθέστε τα ακόλουθα δικαιώματα:

Θα χρησιμοποιήσουμε αυτό το δικαίωμα για να αφήσουμε την αναπαραγωγή μουσικής να συνεχίσει, όταν η συσκευή του χρήστη είναι αδρανής. Το Manifest θα πρέπει να περιέχει ήδη ένα στοιχείο για την κύρια κλάση Activity. Προσθέστε τις ακόλουθες ιδιότητες για το στοιχείο activity για να ορίσετε τα screenOrientation και launchMode:

Θα παραμείνουμε σε κατακόρυφο προσανατολισμό για λόγους απλότητας. Το launchMode θα βοηθήσει τη διαδικασία πλοήγησης πίσω στην εφαρμογή αφού έχουμε βγει από αυτή. Θα εμφανίσουμε μια ειδοποίηση που θα υποδεικνύει το τραγούδι που παίζεται αυτήν τη στιγμή, πατώντας την ειδοποίηση ο χρήστης θα επιστρέφει στην εφαρμογή. Πρόκειται, επίσης, να χρησιμοποιήσουμε μια κλάση Service για αναπαραγωγή μουσικής. Προσθέστε την ακόλουθη γραμμή στο Manifest του project μέσα στο στοιχείο application και μετά το στοιχείο activity:

Αλλάξτε το όνομα του πακέτου για να ταιριάζει με το δικό σας και να αλλάξετε το όνομα της κλάσης, εάν επιθυμείτε.

Βήμα 2

Ανοίξτε το κύριο αρχείο διάταξης του project και αντικαταστήστε το περιεχόμενό του με την ακόλουθη διάταξη:

Φροντίστε να τροποποιήσετε την ιδιότητα tools:context εάν η κύρια Activity κλάση σας ονομάζεται διαφορετικά. Η διάταξη περιλαμβάνει ένα ListView μέσα στο οποίο θα παρουσιάσουμε τη λίστα των τραγουδιών.

Θα περιλάβουμε δύο στοιχεία μενού για την εναλλαγή της λειτουργίας shuffle και για την έξοδο από την εφαρμογή. Ανοίξτε το κύριο αρχείο μενού (res/menu/main.xml) και αντικαταστήστε το περιεχόμενό του με το ακόλουθο:

Εάν προτιμάτε, μπορείτε να αποθηκεύσετε τις συμβολοσειρές των τίτλων στο αρχείο res/values/strings.xml. Τα δύο στοιχεία 'item' αναφέρονται σε drawable αρχεία. Δημιουργήσετε τα δικά σας ή χρησιμοποιήστε αυτές τις δύο εικόνες για να ξεκινήσετε:

Android Music Player Random Button
Android Music Player End Button

Θα χρησιμοποιήσουμε επίσης ένα εικονίδιο για να εμφανίσουμε στην ειδοποίηση αναπαραγωγής. Δημιουργήσετε ένα τώρα ή χρησιμοποιήστε το παρακάτω:

Android Music Player Play Button

Ο κώδικας θα αναφέρεται στις εικόνες χρησιμοποιώντας τα ονόματα rand, end, και play έτσι, βεβαιωθείτε ότι χρησιμοποιείτε τα ίδια ονόματα αρχείων. Αντιγράψτε τις εικόνες στους φακέλους drawables του project σας. Θα υλοποιήσουμε τις ενέργειες αργότερα.

2. Ερευνήστε τη Συσκευή για Τραγούδια

Βήμα 1

Ας ερευνήσουμε τη συσκευή του χρήστη για αρχεία ήχου. Πρώτα, μπορείτε να προσθέσετε μια νέα κλάση στο project σας, ονομάζοντας τη Song. Θα χρησιμοποιήσουμε αυτή την κλάση για να μοντελοποιήσουμε τα δεδομένα για ένα μεμονωμένο αρχείο ήχου.  Μέσα στην δήλωση της κλάσης, προσθέστε τρεις μεταβλητές στιγμιοτύπου για τα δεδομένα που θέλουμε να αποθηκεύσουμε για κάθε κομμάτι:

Στη συνέχεια, προσθέτουμε μια μέθοδο κατασκευαστή στην οποία αρχικοποιούμε τις μεταβλητές στιγμιοτύπου:

Τέλος, προσθέτουμε μεθόδους get για τις μεταβλητές στιγμιοτύπου:

Αν σκοπεύετε να χρησιμοποιήσετε περισσότερες πληροφορίες για το κάθε κομμάτι, τότε είστε ελεύθεροι να προσθέσετε πρόσθετες μεταβλητές στιγμιοτύπου στην κλάση.

Βήμα 2

Ανοίξτε την κύρια κλάση Activity και προσθέστε τις ακόλουθες εισαγωγές (imports):

Δηλώστε τις ακόλουθες μεταβλητές στιγμιοτύπου πριν από τη μέθοδο onCreate :

Θα αποθηκεύουμε τα τραγούδια σε μια λίστα και θα τα απεικονίσουμε στην προβολή ListView στην κύρια διάταξη. Στην onCreate, αφού ορίσετε την προβολή περιεχομένου, ανακτήστε το στιγμιότυπο ListView χρησιμοποιώντας το ID (αναγνωριστικό) που του δώσαμε στην κύρια διάταξη:

Αρχικοποιείστε τη λίστα όπως φαίνεται παρακάτω:

Στη συνέχεια, στην δήλωση της κύριας κλάσης Activity, μετά από τις υπάρχουσες μεθόδους, δημιουργήστε μια βοηθητική μέθοδο για να ανακτήσετε τις πληροφορίες του αρχείου ήχου:

Μέσα σε αυτή τη μέθοδο, δημιουργήστε ένα στιγμιότυπο ContentResolver, ανακτήστε το URI για εξωτερικά μουσικά αρχεία και δημιουργήστε ένα στιγμιότυπο Cursor χρησιμοποιώντας το στιγμιότυπο ContentResolver για να ερευνήσετε τα αρχεία μουσικής:

Τώρα μπορούμε να προσπελάσουμε τα αποτελέσματα, ελέγχοντας πρώτα ότι διαθέτουμε έγκυρα δεδομένα:

Πρώτα ανακτούμε τα ευρετήρια στηλών για τα στοιχεία δεδομένων τα οποία μας ενδιαφέρουν για κάθε τραγούδι, στη συνέχεια, τα χρησιμοποιούμε για να δημιουργήσετε ένα νέο αντικείμενο Song και το προσθέτουμε στη λίστα, πριν να συνεχίσουμε να προσπελαύνουμε τα αποτελέσματα.

Πίσω στην onCreate, μετά τον κώδικα που προσθέσαμε, καλούμε αυτή τη νέα μέθοδο:

3. Εμφανίστε τα Τραγούδια

Βήμα 1

Τώρα μπορούμε να εμφανίσουμε τη λίστα των τραγουδιών στη διεπαφή χρήστη. Στην μέθοδο onCreate, μετά την κλήση της βοηθητικής μεθόδου που δημιουργήσαμε πριν από λίγο, ας ταξινομήσουμε τα δεδομένα, έτσι ώστε τα τραγούδια παρουσιάζονται με αλφαβητική σειρά:

Χρησιμοποιούμε τη μεταβλητή title στην κλάση Song, χρησιμοποιώντας τις μεθόδους get που προσθέσαμε, για να υλοποιήσουμε μια μέθοδο compare, ταξινομώντας τα τραγούδια κατά τίτλο.

Βήμα 2

Ας ορίσουμε μια διάταξη που να αντιπροσωπεύει κάθε τραγούδι στη λίστα. Προσθέστε ένα νέο αρχείο στο φάκελο res/layout του project σας, ονομάζοντας το song.xml και πληκτρολογώντας τα εξής:

Μπορείτε να τροποποιήσετε τη διάταξη για να ταιριάζει στις προτιμήσεις σας. Κάθε τραγούδι στη λίστα θα εκπροσωπηθεί από συμβολοσειρές κειμένου τίτλου και καλλιτέχνη, έτσι θα χρησιμοποιήσουμε το TextViews για να εμφανίσετε τα δεδομένα αυτά. Παρατηρήστε ότι το tag ανοίγματος LinearLayout παραθέτει μια ιδιότητα onClick. Θα χρησιμοποιήσουμε αυτήν τη μέθοδο στην κύρια κλάση Activity για να ανταποκριθούμε στις επιλογές του χρήστη στα τραγούδια στη λίστα, αναπαράγοντας το τραγούδι που αντιπροσωπεύεται από το στοιχείο της λίστας που επιλέχθηκε.

Βήμα 3

Θα χρησιμοποιήσουμε έναν Adapter για να αντιστοιχίσετε τα τραγούδια στην προβολή λίστας. Προσθέσετε μια νέα κλάση στην εφαρμογή σας, ονομάζοντας την SongAdapter ή κάποιο άλλο όνομα της επιλογής σας. Κατά τη δημιουργία της κλάσης, δώστε της την υπερ-κλάση android.widget.BaseAdapter. Το Eclipse θα πρέπει να εισαγάγει την ακόλουθη διάρθρωση:

Θα πρέπει να προσθέσετε τις ακόλουθες εισαγωγές:

Μέσα στην δήλωση της κλάσης, δηλώστε τις ακόλουθες μεταβλητές στιγμιοτύπου:

Θα περάσουμε τη λίστα τραγουδιών από την κύρια κλάση Activity και θα χρησιμοποιήσουμε το LayoutInflater για να αντιστοιχίσουμε τις συμβολοσειρές τίτλου και καλλιτέχνη με το TextViews στη διάταξη τραγουδιού που δημιουργήσαμε.

Μετά τις μεταβλητές στιγμιοτύπου, δώστε στον προσαρμογέα μια μέθοδο κατασκευαστή για να τις αρχικοποιήσετε:

Τροποποιήστε το περιεχόμενο της μεθόδου getCount για να επιστρέφει το μέγεθος της λίστας:

Μπορείτε να αφήσετε τις μεθόδους  getItem και getItemId ανέγγιχτες. Ενημερώστε την υλοποίηση της μεθόδου getView, όπως φαίνεται παρακάτω:

Θέτουμε το κείμενο τίτλου και καλλιτέχνη ανακτώντας το σωστό στιγμιότυπο της Song από τη λίστα χρησιμοποιώντας το δείκτη θέσης, αντιστοιχίζοντας αυτές τις συμβολοσειρές στις προβολές που έχουμε προσθέσει στο αρχείο διάταξης τραγουδιών. Θέτουμε επίσης τη θέση ως το view tag, που θα μας επιτρέψει να παίζουμε το σωστό τραγούδι, όταν ο χρήστης κάνει κλικ σε ένα στοιχείο από τη λίστα. Θυμηθείτε ότι το αρχείο διάταξης song.xml περιλάμβανε μια ιδιότητα OnClick. Θα χρησιμοποιήσουμε τη μέθοδο που αναφέρεται εδώ για να ανακτήσουμε το tag στην Activity.

Βήμα 3

Πίσω στην κύρια κλάση Activity, στη μέθοδο onCreate μετά τη διαλογή της λίστας, δημιουργήστε ένα νέο στιγμιότυπο της κλάσης Adapter και θέστε το σε ListView:

Όταν εκτελείτε την εφαρμογή, θα πρέπει να παρουσιάζει τη λίστα των τραγουδιών στη συσκευή, κάνοντας κλικ επάνω τους θα κάνει την εφαρμογή να πετάει μια εξαίρεση προς το παρόν, αλλά θα υλοποιήσουμε τη λειτουργία χειρισμού κλικ στο επόμενο tutorial.

Συμπέρασμα

Έχουμε ρυθμίσει τώρα την εφαρμογή να διαβάζει τραγούδια από τη συσκευή του χρήστη. Στο επόμενο μέρος, θα ξεκινάμε την αναπαραγωγή όταν ο χρήστης επιλέγει ένα τραγούδι που χρησιμοποιώντας την κλάση MediaPlayer. Θα υλοποιήσουμε την αναπαραγωγή χρησιμοποιώντας μια κλάση Service, έτσι ώστε να συνεχίζει καθώς ο χρήστης αλληλεπιδρά με άλλες εφαρμογές. Τέλος, θα χρησιμοποιήσουμε μια κλάση MediaController για να δώσουμε στο χρήστη τον έλεγχο της αναπαραγωγής.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.