[media]
[收束tts]
This commit is contained in:
yangyakun
2025-07-22 10:52:09 +08:00
parent b6b4c21327
commit 0741ba8e99
37 changed files with 206 additions and 131 deletions

View File

@@ -5,19 +5,23 @@ import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.function.call.base.CallerBase
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.biz.media.audition.AuditionManager
import com.mogo.och.common.module.biz.media.IMediaListener
import com.mogo.och.biz.media.tts.VoiceIn
import com.mogo.och.biz.media.tts.VoiceOut
import com.mogo.och.common.module.biz.media.IVideoListener
import com.mogo.och.common.module.biz.media.MediaService
import com.mogo.och.common.module.biz.media.MusicDataChangeListener
import com.mogo.och.common.module.biz.media.data.MusicData
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.wigets.media.MediaItem
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
/**
* eye 桥
*/
@Route(path = OchCommonConst.BIZ_Media)
class MediaProvider : MediaService, CallerBase<IMediaListener>() {
class MediaProvider : MediaService, CallerBase<IVideoListener>() {
private var context: Context? = null
@@ -27,11 +31,11 @@ class MediaProvider : MediaService, CallerBase<IMediaListener>() {
this.context = context
}
override fun addMediaListener(tag: String, listener: IMediaListener) {
override fun addVideoListener(tag: String, listener: IVideoListener) {
addListener(tag, listener)
}
override fun removeBridgeListener(tag: String) {
override fun removeVideoListener(tag: String) {
removeListener(tag)
}
@@ -111,5 +115,37 @@ class MediaProvider : MediaService, CallerBase<IMediaListener>() {
return AuditionManager.musicList
}
override fun showNotice(
notice: String?,
level: Int,
delayed: Long,
callBack: IMogoTTSCallback?
) {
VoiceIn.showNotice(notice,level,delayed,callBack)
}
override fun showNotice(
listTTS: MutableList<LangTtsEntity>,
level: Int,
callBack: IMogoTTSCallback?
) {
VoiceIn.showNotice(listTTS,level,callBack)
}
override fun showNoticeOut(notice: String?) {
VoiceOut.showNoticeOut(notice)
}
override fun stopTTs() {
VoiceIn.stopCurrentTts()
}
override fun loadOuttts() {
VoiceOut.load()
}
override fun releaseOuttts() {
VoiceOut.release()
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.voice
package com.mogo.och.biz.media.tts
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.voice.AIAssist
@@ -14,43 +14,11 @@ import com.mogo.tts.base.LangTtsEntity
import com.mogo.tts.base.LanguageType
import com.mogo.tts.base.MultiLangTtsEntity
object VoiceNotice {
object VoiceIn {
const val onlyChinese = 1 //中文
const val chineseEnglishKorean = 1 shl 1 // 左移一位 中英韩
@JvmStatic
fun showNotice(notice: String?) {
showNotice(notice, AIAssist.LEVEL0)
}
@JvmStatic
fun showNoticeOut(notice: String?) {
save2Log("车外准备播放 内容${notice}")
notice?.let {
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
val outofVoice = OutofVoice(notice)
LanSocketManager.sendMsgToClient(outofVoice)
}else{
AIAssist.getInstance(AbsMogoApplication.getApp()).playVoiceOutside(notice)
}
}
}
@JvmStatic
fun showNotice(notice: String?, level: Int) {
showNotice(notice,level,0)
}
@JvmStatic
fun showNotice(notice: String?, delayed: Long) {
showNotice(notice, AIAssist.LEVEL0, delayed)
}
@JvmStatic
fun showNotice(notice: String?, delayed: Long,callback:IMogoTTSCallback ) {
showNotice(notice, AIAssist.LEVEL0, delayed,callback)
}
@JvmStatic
@@ -99,12 +67,6 @@ object VoiceNotice {
}
fun speakTTSVoiceWithLevel(text:String, level:Int, callBack:IMogoTTSCallback){
save2Log("准备播放${text}")
AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoiceWithLevel(text,level,callCallBack(callBack))
}
private fun callCallBack(callBack: IMogoTTSCallback?):IMogoTTSCallback{

View File

@@ -1,14 +1,29 @@
package com.mogo.och.common.module.voice
package com.mogo.och.biz.media.tts
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.OutofVoice
object OutOffVoice {
object VoiceOut {
@JvmStatic
fun showNoticeOut(notice: String?) {
VoiceIn.save2Log("车外准备播放 内容${notice}")
notice?.let {
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
val outofVoice = OutofVoice(notice)
LanSocketManager.sendMsgToClient(outofVoice)
}else{
AIAssist.getInstance(AbsMogoApplication.getApp()).playVoiceOutside(notice)
}
}
}
val outffListener = object : ILanMessageListener<OutofVoice> {
override fun targetLan(): Class<OutofVoice> {

View File

@@ -31,7 +31,7 @@ import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.utils.CallerBase
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.biz.media.VoiceNotice
import com.mogo.och.data.bean.BusStationBean
import com.mogo.och.data.bean.ContraiInfo
import com.mogo.och.data.bean.LineInfo

View File

@@ -3,7 +3,8 @@ package com.mogo.och.common.module.biz.media
import com.mogo.och.common.module.biz.media.data.MusicData
import com.mogo.och.common.module.wigets.media.MediaItem
interface IMediaListener {
interface IVideoListener {
fun diapatchMedia(list :MutableList<MediaItem>)
fun setMediaPause(){}
@@ -13,6 +14,7 @@ interface IMediaListener {
}
interface MusicDataChangeListener{
fun addOneData(it: MusicData){}
/**

View File

@@ -4,18 +4,20 @@ import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.och.common.module.biz.media.data.MusicData
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.wigets.media.MediaItem
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
object MediaManager {
private var mediaService: MediaService? =
ARouter.getInstance().build(OchCommonConst.BIZ_Media).navigation() as MediaService
fun addListener(tag:String, listener: IMediaListener){
mediaService?.addMediaListener(tag,listener)
fun addListener(tag:String, listener: IVideoListener){
mediaService?.addVideoListener(tag,listener)
}
fun removeListener(tag: String){
mediaService?.removeBridgeListener(tag)
mediaService?.removeVideoListener(tag)
}
fun postSiteIntroduceInfo(list: MutableList<MediaItem>){
@@ -89,4 +91,31 @@ object MediaManager {
}
object Tts{
fun loadOuttts(){
mediaService?.loadOuttts()
}
fun releaesOuttts(){
mediaService?.releaseOuttts()
}
fun showNotice(notice: String?, level: Int, delayed: Long = 0,callBack: IMogoTTSCallback?=null){
mediaService?.showNotice(notice,level,delayed,callBack)
}
fun showNotice(listTTS: MutableList<LangTtsEntity>, level: Int, callBack: IMogoTTSCallback?=null){
mediaService?.showNotice(listTTS,level,callBack)
}
fun stopTts(){
mediaService?.stopTTs()
}
fun showNoticeOut(notice: String?) {
mediaService?.showNoticeOut(notice)
}
}
}

View File

@@ -3,12 +3,14 @@ package com.mogo.och.common.module.biz.media
import com.alibaba.android.arouter.facade.template.IProvider
import com.mogo.och.common.module.biz.media.data.MusicData
import com.mogo.och.common.module.wigets.media.MediaItem
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
interface MediaService : IProvider {
fun addMediaListener(tag: String, listener: IMediaListener)
fun addVideoListener(tag: String, listener: IVideoListener)
fun removeBridgeListener(tag: String)
fun removeVideoListener(tag: String)
fun postSiteIntroduceInfo(list: MutableList<MediaItem>)
@@ -44,4 +46,16 @@ interface MediaService : IProvider {
fun getAuditionDataList(): MutableList<MusicData>
fun showNotice(notice: String?, level: Int, delayed: Long, callBack: IMogoTTSCallback?)
fun showNotice(listTTS: MutableList<LangTtsEntity>, level: Int, callBack: IMogoTTSCallback?=null)
fun stopTTs()
fun loadOuttts()
fun releaseOuttts()
fun showNoticeOut(notice: String?)
}

View File

@@ -0,0 +1,47 @@
package com.mogo.och.common.module.biz.media
import com.mogo.commons.voice.AIAssist
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
object VoiceNotice {
@JvmStatic
fun showNoticeOut(notice: String?) {
MediaManager.Tts.showNoticeOut(notice)
}
@JvmStatic
fun showNotice(notice: String?) {
showNotice(notice, AIAssist.LEVEL0)
}
@JvmStatic
fun showNotice(notice: String?, level: Int) {
showNotice(notice,level,0)
}
@JvmStatic
fun showNotice(notice: String?, level: Int, delayed: Long) {
showNotice(notice, level, delayed,null)
}
@JvmStatic
fun showNotice(notice: String?, level: Int, delayed: Long = 0,callBack:IMogoTTSCallback?=null) {
MediaManager.Tts.showNotice(notice,level,delayed,callBack)
}
@JvmStatic
fun showNotice(listTTS: MutableList<LangTtsEntity>, level: Int,callBack: IMogoTTSCallback?=null) {
MediaManager.Tts.showNotice(listTTS,level,callBack)
}
/**
* 中断当前在播语音
*/
@JvmStatic
fun stopCurrentTts(){
MediaManager.Tts.stopTts()
}
}

View File

@@ -8,7 +8,6 @@ import android.os.Build
import androidx.annotation.RequiresApi
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.voice.AIAssist
import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.GsonUtils
@@ -18,7 +17,8 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager
import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg
import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.biz.media.VoiceNotice
import com.mogo.tts.base.IMogoTTSCallback
object LanSocketManager : LanSocketManagerJava() {
@@ -90,19 +90,18 @@ object LanSocketManager : LanSocketManagerJava() {
.build()
mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点
VoiceNotice
.speakTTSVoiceWithLevel(msg, AIAssist.LEVEL0, object : IMogoVoiceCmdCallBack {
override fun onSpeakEnd(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
VoiceNotice.showNotice(msg,AIAssist.LEVEL0,0,object :IMogoTTSCallback{
override fun onSpeakEnd(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
override fun onSpeakError(speakText: String?, errorMsg: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
override fun onSpeakError(speakText: String?, errorMsg: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
override fun onSpeakSelectTimeOut(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
})
override fun onSpeakSelectTimeOut(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
})
}
}

View File

@@ -1,21 +1,11 @@
package com.mogo.och.common.module.wigets.media
import android.Manifest
import android.app.ActivityOptions
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.provider.Settings
import android.view.Display
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import com.mogo.eagle.core.function.main.MainLauncherActivity
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.utils.RxUtils
class MediaPlayerActivity : AppCompatActivity() {
@@ -24,7 +14,7 @@ class MediaPlayerActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_video_player)
val fragment = MediaPlayerFragment()
val fragment = VideoPlayerFragment()
supportFragmentManager.beginTransaction().add(R.id.videoPlayerContainer, fragment)
.commitAllowingStateLoss()
BarUtils.hideStatusBarAndSticky(this.window)

View File

@@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.media.IMediaListener
import com.mogo.och.common.module.biz.media.IVideoListener
import com.mogo.och.common.module.biz.media.MediaManager
import com.mogo.och.common.module.manager.download.DownloadManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -23,11 +23,11 @@ import kotlinx.android.synthetic.main.fragment_video_player.imageVideoRotationVi
* @author: wangmingjun
* @date: 2022/4/12
*/
class MediaPlayerFragment :
MvpFragment<MediaPlayerFragment?, MediaPlayerPresenter?>(), IMediaListener {
class VideoPlayerFragment :
MvpFragment<VideoPlayerFragment?, MediaPlayerPresenter?>(), IVideoListener {
companion object {
private val TAG = MediaPlayerFragment::class.java.simpleName
private val TAG = VideoPlayerFragment::class.java.simpleName
}
private var arrayListOf = mutableListOf<MediaItem>()
@@ -130,5 +130,5 @@ class MediaPlayerFragment :
}
}
class MediaPlayerPresenter(view: MediaPlayerFragment?) :
Presenter<MediaPlayerFragment?>(view)
class MediaPlayerPresenter(view: VideoPlayerFragment?) :
Presenter<VideoPlayerFragment?>(view)