Jump to content



διάβασμα GPS συντεταγμένων κινητού


neuromancer

Recommended Posts

Δημοσιεύτηκε

Υπάρχει τρόπος να διαβάσει κανείς μέσω non-native-app τις συντεταγμένες GPS ενός κινητού?

Για παράδειγμα, μέσω JavaScript ή με βοήθεια κάποιας άλλης (native) εφαρμογής που θα επιτρέψει σε μια (non-native) web εφαρμογή να διαβάζει lat και log του GPS?

Για ποιο λόγο να χρησιμοποιήσεις library για κάτι τέτοιο...? Είναι απλό stream parsing του NMEA-0183... Ανοίγεις την σειριακή πόρτα στην οποία στέλνει το gps και κάνεις parsing όποια πληροφορία θες... κάθε γραμμή είναι cr+lf terminated με comma separator, οπότε είναι εύκολο να γράψεις έναν parser...

Για ποιο λόγο να χρησιμοποιήσεις library για κάτι τέτοιο...? Είναι απλό stream parsing του NMEA-0183... Ανοίγεις την σειριακή πόρτα στην οποία στέλνει το gps και κάνεις parsing όποια πληροφορία θες... κάθε γραμμή είναι cr+lf terminated με comma separator, οπότε είναι εύκολο να γράψεις έναν parser...

Μπορώ με JavaScript να διαβάσω αυτό το NMEA-0183 (σειριακή πόρτα) που λες? Υποτείθεται ότι αυτός που πρέπει να το διαβάσει είναι μια ιστοσελίδα που έχει κατέβει στον browser του κινητού.

Αυτό μπορείς να το κάνεις μόνο με κάποια γλώσσα που να υποστηρίζει το άνοιγμα την σειριακής θύρας... Χρειάζεσαι δηλαδή κάποιο proxy το οποίο να ανοίγει την θύρα και να κάνει απλά forward σε ένα ajax socket που θα το ενεργοποιεί η javascript...

Αν δεν θες να το κάνεις μόνος σου, υπάρχουν frameworks που κάνουν ακριβώς αυτό το πράγμα αυτόματα από πίσω χωρίς όμως να έχεις εσύ επαφή και συ απλά γράφεις σε javascript... Ένα τέτοιο framework είναι το sencha και νομίζω και το phonegap (και κατά πάσα πιθανότητα και άλλα πλέον)...

Προσωπικά προτιμώ την πρώτη λύση, δηλαδή δικό μου ajax proxy σε C/java ή δεν ξέρω τι άλλο υποστηρίζει το κινητό και μετά απλά ajax requests από την javascript...

Το διαπίστωσα ήδη ότι κάπως έτσι γίνεται αλλά αντιλαμβάνομαι ότι επί της ουσίας μιλάμε για cross-site-scripting (η προερχόμενη από τον Χ server σελίδα και Javascript ανοίγει παρτίδες με κάποιο proxy που βρίσκεται σε άλλο domain (BTW, αυτό το proxy που θα τρέχει στο κινητό, που υποτίθεται ότι βρίσκεται? στον localhost?) ).

Έχω την εντύπωση ότι το XMLHttpRequest που αποτελεί τη βάση AJAX κλήσεων δεν επιτρέπει cross-scripting.... Μου διαφεύγει κάτι?

Σκέψου αυτό

GPS -><- serial port -><- software proxy --><- TCP/Ajax -><-- Web

To software proxy είναι μια εφαρμογή δική σου πχ η οποία απλά κάνει repeat (ή κάνει και το parsing αν θες, το οποίο θα ήταν και καλύτερο βασικά) τα δεδομένα του σειριακού σε ένα ajax tcp connection... Είναι δηλαδή ένα είδους redirector...

Αυτό που ξέρω είναι ότι το javascript μιας σελίδας προερχόμενης από το domain A δεν μπορεί να μιλήσει με AJAX με σελίδα/service/whatever άλλου server. Η σελίδα που θέλει να ξέρει τη θέση του browser στον οποίο κατέβηκε, προέρχεται από τον server A. Το proxy που τρεχει στο κινητό και δίνει το GPS στίγμα δεν είναι από server A. Είναι απο το κινητό. Άρα cross-scripting!

Εκτός αν υπάρχει τρόπος να παρακαμφθεί αυτό, κάποιο mode του XMLHttpRequest που επιτρέπει να μιλήσεις με άλλο domain από αυτό που προέρχεται η σελίδα που σηκώνει την AJAX υποδομή του browser.

Πρέπει να το δω στην πράξη... thanks

Ναι δοκίμασέ το, δεν νομίζω ότι δεν μπορείς να ανοίξεις socket στον localhost όσο είσαι συνδεδεμένος σε άλλο server όμως... πχ αν δεν κάνω λάθος, όλοι οι trackers (όπως της google) έτσι δουλεύουν, δηλαδή ναι μεν συνδέεσαι σε έναν server, αλλά πάλι ανοίγεις ajax sockets σε trackers που είναι σε άλλο domain... όπως και επίσης αν κατεβάζεις εικόνες και αρχεία που είναι σε άλλο domain από αυτό που είσαι, πάλι μπορείς να το κάνεις... Δοκίμασε και βλέπεις...

  • 3 months later...

Οι τελευταίες JavaScript engines / browsers παρέχουν API για το GPS. Δεν χρειάζεται τίποτε extra πλέον. Σε πρόσφατο update ο default browser σε Android 2.3 πήρε επιτέλους χαμπάρι και το script δουλεύει ΟΚ. Προβλέπονται όλα από HTML5. Όλη η αλήθεια εδώ:

https://developers.google.com/maps/

navigator.geolocation.getCurrentPosition

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.