はじめに
前提条件
Klleon Ondevice SDKを使用する前に、以下の準備が必要です:
- Kleon Studioアカウント: SDK機能を使用するには Kleon Studio アカウントが必要です。アカウントをお持ちでない場合は、まずご登録ください。
- SDKキーの発行: ドメイン登録後、該当ドメインで使用する固有の
sdk_keyが発行されます。このキーはSDKの初期化に必要です。 - アバターID: 使用するAIアバターの
avatarIdが必要です。
権限
AndroidManifest.xml
AndroidManifest.xml に必要な権限を追加してください:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
コードでの権限処理
class MainActivity : ComponentActivity() {
private val requiredPermissions = arrayOf(
Manifest.permission.RECORD_AUDIO
)
private val permissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { permissions ->
handlePermissionResults(permissions)
}
private fun checkPermissions(): Boolean {
return requiredPermissions.all { permission ->
ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
}
}
private fun requestPermissions() {
val permissionsToRequest = requiredPermissions.filter { permission ->
ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED
}.toTypedArray()
if (permissionsToRequest.isNotEmpty()) {
permissionLauncher.launch(permissionsToRequest)
}
}
private fun handlePermissionResults(permissions: Map<String, Boolean>) {
val deniedPermissions = permissions.filter { !it.value }.keys
if (deniedPermissions.isEmpty()) {
Log.d("MainActivity", "すべての権限が許可されました")
initializeApp()
} else {
Log.w("MainActivity", "権限が拒否されました: $deniedPermissions")
// 拒否された権限の処理
}
}
}
SDKの初期化
基本設定
import io.klleon.ondevice.KlleonOndeviceSdk
import io.klleon.ondevice.ResourceManager
import io.klleon.ondevice.render.KlleonSdkView
// アプリ全体で単一インスタンスを共有
object SdkConfig {
val sdk = KlleonOndeviceSdk()
}
class MainActivity : ComponentActivity() {
private val klleonOndeviceSdk = SdkConfig.sdk
private val resourceManager = ResourceManager()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (checkPermissions()) {
initializeApp()
} else {
requestPermissions()
}
}
private fun initializeApp() {
setContent {
OndeviceSampleTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
WorkerScreen(klleonOndeviceSdk = klleonOndeviceSdk)
}
}
}
// リソース初期化(キャッシュコピー + YUV変換 + メモリロード)
resourceManager.init(
context = this,
mp4FileName = "loop_sample.mp4",
npzFileName = "loop_sample.npz",
styleFileName = "loop_sample.style",
avatarId = "character_001",
onSuccess = {
// リソース準備完了 — play() 呼び出し可能
},
onError = { error ->
Log.e("MainActivity", "リソース準備失敗", error)
}
)
}
}
SDKの開始 (play)
// play()はsuspend関数のためコルーチン内で呼び出し
CoroutineScope(Dispatchers.IO).launch {
klleonOndeviceSdk.play(
context = this@Activity, // Context
klleonSdkViewInstance = sdkView, // KlleonSdkViewインスタンス
sdkKey = "YOUR_SDK_KEY", // SDKキー
avatarId = "character_001", // アバターID
language = "ko_kr" // 言語 (ko_kr, en_us, ja_jp)
)
}
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
context | Context | O | 現在のコンテキスト |
klleonSdkViewInstance | KlleonSdkView? | O | レンダリングビューインスタンス |
sdkKey | String | O | SDK認証キー |
avatarId | String | O | AIアバターID |
language | String | O | 言語コード (ko_kr, en_us, ja_jp) |
次のステップ
設定完了後: