2013-05-23 2 views
2

근접 센서 값을 추적하는 응용 프로그램을 만들려고 할 때 문제가 발생했습니다. 응용 프로그램의 의도는 일정한 간격 (예 : 30 초)으로 순간 근접 값을 기록하는 것입니다.Android 근접 센서 - 잘못된 값

API 문서에 따라 표준 수신기가 만들어져 해당 유형의 센서에 연결됩니다. 그러나 손으로 센서를 가릴 때도 값은 항상 '5.0'(5cm, 센서의 최대 값)으로보고됩니다.

그러나 다른 응용 프로그램 (근접 센서 값도 모니터링 함)을 시작하면 두 응용 프로그램 모두 근접성을 올바르게보고하기 시작합니다. 다른 애플리케이션 (안드로이드 센서 박스)을 닫으면 내 애플리케이션이 항상 5.0 리포팅으로 되돌아갑니다.

내가 응용 프로그램을 디버깅과에 이벤트 SensorEvent 객체가 전달되고 있는지 다시 한 번 확인 '을 onSensorChanged'에서 중단 점을 설정 한 방법을 onSensorChanged, 그것은 항상 5.0입니다

EDIT # 2 : 근접 센서에만 국한되지 않습니다. 자이로 스코프 센서는 동일한 방식으로 동작하지만 가속도계 및 자력계는 정확하고 최신 값을 표시합니다. 4 개 모두 동일한 방식으로 참조되고 액세스됩니다.

아이디어가 있으십니까?

+0

코드를 표시하지 않으면 권장 사항이 표시되지 않습니다. –

+0

코드는 ** 안드로이드 SDK에서 제안한 것과 똑같이 ** 있습니다. 문제는 센서 변경 이벤트가 잘못된 값으로 되돌아 오는 것입니다. 그것은 내 코드의 일부가 아닙니다. – Iv4n

+0

어떤 기기를 테스트하고 있습니까? –

답변

4

글쎄, 나는 다시 한번 내 자신의 질문에 답할 것임이 밝혀졌다.

응용 프로그램이 구조화 된 방식 (이 경우 충분한 이유가 있음)은 청취자가 등록되었으며 센서에서 첫 번째로보고 된 값이 새로운 판독 값을 계속받지 않고 읽음으로 인식되었음을 의미합니다. 이것은 가속도계 판독 값에 대해서는 문제가 없지만 일부 센서는 근접 센서의 경우 'FAR'또는 자이로 스코프의 경우 0.0/0.0/0.0과 같은 첫 번째 판독 값에서 DEFAULT 값을보고 한 것으로 나타났습니다. 올바른 값이보고되기 시작한 것은 불과 2-3 분의 'onSensorChanged'이벤트 이후였습니다.

저는 이것이 절전 및 데이터를보고하는 '준비'시간을 필요로하는 특정 센서와 관련이 있다고 가정합니다. 나는 Acceptable Practice가 잘못된 값을 가진 sensorChanged 이벤트를 발생시키는 이유가 무엇인지 모르지만 그럴 수 있습니다.

그럼에도 불구하고, 나를위한 해결책은 첫 번째 2-3 개의 판독 값을 버리고 (어쨌든 밀리 초 간격으로 나타남) 더 안정적인 읽기로 네 번째를 사용하는 것입니다.

+0

근접 센서 만 사용하는 경우 판독 값의 지속적인 "흐름"이 없습니다. 하나 또는 두 개의 잘못된 값과 올바른 값이 있습니다. 그래서 첫 번째 X 값을 무시할 수는 없습니다. 비동기 작업을 사용하여 "마지막"읽기를 올바르게 식별하는지 확인합니다. – auval

+0

물론 나머지 코드 구조를 어떻게 구성 했느냐에 달려 있습니다.적시에 응답을 보내지 않으면 쓰레드 스케줄러가 마지막으로 기록 된 값을 취했을 것입니다 (따라서 특정 숫자의 이벤트를 기다리는 것이 우리에게 효과적이었습니다). – Iv4n