Como posso detectar se um iPhone está girando enquanto está com face para cima em uma mesa?

StackOverflow https://stackoverflow.com/questions/2458865

Pergunta

Existe uma maneira de detectar se um iPhone deitado em uma mesa está girando?. Percebo que esse tipo de movimento não é relatado pelo acelerômetro e também não é relatado ao método de interfaceRentação (UIInterfaceRientation).

Existe uma maneira de detectar variações de ângulo para o telefone girando dessa maneira?. Obrigada.

Foi útil?

Solução

O vetor de gravidade será constante à medida que gira em uma mesa plana para que você não verá nada nos acelerômetros. Você pode seguir as mudanças no cabeçalho da bússola para detectar essa rotação, mas apenas em um iPhone 3G S. Veja o CllocationManager Para detalhes, observe os métodos de cabeçalho.

EDITAR - Com um iPhone 4, você pode detectar a rotação usando os giroscópios. Há uma nova aula no iOS 4 chamada CMMOTIONMANAGER para obter taxa de rotação dos giroscópios.

Outras dicas

Quando o telefone está estacionado, a soma dos vetores de aceleração deve ser +1. Quando o telefone está girando (assumindo que o sensor esteja fora do centro), a soma dos vetores deve ser superior a 1 e (espero) um pouco constante.

Se você olhar para a deterioração dessa curva, eu não ficaria surpreso se essa forma for distinta o suficiente para ser usada para determinar se o telefone está girando ou não.

alt text

Isto é o Acelerometer Graph Exemplo de aplicativo da Apple.

Eu acho que você poderia fazer isso se o iPhone tiver uma bússola. Fora isso, acho que não será possível ou confiável.

Isso realmente dependeria da localização do acelerômetro no dispositivo, acabei de testar isso usando o aplicativo de amostra do acelerômetro em um 2G ITOUCH e você pode ver a aceleração inicial no eixo X e Y (o 2G não possui o acelerômetro no centro do dispositivo, eu acho). Portanto, em certo sentido, você pode detectar a rotação, no entanto, acho que o desafio seria diferenciar essa aceleração da aceleração direcional. E tenho certeza de que os valores mudariam se a Apple colocasse o acelerômetro em diferentes locais em diferentes modelos. Definitivamente, não haveria nenhuma maneira de fazê -lo por meio de MustautoTateTointerFaceRientation, recomendo que você carregue o aplicativo AcelerometerGraph Sample no SDK e experimentar os vetores de aceleração para ver se você pode isolar um vetor de rotação de maneira confiável em vários dispositivos.

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