2011-10-09 4 views
1

주어진 센서에 대해 '마지막 5 초 분량의 데이터'에 액세스해야하는 앱을 개발 중입니다. 내 계획은이 데이터를 어떻게 든 저장하는 것이며, 데이터를 요청하면 마지막 5 초 내에 얻은 데이터를 반환합니다. 나는 주어진 효과적으로이 작업을 수행하는 방법을 잘 모르겠어요 그 :센서 데이터 수집, 저장 및 검색

  1. 달빅이 생성되는 객체를 많이 가지고 좋아하지 않는다, 그래서 값을 포함하는 각 센서 판독 값에 대한 개체를 만들 수 없습니다 + 타임 스탬프.

  2. 새로운 데이터를 특정 종류의 구조에 지속적으로 저장해야하며 특정 부분을 검색해야합니다.

유일한 다른 요구 사항은 5 초보다 오래된 데이터를 처리해야한다는 것입니다. 이것은 정말로 중요하지 않지만, 데이터를 유지하는 것이 메모리에서 먹는다고 상상합니다.

나는 현재 onSensorChanged 수신기가 설정되어 있으므로 도움이 필요하지 않습니다.

아이디어가 있으십니까?

+0

[SensorManager] (http://developer.android.com/reference/android/hardware/SensorManager.html)로 작업하고 있다고 가정합니다. 이유는 무엇입니까? [Timer] (http://developer.android.com/reference/java/util/Timer.html)로 매 초마다 폴링하지 않고, 적합하다고 판단되는 곳에 그 값을 저장 한 다음 필요시에만 리포지토리를 쿼리합니다. –

+0

은 SensorEventListener (http://developer.android.com/reference/android/hardware/SensorEventListener.html)를 살펴보고 변경 될 때까지 새 데이터를 가져올 때 사용합니다. 이 정보를 db에 로컬로 저장하고 LoaderManager를 사용하여 Cursor를 통해 액세스 할 수 있습니다. – Necronet

+0

@NanoTaboada 그게 문제이고, 사용할 저장소는 무엇이며 어떻게 쿼리합니까? – Glitch

답변

1

은 5 초의 데이터를 저장하고 풀에 저장할 충분한 객체를 미리 할당 할 수 있습니다. 풀에서 객체를 가져오고, 시간 스탬프 및 값을 추가하고 정렬 된 세트에 삽입합니다. 하나를 삽입하고 풀에 다시 넣은 후에 오래된 개체를 제거하십시오. 또는 원형 버퍼로 얻을 수 있습니다. http://en.wikipedia.org/wiki/Circular_buffer

+0

내가 이것을 할 수있는 한 가지 문제는 내가 얼마나 많은 객체가 필요한지 전혀 모른다는 것이다. 나는 센서의 pollrate를 제한 할 수 있다고 생각하지만, 그것은'SENSOR_DELAY_FASTEST' 등이 실제로 무엇을 의미 하는지를 알 수있는 방법이 없기 때문에 상한은 불확정하다. 필자는 객체를 채울 때 객체를 "덮어 쓸 수"있다고 생각합니다. 그러나이를 수행 할 수있는 확실한 방법이 있다면 그것을 피합니다. – Glitch

+0

몇 가지 테스트를 실행하거나 계산을 수행하고 필요한 수의 아이디어를 얻으십시오. 필요한 경우 더 많은 것을 할당하십시오. –

+0

좋습니다. 작동합니다. '수영장'을 구현하는 데 필요한 수업이 있습니까? – Glitch