Appをダウンロードしてインストールすると、TRTC通話の効果を体験できます。
発呼側 | 着呼側 |
---|---|
![]() |
![]() |
注意:オーディオビデオ通話機能を素早く実装できるように、当社はTUICallingコンポーネントをリモデルし、通話UIをTUICallingコンポーネントの内部に実装しました。お客様がUIに気をつかう必要はありません。
TestVideoCall
)を入力して、作成**をクリックします。注意:本機能はTencent CloudTRTCとIMという2つの基本的なPaaSサービスを同時に使用し、TRTCをアクティブにした後、IMサービスを同期的にアクティブにすることができます。IMは付加価値サービスであり、課金ルールの詳細については、Instant Messagingの価格説明をご参照ください。
クリックしてTUICallingに進み、ソースコードを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以降)を使用してソースコードプロジェクトTUICalling
を開き、実行をクリックすれば、このAppのデバッグが開始されます。
注意:体験アプリケーションには、少なくとも2台のデバイスが必要です。
ソースコードのSource
フォルダの中にはuiとmodelの2つのサブフォルダが含まれています。そのうち、modelフォルダには外部に公開しているオープンソースコンポーネントTUICallingManagerが含まれています。TUICalling.java
ファイルの中でこのコンポーネントが提供するインターフェース関数を見つけることができます。
オープンソースコンポーネントTUICallingのTUICallingManagerをそのまま使用し、オーディオビデオ通話機能を手軽に実装することができます。もう複雑な通話UIやロジックの実装をご自身で行う必要はありません。
オーディオビデオ通話コンポーネントTUICallingは、TRTC SDKとIM SDKに依存しています。次の手順で2つのSDKをプロジェクトに統合することができます。
dependenciesにTRTCSDKとIMSDKの依存を追加します。
dependencies {
compile "com.tencent.liteav:LiteAVSDK_TRTC:latest.release"
compile 'com.tencent.imsdk:imsdk:latest.release'
// 当社はgson解析を使用していますので、さらにgoogle のGsonに依存する必要はありません。
compile 'com.google.code.gson:gson:latest.release'
}
defaultConfigでAppが使用するCPUアーキテクチャを指定します。
defaultConfig {
ndk {
abiFilters "armeabi-v7a"
}
}
Sync Nowをクリックし、SDKを同期します。
説明:mavenCentralへのネットワーク接続に問題がない場合、SDKは自動的にダウンロードされ、プロジェクトに統合されます。
開発環境でのmavenCentralリポジトリへのアクセスが遅い場合は、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.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus" />
proguard-rules.proファイルでは、SDK関連を非難読化リストに追加します。
-keep class com.tencent.** { *; }
Sourceディレクトリをプロジェクトにコピーし、 setting.gradle
へのインポートを完了します。以下をご参照ください。
include ':Source'
TUICallingManager.sharedInstance()
を呼び出し、コンポーネントを初期化します。TUILogin.init(context, SDKAppID, config, listener)
を呼び出し、ログインを初期化します。TUILogin.login(userId, userSig, callback)
を呼び出し、コンポーネントのログインを完了します。このうちの重要なパラメータの入力については、下表をご参照ください。パラメータ名 | 作用 |
---|---|
SDKAppID | TRTCコンソール で SDKAppIDを表示できます。 |
userId | 現在のユーザーID。文字列タイプでは、英語のアルファベット(a-zとA-Z)、数字(0-9)、ハイフン(-)とアンダーライン(_)のみ使用できます。業務の実際のアカウントシステムと組み合わせてご自身で設定することをお勧めします。 |
userSig | Tencent Cloudによって設計されたセキュリティ保護署名。計算方法についてはUserSigの計算方法をご参照ください。 |
config | SDKの設定。ログレベルおよびログコールバック(nullを渡すことも可能)の設定に使用します。詳細については、下記サンプルコードをご参照ください。 |
listener | IMリスナー。いくつかの必要なシステムコールバック通知の受信に使用します。例:キックアウトによるオフライン、userSig期限切れなど。詳細については、下記サンプルコードをご参照ください。 |
callback | ログイン結果リスナー。ログイン成功の有無を通知します。詳細については、下記サンプルコードをご参照ください。 |
// コンポーネントの初期化
TUICallingManager manager = TUICallingManager.sharedInstance();
// ログイン
V2TIMSDKConfig config = new V2TIMSDKConfig();
config.setLogLevel(V2TIMSDKConfig.V2TIM_LOG_DEBUG);
config.setLogListener(new V2TIMLogListener() {
@Override
public void onLog(int logLevel, String logContent) {
}
});
TUILogin.init(this, ${あなたのSDKAPPID}, config, new V2TIMSDKListener() {
@Override
public void onKickedOffline() { // ログインがキックアウトされたオフライン通知
mIsKickedOffline = true;
checkUserStatus();
}
@Override
public void onUserSigExpired() { // suerSig期限切れ通知
mIsUserSigExpired = true;
checkUserStatus();
}
});
TUILogin.login("${あなたのuserId}", "${あなたのuserSig}", new V2TIMCallback() {
@Override
public void onError(int code, String msg) {
Log.d(TAG, "code: " + code + " msg:" + msg);
}
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess");
}
});
call();
メソッドを呼び出して通話リクエストを送信し、ユーザーIDの配列(userids)と通話タイプ(type)を渡します。通話タイプパラメータはTUICalling.Type.AUDIO
(オーディオ通話)またはTUICalling.Type.VIDEO
(ビデオ通話)を渡します。ユーザーID配列(userids)のuserIdが1つのみの時は、シングル通話と見なされ、ユーザーID配列(userids)のuserIdが複数(>=2)の時は多人数通話と見なされます。// 1. コンポーネントの初期化
TUICallingManager manager = TUICallingManager.sharedInstance();
// 2. リスナーの登録
manager.setCallingListener(new TUICalling.TUICallingListener() {
@Override
public boolean shouldShowOnCallView() {
return true;
}
@Override
public void onCallStart(String[] userIDs, TUICalling.Type type, TUICalling.Role role, final View tuiCallingView) {
if (!shouldShowOnCallView() || null == tuiCallingView) {
return;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
mCallingView = tuiCallingView;
addContentView(tuiCallingView, params);
}
});
}
@Override
public void onCallEnd(String[] userIDs, TUICalling.Type type, TUICalling.Role role, long totalTime) {
removeView();
}
@Override
public void onCallEvent(TUICalling.Event event, TUICalling.Type type, TUICalling.Role role, String message) {
if (TUICalling.Event.CALL_FAILED == event) {
removeView();
}
}
});
// 3.電話をかけます
manager.call(userIDs, TUICalling.Type.VIDEO);
説明:ビジネスの位置付けがオンラインカスタマーサービスなどのオフライン応答機能を必要としないシーンである場合は、上記[手順1](#model.step1)-[手順5](#model.step5)の対応で問題ありません。 しかし、ビジネスの位置付けがソーシャルシーンである場合は、オフライン応答を実装することをお勧めします。
IM SDKはオフラインプッシュをサポートしていますが、Androidの各スマートフォンメーカーは各自のオフラインプッシュサービスを備えていることから、iOSプラットフォームよりアクセスが複雑となり、利用基準を満たすためには、相応の設定を行う必要があります。
TUICallingコンポーネントのAPIインターフェースリストは次のとおりです。
インターフェース関数 | インターフェースの機能 |
---|---|
call | C2C通話に招待します |
receiveAPNSCalled | 被招待者として着信に応答します |
setCallingListener | リスナーを設定します |
setCallingBell | 着信音の設定(30s以内を推奨) |
enableMuteMode | ミュートモードをオンにします |
enableCustomViewRoute | カスタムビューをオンにします。オンにすると、呼び出し/被呼び出し開始コールバックの中で、CallingViewのインスタンスを受信します。開発者自身が表示方式を決定します。注意:フルスクリーンまたはスクリーンと同じ比率で表示する必要があります。そうしない場合、表示に異常が生じます |
この記事はお役に立ちましたか?