Skip to content

Commit 2aacd3a

Browse files
rulongzhangMinTate
authored andcommitted
【TUICallKit】Open AITranscriber by default
1 parent d9f28cd commit 2aacd3a

12 files changed

Lines changed: 73 additions & 2 deletions

File tree

atomic_x/src/main/java/io/trtc/tuikit/atomicx/callview/public/transcriber/CallTranscriberView.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ package io.trtc.tuikit.atomicx.callview.public.transcriber
33
import android.content.Context
44
import android.view.LayoutInflater
55
import android.widget.FrameLayout
6+
import android.widget.TextView
67
import androidx.constraintlayout.utils.widget.ImageFilterButton
78
import androidx.core.view.isVisible
89
import io.trtc.tuikit.atomicx.R
910
import io.trtc.tuikit.atomicx.ai.TranscriberView
11+
import io.trtc.tuikit.atomicxcore.api.ai.AITranscriberStore
1012
import io.trtc.tuikit.atomicxcore.api.ai.SourceLanguage
1113
import io.trtc.tuikit.atomicxcore.api.ai.TranslationLanguage
1214
import io.trtc.tuikit.atomicxcore.api.call.CallParticipantStatus
@@ -22,6 +24,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
2224
private var subscribeStateJob: Job? = null
2325
private var btnShowTranscriber: ImageFilterButton? = null
2426
private var transcriberView: TranscriberView? = null
27+
private var emptyHintView: TextView? = null
2528

2629
init {
2730
initView()
@@ -32,6 +35,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
3235
subscribeStateJob = CoroutineScope(Dispatchers.Main).launch {
3336
supervisorScope {
3437
launch { observeSelfInfo() }
38+
launch { observeRealtimeMessages() }
3539
}
3640
}
3741
}
@@ -45,6 +49,8 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
4549
LayoutInflater.from(context).inflate(R.layout.callview_ai_transcriber, this)
4650
btnShowTranscriber = findViewById(R.id.call_btn_ai_transcriber)
4751
transcriberView = findViewById(R.id.call_view_ai_transcriber)
52+
emptyHintView = findViewById(R.id.call_tv_ai_transcriber_empty_hint)
53+
4854

4955
btnShowTranscriber?.setOnClickListener {
5056
val isVisible = transcriberView?.isVisible == false
@@ -53,6 +59,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
5359
else R.drawable.callview_ic_ai_transcriber_off
5460
)
5561
transcriberView?.isVisible = isVisible
62+
updateHintViewVisible()
5663
}
5764
}
5865

@@ -66,6 +73,19 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
6673
TranscriberView.currentTranslationLanguage = TranslationLanguage.ENGLISH
6774
TranscriberView.isBilingualEnabled = true
6875
}
76+
updateHintViewVisible()
77+
}
78+
}
79+
80+
private suspend fun observeRealtimeMessages() {
81+
AITranscriberStore.shared.transcriberState.realtimeMessageList.collect { messages ->
82+
updateHintViewVisible()
6983
}
7084
}
85+
86+
private fun updateHintViewVisible() {
87+
val isEmpty = AITranscriberStore.shared.transcriberState.realtimeMessageList.value.isEmpty()
88+
val isShow = transcriberView?.isVisible == true
89+
emptyHintView?.isVisible = isShow && isEmpty
90+
}
7191
}

atomic_x/src/main/res-callview/layout/callview_ai_transcriber.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,17 @@
2525
android:layout_marginBottom="@dimen/spacing_8"
2626
app:layout_constraintBottom_toBottomOf="parent" />
2727

28+
<TextView
29+
android:id="@+id/call_tv_ai_transcriber_empty_hint"
30+
android:layout_width="0dp"
31+
android:layout_height="0dp"
32+
android:gravity="center"
33+
android:text="@string/callview_ai_transcriber_empty_hint"
34+
android:textColor="@color/callview_color_text_hint"
35+
android:textSize="18sp"
36+
app:layout_constraintStart_toStartOf="@+id/call_view_ai_transcriber"
37+
app:layout_constraintEnd_toEndOf="@+id/call_view_ai_transcriber"
38+
app:layout_constraintTop_toTopOf="@+id/call_view_ai_transcriber"
39+
app:layout_constraintBottom_toBottomOf="@+id/call_view_ai_transcriber"/>
40+
2841
</androidx.constraintlayout.widget.ConstraintLayout>

call/tuicallkit-kt/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/manager/CallManager.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.tencent.qcloud.tuikit.tuicallkit.manager
22

33
import android.content.Context
4+
import android.util.Log
45
import com.tencent.cloud.tuikit.engine.call.TUICallDefine
56
import com.tencent.cloud.tuikit.engine.call.TUICallEngine
67
import com.tencent.cloud.tuikit.engine.common.TUICommonDefine
78
import com.tencent.imsdk.BaseConstants
9+
import com.tencent.imsdk.v2.V2TIMManager
10+
import com.tencent.imsdk.v2.V2TIMValueCallback
811
import com.tencent.qcloud.tuicore.TUIConfig
912
import com.tencent.qcloud.tuicore.util.ErrorMessageConverter
1013
import com.tencent.qcloud.tuicore.util.SPUtils
@@ -280,7 +283,14 @@ class CallManager private constructor(context: Context) {
280283
sourceLanguage = SourceLanguage.CHINESE_ENGLISH,
281284
translationLanguages = mutableListOf(TranslationLanguage.ENGLISH)
282285
)
283-
AITranscriberStore.shared.startRealtimeTranscriber(transcriberConfig, null)
286+
AITranscriberStore.shared.startRealtimeTranscriber(transcriberConfig, object : CompletionHandler {
287+
override fun onSuccess() {
288+
observerTranscriber()
289+
}
290+
291+
override fun onFailure(code: Int, desc: String) {
292+
}
293+
})
284294
closeVAD()
285295
}
286296

@@ -317,6 +327,20 @@ class CallManager private constructor(context: Context) {
317327
TRTCCloud.sharedInstance(context).callExperimentalAPI(closeObj.toString())
318328
}
319329

330+
private fun observerTranscriber() {
331+
val param = JSONObject().apply {
332+
put("UIComponentType", 1402)
333+
}.toString()
334+
V2TIMManager.getInstance()
335+
.callExperimentalAPI("reportTUIFeatureUsage", param, object : V2TIMValueCallback<Any> {
336+
override fun onSuccess(t: Any?) {
337+
}
338+
override fun onError(code: Int, desc: String?) {
339+
Log.e(TAG, "reportFeatureUsage failed: $code $desc")
340+
}
341+
})
342+
}
343+
320344
private fun convertErrorMsg(errorCode: Int, errMsg: String): String {
321345
if (errorCode == BaseConstants.ERR_SVR_MSG_IN_PEER_BLACKLIST) {
322346
return context.getString(R.string.callkit_error_in_peer_blacklist)

call/tuicallkit-kt/src/main/java/com/tencent/qcloud/tuikit/tuicallkit/state/GlobalState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class GlobalState private constructor() {
1313
var enableFloatWindow: Boolean = true
1414
var enableIncomingBanner: Boolean = false
1515
var enableVirtualBackground: Boolean = false
16-
var enableAITranscriber: Boolean = false
16+
var enableAITranscriber: Boolean = true
1717
var orientation = Constants.Orientation.Portrait
1818
var enableForceUseV2API = false
1919
var disableControlButtonSet: MutableSet<Constants.ControlButton> = CopyOnWriteArraySet()

call/tuicallkit-kt/src/main/res/values-ar/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,6 @@
5050
<string name="callkit_toast_other_party_no_response">الطرف الآخر لم يرد</string>
5151
<string name="callkit_toast_other_party_busy">الطرف الآخر مشغول</string>
5252
<string name="callkit_toast_other_party_cancelled">الطرف الآخر ألغى المكالمة</string>
53+
54+
<string name="callview_ai_transcriber_empty_hint">ترجمة فورية بالذكاء الاصطناعي</string>
5355
</resources>

call/tuicallkit-kt/src/main/res/values-en/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,6 @@
5252
<string name="callkit_toast_other_party_no_response">The other party did not respond</string>
5353
<string name="callkit_toast_other_party_busy">The other party is busy</string>
5454
<string name="callkit_toast_other_party_cancelled">The other party has cancelled the call</string>
55+
56+
<string name="callview_ai_transcriber_empty_hint">AI Real-time Subtitles</string>
5557
</resources>

call/tuicallkit-kt/src/main/res/values-ja/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@
4848
<string name="callkit_toast_other_party_no_response">相手が応答しませんでした</string>
4949
<string name="callkit_toast_other_party_busy">相手は通話中です</string>
5050
<string name="callkit_toast_other_party_cancelled">相手が通話をキャンセルしました</string>
51+
52+
<string name="callview_ai_transcriber_empty_hint">AI リアルタイム字幕</string>
5153
</resources>

call/tuicallkit-kt/src/main/res/values-zh-rHK/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,6 @@
5252
<string name="callkit_toast_other_party_no_response">對方無應答</string>
5353
<string name="callkit_toast_other_party_busy">對方忙線中</string>
5454
<string name="callkit_toast_other_party_cancelled">對方已取消通話</string>
55+
56+
<string name="callview_ai_transcriber_empty_hint">AI 實時字幕</string>
5557
</resources>

call/tuicallkit-kt/src/main/res/values-zh-rTW/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,6 @@
5151
<string name="callkit_toast_other_party_no_response">對方無應答</string>
5252
<string name="callkit_toast_other_party_busy">對方忙線中</string>
5353
<string name="callkit_toast_other_party_cancelled">對方已取消通話</string>
54+
55+
<string name="callview_ai_transcriber_empty_hint">AI 實時字幕</string>
5456
</resources>

call/tuicallkit-kt/src/main/res/values-zh/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,6 @@
5050
<string name="callkit_toast_other_party_no_response">对方无应答</string>
5151
<string name="callkit_toast_other_party_busy">对方忙线中</string>
5252
<string name="callkit_toast_other_party_cancelled">对方已取消通话</string>
53+
54+
<string name="callview_ai_transcriber_empty_hint">AI 实时字幕</string>
5355
</resources>

0 commit comments

Comments
 (0)