メインコンテンツまでスキップ

はじめに

前提条件

Klleon Ondevice SDKを使用する前に、以下の準備が必要です:

  1. Kleon Studioアカウント: SDK機能を使用するには Kleon Studio アカウントが必要です。アカウントをお持ちでない場合は、まずご登録ください。
  2. SDKキーの発行: ドメイン登録後、該当ドメインで使用する固有の sdk_key が発行されます。このキーはSDKの初期化に必要です。
  3. アバター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)
)
}

パラメータ:

パラメータ必須説明
contextContextO現在のコンテキスト
klleonSdkViewInstanceKlleonSdkView?Oレンダリングビューインスタンス
sdkKeyStringOSDK認証キー
avatarIdStringOAIアバターID
languageStringO言語コード (ko_kr, en_us, ja_jp)

次のステップ

設定完了後:

  1. 使用可能なメソッドは APIリファレンス を確認してください
  2. 最適な統合のために ガイド に従ってください
  3. 実装パターンは 使用例 を確認してください