配信を視聴 (Android)
ここでは Castify SDK を使って Castify プラットフォーム上のライブ配信を試聴する機能を備えた画面を実装する流れを説明します。
このチュートリアルでは Jetpack Compose の利用を前提としていますが、従来の Activity を利用することも可能です。
Composable
を作成する
試聴機能を備えた 以降の説明は、以下のような空の Composable
からスタートするものとします。完全なソースコードはこちらから閲覧できます。
@Composable
fun PlayScreen() { /* TODO */ }
CastifyApp
, Player
オブジェクトを作成する
1. /* in PlayScreen() */
val context = LocalContext.current
val app = remember {
CastifyApp(API_TOKEN, context = context)
}
val player = remember { app.newPlayer() }
// クリーンアップ
DisposableEffect(Unit) {
onDispose { player.close() }
}
CastifyApp
は SDK の各機能にアクセスするための入り口となるオブジェクトです。 これを作成するには Castify プラットフォームのプロジェクトに対応した API トークン(上記の API_TOKEN
)を引数とし、そのコンストラクターを呼び出します。
2. プレビュー画面を準備する
配信映像を UI 上にプレビュー表示するためのビューを用意します。ビューには android.view.SurfaceView
を利用します。
/* in PlayScreen() */
AndroidView(
modifier = Modifier.clipToBounds(),
factory = { SurfaceView(it).apply { player.previews.add(holder) } }
)
android.view.SurfaceView
は Composable
ではないので AndroidView
を利用して Composable
に変換します。また、そのインスタンスを player.previews
に追加してプレビューの投影先として登録します。
3. ライブ配信を視聴する機能を作成する
/* in PlayScreen() */
var played by remember { mutableStateOf(false) }
var broadcastId by remember { mutableStateOf("") }
LaunchedEffect(played) {
if (!played) {
player.stop(null)
return@LaunchedEffect
}
val source = app.newSource(broadcastId)
val metadata = source.load()
if (metadata.stoppedAt == null) { // live
player.play(source)
}
else {
player.play(source, time = 0.0) // archive
}
}
Column {
Row {
Button(onClick = { played = !played }) {
Text(if (played) "Stop" else "Play")
}
TextField(value = broadcastId, onValueChange = { broadcastId = it }, placeholder = { Text("bc_xxx") })
}
AndroidView(
modifier = Modifier.clipToBounds(),
factory = { SurfaceView(it).apply { player.previews.add(holder) } }
)
}
Source
オブジェクトは Castify 上の配信メディアを表現するオブジェクトです。配信 ID を元に作成できます。
Source#load()
は対応する配信のメタデータを取得するメソッドです。このメソッドは suspend
メソッドなので呼び出し方に注意が必要です。
上記のコードではメタデータ中の stoppedAt
の値を確認してライブ配信が停止済みかどうかを判定しています。停止されている場合は play(time = 0.0)
のように開始秒を指定してメディアの先頭から再生するように指示します。
ここまでで、ライブ配信の試聴を行うプレイヤーの実装は完了しました。
試聴テストを行う
作成したプレイヤーを実行する前に、何れかの方法で Castify プラットフォームにライブ配信を行う必要があります。
準備ができたらアプリを端末にデプロイして試聴を開始します。