UIのカスタマイズ — Android
OpenTokの動画のユーザーインターフェースをカスタマイズするために、以下の設定を行うことができます:
- 公開ストリームに名前を追加する
- パブリッシャーにミュートボタンを追加する
- 加入者にミュートボタンを追加する
- パブリッシャーのカメラを切り替えるボタンの追加
- ビデオの有効/無効時のユーザーインターフェースの調整
- セッションがアーカイブされているときにインジケータ要素を表示する
- オーディオレベルに応じてユーザーインターフェースを調整
- カスタムビデオレンダラの使用
公開ストリームに名前を追加する
パブリッシャーの名前は name() メソッドを実行する必要があります。 パブリッシャー・オブジェクトをインスタンス化する:
mPublisher = new Publisher.Builder(context)
.name("Bob's video")
.build();
この名前を使用して、ストリームを公開しているクライアントを識別できます。ストリーム・クラスには name プロパティあなたが ストリームを購読するこの名前をユーザー・インターフェース要素に表示することができます。
出版社の「名前」欄に個人情報を使用しないこと — パブリッシャー名は、セッションの他の参加者に公開される可能性があり、またインスペクターツールやVonageの内部ログにも表示される可能性があるため、パブリッシャー名には、暗号化されていない機密情報や個人情報を決して使用しないでください。 セキュリティのベストプラクティスを参照してください.
パブリッシャーにミュートボタンを追加する
パブリッシャーのマイクをミュートするデフォルトのユーザーインターフェース要素はありません。しかし、ボタンなどの要素を追加して setPublishAudio() メソッドを呼び出します。を渡します。 false をミュートしてください:
mPublisher.setPublishAudio(false);
パス・イン true オーディオを公開する。
mPublisher.setPublishAudio(true);
加入者にミュートボタンを追加する
加入者の音声をミュートするデフォルトのユーザーインターフェイス要素はありません。しかし、ボタンなどの要素を追加して setSubscribeToAudio() メソッドを呼び出します。を渡します。 false 加入者をミュートする
mSubscriber.setSubscribeToAudio(false);
パス・イン true オーディオストリームがある場合)オーディオを購読する:
mSubscriber.setSubscribeToAudio(true);
パブリッシャーのカメラを切り替えるボタンの追加
パブリッシャーが使用するカメラを切り替えるデフォルトのユーザーインターフェース要素はありません。しかし、ボタンなどの要素を追加して swapCamera メソッドを呼び出します:
mPublisher.swapCamera();
に注意してほしい。 cameraPosition プロパティはPublisherKitクラスでは使用できません。PublisherKitクラスで カスタムビデオキャプチャーの実装カスタムビデオキャプチャコードで使用するカメラを定義することができます。
ビデオの有効/無効時のユーザーインターフェースの調整
加入者のビデオが無効になっている場合 SubscriberKit.VideoListener.onVideoDisabled(subscriber, reason) メソッドが呼び出される。この場合、ユーザー・インターフェース要素(アイコンなど)を追加して、動画が無効であることを示すことができます:
@Override
public void onVideoDisabled(SubscriberKit subscriber, String reason) {
// Display the video disabled indicator
}
加入者のビデオが再び有効になると SubscriberKit.VideoListener.onVideoEnabled(subscriber, reason) メソッドが呼び出されます。この場合、動画が再び有効になっていることを示すユーザーインターフェイス要素(アイコンなど)を削除することができます:
@Override
public void onVideoEnabled(SubscriberKit subscriber, String reason) {
// Display the video disabled indicator
}
を使用するセッションでは OpenTok メディアルーター (メディアモードがルーティングに設定されたセッション)、SubscriberKit.VideoListener は、以下のメソッドを呼び出すこともできます:
- onVideoDisableWarning(加入者) — OpenTok Media Router は、ストリームの画質が低下したと判断しました。画質がさらに低下した場合は、動画の再生が停止されます。
- onVideoDisableWarningLifted(加入者) — OpenTok Media Router は、ストリームの品質が改善され、動画の配信停止が差し迫ったリスクとはならないレベルに達したと判断しました。
また、これらのメッセージが送信されたときに、ユーザーインターフェイスの通知(アイコンなど)を表示したり、削除したりすることもできます。
ストリームを公開する際には、パブリッシャーおよびサブスクライバーのオーディオフォールバックを有効または無効にする点に注意してください。オーディオフォールバック機能は、ネットワークやCPUの状態が動画の再生に対応できない場合、パブリッシャーおよびサブスクライバーの動画を無効にします。詳しくは、 オーディオのフォールバック(Android).
パブリッシャーのオーディオフォールバックを有効にする場合は、 PublisherKit.VideoListener は、パブリッシャーオーディオのフォールバック関連のイベントに対して呼び出されます:
PublisherKit.VideoListener.onVideoDisabled(publisher, reason)PublisherKit.VideoListener.onVideoDisabled(publisher, reason)PublisherKit.VideoListener.onVideoDisableWarning(publisher)PublisherKit.VideoListener.onVideoDisableWarningLifted(publisher)
これらのイベントに応じて、UIインジケーターを表示することができます。
セッションがアーカイブされているときにインジケータ要素を表示する
セッションのアーカイブが録画を開始するとき(あるいは録画中のセッションに接続するとき)には Session.ArchiveListener.onArchiveStarted(session, name) メソッドが呼び出される。録画が停止すると Session.ArchiveListener.onArchiveStopped(session, name) メソッドが呼び出されます。パブリッシャー ビューに表示されるアイコンのようなユーザー インターフェイス要素を追加して、ビデオが録画中であることを示すことができます:
@Override
public void onArchiveStarted(Session session, String id, String name) {
// Display the archive indicator
}
@Override
public void onArchiveStopped(Session session, String id, String name) {
// Hide the archive indicator
}
オーディオレベルに応じてユーザーインターフェースを調整
について SubscriberKit.AudioLevelListener.onAudioLevelUpdated(subscriber, audioLevel) そして PublisherKit.AudioLevelListener.onAudioLevelUpdated(publsiher, audioLevel) メッセージは定期的に送信され、サブスクライバーとパブリッシャーの音声レベルが表示されます。メッセージは audioLevel オーディオレベルメーターの表示を更新するための値:
@Override
public void onAudioLevelUpdated(
SubscriberKit subscriber, float audioLevel) {
// Adjust an audio meter UI element based on the audioLevel value.
}
注: パブリッシャーのオーディオレベルは、そのストリームがセッションに公開されるまでは利用できません。パブリッシャーがセッションへのストリーミングを開始する前にオーディオをプレビューするには、 カスタムオーディオドライバ.
デフォルトでは、プライバシー保護のため、全てのパブリッシャーがミュートされると、オーディオキャプチャは停止され、マイクは解放されます。これはパブリッシャーインスタンスが再び音声を有効にするまで音声レベルの更新が行われないことを意味します。バージョン 2.31.0 以降では、パブリッシャーはミュート中でもオーディオキャプチャを継続できるようにプロパティが設定されています。
新しいパブリッシャーインスタンスをインスタンス化する際に、開発者はこの動作を有効にすることができます:
mPublisher = new Publisher.Builder(this).name(mUsername).allowAudioCaptureWhileMuted(true).build();
注意:この動作を有効にすると、パブリッシャーがミュート状態でもマイクが使用されます。
カスタムビデオレンダラの使用
Subscriber クラスと Publisher クラスは、ストリームをレンダリングし、ストリーム名の表示やマイクまたはカメラのミュートなどのユーザー インターフェイス制御を提供する、標準のビデオ レンダラーを実装します。SubscriberKit クラスと PublisherKit クラスを使用して、カスタム動画レンダラーを実装できます。
OpenTok Android SDK には、BaseVideoRenderer クラスが含まれています。このクラスをオーバーライドして、カスタム動画レンダラーを作成してください。
PublisherKit オブジェクトをインスタンス化した後に setRenderer() PublisherKitオブジェクトの
mPublisher = new PublisherKit(MyClass.this, "publisher");
// Use a custom video renderer.
// MyVideoRenderer extends BaseVideoRenderer
mRenderer = new MyVideoRenderer();
mPublisher.setRenderer(new mRenderer);
SubscriberKit クラスにも setRenderer() メソッドを使用する。
について onFrame() メソッドが呼び出されます:
public void onFrame(Frame frame) {
// The new frame is available.
}
について frame は BaseVideoRenderer.Frame オブジェクトです。このオブジェクトには getBuffer() これは、ビデオフレームデータを含むバイトバッファを返すものです。このバイトバッファを使って、パブリッシャーのビューにビデオフレーム画像を追加することができます。
例として、OpenTokHelloWorld サンプル・アプリケーションの OpenTokVideoRenderer クラスをご覧ください。
を使うようにパブリッシャーを設定することもできます。 カスタムビデオキャプチャ.