セッションへのストリームの公開
アプリがVonage Videoセッションに接続すると、カメラとマイクを使ってセッションにオーディオ・ビデオストリームを公開します:
- 追加
publisherプロパティをMainActivityクラスに追加します。sessionプロパティ):
private var publisher: Publisher? = null
PublisherクラスはAndroid SDKで定義されています。
- を変更する。
onConnected()コールバックをSessionListenerを使ってストリームを設定し、公開する:
override fun onConnected(session: Session) {
Log.d(TAG, "onConnected: Connected to session: ${session.sessionId}")
publisher = Publisher.Builder(this@MainActivity).build().apply {
setPublisherListener(publisherListener)
renderer.setStyle(
BaseVideoRenderer.STYLE_VIDEO_SCALE,
BaseVideoRenderer.STYLE_VIDEO_FILL
)
}
// Add the publisher view to the UI
publisherView = publisher?.view
// Publish the stream to the session
session.publish(publisher)
}
上記のコードでは Publisher.Builder() を使用して、Publisher オブジェクトをインスタンス化します。コンストラクタは1つのパラメータを受け取ります。このプロセスに関連付けられたコンテキストです(ただし、本番アプリでは異なる場合があります)。
について Publisher.setPublisherListener() メソッドは PublisherListener インターフェースを実装するオブジェクトを設定します。このインターフェイスには、パブリッシャー関連のイベントに応答して呼び出されるコールバックメソッドが含まれています。
重要だ: 使用するコンテキストは、特定のユースケースによって異なります。しかし、通常は、セッションがアクティビティの外(たとえば、アクティビティとアクティビティの間)に存在することが望まれます。本番アプリケーションでは、アクティビティコンテキストではなく、アプリケーションコンテキストを使うのが便利です。
このコードでは、パブリッシャー・オブジェクトを Session.publish() メソッドを使用します。このメソッドは、Androidデバイスのカメラとマイクを使用して、オーディオ・ビデオ・ストリームをセッションに公開します。(Android仮想デバイスでは、Android SDKはストリームを公開するときにテストビデオを使用することに注意してください)。
パブリッシャ・オブジェクトは getView() を返し、Android Viewオブジェクトを返します。このビューは、デバイスのカメラからキャプチャされたビデオを表示します。このコードでは、このビューを publisherView オブジェクトがある。
- イベントを記録するには
publisherListenerプロパティをsessionListenerのMainActivity:
private val publisherListener = object : PublisherKit.PublisherListener {
override fun onStreamCreated(publisherKit: PublisherKit, stream: Stream) {
Log.d(TAG, "onStreamCreated: Publisher Stream Created. Stream ID: ${stream.streamId}")
}
override fun onStreamDestroyed(publisherKit: PublisherKit, stream: Stream) {
Log.d(TAG, "onStreamDestroyed: Publisher Stream Destroyed. Stream ID: ${stream.streamId}")
}
override fun onError(publisherKit: PublisherKit, opentokError: OpentokError) {
Log.e(TAG, "PublisherKit onError: ${opentokError.message}")
}
}
Publisher クラスは PublisherKit クラス (Android SDK で定義) を継承しています。PublisherKit クラスは、高度なパブリッシャー (カスタムビデオキャプチャやレンダラーを使用するパブリッシャーなど) を作成するために使用できる基本クラスです。
これは PublisherListener のメソッドがある:
onStreamCreated(publisherKit, stream)- パブリッシャーがセッションへのストリーミングを開始する時に呼ばれる。onStreamDestroyed(publisherKit, stream)- パブリッシャーがセッションへのストリーミングを停止した時に呼ばれる。onError(error)- クライアントがセッションへの発行に失敗したときに呼び出されます。クライアントがOpentokErrorオブジェクトがメソッドに渡される。
基本的なビデオチャット
Vonage Video API プラットフォームの基本概念(ビデオ、音声、メッセージングによるユーザ間のコミュニケーション方法など)を学びます。Vonage Video API の基本的なフローを説明します。