Skip to content

구현

AudioRecognition 인스턴스 생성

앱 시작 시, SORIAudioRecognizer 클래스의 인스턴스를 생성해야 합니다. 이 클래스는 오디오 인식을 담당하고 서비스를 시작하고 중지하는 메서드를 제공합니다.

다음 코드를 앱의 수명 주기에 추가하세요. 예를 들어 메인 액티비티의 onCreate 메서드에 추가할 수 있습니다.

kotlin
import com.iplateia.sorisdk.SORIAudioRecognizer

val sori = SORIAudioRecognizer(
    "YOUR_SORI_API_KEY",
    "YOUR_SORI_SECRET_KEY",
)
java
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 클래스를 기본 클래스로 사용하고 필요한 메서드만 재정의할 수 있습니다.

kotlin
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()를 확장할 수도 있습니다. 리스너에 contextactivity를 전달하지 않고도 UI와 쉽게 상호 작용할 수 있도록 SORIListener()를 기본 클래스로 사용하는 것이 좋은 방법입니다.

kotlin
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 인스턴스에 설정합니다.

kotlin
val listener = object : SORIListener() {
    override fun onCampaignFound(campaign: SORICampaign) {
        Log.d("TAG", "Campaign found: ${campaign.name}")
    }
}
// 또는 자신의 리스너 인스턴스

sori.setListener(this, listener)

SORIAudioRecognizer는 인식 이벤트를 수신하고 리스너의 적절한 메서드를 호출하는 BroadcastReceiver를 설정합니다.

인식 시작 및 중지

오디오 인식을 시작하려면 SORIAudioRecognizer 인스턴스의 startRecognition 메서드를 호출하세요.

kotlin
sori.startRecognition(this)

이렇게 하면 오디오 인식 서비스가 시작되고 사용자에게 알림이 표시됩니다.

알림을 사용자 정의하려면 startRecognition 메서드에 title, body, icon 매개변수를 전달할 수 있습니다.

kotlin
sori.startRecognition(
    this,
    title = "앱 이름",
    body = "특별한 것을 찾는 중...",
    icon = R.drawable.your_app_icon // 선택 사항
)

오디오 인식을 중지하려면 SORIAudioRecognizer 인스턴스의 stopRecognition 메서드를 호출하세요.

kotlin
sori.stopRecognition(this)

웹훅에 메타데이터 포함하기

서버로 전송되는 웹훅 이벤트에 사용자 정의 메타데이터를 포함할 수 있습니다. 이 메타데이터는 이벤트를 트리거한 사용자나 기기를 식별하는 데 사용할 수 있습니다. 메타데이터를 포함하려면 SORIAudioRecognizer 인스턴스의 setMetadataProvider 메서드를 사용할 수 있습니다.

kotlin
sori.setMetadataProvider(
    object : ISORIMetadataProvider {
        override fun getMetadata(): Map<String, String> {
            return mapOf(
                "user_id" to "12345",
                "device_id" to "67890"
            )
        }
    }
)

getMetadata 메서드는 웹훅 이벤트에 포함될 키-값 쌍의 맵을 반환해야 합니다. 이 메서드는 웹훅 이벤트가 전송될 때마다 호출되므로, 필요에 따라 메타데이터를 동적으로 업데이트할 수 있습니다.