本文にスキップする
Version: 6.0

グループ通話を始める

PlanetKitを使用すると、1対1通話またはグループ通話の音声およびビデオ通話機能をアプリに連携できます。このガイドでは、Androidアプリでグループ音声通話の実装を開始する方法について説明します。

Note

より迅速な開発のために、クイックスタートに基づいてアプリを実装できます。

前提条件

プロジェクトの作成

Android Studioを開き、次のように新しいプロジェクトを作成します。

  1. Welcome to Android Studio]ウィンドウで[New Project]をクリックします。
  2. Empty Activity]を選択し、[Next]をクリックします。
  3. New Project]ウィンドウで以下のように設定します。
    1. Name]フィールドにプロジェクト名を入力します。
    2. Minimum SDK]でAPIレベル21以上を選択します。
    3. Build configuration language]で「Groovy DSL (build.gradle)」を選択します。
    4. Finish]をクリックします。 Androidプロジェクトを作成する

SDKのインストール

Gradleを使用してSDKをインストールします。モジュールレベルのbuild.gradleファイルに以下の依存関係を追加してください。

dependencies {
...
implementation 'com.linecorp.planetkit:planetkit:6.0.0'
...
}
Note

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_AUDIOREAD_PHONE_STATEBLUETOOTH_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
}
Note

ランタイム権限のリクエストの詳細については、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
}
Note

アプリでPlanetKit.initialize()メソッドを最初に一度呼び出す必要があります。ApplicationインスタンスのonCreate()メソッドでSDKを初期化することをお勧めします。

アクセストークンの取得

クライアントアプリでアプリサーバーにアクセストークンの作成をリクエストしてアクセストークンを取得します。

Note

PlanetKit.joinConference()を呼び出すたびに、新しいアクセストークンを取得して使用する必要があります。

グループ音声通話に参加

グループ音声通話に参加するには、次の引数でPlanetKit.joinConference()を呼び出します。

  • 以下のプロパティを含むPlanetKitConferenceParamオブジェクト
    • myId:ローカルユーザーのユーザーID
    • roomId:ルームID
    • myServiceId:ローカルユーザーのサービスID
    • roomServiceId:ルームのサービスID
    • accessToken:アクセストークン
  • イベントコールバックが実装された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.
}
Note

ユーザーがクライアントアプリからグループ通話ルームに参加するにはルームIDが必要なので、アプリケーションで定義した通信チャネルを通じてルームIDを他のユーザーと共有する必要があります。

次のステップ

PlanetKitが提供するさまざまな機能と各機能の詳細については、以下のドキュメントを参照してください。

  • 通話フロー:通話タイプごとの通話フローを確認してください。
  • サブグループ:複数のサブグループがあるルームや通訳ルームなどの高度な機能を実装できるサブグループ機能を確認してください。
  • 拡張機能:画面共有、データセッションなど、さまざまな拡張機能をご覧してください。
  • サンプルコード:アプリの実装に参考になるサンプルコードを確認してください。
  • 参考ドキュメント:APIリファレンス、APIの変更履歴、リリースノートを確認してください。