Browse Source

fix: ci

master
高志龙 6 months ago
parent
commit
7d6237fdc2
  1. 10
      app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java
  2. 52
      app/src/main/java/qianmu/container/activity/program/MyPresentation.java
  3. 61
      app/src/main/java/qianmu/container/view/CustomerVideoView.java

10
app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java

@ -106,6 +106,7 @@ public class WebViewActivity extends BaseActivity {
private AICloudASRIntent aiCloudASRIntent;
private TTSUtil ttsUtil;
private String oldString="";
private String resultString = "";
// 语音听写对象
private ASR mAsr;
@ -665,7 +666,8 @@ public class WebViewActivity extends BaseActivity {
oldString = StringUtil.strSplice(oldString,parser.getText());
}
if(!"".equals(parser.getVar())){
voiceContent( StringUtil.strSplice(oldString,parser.getVar()));
resultString = StringUtil.strSplice(oldString,parser.getVar());
voiceContent(resultString);
}
}
}
@ -674,7 +676,7 @@ public class WebViewActivity extends BaseActivity {
public void onInit(int status) {
if (status == AIConstant.OPT_SUCCESS) {
LoggerUtil.e("ASRInit: ","初始化成功!");
} else {
} else if (status == AIConstant.OPT_FAILED) {
binding.web.evaluateJavascript("javascript: window.voiceContent('{\"data\":\"\",\"error\":\"初始化失败\",\"flag\":2}');", null);
}
}
@ -683,6 +685,7 @@ public class WebViewActivity extends BaseActivity {
public void onBeginningOfSpeech() {
//本地vad打开时,才会执行
oldString="";
resultString="";
LoggerUtil.e("ASRInit: ","onBeginningOfSpeech");
}
@ -698,7 +701,7 @@ public class WebViewActivity extends BaseActivity {
runOnUiThread(new Runnable() {
@Override
public void run() {
binding.web.evaluateJavascript("javascript: window.voiceContent('{\"data\":\"\",\"flag\":1}');", null);
binding.web.evaluateJavascript("javascript: window.voiceContent('{\"data\":\""+resultString+"\",\"flag\":1}');", null);
}
});
LoggerUtil.e("ASRInit: ","onEndOfSpeech");
@ -707,6 +710,7 @@ public class WebViewActivity extends BaseActivity {
@Override
public void onReadyForSpeech() {
oldString="";
resultString="";
LoggerUtil.e("ASRInit: ","onReadyForSpeech");
}

52
app/src/main/java/qianmu/container/activity/program/MyPresentation.java

@ -2665,7 +2665,17 @@ class MyPresentation extends Presentation {
videoView2.setOnPreparedListener(new CustomerVideoView.OnPreparedListener() {
@Override
public void onPrepared() {
videoStartPlay(videoView2, videoImg2, videoComponents0);
videoStartPlay(videoView2, videoImg2, videoComponents0, isvideoPlay0);
}
});
videoView2.setOnCompletionListener(new CustomerVideoView.OnCompletionListener() {
@Override
public void onCompletion() {
if(!LocSocCliManager.getLocalSocketState()){
// 视频播放完成时的操作
handler.sendEmptyMessage(TYPE_UPDATE_VIDEO0);
}
}
});
@ -2705,10 +2715,19 @@ class MyPresentation extends Presentation {
videoView3.setOnPreparedListener(new CustomerVideoView.OnPreparedListener() {
@Override
public void onPrepared() {
videoStartPlay(videoView3, videoImg3, videoComponents1);
videoStartPlay(videoView3, videoImg3, videoComponents1, isvideoPlay1);
}
});
videoView3.setOnCompletionListener(new CustomerVideoView.OnCompletionListener() {
@Override
public void onCompletion() {
if(!LocSocCliManager.getLocalSocketState()){
// 视频播放完成时的操作
handler.sendEmptyMessage(TYPE_UPDATE_VIDEO1);
}
}
});
//视频播放发送错误时回调
videoView3.setOnErrorListener(new CustomerVideoView.OnErrorListener() {
@Override
@ -2720,33 +2739,38 @@ class MyPresentation extends Presentation {
}
}
private void videoStartPlay(CustomerVideoView vView, ImageView imgView, NewProgramBean.components components){
vView.setOnInfoListener(() -> {
// if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
vView.setBackgroundColor(Color.TRANSPARENT);
imgView.setVisibility(View.GONE);
private void videoStartPlay(CustomerVideoView vView, ImageView imgView, NewProgramBean.components components, Boolean isPlay){
vView.setOnInfoListener(new CustomerVideoView.OnInfoListener() {
@Override
public void onInfo() {
//vView.clearBackground();
imgView.setVisibility(View.GONE);
}
});
//视频准备完毕,可以进行播放
Log.e("(双面屏)TAG","准备好视频,开始播放");
if( isvideoPlay0 ){
if( isPlay ){
handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
if(components.getConfig().isPlayAudio()){
vView.setVolume(15f);
}else {
vView.setVolume(0f);
}
vView.start();
}else{
Log.e("(双面屏)TAG","预加载播放暂停");
}else {
vView.start();
vView.setVolume(0f);
//暂停播放
handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY0,5000);
if(vView == videoView2){
handler.removeMessages(TYPE_STOP_VIDEO_PLAY0);
handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY0,5000);
}else{
handler.removeMessages(TYPE_STOP_VIDEO_PLAY1);
handler.sendEmptyMessageDelayed(TYPE_STOP_VIDEO_PLAY1,5000);
}
}
}
/**
* 更新video

61
app/src/main/java/qianmu/container/view/CustomerVideoView.java

@ -4,24 +4,24 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceView;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.VideoView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.PlaybackException;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.ui.StyledPlayerView;
/**
@ -30,7 +30,7 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
* Date: 2021/5/19
* Time: 13:59
*/
public class CustomerVideoView extends FrameLayout {
public class CustomerVideoView extends FrameLayout {
private StyledPlayerView playerView;
private ExoPlayer player;
@ -38,6 +38,7 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
private OnErrorListener onErrorListener;
private OnPreparedListener onPreparedListener;
private OnInfoListener onInfoListener;
private Boolean isFirstFame = false;
// 监听器接口,保持与 VideoView 兼容
public interface OnCompletionListener {
@ -81,21 +82,18 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
// 设置背景透明
playerView.setBackgroundColor(Color.TRANSPARENT);
playerView.setShutterBackgroundColor(Color.TRANSPARENT);
// 3. 设置使用透明背景
playerView.setUseArtwork(false); // 如果不需要 artwork
playerView.setDefaultArtwork(null); // 清除默认 artwork
// 4. 设置 SurfaceView 透明
View videoSurfaceView = playerView.getVideoSurfaceView();
if (videoSurfaceView != null) {
videoSurfaceView.setBackgroundColor(Color.TRANSPARENT);
// 如果使用 SurfaceView,设置格式支持透明
if (videoSurfaceView instanceof SurfaceView) {
Log.e("View: ","SurfaceView");
SurfaceView surfaceView = (SurfaceView) videoSurfaceView;
surfaceView.setZOrderOnTop(true); // 必须设置为 true 才能使透明生效
surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
replaceWithTextureView(playerView, (SurfaceView) surfaceView);
}else if (videoSurfaceView instanceof TextureView) {
// TextureView 默认支持透明
videoSurfaceView.setBackgroundColor(Color.TRANSPARENT);
@ -103,6 +101,25 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
}
}
private void replaceWithTextureView(StyledPlayerView playerView, SurfaceView oldSurface) {
ViewGroup parent = (ViewGroup) oldSurface.getParent();
if (parent != null) {
// 创建新的 TextureView
TextureView textureView = new TextureView(getContext());
textureView.setLayoutParams(oldSurface.getLayoutParams());
// 替换
int index = parent.indexOfChild(oldSurface);
parent.removeView(oldSurface);
parent.addView(textureView, index);
// 设置到播放器
if (playerView.getPlayer() != null) {
playerView.getPlayer().setVideoTextureView(textureView);
}
}
}
private void initializePlayer() {
// 创建 ExoPlayer 实例
player = new SimpleExoPlayer.Builder(getContext())
@ -129,15 +146,17 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
if (onCompletionListener != null) {
onCompletionListener.onCompletion();
}
isFirstFame = false;
}
if(playbackState == Player.STATE_READY){
Log.e("loadVideo: ","STATE_READY");
// 视频准备就绪
if (onPreparedListener != null) {
onPreparedListener.onPrepared();
}
if (playerView != null) {
playerView.setVisibility(VISIBLE);
playerView.setAlpha(0);
setVisibility(VISIBLE);
if(playerView != null && !isFirstFame){
playerView.setAlpha(0f);
}
}
}
@ -150,14 +169,19 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
}
@Override
public void onRenderedFirstFrame() {
// 视频开始渲染第一帧
Log.e("loadVideo: ","FirstFrame");
if (onInfoListener != null) {
onInfoListener.onInfo();
onInfoListener=null;
}
isFirstFame = true;
if(playerView != null){
playerView.setAlpha(1);
playerView.setAlpha(1f);
}
// postDelayed(new Runnable() {
// @Override
// public void run() {
// }
// }, 100);
}
});
}
@ -206,14 +230,16 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
@Override
public void setBackgroundColor(int color) {
super.setBackgroundColor(color);
if (color != Color.TRANSPARENT && playerView != null) {
playerView.setVisibility(GONE);
}
}
@Override
public void setBackgroundResource(int resid) {
super.setBackgroundResource(resid);
if (playerView != null) {
playerView.setVisibility(GONE);
playerView.setVisibility(INVISIBLE);
}
}
@ -345,3 +371,4 @@ import com.google.android.exoplayer2.ui.StyledPlayerView;
}
}

Loading…
Cancel
Save