セッションへの参加 — Android

を使用して セッションID そして トークン, OpenTok Android SDK を使用して OpenTok セッションに接続できます。

このトピックには以下のセクションが含まれます:

セッション ID および認証トークンの作成方法については、以下を参照してください。 セッション作成 そして トークン作成.

セッションオブジェクトの初期化

セッションに接続するには、まず Session.Builder() コンストラクタを呼び出し、適切なAndroidアプリケーションコンテキスト、OpenTok APIキー、およびセッションIDを引数として渡します。その後、 build() メソッドを使ってセッションオブジェクトを作成します:

mSession = new Session.Builder(context, API_KEY, SESSION_ID)
  .build();

を呼び出すことに注意してください。 Session.Builder.build() メソッドは 作成する OpenTok セッション。これにより、OpenTok セッションを表す Session オブジェクトが作成されます。Session オブジェクトへの参照を必ず保持してください。そうしないと、ガベージコレクションの対象となり、クラッシュや予期しない動作を引き起こす可能性があります。OpenTok セッションは、OpenTok のサーバーサイドライブラリを使用して作成します。詳しくは、 OpenTokセッションの作成.

基本的なセッション関連イベントのリスナー・オブジェクトを追加するには setSessionListener(Session.SessionListener listener) メソッドを呼び出します:

mSession.setSessionListener(this);

イベント・リスナー・オブジェクトとして指定したオブジェクトに、Session.SessionListener インタフェースのメソッドを実装します。これらのメソッドは、セッション関連のイベントが発生したときに呼び出されます。

セッションへの接続

に電話する。 Session.connect(token) メソッドに有効なトークンを渡す:

mSession.connect(TOKEN);

について Session.SessionListener.onConnected(Session session) このメソッドは、クライアントが OpenTok セッションに接続した際に呼び出されます。

@Override
protected void onConnected(Session session)
  // This client has connected to the session.
}

について Session.SessionListener.onError(Session session, OpentokError error) メソッドは、接続時にエラーが発生した場合に呼び出されます。の値の説明については、OpentokException.ErrorCode 列挙型のドキュメントを参照してください。 code プロパティを使用する。

@Override
public void onError(Session session, OpentokError error) {
  Log.i(LOGTAG, "Exception: " + error.getMessage());
}

セッションからの切断

セッションを切断するには Session.disconnect() メソッドを使用する。

mSession.disconnect();

切断の検出

について Session.SessionListener.onDisconnected(Session session) このメソッドは、クライアントがOpenTokセッションから切断されたときに呼び出されます。

@Override
public void onDisconnected(session) {
  // This client has disconnected to the session.
}

セッションへの接続が、接続成功後に発生したエラーによって切断された場合 Session.SessionListener.onError(Session session, OpentokError error) メソッドは Session.SessionListener.onDisconnected(Session session) メソッドに渡されます。メソッドに渡されるOpentokErrorオブジェクトは Session.SessionListener.onError(Session session, OpentokError error) メソッドは切断の理由を記述する。

自動再接続

クライアントは、予期せず接続が切断された場合(たとえば、ネットワーク接続が途絶えた場合など)、セッションへの自動再接続を試みます。 クライアントが切断および再接続した際に発生するイベントに対応したい場合を除き、クライアントが自動的に再接続するようにするためのコードを追加する必要はありません。これらのイベントの使用例については、 オープントック・リコネクション GitHubのレポにある。

接続が切断され、クライアントが再接続しようとすると Session.ReconnectionListener.onReconnecting(Session session) メソッドが呼び出される。接続が回復すると Session.ReconnectionListener.onReconnected(Session session) メソッドが呼び出されます。クライアントが接続を復元できない場合、クライアントは OpenTok セッションから切断され、 Session.SessionListener.onDisconnected(Session session) メソッドが呼び出される。

これらのイベントに応答して、アプリケーションは(オプションで)一時的な切断、再接続、切断の状態を示すユーザーインターフェース通知を表示することができる:

// In the implementation of the Session.ReconnectionListener interface
@Override
public void onReconnecting(session) {
  // Display a user interface notification.
}

public void onReconnected(session) {
  // Adjust user interface.
}

// In the implementation of the Session.SessionListener interface
@Override
public void onDisconnected(session) {
  // Adjust user interface.
}

クライアントがセッションから一時的に切断された場合、公開したストリームを購読しているクライアントにおける SubscriberKit.StreamListener インターフェースの実装内のメソッドは、公開したストリームが切断されたとき、および(もしあれば)自動的に再開されたときに呼び出されます。詳細については、 自動再接続 「ストリームの購読」開発者ガイドの該当セクション。

デフォルトでは、クライアントがセッションから一時的に切断されている間に送信したシグナルはすべてキューに入れられ、再接続に成功したときに(そして成功したときに)送信されます。このとき Session.sendSignal(String type, String data, Connection connection, boolean retryAfterReconnect) メソッドで retryAfterReconnect パラメータを false を使用して、切断中にシグナルがキューに入るのを防ぐことができます。詳しくは 自動再接続中に信号が送信されないようにする.

他のクライアントの接続と切断の検出

セッションに接続しているときは Session.ConnectionListener.onConnectionCreated(Session session, Connection connection) メソッドは、新しいクライアント(自分のクライアント以外)がセッションに接続したときに呼び出される。

について Session.ConnectionListener.onConnectionDestroyed(Session session, Connection connection) メソッドは、(自分以外の)クライアントがセッションから抜けるときに呼び出されます。このメソッドに渡される Connection オブジェクトは、セッションから離脱したコネクションを定義します。

これらの接続イベントのリスナー・オブジェクトを追加するには setConnectionListener(Session.ConnectionListener listener) メソッドを呼び出します:

mSession.setSessionListener(this);
@Override
public void onConnectionCreated(Session session, Connection connection)
{
  // New client connected to the session
}

@Override
public void onConnectionDestroyed(Session session, Connection connection)
{
  // A client disconnected from the session
}