[M2] 视频取消取第一帧逻辑

This commit is contained in:
wangmingjun
2023-03-06 21:09:34 +08:00
parent ed8900aab3
commit f92c6f6b34
3 changed files with 47 additions and 20 deletions

View File

@@ -1,6 +1,9 @@
package com.mogo.och.bus.passenger.model
import android.content.Context
import android.media.AudioAttributes
import android.media.AudioFocusRequest
import android.media.AudioManager
import android.net.ConnectivityManager
import android.os.Handler
import com.mogo.commons.module.intent.IMogoIntentListener
@@ -155,28 +158,28 @@ class PM2DrivingModel private constructor() {
private fun speakTTS(msg: String) {
// var mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager
// var mAudioAttributes = AudioAttributes.Builder()
// .setUsage(AudioAttributes.USAGE_MEDIA) //设置声音的用途
// .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //设置声音的类型
// .build()
// var mAudioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型
// .setAudioAttributes(mAudioAttributes) //设置声音属性
// .setAcceptsDelayedFocusGain(false) //设置接受延迟获取焦点需要设置OnAudioFocusChangeListener来监听焦点的获取
// .build()
// mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点
var mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager
var mAudioAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA) //设置声音的用途
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //设置声音的类型
.build()
var mAudioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) //设置焦点类型
.setAudioAttributes(mAudioAttributes) //设置声音属性
.setAcceptsDelayedFocusGain(false) //设置接受延迟获取焦点需要设置OnAudioFocusChangeListener来监听焦点的获取
.build()
mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(msg,AIAssist.LEVEL0,object : IMogoVoiceCmdCallBack{
override fun onSpeakEnd(speakText: String?) {
// mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
override fun onSpeakError(speakText: String?, errorMsg: String?) {
// mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
override fun onSpeakSelectTimeOut(speakText: String?) {
// mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}
})
}

View File

@@ -1,6 +1,7 @@
package com.mogo.och.bus.passenger.ui.widget.video
import android.content.Context
import android.media.AudioManager
import android.util.AttributeSet
import com.shuyu.gsyvideoplayer.utils.Debuger
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
@@ -79,4 +80,24 @@ class AdvanceGSYVideoPlayer: StandardGSYVideoPlayer {
setViewShowState(mThumbImageViewLayout, INVISIBLE)
setViewShowState(mThumbImageView, INVISIBLE)
}
//失去焦点声音压低
override fun onLossTransientCanDuck() {
// setStreamVolume(0.2f)
}
//获取焦点声音恢复
override fun onGankAudio() {
// setStreamVolume(5.0f)
}
private fun setStreamVolume(percent: Float){
var mAudioManager = mContext?.getSystemService(Context.AUDIO_SERVICE) as AudioManager
var maxVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
var volume = (percent * maxVolume).toInt()
if (volume < 0 ){
volume = 0
}
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,volume,0)
}
}

View File

@@ -17,6 +17,7 @@ import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.ThreadPoolService
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.common.module.utils.OCHThreadPoolManager
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import java.lang.Exception
@@ -88,13 +89,13 @@ class AdvanceVideoView @JvmOverloads constructor(
// BitmapHelper.getVideoThumbnail(path) /*获取第一帧图*/
cacheImage?.setImageResource(R.drawable.m2_p_video_holder)
setCacheImageViewVisible()
ThreadPoolService.execute {
var bitmap = BitmapHelper.getVideoThumbnail(fileNetPath)
// OCHThreadPoolManager.getsInstance().execute {
// var bitmap = BitmapHelper.getVideoThumbnail(fileNetPath)
Logger.d(ImageAndVideoRotation.TAG, "setVideoPath")
ThreadUtils.runOnUiThread {
Logger.d(ImageAndVideoRotation.TAG, "bitmap加载")
// ThreadUtils.runOnUiThread {
// Logger.d(ImageAndVideoRotation.TAG, "bitmap加载")
cacheImage?.let {
Glide.with(context).load(bitmap)
Glide.with(context).load(cacheImageUrl)
.apply(
RequestOptions().placeholder(R.drawable.m2_p_video_holder)
.error(R.drawable.m2_p_video_holder)
@@ -103,8 +104,8 @@ class AdvanceVideoView @JvmOverloads constructor(
)
.into(it)
}
}
}
// }
// }
}
fun clearLocalErrorVideo(){
@@ -131,6 +132,7 @@ class AdvanceVideoView @JvmOverloads constructor(
//判断是否已经下载
if (downloadVideoName.isNotEmpty()){
if (FileUtils.isFileExists(Config.downLoadPath + downloadVideoName)){
Logger.d(ImageAndVideoRotation.TAG, "have cache startPlay")
startPlay()
return
}
@@ -140,6 +142,7 @@ class AdvanceVideoView @JvmOverloads constructor(
private fun startDownLoadVideo(){
//下载视频, 下载成功后再播放
Logger.d(ImageAndVideoRotation.TAG, "startDownLoadVideo")
DownloadUtils.downLoad(context,fileNetPath, Config.downLoadPath
,downloadVideoName,5,downListener)
}