Θοδωρή αφού συμφωνήσω, αναφορικά με τα διαδικαστικά, από την εμπειρία ενασχόλησης με την εργασία, και στο μέτρο που μπορώ να θυμηθώ μετά από τόσο καιρό, να κάνω τα παρακάτω σχόλια-δηλώσεις.
Αν και δεν έχω δει τον κώδικα, όπως αναφέρεται και στο κείμενο της εργασίας, ο έλεγχος του προσανατολισμού γίνεται με χρήση των screen width / height. Αν πάρουμε λοιπόν κατά γράμμα την εκφώνηση, μία τέτοια λύση δεν θα έπρεπε να γίνει δεκτή. Εν τούτοις, να σου πω τα εξής.
Εγώ τα είχα κάνει όλα μια χαρά, ελέγχοντας με το accelerometer τις μοίρες στις οποίες είναι γυρισμένη η συσκευή, και αναλόγως τοποθετούσα τα inputs στην οθόνη μου. Όλα καλά, μέχρι 2-3 μέρες πριν την παράδοση, οπότε βρέθηκα σε κάποιο φιλικό σπίτι, όπου το παιδί τους είχε μία ταμπλέτα Android. Θεώρησα λοιπόν μία καλή ευκαιρία να δοκιμάσω την εφαρμογή μου (σελίδα) στην ταμπλέτα. Εκεί έπαθα ένα shock. Τα πράγματα λειτουργούσαν ακριβώς αντίθετα. Όταν η ταμπλέτα ήταν όρθια, τα input πήγαιναν το ένα δίπλα στο άλλο. Όταν την γύριζα οριζόντια, τα input πήγαιναν το ένα κάτω από το άλλο. Ζήτησα να μου την δανείσουν για ένα βράδυ, και ανακάλυψα ότι η τιμές (γωνίες / μοίρες) που επέστρεφε ήταν ακριβώς το αντίθετο από την προδιαγραφή του W3C. Θεώρησα λοιπόν ότι τα Android έχουν την δική τους λογική, ως προς το που είναι το μηδέν, και χρησιμοποιώντας ένα if Android ....... έκανα την εφαρμογή μου να δουλεύει μία χαρά – και με την Android ταμπλέτα.
Την επόμενη μέρα, επιστέφοντας την ταμπλέτα, και διαπίστωσα ότι το παιδί είχε και κινητό Android. Θεώρησα λοιπόν καλό να κάνω και μία δοκιμή με το κινητό. Κρύος ιδρώτας ξανά. Τα πράγματα στο κινητό γινόταν ανάποδα από την ταμπλέτα – δηλαδή σύμφωνα με το W3C specification.
Μετά από πολύ προβληματισμό, και μη έχοντας κάτι σε Android στα χέρια μου, κατάλαβα το εξής, το οποίο έχω δοκιμάσει έκτοτε σε αρκετές συσκευές, και δουλεύει. Η λογική τοποθέτησης, κατασκευαστικά, στις συσκευές Android, θέλει το accelerometer να τοποθετείται αναλόγως της default θέσης κράτησης και λειτουργίας της συσκευής. Μία ταμπλέτα, λογικά την κρατάς και την χρησιμοποιείς στην οριζόντια θέση, ενώ ένα κινητό στην κατακόρυφη. Το αποτέλεσμα είναι το accelerometer των Android να δείχνει την θέση της συσκευής σχετικά με την default θέση χρήσης της. Μία ακόμη διαφοροποίησή των Android είναι ότι τα width και height αλλάζουν ανάλογα με τον προσανατολισμό της συσκευής – σε αντίθεση με άλλες συσκευές πχ iPhone, iPad, κ.λπ. – όπου απλά δηλώνονται οι διαστάσεις τις οθόνης, κάτι σαν constant, και δεν υφίσταται καμία αλλαγή με την περιστροφή της συσκευής.
Άρα, προκειμένου να λειτουργήσει σωστά η σελίδα, αλλά και να συμμορφώνεται με το πνεύμα της εκφώνησης, θα πρέπει να ελέγχει αν η συσκευή είναι Android, οπότε υπολογίζει τον προσανατολισμό με το width και height, και αν όχι, να υπολογίζει με την γωνία που δίνει το accelerometer.
Τώρα εγώ τα υλοποίησα όλα αυτά, αλλά δεν ξέρω αν τα είδε και τα έκρινε κάποιος σε αυτό το επίπεδο και με αυτή τη λεπτομέρεια. Ας μην είμαι όμως απόλυτος. Θα το δούμε στην βαθμολογία.