구현
AudioRecognition 인스턴스 생성
앱 시작 시, SORIAudioRecognizer
클래스의 인스턴스를 생성해야 합니다. 이 클래스는 오디오 인식을 담당하고 서비스를 시작하고 중지하는 메서드를 제공합니다.
다음 코드를 앱의 수명 주기에 추가하세요. 예를 들어 메인 액티비티의 onCreate
메서드에 추가할 수 있습니다.
import com.iplateia.sorisdk.SORIAudioRecognizer
val sori = SORIAudioRecognizer(
"YOUR_SORI_API_KEY",
"YOUR_SORI_SECRET_KEY",
)
import com.iplateia.sorisdk.SORIAudioRecognizer;
SORIAudioRecognizer sori = new SORIAudioRecognizer(
"YOUR_SORI_API_KEY",
"YOUR_SORI_SECRET_KEY"
);
TIP
SORI API 대시보드에서 API 키와 시크릿 키를 얻을 수 있습니다. 자세한 내용은 SORI API 문서를 참조하세요.
WARNING
API 키와 시크릿 키를 안전하게 보관하세요. 앱의 소스 코드에 하드코딩하지 마세요. 대신 local.properties
가 있는 BuildConfig
또는 환경 변수와 같은 안전한 방법을 사용하여 저장하고 검색하세요.
리스너 구현하기
ISORIListener
인터페이스는 오디오 인식이 시작되고, 중지되고, 결과가 수신될 때 호출되는 콜백 메서드를 정의합니다. 자신의 클래스에서 이 인터페이스를 구현하고 메서드를 재정의하여 이벤트를 처리할 수 있습니다.
대부분의 경우, UI가 감지된 소재를 업데이트하기 위해 onCampaignFound
이벤트가 필요합니다. 편의를 위해 SORIListener
클래스를 기본 클래스로 사용하고 필요한 메서드만 재정의할 수 있습니다.
class MySORIListener : SORIListener() {
override fun onStateChanged(state: String) {
Log.d("TAG", "SORI State changed: $state")
}
override fun onCampaignFound(campaign: SORICampaign) {
// 캠페인 발견 이벤트 처리
Log.d("TAG", "Campaign found: ${campaign.name}")
}
}
또는 액티비티나 프래그먼트에서 직접 SORIListener()
를 확장할 수도 있습니다. 리스너에 context
나 activity
를 전달하지 않고도 UI와 쉽게 상호 작용할 수 있도록 SORIListener()
를 기본 클래스로 사용하는 것이 좋은 방법입니다.
class MyActivity : AppCompatActivity(), SORIListener() {
private lateinit var adapter: CampaignTimelineAdapter
// ...
override fun onCampaignFound(campaign: SORICampaign) {
// 캠페인 발견 이벤트 처리
Toast.makeText(this, "Campaign found: ${campaign.name}", Toast.LENGTH_SHORT).show()
adapter.addItem(campaign)
}
// ...
}
그런 다음, 리스너를 SORIAudioRecognizer
인스턴스에 설정합니다.
val listener = object : SORIListener() {
override fun onCampaignFound(campaign: SORICampaign) {
Log.d("TAG", "Campaign found: ${campaign.name}")
}
}
// 또는 자신의 리스너 인스턴스
sori.setListener(this, listener)
SORIAudioRecognizer
는 인식 이벤트를 수신하고 리스너의 적절한 메서드를 호출하는 BroadcastReceiver
를 설정합니다.
인식 시작 및 중지
오디오 인식을 시작하려면 SORIAudioRecognizer
인스턴스의 startRecognition
메서드를 호출하세요.
sori.startRecognition(this)
이렇게 하면 오디오 인식 서비스가 시작되고 사용자에게 알림이 표시됩니다.
알림을 사용자 정의하려면 startRecognition
메서드에 title
, body
, icon
매개변수를 전달할 수 있습니다.
sori.startRecognition(
this,
title = "앱 이름",
body = "특별한 것을 찾는 중...",
icon = R.drawable.your_app_icon // 선택 사항
)
오디오 인식을 중지하려면 SORIAudioRecognizer
인스턴스의 stopRecognition
메서드를 호출하세요.
sori.stopRecognition(this)
웹훅에 메타데이터 포함하기
서버로 전송되는 웹훅 이벤트에 사용자 정의 메타데이터를 포함할 수 있습니다. 이 메타데이터는 이벤트를 트리거한 사용자나 기기를 식별하는 데 사용할 수 있습니다. 메타데이터를 포함하려면 SORIAudioRecognizer
인스턴스의 setMetadataProvider
메서드를 사용할 수 있습니다.
sori.setMetadataProvider(
object : ISORIMetadataProvider {
override fun getMetadata(): Map<String, String> {
return mapOf(
"user_id" to "12345",
"device_id" to "67890"
)
}
}
)
getMetadata
메서드는 웹훅 이벤트에 포함될 키-값 쌍의 맵을 반환해야 합니다. 이 메서드는 웹훅 이벤트가 전송될 때마다 호출되므로, 필요에 따라 메타데이터를 동적으로 업데이트할 수 있습니다.