2014-04-10 2 views
0

백그라운드에서 실행되는 서비스를 만들고 다른 애플리케이션을 사용할 때 모션 센서 (예 : 가속도계)를 사용하여 모션 데이터를 캡처하고 싶습니다. 또한 당시에 실행중인 앱을 기반으로 모션 데이터 세트를 구별 할 수 있기를 원합니다. 예를 들어, 서비스의 출력은 다음과 같습니다.백그라운드 Android 서비스에서 특정 애플리케이션 모션 데이터 가져 오기

App A : [Data set taken for the motion sensor while app A was running] 
App B : [Data set taken for the motion sensor while app B was running] 
... 

모션 데이터를 캡처하는 백그라운드에서 서비스를 실행하는 것이 편합니다. 그러나 전 애플 리케이션이 포어 그라운드에 있었는지 기반으로 데이터를 분리하는 방법을 모르겠습니다. 아무도 이것을 달성하는 방법을 알고 있습니까? 어떤 응용 프로그램이 포어 그라운드로 시작/이동되었는지 그리고 어떻게 그 응용 프로그램의 데이터 세트 아래에 데이터를 저장하도록 백그라운드 서비스를 업데이트하는지 어떻게 알 수 있습니까?

답변

0

전경 활동이 무엇인지 찾기 위해 서비스를 원하는 것처럼 들립니다. 그 정보는 this과 같은 StackOverflow의 다른 질문에서 찾을 수 있습니다. 즉, ActivityManager.getRunningTasks()을 사용하는 것이 좋습니다. 최상위 활동은 목록의 첫 번째 항목입니다.

앱 매니페스트에서 적절한 권한을 요청해야하는 것처럼 들립니다.

+0

그래서 내가 아는 바로는, 최상위 활동을 지속적으로 폴링해야하고 변경되면 데이터 세트 레이블을 업데이트합니다. 그 맞습니까? – Hydar77

+0

필자는 변경 사실을 알릴 수있는 ContentProvider가 없다는 것을 알고 있으므로 포 그라운드 활동을 필요로하거나 현재 ActivityManager를 폴링하여 현재 상태를 유지해야합니다. 모션 데이터를 캡처하는 빈도가 어느 정도 더 적절한 지 판단 할 수 있습니다. 빈도가 높으면 정기적 인 (그러나 덜 빈번한) 간격으로 ActivityManager를 폴링합니다. 동작 제스처 (예 : 기기가 흔들린 것으로 판단)를 찾고 제스처가 완료되었을 때 현재 활동 만 필요한 경우 ActivityManager에 전화하십시오. – spaaarky21

관련 문제