ダウンロードからAppをインストールして、低遅延カラオケ、マイク管理、ギフトの送受信、文字チャットなどのChorusシーンにおけるTRTCの関連機能を含む、Chorusの機能を体験できます。
管理者によるマイク操作 | リスナーによるマイク操作 |
---|---|
Chorus機能にすばやくアクセスする必要がある場合、当社が提供するAppをもとに直接変更を加えて適応させるか、または当社が提供するTUIChorusコンポーネントでカスタマイズしたUIを実装することができます。
TestChorus
)を入力し、作成をクリックします。注意:本機能はTencent CloudのTRTCとIMという2つの基本的なPaaSサービスを同時に使用し、TRTCをアクティブにした後、IMサービスを同期的にアクティブにすることができます。IMは付加価値サービスであり、課金ルールの詳細については、Instant Messagingの料金説明をご参照ください。
クリックしてTUIChorusに進み、ソースコードをCloneまたはダウンロードします。
設定変更画面に進み、ダウンロードしたソースコードパッケージに基づき、対応する開発環境を選択します。
Android/Debug/src/main/java/com/tencent/liteav/debug/GenerateTestUserSig.java
のファイルを見つけて開きます。
GenerateTestUserSig.java
ファイル内の関連パラメータを設定します。
貼り付け完了後、貼り付けました。次のステップをクリックすれば、作成が完了します。
コンパイル完了後、 コンソール概要に戻る をクリックすれば終了です。
注意:
- ここで言及するUserSigの発行方法は、クライアントコードの中でのSECRETKEY設定となりますが、この手法のSECRETKEYは逆コンパイルによって逆クラッキングされやすく、キーがいったん漏洩すると、攻撃者がお客様のTencent Cloudトラフィックを盗用できるようになります。そのためこの手法は、ローカルのAppクイックスタートおよび機能デバッグにのみ適しています。
- UserSigの正しい発行方法は、UserSigの計算コードをサーバーに統合し、Appのインターフェース向けに提供します。UserSigが必要なときは、Appから業務サーバーにリクエストを発出し動的にUserSigを取得します。詳細はUserSigに関するご質問をご参照ください。
Android Studio(バージョン3.5以降)を使用してソースコードTUIChorus
プロジェクトを開き、実行をクリックすれば、このAppのデバッグが開始されます。
ソースコードのSourceフォルダは、uiとmodelという2つのサブフォルダを含んでいます。uiフォルダにはインターフェースコードが含まれています。以下の表にファイルまたはフォルダおよび対応するUIをリストアップして、二次調整を行いやすくしています。
ファイルまたはフォルダ | 機能説明 |
---|---|
base | UIに使用される基礎となるクラス。 |
room | メインルームページは、管理者とリスナーという2種類のインターフェースがあります。 |
widget | 汎用ウィジェット。 |
注意:体験アプリケーションには、少なくとも2台のデバイスが必要です。
注意:ルームナンバーはユーザーAのルーム上部に表示されます。
ソースコード のSourceフォルダには、uiとmodelという2つのサブフォルダがあり、modelフォルダには再利用できるオープンソースコンポーネントTRTCChorusRoomがあります。TRTCChorusRoom.java
ファイルでこのコンポーネントが提供するインターフェース関数を確認し、対応するインターフェースを使用してカスタマイズしたUIを実装することができます。
ChorusコンポーネントTRTCChorusRoomは、TRTC SDKとIM SDKに依存し、次の手順で2つのSDKをプロジェクトに統合することができます。
方法1:Mavenリポジトリを介する依存
dependencies {
complie "com.tencent.liteav:LiteAVSDK_TRTC:latest.release"
complie 'com.tencent.imsdk:imsdk:latest.release'
complie 'com.google.code.gson:gson:2.3.1'
}
defaultConfig {
ndk {
abiFilters "armeabi-v7a"
}
}
方法2:ローカルAARを介する依存
開発環境でのMavenリポジトリへのアクセスが遅い場合は、ZIPパッケージを直接ダウンロードし、統合ドキュメントに従って手動でプロジェクトに統合することができます。
SDK | ダウンロードページ | 統合ガイド |
---|---|---|
TRTC SDK | DOWNLOAD | 統合ドキュメント |
IM SDK | DOWNLOAD | 統合ドキュメント |
AndroidManifest.xmlにAppの権限を設定します。SDKには次の権限が必要です(6.0以降のAndroidシステムではストレージ読み取りの権限を動的に申請する必要があります)。
<uses-permission android:name="android.permission.INTERNET">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE">
<uses-permission android:name="android.permission.RECORD_AUDIO">
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS">
<uses-permission android:name="android.permission.BLUETOOTH">
<uses-permission android:name="android.permission.READ_PHONE_STATE">
proguard-rules.proファイルでは、SDK関連を非難読化リストに追加します。
-keep class com.tencent.** { *; }
次のディレクトリ内のすべてのファイルをプロジェクトにコピーします。
Source/src/main/java/com/tencent/liteav/tuichorus/model
sharedInstance
インターフェースを呼び出すと、TRTCChorusコンポーネントのインスタンスオブジェクトを作成できます。setDelegate
関数を呼び出してコンポーネントのイベント通知を登録します。login
関数を呼び出してコンポーネントのログインを完了します。下表を参考にキーパラメータを入力してください。パラメータ名 | 作用 |
---|---|
sdkAppId | TRTCコンソール で SDKAppIDを表示できます。 |
userId | 現在のユーザーID。文字列タイプでは、英語のアルファベット(a-z、A-Z)、数字(0-9)、ハイフン(-)とアンダーライン(_)のみ使用できます。業務の実際のアカウントシステムと組み合わせてご自身で設定することをお勧めします。 |
userSig | Tencent Cloudによって設計されたセキュリティ保護署名。取得方法については、UserSigの計算方法をご参照ください。 |
callback | ログインのコールバック。成功時にcodeは0になります。 |
TRTCChorus mTRTCChorusRoom = TRTCChorusRoom.sharedInstance(this);
mTRTCChorusRoom.setDelegate(this);
mTRTCChorusRoom.login(SDKAPPID, userId, userSig, new TRTCChorusRoomCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
if (code == 0) {
//ログイン成功
}
}
});
setSelfProfile
を呼び出して自身のニックネームおよびプロフィール画像を設定することができます。createRoom
を呼び出して新しいChorusルームを作成します。この時、ルームID、マイク・オンにすることの管理者の確認の要否、マイク数などルームの属性情報を渡します。enterSeat
を自動的に呼び出して第1メインボーカルに参加します。onSeatListChange
マイクリスト変更イベント通知を受信します。この時、マイクリストの変更をUI上に更新することができます。onAnchorEnterSeat
というイベント通知も受信します。この時、マイク集音は自動的に開始されます。// 1.管理者は、ニックネームおよびプロフィール画像を設定します
mTRTCChorusRoom.setSelfProfile("my_name", "my_face_url", null);
// 2.管理者は、createRoomを呼び出してルームを作成します
final TRTCChorusRoomDef.RoomParam roomParam = new TRTCChorusRoomDef.RoomParam();
roomParam.roomName = "ルーム名";
roomParam.needRequest = false; // マイク・オンに対する管理者の確認の要否
roomParam.seatCount = 7; // ルームの座席数。ここでは計7席あり、管理者が1席を占め、残り6席がリスナーとなります
roomParam.coverUrl = "ルームカバー図のURL ";
mTRTCChorusRoom.createRoom(mRoomId, roomParam, new TRTCChorusRoomCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
if (code == 0) {
//3. 0番の席を占有します
mTRTCChorusRoom.enterSeat(0, new TRTCChorusRoomCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
if (code == 0) {
}
}
});
}
}
});
// 4.席の占有に成功した後、onSeatListChangeイベント通知を受信します
@Override
public void onSeatListChange(final List<trtcchorusroomdef.seatinfo> seatInfoList) {
// マイクリストの表示
}
// 5. onAnchorEnterSeatイベント通知を受信
@Override
public void onAnchorEnterSeat(TRTCChorusRoomDef.UserInfo userInfo) {
}
setSelfProfile
を呼び出して自身のニックネームおよびプロフィール画像を設定することができます。説明:App内のChorusルームリストはデモに使用するためだけのものです。Chorusルームリストの業務ロジックは千差万別です。現在、Tencent CloudはChorusルームリスト管理のサービスを提供していません。各自でご自分のChorusルームリストを管理してください。
getRoomInfoList
を呼び出してルームの詳細情報を取得します。この情報は、管理者側がcreateRoom
を呼び出してChorusルームを作成するときに設定する簡単な説明情報です。
注意:Chorusルームリストに十分に包括的な情報がある場合は、
getRoomInfoList
の呼び出しに関する手順をスキップできます。
enterRoom
を呼び出してルームナンバーを渡すと、そのルームに参加できます。onRoomInfoChange
ルーム属性変更イベント通知を受信します。この時、ルーム属性を記録し、それに応じた修正を行うことができます。例:UIに表示するルーム名、発言者にする際の管理者への同意リクエストの要否の記録など。onSeatListChange
マイクリスト変更イベント通知を受信します。この時、マイクリストの変更をUI上に更新することができます。onAnchorEnterSeat
のイベント通知も受信します。// 1.リスナーは、ニックネームおよびプロフィール画像を設定します
mTRTCChorusRoom.setSelfProfile("my_name", "my_face_url", null);
// 2.業務バックエンドから取得したルームリストをroomListと仮定します
List<integer> roomList = GetRoomList();
// 3. getRoomInfoListを呼び出すことによって、ルームの詳細情報を取得します
mTRTCChorusRoom.getRoomInfoList(roomList, new TRTCChorusRoomCallback.RoomInfoCallback() {
@Override
public void onCallback(int code, String msg, List<trtcchorusroomdef.roominfo> list) {
if (code == 0) {
// この時、自分のUIルームリストを更新することができます
}
}
});
// 4.Chorusを選択後、roomIdを渡して入室します
mTRTCChorusRoom.enterRoom(roomId, new TRTCChorusRoomCallback.ActionCallback() {
@Override
public void onCallback(int code, String msg) {
if (code == 0) {
//入室に成功
}
}
});
// 5.入室に成功後、onRoomInfoChangeイベント通知を受信します
@Override
public void onRoomInfoChange(TRTCChorusRoomDef.RoomInfo roomInfo) {
mNeedRequest = roomInfo.needRequest;
mRoomName = roomInfo.roomName;
// UIはタイトルなどを表示することができます
}
// 6.入室に成功後、onSeatListChangeイベント通知を受信します
@Override
public void onSeatListChange(final List<trtcchorusroomdef.seatinfo> seatInfoList) {
// マイクリストの表示
}
// 7. onAnchorEnterSeatイベント通知を受信します
@Override
public void onAnchorEnterSeat(TRTCChorusRoomDef.UserInfo userInfo) {
}
pickSeat
は、対応するマイクおよびリスナーのuserIdを渡し、視聴者を発言できるように招待できます。ルーム内の全メンバーはonSeatListChange
およびonAnchorEnterSeat
というイベント通知を受信します。kickSeat
は、対象となるマイクを渡した後、キックアウトしてマイク・オフにすることができます。ルーム内の全メンバーはonSeatListChange
およびonAnchorLeaveSeat
というイベント通知を受信します。closeSeat
は、対応するマイクを送信後、任意のマイクのクローズ/解除をすることができます。クローズ後は、リスナー側はこれ以上マイクを使用することはできません。ルーム内の全参加者はonSeatListChange
およびonSeatClose
というイベント通知を受信します。マイク管理では、リスナーがマイク・オン/オフにする場合や、管理者が視聴者を発言できるように招待する場合は、相手の同意を必要とせずに直接操作することができます。
Appにおいて相手の同意がなければ、次の操作の業務フローを実施できない場合は、招待シグナリングによって相応のサポートを行うことができます。
sendInvitation
を呼び出し、管理者のuserIdおよび業務のカスタムコマンドワードなどを渡します。この時、関数が1つのinviteIdを返しますので、このinviteIdを記録します。onReceiveNewInvitation
というイベント通知を受信します。この時UIでウィンドウをポップアップさせ、管理者に同意の有無をたずねることができます。acceptInvitation
を呼び出してinviteIdを渡します。onInviteeAccepted
というイベント通知を受信し、enterSeat
を呼び出してマイク・オンにします。// リスナー側の視点
// 1. sendInvitationを呼び出し、1号マイクの使用をリクエストします
String inviteId = mTRTCChorusRoom.sendInvitation("ENTER_SEAT", ownerUserId, "1", null);
// 2.招待のリクエスト同意を受信し、正式にマイク・オンになります
@Override
public void onInviteeAccepted(String id, String invitee) {
if(id.equals(inviteId)) {
mTRTCChorusRoom.enterSeat(1, null);
}
}
// 管理者側の視点
// 1.管理者がリクエストを受信します
@Override
public void onReceiveNewInvitation(final String id, String inviter, String cmd, final String content) {
if (cmd.equals("ENTER_SEAT")) {
// 2.管理者がリスナーのリクエストに同意します
mTRTCChorusRoom.acceptInvitation(id, null);
}
}
sendRoomTextMsg
によって通常のテキストメッセージを送信できるようになり、このルーム内のすべてのキャスターおよびリスナーがonRecvRoomTextMsg
のコールバックを受信することができます。// 発信側:テキストメッセージの発信
mTRTCChorusRoom.sendRoomTextMsg("Hello Word!", null);
// 受信側:テキストメッセージのモニタリング
mTRTCChorusRoom.setDelegate(new TRTCChorusRoomDelegate() {
@Override
public void onRecvRoomTextMsg(String message, TRTCChorusRoomDef.UserInfo userInfo) {
Log.d(TAG,"が" + userInfo.userName + "から受信したメッセージ:" + message);
}
});
sendRoomCustomMsg
によって、カスタム(シグナル)メッセージを送信できます。当該ルーム内のすべてのキャスターとリスナーがonRecvRoomCustomMsg
コールバックを受信できます。// 発信側:カスタマイズCmdによって弾幕と「いいね」情報を区別することができます
// eg:「CMD_DANMU」は弾幕コメントを表し、「CMD_LIKE」は「いいね」情報を表します
mTRTCChorusRoom.sendRoomCustomMsg("CMD_DANMU", "Hello world", null);
mTRTCChorusRoom.sendRoomCustomMsg("CMD_LIKE", "", null);
// 受信側:カスタムメッセージのモニタリング
mTRTCChorusRoom.setDelegate(new TRTCChorusRoomDelegate() {
@Override
public void onRecvRoomCustomMsg(String cmd, String message, TRTCChorusRoomDef.UserInfo userInfo) {
if ("CMD_DANMU".equals(cmd)) {
// 弾幕コメントの受信
Log.d(TAG, "が" + userInfo.userName + "から受信した弾幕コメント:" + message);
} else if ("CMD_LIKE".equals(cmd)) {
// 「いいね」情報の受信
Log.d(TAG, userInfo.userName + "いいねを付けました!");
}
}
});
この記事はお役に立ちましたか?