사용자의 행동을 파악하여 앱 조정

휴대기기는 많은 사람들에게 일상 생활의 일부가 되었습니다. 사용자들은 운전을 하거나, 걷거나, 운동하고, 놀면서 하루 종일 휴대전화를 사용합니다.

실제 세상에서 사용자가 무엇을 하고 있는지 이해하면 앱이 사용자와 더 현명하게 상호작용할 수 있습니다. 예를 들어 앱은 달리기를 시작하면 사용자의 심장 박동을 추적하고 다른 앱은 사용자가 운전을 시작했음을 감지하면 자동차 모드로 전환할 수 있습니다.

Activity Recognition API는 기기에서 사용할 수 있는 센서에 기반합니다. 기기 센서는 사용자의 현재 활동에 관한 유용한 정보를 제공합니다. 하지만 여러 센서에서 수집한 수십 개의 신호와 사용자의 작업 방식이 약간씩 다르므로 사용자의 행동을 감지하는 것은 쉽지 않습니다.

Activity Recognition API는 센서 데이터의 버스트를 주기적으로 읽고 머신러닝 모델을 사용하여 처리하여 활동을 자동으로 감지합니다. API는 리소스를 최적화하기 위해 기기가 한동안 정지 상태인 경우 활동 보고를 중지할 수 있으며 움직임이 감지되면 보고를 다시 시작하기 위해 저전력 센서를 사용합니다.

최소 리소스를 사용하여 활동에 대한 정보 수신

일부 앱은 사용자가 특정 활동을 시작하거나 중지하는 시점을 알고 싶어 합니다. 예를 들어 사용자가 주행을 시작하면 마일리지 추적 앱이 마일 추적을 시작하거나, 사용자가 운전을 중단할 때까지 메시지 앱이 모든 대화를 음소거할 수 있습니다.

Activity Recognition Transition API는 사용자 활동의 변경사항 감지와 관련된 복잡한 작업을 실행하여 이러한 시나리오를 가능하게 합니다. 앱이 관심 있는 활동의 전환을 구독하고 API는 필요할 때만 앱에 알림을 보냅니다. 활동이 시작되거나 끝나는 시점을 감지하기 위해 복잡한 휴리스틱을 구현할 필요가 없습니다.

Activity Recognition API는 결과를 앱에서 일반적으로 IntentService로 구현되는 콜백에 전달합니다. 결과는 지정한 간격으로 전달되거나 앱에서 추가 전력을 소비하지 않고 다른 클라이언트에서 요청한 결과를 사용할 수 있습니다.

PendingIntent를 사용하여 결과를 제공하는 방법을 API에 알릴 수 있으므로 활동 감지 목적으로 서비스를 백그라운드에서 계속 실행할 필요가 없습니다. 앱은 API에서 상응하는 Intents를 수신하고 감지된 활동을 추출한 후 조치를 취해야 하는지 결정합니다. 활동이 수신된 경우에만 서비스를 호출하면 메모리와 같은 리소스가 보존됩니다.

Activity Recognition API는 기기의 신호를 처리하여 현재 활동을 식별하는 방식으로 복잡한 작업을 수행합니다. 앱은 감지된 활동의 목록을 수신합니다. 각 목록에는 confidencetype 속성이 포함되어 있습니다.

confidence 속성은 사용자가 결과에 표시된 활동을 실행할 가능성을 나타냅니다. type 속성은 실제 세계의 항목과 관련하여 기기의 감지된 활동을 나타냅니다. 예를 들어 기기가 자전거를 타거나 기기가 달리기를 하는 사용자입니다.