Εφαρμογή καταγραφής ήχων στο AppInventor

Εφαρμογή καταγραφής ήχων στο AppInventor

Επίπεδο Δυσκολίας

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

Αφού συνδεθούμε στο AppInventor με τον κωδικό μας θα δημιουργήσουμε ένα νέο project το οποίο θα το ονομάσουμε “SoundLibrary”. Στο σχεδιαστικό κομμάτι η εφαρμογή μας θα μοιάζει όπως φαίνεται στην παρακάτω εικόνα.

Ο σχεδιασμός της εφαρμογής

Η δομή των στοιχείων της οθόνης θα είναι ως εξής:

  • Ένα label (SoundTitleLaber) το οποίο θα έχει ως κείμενο: Sound Title
  • Ένα text box (SoundTitleTextBox) στο οποίο οι χρήστες θα γράφουν τον τίτλο του ήχου που καταγράφουν
  • Ένα Horizontal arrangement στο οποίο θα προσθέσετε:
    • Ένα button (RecordSoundButton) το οποίο θα ξεκινάει την καταγραφή του ήχου
    • Ένα ακόμα button (StopRecordingButton) το οποίο θα σταματάει την καταγραφή του ήχου
  • Ένα label (SoundLibraryLabel) το οποίο θα έχει ως κείμενο: Sound Library
  • Ένα Horizontal arrangement στο οποίο θα προσθέσετε:
    • Ένα button (PlaySoundButton) το οποίο θα ξεκινάει την αναπαραγωγή του επιλεγμένου ήχου
    • Ένα ακόμα button (StopSoundButton) το οποίο θα σταματάει την αναπαραγωγή του επιλεγμένου ήχου
  • Ένα List view (SoundsListView) το οποίο θα μας δείχνει την λίστα των αποθηκευμένων ήχων στη βάση δεδομένων
  • Ένα Sound recorder το οποίο δεν είναι ορατό και αναλαμβάνει την καταγραφή των ήχων
  • Ένα Player που δεν είναι ορατό και αναλαμβάνει την αναπαραγωγή των ήχων
  • Ένα TinyDB το οποίο δεν είναι ορατό και αναλαμβάνει την δημιουργία και την συντήρηση της βάσης δεδομένων. Εδώ θα πρέπει να ορίσουμε το namespace της βάσης δεδομένων σε κάτι μοναδικό. Μπορούμε να βάλουμε σαν όνομα το SoundLibrary

Και πάμε τώρα στον προγραμματισμό της εφαρμογής μας. Ας ξεκινήσουμε με τα προφανή. Θα χρειαστεί να ορίσουμε την λειτουργία των δύο πλήκτρων που καταγράφουν και σταματούν την καταγραφή των νέων ήχων.

Πολύ απλά σενάρια. Απλά καλούμε το στοιχείο Sound recorder να κάνει την δουλειά του

Τι γίνεται όμως μόλις τελειώσει η καταγραφή κάποιου νέου ήχου; Ο ήχος αυτός έχει αποθηκευτεί στο κινητό μας τηλέφωνο και το στοιχείο Sound recorder έχει κρατήσει την διαδρομή που δείχνει σε αυτό. Θα πρέπει λοιπόν να φτιάξουμε ένα σενάριο που θα παίρνει αυτή την διαδρομή, θα την συνδυάζει με το όνομα του ήχου που θα έχει δώσει ο χρήστης στο text box και θα αποθηκεύει αυτά τα δυο στοιχεία σε μια βάση δεδομένων.

Η αποθήκευση στην βάση δεδομένων γίνεται ως εξής: Το tag είναι το όνομα του στοιχείου που αποθηκεύω (στην περίπτωση μας ο τίτλος του ήχου) και το Value είναι η πραγματική τιμή του αντικειμένου (στην περίπτωση μας ο ίδιος ο ήχος).

Και αν τυχόν δεν έχουμε γράψει τίτλο στο text box; Δεν θα πρέπει να το ελέγξουμε και αυτό; Για να διορθώσουμε το παραπάνω σενάριο

Τώρα ελέγχω το text box και μόνο όταν δεν είναι άδειο αποθηκεύω τον ήχο στη βάση δεδομένων.

Τώρα που αποθήκευσα την τιμή στην βάση δεδομένων θα πρέπει να ανανεώσω και την λίστα που έχω στην οθόνη όμως.

Αρχικά θα χρειαστώ μια μεταβλητή (currentSoundList) η οποία θα είναι μια λίστα. Στην αρχή θα είναι άδεια και όταν γράφω έναν νέο ήχο θα προσθέτω στη λίστα τον τίτλο τον οποίο τον έχω στο text box

Και φυσικά θα πρέπει να δώσω οδηγίες στο List view να πάρει τη νέα ανανεωμένη λίστα

Φυσικά εδώ θα πρέπει να προβλέψω και το εξής. Όταν ανοίγει η εφαρμογή μου θα πρέπει να ψάχνει στη βάση δεδομένων και να φέρνει στο List view όλους τους ήχους που έχω αποθηκεύσει από άλλες φορές.

Παίρνω όλα τα tags από το TinyDB τα οποία έχουν τους τίτλους των ήχων και τα βάζω στην λίστα μου

Και πάμε τώρα να δούμε πως θα παίζουν οι ήχοι που έχουμε αποθηκεύσει.

Όταν πατάει ο χρήστης το πλήκτρο αναπαραγωγής ορίζουμε την πηγή του Player στον ήχο που είναι στην βάση δεδομένων με το tag το οποίο είναι ίδιο με τον τίτλο του ήχου που έχουμε επιλέξει από την λίστα. Το πιάσατε;

Και φυσικά θα πρέπει να ορίσουμε το Stop button να σταματάει τον ήχο.

Δοκιμάστε την εφαρμογή, προσθέστε εικονίδιο, τίτλο και ότι άλλο θέλετε και κάντε την εγκατάσταση!

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γιατί δεν ξεκινάτε τη συζήτηση;

Αφήστε μια απάντηση