グループ通話を始める
PlanetKitを使用すると、1対1通話またはグループ通話の音声およびビデオ通話機能をアプリに連携できます。このガイドでは、Androidアプリでグループ音声通話の実装を開始する方法について説明します。
より迅速な開発のために、クイックスタートに基づいてアプリを実装できます。
前提条件
- お使いのシステムがシステム要件を満たしていることを確認してください。
- API keyを生成します。詳細については、開発環境を参照してください。
- アクセストークンを作成するアプリサーバーコードを実装します。詳細については、アクセストークンの作成方法を参照してください。
- Android Studioがまだインストールされていない場合は、Android Studioをインストールしてください。
プロジェクトの作成
Android Studioを開き、次のように新しいプロジェクトを作成します。
- [Welcome to Android Studio]ウィンドウで[New Project]をクリックします。
- [Empty Activity]を選択し、[Next]をクリックします。
- [New Project]ウィンドウで以下のように設定します。
- [Name]フィールドにプロジェクト名を入力します。
- [Minimum SDK]でAPIレベル21以上を選択します。
- [Build configuration language]で「Groovy DSL (build.gradle)」を選択します。
- [Finish]をクリックします。
SDKのインストール
Gradleを使用してSDKをインストールします。モジュールレベルのbuild.gradle
ファイルに以下の依存関係を追加してください。
dependencies {
...
implementation 'com.linecorp.planetkit:planetkit:6.0.0'
...
}
Android向けPlanetKitのバージョン5.3.3以降は、Maven Central Repositoryでリリースされます。
プロジェクトにMaven Central Repositoryが設定されていない場合は、次のように設定してください。
// Root-level build.gradle
allprojects {
repositories {
mavenCentral()
}
}
システム権限のリクエスト
音声通話機能を有効にするには、Android向けPlanetKitにシステム権限が必要です。AndroidManifest.xml
ファイルに次のように追加してください。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
ユーザーは、初めてアプリを起動するときに実行時の権限(ランタイム権限)を付与する必要があります。そのためには、次のようにRECORD_AUDIO
、READ_PHONE_STATE
、BLUETOOTH_CONNECT
権限をリクエストします。
fun checkAllRequirePermissions(context: Context): MutableList<String> {
val permissions: MutableList<String> = mutableListOf()
if (ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.RECORD_AUDIO)
}
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.READ_PHONE_STATE)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
&& ContextCompat.checkSelfPermission(context, Manifest.permission.BLUETOOTH_CONNECT)
!= PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.BLUETOOTH_CONNECT)
}
return permissions
}
fun requestPermissions(activity: Activity, permissions: Array<String>) {
ActivityCompat.requestPermissions(activity, permissions,0)
}
val requirePermissions = checkAllRequirePermissions(this)
if (requirePermissions.isNotEmpty()) {
requestPermissions(this, requirePermissions.toTypedArray())
return
}
ランタイム権限のリクエストの詳細については、Android公式ドキュメントを参照してください。
SDKの初期化
PlanetKit APIを呼び出す前に、PlanetKitを初期化する必要があります。PlanetKitConfiguration
オブジェクトでPlanetKit.initialize()
を使ってPlanetKitを初期化します。
PlanetKit.initialize()
を呼び出す前に、PlanetKitConfiguration
オブジェクトにサーバーURL(planet_base_url
)を設定する必要があります。使用している開発環境に応じて、適切な planet_base_url
を使用してください。
val config = PlanetKit.PlanetKitConfiguration.Builder(getApplicationContext())
.setServerUrl(planet_base_url)
.build()
PlanetKit.initialize(config) { isSuccessful, isVideoHwCodecSupport, userAgent ->
// Implement the completion callback if necessary
}
アプリでPlanetKit.initialize()
メソッドを最初に一度呼び出す必要があります。Application
インスタンスのonCreate()
メソッドでSDKを初期化することをお勧めします。
アクセストークンの取得
クライアントアプリでアプリサーバーにアクセストークンの作成をリクエストしてアクセストークンを取得します。
PlanetKit.joinConference()
を呼び出すたびに、新しいアクセストークンを取得して使用する必要があります。
グループ音声通話に参加
グループ音声通話に参加するには、次の引数でPlanetKit.joinConference()
を呼び出します。
- 以下のプロパティを含む
PlanetKitConferenceParam
オブジェクトmyId
:ローカルユーザーのユーザーIDroomId
:ルームIDmyServiceId
:ローカルユーザーのサービスIDroomServiceId
:ルームのサービスIDaccessToken
:アクセストークン
- イベントコールバックが実装された
ConferenceListener
オブジェクト
val param = PlanetKitConferenceParam.Builder()
.myId(userId)
.roomId(roomId)
.myServiceId(serviceId)
.roomServiceId(serviceId)
.accessToken(accessToken)
.build()
val result = PlanetKit.joinConference(param, conferenceListener = object : ConferenceListener {
override fun onConnected(conference: PlanetKitConference,
isVideoHwCodecEnabled: Boolean,
isVideoShareModeSupported: Boolean) {
// This is called when the call is connected.
// Write your own code here.
}
override fun onDisconnected(conference: PlanetKitConference,
param: PlanetKitDisconnectedParam) {
// This is called when the call is disconnected.
// Write your own code here.
}
override fun onPeerListUpdated(param: PlanetKitConferencePeerListUpdatedParam) {
// This is called when the list of peers is updated.
// Write your own code here.
}
})
if (result.reason == PlanetKitStartFailReason.NONE && result.conference != null) {
// The "result.conference" instance is the main instance to call APIs from now on.
// You must keep it to control this call.
}
else {
// Handle an error by referring to result.reason.
}
ユーザーがクライアントアプリからグループ通話ルームに参加するにはルームIDが必要なので、アプリケーションで定義した通信チャネルを通じてルームIDを他のユーザーと共有する必要があります。
次のステップ
PlanetKitが提供するさまざまな機能と各機能の詳細については、以下のドキュメントを参照してください。