음성 인식 개발
음성 인식 개발을 위한 사전 작업과 Android Studio 설정을 사전에 완료한 후, 다음 순서에 따라 SDK를 연동하여 음성 인식 개발을 진행합니다. 음성 인식 개발 프로세스는 SDK 초기화, Permission 추가, 필수 호출 앱 구현, 음성 인식 서비스 시작 등을 포함하여, 최종적으로 애플리케이션을 실행하는 과정을 모두 포함합니다.
SDK 초기화하기
SDK를 초기화하기 위해서 다음 순서에 따라 Application.onCreate()
메서드에서 KakaoI
클래스에 내장된 메서드들을 체이닝(Chaining) 방식으로 확장합니다.
-
사전에 협의된 개발 Phase 정보를
KakaoIWallpad.with()
항목에 입력합니다.코드예제KakaoIWallpad.with
KakaoIWallpad.with(applicationContext, "{사용 가능 Phase}")
안내
개발 Phase와 관련된 자세한 설명은 개발 Phase 정의하기 를 참고하시기 바랍니다. -
카카오 계정 토큰 갱신을 위해, Kakao Developers 사이트에서 앱 등록 후 획득한 REST API 키 값을
restApiKeyProvider{}
에 입력합니다.- REST API 키 정보는 Kakao Developers > 내 애플리케이션 > 앱 설정 > 요약 정보 메뉴에서 확인할 수 있습니다.
주의
REST API 키를 입력하지 않을 경우, 카카오 계정 인증을 진행할 수 없습니다. -
만약 SDK로 시리얼 번호를 전달해야 할 경우,
serialNumberProvider{}
를 확장합니다.
Sample Code
SDK 초기화를 위한 샘플 코드는 다음과 같습니다.
코드예제SDK 초기화
private fun initKakaoI() {
KakaoIWallpad.with(applicationContext, "stage")
.serialNumberProvider { getSerial() }
.restApiKeyProvider { getString(R.string.demo_rest_key) }
.init()
}
안내
SDK에서 제공하는 전체 메서드 목록은 Kakao i Agent SDK for Wallpad 메서드를 참고하시기 바랍니다.
Runtime Permission 추가하기
다음의 권한(Runtime Permission)을 Manifest에 추가하여, 사용자가 런타임에 각 권한을 승인하도록 요청합니다.
표Runtime Permission권한 | 필수 여부 | 설명 |
---|---|---|
android.permission.RECORD_AUDIO | 필수 |
마이크 사용을 위한 권한 - 자세한 설명은 Google Developers 사이트 참고 |
android.settings.action.MANAGE_OVERLAY_PERMISSION | 필수 |
플로팅 마이크 버튼 사용을 위한 권한 - 권한 설정 화면을 팝업시켜 권한을 인가받음 |
주의
android.permission.RECORD_AUDIO
권한을 획득하지 않으면 카카오 i 음성 인식 서비스를 시작할 수 없습니다.
Sample Code
다음은 android.settings.action.MANAGE_OVERLAY_PERMISSION
추가를 위한 예제 코드입니다.
코드예제android.settings.action.MANAGE_OVERLAY_PERMISSION
const val REQUEST_OVERLAY_PERMISSIONS = 200
fun grantOverlayPermission(activity: Activity) {
val intent = Intent(
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + activity.packageName)
)
activity.startActivityForResult(intent, REQUEST_OVERLAY_PERMISSIONS)
}
안내
Permission 추가와 관련한 자세한 설명은 Google Developers > Android 개발자 > 앱 권한 요청 문서를 참고하시기 바랍니다.
호출 앱 구현하기
Wallpad에서 카카오 i 설정 화면을 호출하는 앱을 필수
로 구현해야 하며, 앱 실행 시 카카오 i 서비스에 인텐트를 호출하여 해당 화면을 호출해야 합니다.
Wallpad 자체에 알람 기능이 없는 경우에는 카카오 i 알람 기능을 구현하는 것을 권장
하며, 이 경우에도 알람 화면을 호출하는 앱을 구현해야 합니다. 각 앱을 구현 시, 필요한 앱 아이콘 이미지는 다음의 경로에서 다운로드 받을 수 있습니다.
구분 | 필수 여부 | 설명 |
---|---|---|
Kakao i 설정 호출 앱 | 필수 |
필수 애플리케이션으로 별도 구현하여 com.kakao.i.agent.SHOW_SETTINGS 를 호출- 앱 아이콘 이미지 다운로드 경로: 다운로드 |
Kakao i 알람 호출 앱 | 권장 |
Wallpad에 자체 알람기능이 없는 경우 알람 기능 구현을 권장하며, 알람 화면을 호출하는 앱 구현 후com.kakao.i.agent.SHOW_ALAM_SETTINGS 를 호출- 앱 아이콘 이미지 다운로드 경로: 다운로드 |
그림카카오 i 설정 및 알람 아이콘
안내
애플리케이션 호출에 대한 자세한 설명은 SDK 제어 문서를 참고하시기 바랍니다.
음성 인식 서비스 시작하기
음성 인식 서비스 시작을 위해 사용할 Activity에서 AgentService를 시작합니다.
코드예제AgentService
ContextCompat.startForegroundService(applicationContext, AgentService.newIntent(applicationContext))
애플리케이션 실행하기
위 작업을 모두 완료하고 애플리케이션을 생성(APK 파일)하고 설치하면, Wallpad 애플리케이션에서 카카오 i 음성 인식 서비스를 사용할 수 있습니다.
안내
음성 인식 개발, 호출 앱 구현, 음성 인식 서비스 시작 작업은 모두필수
작업이며, 필요 시에는 View Template을 수정하거나 Mini Media Player를 구현할 수 있습니다.
- View Template 수정: SDK에 기본 탑재되어 있는 UI 화면 템플릿인 View Template 수정 가능
- Mini Media Player 구현: SDK의 음악 플레이어의 닫힘 유무에 상관없이 사용자가 Wallpad 화면에서 플레이어 화면을 제어할 수 있도록 Mini Media Player를 구현하는 것을 권장
SDK 제공 메서드
Kakao i Agent SDK for Wallpad에서 제공하는 전체 메서드는 다음과 같습니다.
표Kakao i Agent SDK for Wallpad 메서드메서드 | 필수 여부 | 설명 |
---|---|---|
restApiKeyProvider{} | 필수 |
카카오 계정 토큰 갱신을 위해 Kakao Developers 사이트에서 생성된 애플리케이션의 REST API 키 전달 필요 |
serialNumberProvider{} | 권장 |
유일값인 시리얼 번호를 SDK로 전달 시 필요 - 계정 연결 시 디바이스 정보를 보여주며, 내부적으로 고유한 Key 생성에 사용됨 |
disableAlarm() | 선택 |
Wallpad에 알람/모닝콜 기능을 끌 때 사용 - 기본값: 알람/모닝콜 사용 |
disableWifiScreen() | 선택 |
안드로이드 Wi-Fi 설정으로 이동하는 화면을 사용하지 않도록 설정 - Wallpad 애플리케이션에서 별도 생성한 Wi-Fi 설정 화면을 사용할 경우 사용 |
screenOrientation(orientationInfo : Int) | 선택 |
Wallpad 디바이스가 가로 모드와 세로 모드를 모두 지원할 경우 선언 필요 - 가로/세로 모드 중 하나의 모듈만 지원할 경우에는 선언하지 않아도 됨 |
setFloatingViewSize(size: Int) | 선택 |
플로팅 마이크 버튼의 사이즈(Pixel) 수정 - 기본값: 디바이스에 따라 자동 설정 |
setTemplateRenderer(customRenderer: TemplateManager.Renderer) | 선택 |
View Template을 사용하여 화면을 수정(레이아웃, 사이즈 등)할 때 사용 - View Template 수정 문서 참고 |
restApiKeyProvider{ }
카카오 계정 토큰 갱신을 위해 필요한 모듈로서, Kakao Developers 사이트에서 생성된 애플리케이션의 REST API 키를 전달해야 합니다. REST API 키 정보는 Kakao Developers > 내 애플리케이션 > 앱 설정 > 요약 정보 메뉴에서 확인할 수 있습니다.
serialNumberProvider{ }
유일값인 시리얼 번호를 SDK로 전달할 때 필요한 모듈로, 계정 연결 시 디바이스 정보를 보여주며, 내부적으로 고유한 Key를 생성합니다.
disableAlarm()
기본 설정으로 사용함으로 설정되어 있는 Wallpad의 알람 또는 모닝콜 기능을 끌 수 있는 모듈입니다.
disableWifiScreen()
기본적으로 사용자가 Wallpad에서 마이크 버튼을 클릭할 때, Wi-Fi가 연결되지 않았거나 네트워크가 느릴 경우 안드로이드 기본 설정에 따라 Wi-Fi 설정 화면으로 이동합니다.
만약 고객사에서 개발한 별도의 Wi-Fi 설정 화면이 존재하는 경우, disableWifiScreen()
를 사용하여 기본 Wi-Fi 설정으로 이동하는 기능을 비활성(Disable) 하고 별도 구현한 Wi-Fi 연결 화면을 연결할 수 있습니다.
그림Wi-Fi 연결 설정
안내
disableWifiScreen()
설정 시 Wi-Fi 연결 시점에 com.kakao.i.agent.ACTION_KAKAO_I_WIFI_DISCONNECTED 인텐트가 브로드케스트로 전송됩니다. 이 경우에 해당 인텐트가 수신되면 별도 구현한 Wi-Fi 설정 화면으로 이동하도록 설정해야 합니다.
- 브로드케스트 수신과 관련한 자세한 사항은 Google Developer 사이트를 참고하시기 바랍니다.
screenOrientation(orientationInfo : Int)
Wallpad 디바이스가 가로 모드와 세로 모드를 모두 지원할 경우 선언해야 하는 메서드입니다.
- Wallpad 디바이스가 가로 모드와 세로 모드 중 하나만 지원할 경우에는 선언하지 않아도 됩니다.
구분 | 선언 |
---|---|
가로 모드 | Activityinfo.SCREEN_ORIENTATION_LANDSCAPE |
세로 모드 | ActivityInfo.SCREEN_ORIENTATION_PORTRAIT |
setFloatingViewSize(size : Int)
기본 설정으로, 플로팅 마이크 버튼의 크기는 Wallpad 디바이스의 사이즈와 해상도에 따라 자동으로 조정됩니다.
만약 플로팅 마이크의 아이콘 사이즈를 수정하고 싶은 경우에는 SDK 초기화(init) 시 setFloatingViewSize(size : Int)
메서드를 사용하여 원하는 사이즈를 입력하여 변경할 수 있습니다.
그림플로팅 마이크 사이즈 조정
Sample Code
다음은 SDK 초기화(init)시 플로팅 마이크의 버튼 사이즈(가로 x 세로)를 50dp로 수정하는 샘플 코드입니다.
코드예제플로팅 마이크 버튼 사이즈 수정
.setFloatingViewSize(resources.getDimensionPixelSize(R.dimen.floating_btn_size))
코드예제플로팅 마이크 버튼 사이즈를 50dp로 수정
<resources>
<dimen name="floating_btn_size">50dp</dimen>
</resources>
setTemplateRenderer(customRenderer : TemplateManager.Renderer)
View Template을 사용하여 Wallpad 화면의 레이아웃이나 사이즈 등을 수정할 때 사용합니다. 관련한 샘플 코드는 View Template 수정 문서를 참고하시기 바랍니다.