Το Google Glass είναι μια φουτουριστική τεχνολογία που υπόσχεται να φέρει επανάσταση στον τρόπο με τον οποίο χρησιμοποιούμε τις συσκευές μας για να αλληλεπιδρούμε με τον κόσμο. Αλλά από την άποψη του προγραμματιστή, τι είναι τόσο ξεχωριστό για την ανάπτυξη του γυαλιού; Η απάντηση είναι 'Τίποτα!' Στην πραγματικότητα, από την προοπτική του ένας έμπειρος προγραμματιστής Android , Το Google Glass είναι απλώς μια άλλη συσκευή Android με πολύ μικρή οθόνη και περιορισμένες δυνατότητες!
Το γεγονός ότι οποιοσδήποτε με γνώσεις ανάπτυξης Android μπορεί να γίνει μέλος αυτής της «ελίτ» κοινότητας φουτουριστικών ευαίσθητων τεχνολογιών φορετών είναι μέρος αυτού που κάνει το Google Glass τόσο φοβερό. Σίγουρα, θα πρέπει να μάθετε μερικά νέα πράγματα, όπως η διαφορά μεταξύ του «Immersion» και του «Active Card», αλλά όπως θα δείτε, η καμπύλη εκμάθησης δεν είναι απότομη.
Ο σκοπός αυτού του σεμιναρίου Google Glass είναι να θέσει τις βάσεις για την ανάπτυξη οποιασδήποτε εφαρμογής Glass, μέσω της δημιουργίας μιας απλής εφαρμογής που θα περιλαμβάνει όλα τα κοινά βήματα. Ο στόχος μου είναι να σας εξοικονομήσω χρόνο στην έρευνα και τη δοκιμή-και-σφάλμα, και να σας επιτρέψω να εκτελέσετε την πρώτη σας εφαρμογή Glass το συντομότερο δυνατό.
Σε αυτό το σεμινάριο θα εξετάσουμε πρώτα πώς να ρυθμίσουμε το περιβάλλον ανάπτυξης και να συνδέσουμε το Google Glass στον υπολογιστή σας. Στη συνέχεια, θα δημιουργήσουμε μια απλή εφαρμογή 'Hello World' Glass που θα περιλαμβάνει προσαρμοσμένες φωνητικές εντολές και ενσωμάτωση στο μενού εκκίνησης Glass. Μόλις αναπτυχθεί και εκτελεστεί η πρώτη σας εφαρμογή στο Glass, θα μάθετε τα βασικά στοιχεία της πλοήγησης στις εφαρμογές Glass, τα μενού με φωνητική ενεργοποίηση και τη δυναμική δημιουργία περιεχομένου.
Το Glass βρίσκεται ακόμη σε μια φάση «δοκιμής beta», για την οποία η Google έχει εφεύρει τον όρο «Πρόγραμμα εξερεύνησης». Ωστόσο, το ονομάζετε, το Glass δεν είναι ακόμη κάτι που μπορείτε να αποκτήσετε στο κατάστημα, όπως ένα smartphone. Δυστυχώς, τα εργαλεία ανάπτυξης Android εξακολουθούν να μην διαθέτουν εξομοιωτή που μπορείτε να χρησιμοποιήσετε για να αναπτύξετε την εφαρμογή σας χωρίς πραγματικό υλικό.
Έτσι, για να εκτελέσετε και να εντοπίσετε σφάλματα στην εφαρμογή σας, θα χρειαστεί να αποκτήσετε ένα πραγματικό Google Glass μέσω του προγράμματος Explorer. Για να συμμετάσχετε στο πρόγραμμα επισκεφθείτε τη σελίδα εγγραφής και εγγραφείτε για πρόσβαση. Μόλις εγκριθεί, ετοιμάστε την πιστωτική σας κάρτα και περιμένετε να παραδοθεί το ποτήρι σας. Η έκδοση Explorer του Glass κοστίζει επί του παρόντος 1.500 $, αλλά η τιμή αναμένεται να μειωθεί σημαντικά πριν φτάσει η συσκευή στα καταστήματα.
Λόγω της έλλειψης εξομοιωτή, είναι απαραίτητο να έχετε πραγματικό υλικό Google Glass για να αναπτύξετε την εφαρμογή σε αυτό το σεμινάριο (ή σε οποιαδήποτε εφαρμογή Glass), αλλά αν το αποκτήσετε είναι εκτός προϋπολογισμού, μην αισθάνεστε αποθαρρυνμένοι - αυτό αξίζει να ακολουθήσετε έτσι κι αλλιώς. Αυτό που θα γίνει εμφανές στο σεμινάριο είναι ότι η ανάπτυξη για το Glass είναι σχεδόν ίδια με την ανάπτυξη για οποιαδήποτε άλλη πλατφόρμα Android!
Εάν εξακολουθείτε να μην έχετε χρησιμοποιήσει το Google Glass, αλλά είμαι τόσο ενθουσιασμένος με αυτό που είμαι, ρίξτε μια ματιά σε αυτά τα δύο βίντεο, καθώς θα πρέπει να σας παρέχουν αρκετές πληροφορίες για να κατανοήσετε τα βασικά στοιχεία του περιβάλλοντος εργασίας χρήστη.
Υπάρχουν ακόμη πιο χρήσιμα βίντεο για ρύθμιση και πλοήγηση εδώ και πολλές ακόμη λεπτομέρειες σχετικά με το περιβάλλον εργασίας χρήστη εδώ .
Αυτό Προγραμματιστές του Google Glass Το σεμινάριο κάνει τις ακόλουθες παραδοχές:
Εντάξει, ας ξεκινήσουμε!
Το πρώτο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε τη λειτουργία εντοπισμού σφαλμάτων στο Glass. Πρέπει να κάνετε κάτι τέτοιο σε κάθε συσκευή Android που χρησιμοποιείτε για την ανάπτυξη των εφαρμογών σας, ώστε αυτό να είναι οικείο. Για να ενεργοποιήσετε τον εντοπισμό σφαλμάτων, σύρετε στο ' Ρυθμίσεις '->' Πληροφορίες συσκευής Και μετά πατήστε για να ανοίξετε το μενού της συσκευής. Επιλέξτε ' Ενεργοποίηση εντοπισμού σφαλμάτων 'Και θα ενεργοποιηθεί.
Στη συνέχεια, πρέπει να προετοιμάσετε το περιβάλλον ανάπτυξης. Η τρέχουσα έκδοση του Google Glass απαιτεί να χρησιμοποιήσετε το API έκδοση 19, οπότε βεβαιωθείτε ότι είναι εγκατεστημένο. Επίσης, πρέπει να έχετε εγκαταστήσει το Glass Development Kit. Χρησιμοποιήστε το Android SDK Manager για να εγκαταστήσετε αυτά τα δύο πακέτα εάν δεν το έχετε κάνει ήδη.
Ας φτιάξουμε λοιπόν το πρώτο μας κομμάτι του 'Glassware'. (Ναι, η Google έχει επινοήσει έναν άλλο όρο! 'Glassware' είναι το όνομα για οποιαδήποτε εφαρμογή που εκτελείται στο Google Glass). Θα ξεκινήσουμε αναπτύσσοντας ένα καλό παλιό 'Hello World!' εφαρμογή. Όπως τα περισσότερα μεγάλα περιβάλλοντα ανάπτυξης Android, το Android Studio συμπληρώνει αυτόματα νέες εφαρμογές με ένα πρότυπο για την εμφάνιση αυτής της διάσημης φράσης. Ως αποτέλεσμα, παίρνοντας το 'Hello World!' η λειτουργία και λειτουργία είναι απλώς μια άσκηση θεμελιώδους ανάπτυξης εφαρμογών.
Στο Android Studio, κάντε κλικ στο ' Νέο Έργο 'Και συμπληρώστε τη φόρμα του έργου. Μπορείτε να χρησιμοποιήσετε κάτι παρόμοιο με αυτό:
Κατά την επιλογή παραγόντων φόρμας και API βεβαιωθείτε ότι έχετε επιλέξει ' Ποτήρι 'Και API 19
Επιλέξτε ' Δραστηριότητα βύθισης Ως δραστηριότητα εκκίνησης.
Θυμάστε ότι ανέφερα ότι θα πρέπει να μάθετε τη διαφορά μεταξύ του Immersion και του Live Card; Google Άρθρο διεπαφής χρήστη εξηγεί τους διαφορετικούς τύπους οθονών Glass. Ακολουθεί μια σύντομη περίληψη:
Ζωντανές κάρτες προστίθενται στο χρονοδιάγραμμα Glass και εμφανίζουν πληροφορίες σε πραγματικό χρόνο για κάτι μέσω ενημερώσεων υψηλής συχνότητας. Τρέχουν συνεχώς στο παρασκήνιο ακόμα και όταν οι χρήστες αλληλεπιδρούν με διαφορετικές κάρτες. Αυτό επιτρέπει στους χρήστες να κάνουν πολλές εργασίες με συνεχή πρόσβαση σε διαφορετικά είδη πληροφοριών σε πραγματικό χρόνο.
Βυθίσεις είναι πλήρως προσαρμόσιμες οθόνες που εκτελούνται εκτός της εμπειρίας χρονολογίου. Αυτά σας επιτρέπουν να σχεδιάσετε τη δική σας διεπαφή χρήστη και να επεξεργαστείτε την είσοδο του χρήστη, όπως θέλετε Αυτό θα χρησιμοποιούμε!
Στην επόμενη οθόνη του οδηγού, αφήστε τις προεπιλεγμένες τιμές για ' Ονομα ' και ' Τίτλος 'Και κάντε κλικ στο' Φινίρισμα '.
Μετά Γκρέιντ φροντίζει τις εξαρτήσεις σας και προετοιμάζει το έργο σας, ήρθε η ώρα να το βάλτε στο Glass. Τώρα αυτή είναι φουτουριστική εξέλιξη!
Υποθέτοντας ότι όλα τα προγράμματα οδήγησης Android ADB είναι στη θέση τους και το Glass σας αναγνωρίζεται από το σύστημά σας, θα πρέπει να έχετε το Glass στη λίστα συσκευών σας.
Εάν είναι η πρώτη φορά που συνδέσατε τη συσκευή σας σε έναν υπολογιστή, το Glass θα ζητήσει έγκριση / εμπιστοσύνη. Απλώς αγγίξτε το γυαλί σας για να επιτρέψετε τη σύνδεση και θα πρέπει να είστε έτοιμοι.
Κάντε κλικ ' Τρέξιμο 'Και αναπτύξτε το' Προεπιλεγμένο APK 'με το' MainActivity 'ως δραστηριότητα εκκίνησης για εκκίνηση στη συσκευή' USB '.
Μετά από λίγα δευτερόλεπτα, θα πρέπει να δείτε κάτι τέτοιο στην οθόνη Glass:
Χέρεϊ! Η εφαρμογή σας εκτελείται στο Glass! Και το μόνο που πρέπει να κάνετε είναι να συμπληρώσετε μερικές προεπιλεγμένες τιμές όταν δημιουργήσατε την εφαρμογή!
Εφόσον δεν προσδιορίσαμε διαφορετικά, το Glass θα εμφανίσει την εφαρμογή σας με το όνομα 'Show demo'. Εάν σύρετε προς τα πίσω στην οθόνη Έναρξη και μετά αγγίξετε για να ανοίξετε το μενού της εφαρμογής, θα το δείτε ως εξής:
Εντάξει, το τρέξατε, αλλά δεν μοιάζει με πραγματική εφαρμογή Glass και δεν θέλετε να ξεκινήσει η εφαρμογή από το 'Show demo'.
Σε αυτό το σεμινάριο θα το αλλάξουμε λίγο για να πάρουμε το πραγματικό συναίσθημα.
Πρώτον, δεν θέλετε να τραβήξετε οποιαδήποτε από τη μικρή οθόνη Glass με αυτήν την άσχημη κεφαλίδα 'Hello World Immersion' στη γραμμή τίτλου και σίγουρα δεν θέλετε η οθόνη σας να είναι γκρι με μαύρη γραμματοσειρά. Για να το διορθώσουμε, απλώς πρέπει να αλλάξουμε το θέμα στο Android μας και να αφήσουμε το Glass OS να το φροντίσει.
Άνοιγμα res/values/styles.xml
για επεξεργασία. Θα πρέπει να έχει το ακόλουθο περιεχόμενο:
android:Theme.Holo.Light
Απλώς αλλάξτε android:Theme.DeviceDefault
έως AndroidManifest.xml
. Αυτό θα πρέπει να φροντίζει τη διάταξη και τα χρώματα της εφαρμογής αυτόματα, χρησιμοποιώντας το προεπιλεγμένο θέμα Glass.
5 βασικές αρχές σχεδιασμού
Εντάξει, το επόμενο πράγμα που θέλουμε να κάνουμε σε αυτό το σεμινάριο ανάπτυξης Glass είναι να δημιουργήσουμε την εφαρμογή μας για να έχει ένα σωστό όνομα και μια καλή ελεγχόμενη φωνή εκκίνησης. Ανοίξτε το Android Manifest (
DEVELOPMENT
ετικέτα:
DEVELOPMENT
Ο λόγος που θέλετε να χρησιμοποιήσετε voice_trigger.xml
Τα δικαιώματα είναι έτσι ώστε να μπορείτε να παίζετε με προσαρμοσμένα φωνητικά στοιχεία ελέγχου. Η Google είναι αρκετά αυστηρή σχετικά με το ποιες φωνητικές εντολές επιτρέπονται σε εγκεκριμένες εφαρμογές Glass και όλες οι νέες εντολές πρέπει να εγκριθούν. Δεδομένου ότι αυτό το σεμινάριο είναι για μαθησιακούς σκοπούς και δεν θα υποβάλετε αυτήν την αίτηση στο επίσημο κατάστημα Glassware, δεν πρέπει να ανησυχείτε γι 'αυτό. Απλώς ενεργοποιήστε το res/xml/
δικαιώματα και θα έχετε πρόσβαση σε 'μη καταχωρισμένες φωνητικές εντολές'. Για περισσότερες πληροφορίες σχετικά με αυτό, διαβάστε αυτήν τη σελίδα GDK .
Άνοιγμα android:label='@string/app_name'
για επεξεργασία. Αυτό είναι όπου ορίζεται η φωνητική εντολή για να ξεκινήσετε την εφαρμογή σας. Θα πρέπει να βρίσκεται στο @string/app_name
ντοσιέ. Θα πρέπει να λαμβάνετε περιεχόμενο παρόμοιο με αυτό:
Hello Glass
Αντί να πείτε 'Δείξτε μου μια επίδειξη' για να ξεκινήσετε την εφαρμογή μας, ας πούμε απλώς το όνομα της εφαρμογής. Αλλάξτε τα περιεχόμενα του αρχείου σε:
android:label='@string/app_name'
Εάν επιστρέψετε στο αρχείο δήλωσης, ενδέχεται να παρατηρήσετε ότι το res/values/strings.xml
έχει ενημερωθεί αυτόματα για να χρησιμοποιήσει επίσης τη συμβολοσειρά πόρων app_name
αντί του κωδικοποιημένου κωδικού Hello Glass
αξία όπως ήταν πριν. Εάν αυτή η ρύθμιση δεν ενημερώθηκε, φροντίστε να ορίσετε την τιμή σε voice_trigger.xml
.
Και ποιο ακριβώς είναι το όνομα της εφαρμογής σας; Εάν ανοίξετε network='true'
, το FEATURE_VOICE_COMMANDS
πρέπει να αναφέρονται ως:
onCreate
Αυτό θα πρέπει να ολοκληρώσει τα πράγματα για την πρώτη σας εφαρμογή Hello Glass. Ας δούμε πώς λειτουργεί τώρα!
Από την οθόνη Έναρξη, μπορείτε να πείτε 'Εντάξει γυαλί' για να εμφανιστεί το φωνητικό μενού. Η εφαρμογή σας βρίσκεται πλέον στη λίστα των εντολών που ενεργοποιούνται με φωνή.
Με αυτό το σεμινάριο για να σας καθοδηγήσει, έτσι φαίνεται η οθόνη έναρξης της εφαρμογής Glass τώρα.
Αν λέτε ' Γεια σου γυαλί 'Η αίτησή σας πρέπει να ξεκινήσει και θα πρέπει να έχετε μια τυποποιημένη εμπειρία Glass:
Εάν δεν θέλετε να χρησιμοποιήσετε τη φωνή σας για να ενεργοποιήσετε την εφαρμογή, μπορείτε απλώς να πατήσετε στην οθόνη Έναρξη και θα δείτε ότι η εφαρμογή σας είναι διαθέσιμη στο μενού:
Είναι πολύ σημαντικό να δώσετε ιδιαίτερη προσοχή στη διεπαφή της εφαρμογής σας και στην αλληλεπίδραση των χρηστών σας με αυτήν. Να θυμάστε ότι οι χρήστες σας δεν είναι πάντα σε θέση να χρησιμοποιούν τη φωνή τους - για παράδειγμα, ενώ παρακολουθείτε μια διάλεξη ή μια παρουσίαση. Εναλλακτικά, μπορεί να έχουν τα χέρια τους γεμάτα και να μην μπορούν να χρησιμοποιήσουν την αφή. Προτείνω να παρέχετε αλληλεπίδραση τόσο στο μενού αφής όσο και στο φωνητικό μενού, επιτρέποντας στους χρήστες σας να περιηγούνται στην εφαρμογή σας χρησιμοποιώντας φωνή και επιφάνεια αφής παράλληλα.
Τώρα που αισθάνεστε άνετα με την ανάπτυξη Glass και έχετε δημιουργήσει το Hello Glass, είναι καιρός να δημιουργήσετε μια πραγματική εφαρμογή που θα λειτουργήσει νέες λειτουργίες Glass. Ας δημιουργήσουμε μια εφαρμογή που σας επιτρέπει να περιηγηθείτε σε προφίλ κορυφαίων προγραμματιστών ApeeScape με βάση την πλατφόρμα ανάπτυξης.
Η δομή του παραδείγματος εφαρμογής Glass θα είναι απλή:
Ας ανακεφαλαιώσουμε γρήγορα αυτό που έχετε ήδη προσθέσει πάνω από τις γνώσεις σας στο Android:
Χρησιμοποιώντας αυτές τις γνώσεις, ενεργοποιήστε τη λειτουργία της νέας σας εφαρμογής. Μπορείτε είτε να ενημερώσετε την εφαρμογή Hello Glass από ψηλά είτε να ξεκινήσετε μια νέα εφαρμογή ακολουθώντας τα ίδια βήματα. Ονομάστε αυτήν την εφαρμογή ' Κορυφαίο εύρημα ', Και δημιουργήστε το MainActivity
το αρχείο μοιάζει με αυτό.
getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);
Το res/menu
Ο περιορισμός λέει στο glass να ελέγχει για συνδεσιμότητα δικτύου κατά την εκκίνηση αυτής της εφαρμογής, την οποία θα πρέπει να συνδεθούμε με τις λίστες προγραμματιστών του ApeeScape. Εάν δεν υπάρχει σύνδεση, το Glass θα εμφανίσει ένα προειδοποιητικό μήνυμα.
Ας κάνουμε την αρχική οθόνη της εφαρμογής μας να μοιάζει με αυτήν:
Όταν δείτε το 'Εντάξει γυαλί' μήνυμα στην οθόνη σας σημαίνει ότι η εφαρμογή έχει ενεργοποιημένο το φωνητικό μενού σε αυτό το μέρος. Μιλώντας τη φράση 'Εντάξει γυαλί' Εδώ ενεργοποιεί το φωνητικό μενού για αυτήν την τοποθεσία. Αυτή η φράση είναι προκαθορισμένη από το Glass και δεν μπορείτε να την αλλάξετε.
Μπορείτε να σκεφτείτε 'Εντάξει γυαλί' ως 'μενού εφαρμογών', όπως έχετε χρησιμοποιήσει στην ανάπτυξη smartphone / tablet και έχει ακριβώς τον ίδιο ρόλο. Όπως θα 'πατήσετε' το 'εικονίδιο μενού εφαρμογής' στην οθόνη σας (συχνά 3 κουκκίδες ή γραμμές) για να ανοίξετε ένα μενού εφαρμογών Android, πρέπει να πείτε 'Εντάξει γυαλί' για να ανοίξετε το μενού ενεργοποιημένης φωνής στην εφαρμογή Glassware.
Για να ενεργοποιήσετε το 'Εντάξει γυαλί' μενού που πρέπει να ζητήσετε main.xml
από το API. Για να το κάνετε αυτό, προσθέστε την ακόλουθη γραμμή στο onCreatePanelMenu
χειριστής στο MainActivity
:
@Override public boolean onCreatePanelMenu(int featureId, Menu menu){ if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { getMenuInflater().inflate(R.menu.main, menu); return true; } return super.onCreatePanelMenu(featureId, menu); }
Κάθε δραστηριότητα με την οποία περιλαμβάνεται αυτή η δυνατότητα θα αποδίδεται 'Εντάξει γυαλί' κείμενο στο κάτω μέρος του κέντρου.
Το επόμενο πράγμα που πρέπει να κάνετε είναι να δημιουργήσετε ένα μενού για την κύρια οθόνη. Στο findDevelopers
φάκελος δημιουργήστε έναν νέο ορισμό μενού XML με το όνομα public void findDevelopers(String platform){ } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { switch (item.getItemId()) { case R.id.find_android: findDevelopers('Android'); break; case R.id.find_javascript: findDevelopers('Java Script'); break; case R.id.find_ios: findDevelopers('iOS'); break; } return true; } return super.onMenuItemSelected(featureId, item); }
. Για να απλοποιήσουμε τα πράγματα, απλώς θα ενεργοποιήσουμε τρεις πλατφόρμες προγραμματιστών ApeeScape, αλλά μη διστάσετε να κάνετε τις αλλαγές όπως θέλετε.
Θα πρέπει να έχει το ακόλουθο περιεχόμενο:
πώς να φτιάξετε μια γλώσσα προγραμματισμού σε c++
res/drawable/logo.png
Ίσως αναρωτιέστε γιατί επέλεξα μάλλον μεγάλους τίτλους μενού αντί απλώς Android, JavaScript και iOS. Λοιπόν, ο λόγος είναι πολύ απλός. Τα παιδιά από την ομάδα ανάπτυξης Glass βελτιώνουν ακόμη την αναγνώριση φωνής. Συνιστάται η πρακτική να χρησιμοποιείτε δύο ή τρεις λέξεις στα μενού σας, ώστε το Glass να τις αναγνωρίζει ευκολότερα.
Ανέφερα ήδη ότι το 'Εντάξει γυαλί' Το μενού δεν διαφέρει από το τυπικό μενού εφαρμογών Android. Η προσάρτηση ενός μενού σε μια δραστηριότητα είναι σχεδόν η ίδια. Απλώς αντικαταστήστε το MainActivity
χειριστής στο private CardScrollView mCardScroller; private View mView; private GestureDetector mGestureDetector;
και διογκώστε το κύριο μενού που μόλις δημιουργήσατε:
buildView
Τώρα πρέπει να προσθέσουμε ένα πρόγραμμα χειρισμού μενού. Πριν το κάνετε αυτό, δημιουργήστε μια κενή μέθοδο που ονομάζεται private View buildView() { Card card = new Card(this); card.setText(R.string.app_name); card.setImageLayout(Card.ImageLayout.LEFT); card.addImage(R.drawable.logo); return card.getView(); }
. Θα επιστρέψουμε σε αυτό αργότερα για να ξεκινήσουμε μια αναζήτηση και να δείξουμε τα αποτελέσματα. Μετά από αυτό μπορείτε να παρακάμψετε το πρόγραμμα χειρισμού μενού.
onCreate
Ήρθε η ώρα να κάνουμε το παράδειγμα της αρχικής οθόνης της εφαρμογής Google Glass όμορφο. Εισαγάγετε ένα λογότυπο ApeeScape στην εφαρμογή σας ως protected void onCreate(Bundle bundle) { super.onCreate(bundle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS); mView = buildView(); mCardScroller = new CardScrollView(this); mCardScroller.setAdapter(new CardScrollAdapter() { @Override public int getCount() { return 1; } @Override public Object getItem(int position) { return mView; } @Override public View getView(int position, View convertView, ViewGroup parent) { return mView; } @Override public int getPosition(Object item) { if (mView.equals(item)) { return 0; } return AdapterView.INVALID_POSITION; } }); // Handle the TAP event. mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { openOptionsMenu(); } }); mGestureDetector = createGestureDetector(this); setContentView(mCardScroller); }
. Χρησιμοποίησα αυτήν την εικόνα:
Στο MainActivity
τάξη, κάντε τις ακόλουθες αλλαγές.
Βεβαιωθείτε ότι οι ακόλουθες ιδιωτικές μεταβλητές δηλώνονται στην αρχή της κλάσης:
private GestureDetector createGestureDetector(Context context) { GestureDetector gestureDetector = new GestureDetector(context); //Create a base listener for generic gestures gestureDetector.setBaseListener( new GestureDetector.BaseListener() { @Override public boolean onGesture(Gesture gesture) { if (gesture == Gesture.TAP) { openOptionsMenu(); return true; } else if (gesture == Gesture.TWO_TAP) { // do something on two finger tap return true; } else if (gesture == Gesture.SWIPE_RIGHT) { // do something on right (forward) swipe return true; } else if (gesture == Gesture.SWIPE_LEFT) { // do something on left (backwards) swipe return true; } else if (gesture == Gesture.SWIPE_DOWN){ finish(); } return false; } }); gestureDetector.setFingerListener(new GestureDetector.FingerListener() { @Override public void onFingerCountChanged(int previousCount, int currentCount) { // do something on finger count changes } }); gestureDetector.setScrollListener(new GestureDetector.ScrollListener() { @Override public boolean onScroll(float displacement, float delta, float velocity) { // do something on scrolling return true; } }); return gestureDetector; } @Override public boolean onGenericMotionEvent(MotionEvent event) { if (mGestureDetector != null) { return mGestureDetector.onMotionEvent(event); } return false; }
Αλλάξτε το findDevelopers
μέθοδος για να προσαρμόσετε τη διάταξη της κάρτας:
DeveloperModel.java
Και αλλάξτε το java/models
χειριστής να είναι έτσι:
public class DeveloperModel implements Serializable { private String name; public String getName(){ return name; } public void setName(String name){ this.name=name; } private String platform; public String getPlatform(){ return platform; } public void setPlatform(String platform){ this.platform=platform; } private String image; public String getImage(){ return image; } public void setImage(String image){ this.image=image; } }
Όπως είπα στο παρελθόν, θέλουμε να συμπεριλάβουμε και το μενού που ενεργοποιείται με βρύση 'Εντάξει γυαλί' , απλώς ενεργοποιήστε χειρονομίες όπως θα κάνατε στην εφαρμογή σας Android. Προσθέστε τις ακόλουθες μεθόδους στο CardScrollAdapter
τάξη:
DeveloperAdapter.java
Αυτό πρέπει να είναι! Τώρα μπορείτε να ξεκινήσετε την εφαρμογή σας και να δοκιμάσετε και τις δύο μεθόδους ενεργοποίησης μενού. Αν λέτε 'Εντάξει γυαλί' Εμφανίζονται τρία στοιχεία μενού στην οθόνη και αν πατήσετε το γυαλί, θα ανοίξει ένα μενού με δυνατότητα κύλισης. Για να περιηγηθείτε στα στοιχεία του μενού, μπορείτε να σύρετε προς τα εμπρός και προς τα εμπρός.
Δείτε πώς φαίνεται το μενού φωνής:
Και εδώ είναι το μενού χειρονομίας:
Εάν επιλέξετε ένα στοιχείο μενού, δεν θα συμβεί τίποτα ως java/adapters
Μέθοδος δεν έχει ακόμη εφαρμοστεί.
Θα συνεχίσουμε να χρησιμοποιούμε την προεπιλεγμένη διάταξη Glass Card, με μια εικόνα στην αριστερή πλευρά, το κείμενο στα δεξιά και μερικές πληροφορίες υποσέλιδου. Για περισσότερες πληροφορίες σχετικά με τις βέλτιστες πρακτικές για το σχεδιασμό των καρτών σας, ανατρέξτε στο Google Glass οδηγός στυλ .
Το προφίλ προγραμματιστή μας καθορίζεται από απλές ιδιότητες:
Ας φροντίσουμε λοιπόν να έχουμε τη σωστή δομή των τάξεων στην εφαρμογή μας. Δημιουργήστε μια νέα τάξη με το όνομα public class DeveloperAdapter extends CardScrollAdapter { private List mCards; private List mData; public DeveloperAdapter(List cards){ this.mCards = cards; } @Override public int getCount() { return mCards.size(); } @Override public Object getItem(int i) { return mCards.get(i); } @Override public View getView(int i, View view, ViewGroup viewGroup) { return mCards.get(i).getView(); } @Override public int getPosition(Object o) { return this.mCards.indexOf(o); } }
στο ResultsActivity
ντοσιέ. Θέλουμε να είναι αυτή η τάξη σειριοποιήσιμος, καθώς θα περιέχει προφίλ που βρίσκονται σε μια λίστα.
MainActivity
Θέλουμε οι κάρτες μας να συνδέονται στενά με τα δεδομένα προφίλ προγραμματιστή μας. Επειδή η προεπιλογή java/com.helloglass
είναι λίγο γενικό όσον αφορά το μοντέλο δεδομένων του, πρέπει να το επεκτείνουμε και να το κάνουμε δικό μας. Δημιουργία extends Activity
στο developer.xml
ντοσιέ:
ResultsActivity
Δεν θέλουμε να προστεθούν τα αποτελέσματα αναζήτησης στην αρχική οθόνη της εφαρμογής, επομένως θα δημιουργήσουμε μια νέα δραστηριότητα που θα κάνει τα αποτελέσματα αναζήτησης και εμφάνισης. Δημιουργήστε μια νέα δραστηριότητα, MainActivity
, δίπλα στο ResultsActivity
(πιθανώς σε public static final String SEARCH = 'search'; private String mPlatform='Android';
).
Βεβαιωθείτε ότι ResultsActivity
.
Στη συνέχεια, πρέπει να καθορίσουμε ένα μενού για τις κάρτες προφίλ προγραμματιστή μας. Δημιουργήστε ένα νέο μενού, MainActivity
, με το ακόλουθο περιεχόμενο:
private CardScrollView mCardScroller; private List mCards; private GestureDetector mGestureDetector;
Για να ενεργοποιήσετε τις παραμέτρους διέλευσης μεταξύ findDevelopers
και ResultsActivity
προσθέστε τις ακόλουθες γραμμές στην αρχή private void findDevelopers(String platform){ for (int i=1; i<=10; i++){ Card card = new Card(this); card.setText(platform+' '+Integer.toString(i)); card.setTimestamp(platform); card.setImageLayout(Card.ImageLayout.LEFT); card.addImage(R.drawable.ic_person_50); mCards.add(card); } mCardScroller.setSelection(0); }
τάξη:
MainActivity
Φροντίστε να προσθέσετε τη νέα σας δραστηριότητα στο αρχείο δήλωσης:
findDevelopers
Ρύθμιση της αρχικής οθόνης του ResultsActivity
και η διαμόρφωση καρτών μοιάζει πολύ με αυτό που κάναμε στο platform
. Αρχικά ελέγξτε ότι έχετε ορίσει τις κάρτες και τον κύλινδρο στην αρχή:
public void findDevelopers(String platform){ Intent resultsIntent = new Intent(this, ResultsActivity.class); resultsIntent.putExtra(ResultsActivity.SEARCH, platform); startActivity(resultsIntent); }
Δημιουργήστε μια προσωρινή μέθοδο αναζήτησης στην οποία θα επανέλθουμε αργότερα για εφαρμογή. Η προσθήκη νέων καρτών στη λίστα προφίλ είναι τόσο απλή όσο η προσθήκη στοιχείων σε ένα Array. Θα ονομάσουμε αυτήν τη μέθοδο ResultsActivity
επίσης, αλλά αυτό ανήκει στο @Override public boolean onCreatePanelMenu(int featureId, Menu menu){ if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { getMenuInflater().inflate(R.menu.developer, menu); return true; } return super.onCreatePanelMenu(featureId, menu); }
:
ResultsActivity
Τώρα επιστρέψτε στο openOptionsMenu()
και ενημέρωση onGesture(Gesture gesture)
εκεί για να ξεκινήσετε το private GestureDetector createGestureDetector(Context context) { // … @Override public boolean onGesture(Gesture gesture) { if (gesture == Gesture.TAP) { openOptionsMenu(); return true; } else if // …
και περάστε στο @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS || featureId == Window.FEATURE_OPTIONS_PANEL) { switch (item.getItemId()) { case R.id.developer_fav: Toast.makeText(getApplicationContext(), 'Favorite', Toast.LENGTH_LONG).show(); break; case R.id.developer_hire: Toast.makeText(getApplicationContext(), 'Message', Toast.LENGTH_LONG).show(); break; case R.id.go_back: break; } return true; } return super.onMenuItemSelected(featureId, item); }
ιδιοκτησία:
ic_person_50.png
Επισυνάψτε το μενού προγραμματιστή σας στο resdrawable
. Θα μπορείτε να ανοίξετε το μενού σε οποιαδήποτε κάρτα προφίλ.
onCreate
Όπως και νωρίτερα, ενεργοποιήστε τις κινήσεις για να χειριστείτε την επιφάνεια αφής στο γυαλί σας όταν ResultsActivity
εκτίθεται. Για να το κάνετε αυτό, απλά καλέστε MainActivity
στο @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS); mCardScroller = new CardScrollView(this); mCards = new ArrayList(); if(getIntent().hasExtra(SEARCH)){ mPlatform = getIntent().getStringExtra(SEARCH); } findDevelopers(mPlatform); mCardScroller.setAdapter(new DeveloperAdapter(mCards)); // Handle the TAP event. mCardScroller.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { openOptionsMenu(); } }); mGestureDetector = createGestureDetector(this); setContentView(mCardScroller); }
μέθοδος:
onResume
Επίσης, προσθέστε ένα πρόγραμμα χειρισμού μενού σε ενέργειες που σχετίζονται με προγραμματιστές. Θα αφήσουμε απλά μηνύματα Toast προς το παρόν.
onPause
Κάθε εφαρμογή θα πρέπει να χρησιμοποιεί μερικά ωραία οπτικά στοιχεία, εικονίδια κ.λπ. Η ομάδα του Google Glass παρέχει ένα πολύ μεγάλο σύνολο κοινών τυποποιημένων εικονιδίων που είναι δωρεάν για προγραμματιστές Glass για χρήση στις εφαρμογές τους. Μπορείτε να βρείτε ένα πλήρες σύνολο τυπικών εικονιδίων Glass καθώς και γραμματοσειρών στη βιβλιοθήκη τους
Προς το παρόν, χρειάζεστε μόνο ένα εικονίδιο MainActivity
, οπότε προχωρήστε και κατεβάστε το στο MainActivity
ντοσιέ. Θα χρησιμοποιήσουμε αυτό το εικονίδιο αντί να κατεβάσουμε μια εικόνα του προγραμματιστή.
Το τελευταίο πράγμα που απομένει στον οδηγό ανάπτυξης εφαρμογών Glass προς το παρόν είναι να παρακάμψουμε το
χειριστής στο , όπου θα ελέγξουμε ποια πλατφόρμα ανάπτυξης προωθήθηκε από και συμπληρώστε τη λίστα μας.Μπορείτε να φύγετε
|_+_|και μεθόδους όπως στο
|_+_|.
Εάν ξεκινήσετε την εφαρμογή σας τώρα, μπορείτε να ελέγξετε πώς δημιουργούνται τα προφίλ προγραμματιστή σας με βάση το μενού που επιλέχθηκε στο
. Και πάλι, έχετε την επιλογή να εμφανίσετε το μενού σας χρησιμοποιώντας 'Εντάξει γυαλί' ή πατώντας το touchpad ή χρησιμοποιώντας φωνητική ενεργοποίηση. Δείτε το προφίλ του '10ου προγραμματιστή Android' αυτήν τη στιγμή:
Πατώντας το μενού αφής:
Και λέγοντας 'Εντάξει γυαλί' εμφανίζει το φωνητικό μενού:
Σύρετε προς τα κάτω από τη λίστα για να επιστρέψετε στην αρχική οθόνη της εφαρμογής σας.
Για να ολοκληρώσουμε τα πράγματα, ας συμπληρώσουμε το μενού με πραγματικές πληροφορίες για τους 10 κορυφαίους προγραμματιστές ApeeScape JavaScript , Android , και ios .
Θα πρέπει να κατεβάσετε τις φωτογραφίες του προφίλ τους και να τις διαθέσετε μέσω HTTP ή απλώς να χρησιμοποιήσετε διευθύνσεις URL απευθείας από toptal.com .
Δεδομένου ότι η δημιουργία ενός προγράμματος ανίχνευσης ιστού μόνο για να λάβετε ονόματα κορυφαίων προγραμματιστών στο ApeeScape μπορεί να είναι υπερβολική παράκαμψη για αυτό το άρθρο, έχω δημιουργήσει αρχεία JSON για να τα χρησιμοποιήσετε Android , JavaScript , και ios .
Στην εφαρμογή σας, το πρώτο πράγμα που πρέπει να κάνετε είναι να ζητήσετε πρόσβαση στο Διαδίκτυο από το λειτουργικό σας σύστημα Android. Προσθέστε την ακόλουθη γραμμή στο αρχείο Manifest
|_+_|
Λάβετε υπόψη ότι το Glass δεν θα σας επιτρέψει να αποκλείσετε το κύριο νήμα χρησιμοποιώντας αιτήματα HTTP απευθείας. Θα χρειαστεί να χειριστείτε τις λήψεις JSON και μεμονωμένες εικόνες με ασύγχρονο τρόπο. Μπορείτε να χρησιμοποιήσετε μια εργασία async, να δημιουργήσετε τη δική σας υπηρεσία λήψης ή πρόθεση ή ό, τι προτιμάτε στην καθημερινή σας εργασία.
Η δημιουργία αυτής της λειτουργικότητας δεν είναι συγκεκριμένη για το Google Glass, επομένως θα παραλείψω αποσπάσματα κώδικα. Αν προχωρήσετε μπροστά και αποκτήσετε αυτό το τελευταίο κομμάτι λειτουργικότητας, οι κάρτες προφίλ σας θα πρέπει να έχουν την εξής μορφή:
Ελπίζω να διασκεδάσατε ακολουθώντας αυτό το σεμινάριο ανάπτυξης του Google Glass και την κατασκευή της πρώτης σας εφαρμογής Glassware. Μέχρι τώρα, θα πρέπει να είστε άνετοι με την ιδέα ότι η σύνταξη εφαρμογών για το Glass δεν είναι πολύ διαφορετική από οποιαδήποτε άλλη πλατφόρμα Android.
Σε αυτό το σημείο, έχετε μάθει πώς να επεκτείνετε την Αρχική οθόνη ενεργοποιημένη με φωνή Google Glass, πώς να δημιουργήσετε τα δικά σας μενού με ενεργοποιημένη τη φωνή και πώς να συνδυάσετε τα χειριστήρια φωνής με χειρονομίες αφής. Θα πρέπει επίσης να κατανοήσετε τις έννοιες και τα βασικά δομικά στοιχεία για το Glass UI, όπως κάρτες, διατάξεις και στοιχεία. Έχετε δει πώς να δημιουργήσετε δυναμικά κάρτες και πώς να πλοηγηθείτε μεταξύ διαφορετικών δραστηριοτήτων.
Για να καταδυθείτε πιο βαθιά, μεταβείτε στους πόρους προγραμματιστών της Google στη διεύθυνση προγραμματιστές.google.com/glass . Όταν αρχίσετε να δημιουργείτε πιο περίπλοκες εφαρμογές, θα αποδειχθεί πολύ χρήσιμος πόρος.
Σας υπενθυμίζουμε ότι το Glass βρίσκεται ακόμη στη φάση ανάπτυξης και πιθανότατα θα πρέπει να εφαρμοστούν πολλές ακόμη βελτιώσεις πριν φτάσει στην καταναλωτική αγορά. Έχοντας αυτό κατά νου, έχω μια σημαντική σημείωση για εσάς:
Έχει απομείνει αρκετή δουλειά στη φωνητική αναγνώριση και μπορεί να πιείτε τον εαυτό σας να φωνάζει στον φανταστικό σας φίλο ενώ προσπαθείτε να ξεκινήσετε τη δραστηριότητά σας ή να συμπληρώσετε κάποιες πληροφορίες. Μην ανησυχείτε εκεί - όλοι όσοι δοκιμάζουν την ανάπτυξη του Google Glass αισθάνονται το ίδιο, οπότε δεν είστε μόνοι.
Η τεχνολογία θα βελτιωθεί και το γυαλί θα είναι έτοιμο για λιανικό εμπόριο σε σύντομο χρονικό διάστημα. Είναι βέβαιο ότι θα κάνει μεγάλα κύματα μόλις χτυπήσει τα καταστήματα, οπότε ελπίζω να είστε τόσο ενθουσιασμένοι όσο είμαι ένας από τους πρώτους που βγήκε στην πρώτη γραμμή αυτής της συναρπαστικής τεχνολογίας!
Φωνάζω : Τα στιγμιότυπα οθόνης σε αυτό το άρθρο δημιουργούνται χρησιμοποιώντας [προστασία μέσω email] .