Autore Topic: Gestione giroscopio su vari dispositivi  (Letto 2694 volte)

Offline lucacasula91

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 Mini
  • Sistema operativo:
    Mac OS X 10.10
Gestione giroscopio su vari dispositivi
« il: 10 Aprile 2015, 12:18:52 CEST »
0
Salve a tutti, ho un dubbio sui valori del giroscopio in diversi devices,
come si gestiscono i vari valori di giroscopi di diverse case produttrici su devices differenti? Dovrei creare un gioco ricavando i valori del giroscopio nell'asse y, non vorrei che ogni dispositivo ricavasse valori differenti anche stando nella stessa posizione. Per caso android gestisce i vari valori per dare un'uniformità con un valore minimo e un massimo uguale per tutti i devices?


Offline tonno16

  • Utente storico
  • *****
  • Post: 1196
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Gestione giroscopio su vari dispositivi
« Risposta #1 il: 10 Aprile 2015, 13:03:39 CEST »
0
Ora non so. Pero un asse può raggiungere da 0 a +-360 credo. Al massimo il MIP telefono potrebbe avere l'asse x dove il tuo invece ha lasse y. Su questo non posso esprimermi

Offline jagam

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
Re:Gestione giroscopio su vari dispositivi
« Risposta #2 il: 10 Aprile 2015, 13:28:32 CEST »
0
Potresti risolvere chiedendo all'utente di calibrare il giroscopio in base a delle posizioni (da te imposte come riferimento) da far assumere al dispositivo.

Offline lucacasula91

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 Mini
  • Sistema operativo:
    Mac OS X 10.10
Re:Gestione giroscopio su vari dispositivi
« Risposta #3 il: 10 Aprile 2015, 13:41:59 CEST »
0
La situazione si complica..  :-(
Prendendo i dati ricavati dal giroscopio e quelli ricavati durante la calibrazione che operazione posso fare per ottenere un valore che sia "uniforme" tra i vari dispositivi? Qualche proporzione?

Offline jagam

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
Re:Gestione giroscopio su vari dispositivi
« Risposta #4 il: 10 Aprile 2015, 17:00:29 CEST »
0
Scusa ma non ho ben capito la tua preoccupazione.
Spiego meglio cosa volevo dire.
Nel tuo codice immagino avrai variabili tipo: x_min, x_max, y_min, y_max, z_min e z_max. Quando l'utente va a calibrare il giroscopio, l'app memorizzerà da qualche parte (shared preference, db, file ...) i valori delle variabili sopra descritte che  verranno letti dall'app ad ogni avvio.
Alla gestione di questi valori ci pensa l'app e se devi uniformare i valori di tutti i dispositivi utenti potresti rimappare tutti i dati con quelli 'tuoi' di riferimento.

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Gestione giroscopio su vari dispositivi
« Risposta #5 il: 10 Aprile 2015, 21:31:11 CEST »
0
Usa il TYPE_ROTATION_VECTOR disponibile dal API 9, è un sensore che elabora i dati di tutti i sensori disponibili per dare la miglior informazione possibile sulla rotazione. La sola lettura del giroscopio non è così precisa come i dati forniti da questo sensore. Tieni conto che i telefoni di fascia bassa possono non avere tutti i sensori sopportati da Android o una precisione scarsa.



Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Gestione giroscopio su vari dispositivi
« Risposta #6 il: 14 Aprile 2015, 19:17:14 CEST »
0
Usa il TYPE_ROTATION_VECTOR disponibile dal API 9, è un sensore che elabora i dati di tutti i sensori disponibili per dare la miglior informazione possibile sulla rotazione. La sola lettura del giroscopio non è così precisa come i dati forniti da questo sensore. Tieni conto che i telefoni di fascia bassa possono non avere tutti i sensori sopportati da Android o una precisione scarsa.

Ha ragione iceweasel.
Aggiungo, se non ti serve essere solidale con il mondo esterno (Nord), e non ti serve mantenere una coerenza su tempi lunghi, usa il GAME_ROTATION_VECTOR. Il rotation vector si basa sul magnetometro e ti può dare sbalzi finché non si calibra un po' (dopo qualche rotazione). Il GAME_ROTATION_VECTOR, se può si basa principalmente sul giroscopio.
Tutto questo per la rotazione attorno all'asse verticale, ovviamente. Per gli altri due assi l'accelerometro dà buona affidabilità.

Aggiungo che se ti serve una certa precisione, metti il giroscopio obbligatorio nel manifest.

Ciao.