Pergunta

Eu tenho brincado com o acelerômetro Android ultimamente usando o Android SDK e o Adobe Air para Android SDK no meu Droid Motorola. O que notei é que o acelerômetro funciona muito bem, mas eu estava pensando se é possível compensar de alguma maneira, para que eu não precise usar o dispositivo em uma posição horizontal. Em outras palavras, quero usar o acelerômetro para controlar minha tela visual, mas inicialize -o (ou modifique de alguma forma) para que não precise segurá -lo perfeitamente plano (não é muito divertido ter que se inclinar pelo telefone).

Alguém sabe como eu posso segurar o dispositivo confortavelmente na minha mão, digamos 45 graus e ainda utilizar o acelerômetro para fornecer leituras para frente/para trás? Isso é possível? Algum exemplos disso está disponível?

Foi útil?

Solução

Você precisará de alguma matemática simples de multiplicação de matriz para isso. "Calibre" a rotação pegando a matriz atual quando você inicia o aplicativo e a inverte e multiplique todas as matrizes subsequentes com ele - que lhe darão o delta para a posição inicial.

Outras dicas

Eu escrevi um aplicativo há muito tempo, que tratava de rotações relativas. Esqueci o que o código fez, mas pelo que posso ver, parece que -

1) Recebo a matriz de rotação inicial usando - Sensormanager.getrotationMatrix (r, i, gravity.clone (), geomagnetic.clone ()); (Gravidade e geomagnética são as respectivas matrizes de acleração e geomagnética. Não sei por que eu uso clones, mas deve haver algum motivo.) 2) Agora, em qualquer estágio, obtenha a matriz de rotação atual e chame de R. 3) Calcule o inverso do inicial matriz e chame de "InitialInverse". 4) Multiplique r com o InitialInverse (ou o contrário, você terá que descobrir). 5) Obtenha sua orientação final usando o sensormanager.GETORIATIONATION (Delta, valores)

Sinto muito, mas esqueci totalmente o que o código acima faz. Acho que me lembro de ler as palavras que Euler se transforma em algum lugar quando escrevi este aplicativo, então é isso que ele pode estar fazendo. Infelizmente, não posso lhe dar o código completo, pois provavelmente lançarei este aplicativo no mercado. No entanto, se você precisar de mais informações, entre em contato - informe -me - examinarei o código e voltarei a você.

Estou trabalhando em um projeto com natureza semelhante, onde a função do acelerômetro não é restrita pela posição. Minha maneira de lidar com isso é muito simples, inicialize o acelerômetro com a leitura atual como padrão. Em outras palavras, você tem um botão que pressiona depois de ter o telefone na posição correta, ao pressionar o botão, as leituras atuais do acelerômetro (medidas de g) serão sua referência (zero valores) e farão alterações quando Você vai acima ou abaixo dessas leituras ... espero que isso ajude alguém ... Saúde

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top