Ver código fonte

修复了广告期间按ok键依然弹出控制条的bug

lyn 6 anos atrás
pai
commit
2b47d6e512

+ 1 - 1
app/build.gradle

@@ -17,7 +17,7 @@ android {
         versionCode 4
         versionName "V1.0.4"
         ndk {
-            //APP的build.gradle设置支持的SO库架构
+            //APP的build.gradle设置支持的SOcom.sxyd.duduUp"库架构
             abiFilters 'armeabi-v7a'
         }
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

+ 1 - 1
app/src/main/java/com/hc/webapp/video/VideoControlDelegate.java

@@ -190,7 +190,7 @@ public class VideoControlDelegate implements VideoPauseDialog.OnPlayItemSelected
 
     @Override
     public void videoPaused() {
-        showPauseDialog(hadCollectedVideo, false);
+        //showPauseDialog(hadCollectedVideo, false);
     }
 
     @Override

+ 6 - 2
app/src/main/java/com/hc/webapp/web/AndroidToJS.java

@@ -384,16 +384,19 @@ public class AndroidToJS {
     @JavascriptInterface
     public String getUserId() {
         return getUserName();
+        //return "88CC451FD2B9";
     }
 
     @JavascriptInterface
     public String getEpgServer() {
         return getUserEpgServer();
+        //return "http://111.20.42.158:33200";
     }
 
     @JavascriptInterface
     public String getToken() {
         return getUserToken();
+        //return "tfS5k1pydxzjcy-Stj0i2vai4";
     }
 
     //陕西计费参数 end
@@ -486,6 +489,7 @@ public class AndroidToJS {
             cursor.moveToFirst();
             String userName = cursor.getString(cursor.getColumnIndexOrThrow("value"));
             Log.d(TAG,"userName:" + userName);
+            //userName = "88CC451FD2B9";
             return userName;
         }catch (Exception e){
             e.printStackTrace();
@@ -500,7 +504,7 @@ public class AndroidToJS {
             cursor.moveToFirst();
             String userToken = cursor.getString(cursor.getColumnIndexOrThrow("value"));
             //userToken = "nBoKXx@OHP3fUP6fmcypIgl135856057";
-            //userToken = "Se48ja9jiqjq-Stjhd4izfd";
+            //userToken = "tfS568geiL4fj5-Stj0i0r8t5";
             Log.d(TAG,"userToken:" + userToken);
             return userToken;
         }catch (Exception e){
@@ -516,7 +520,7 @@ public class AndroidToJS {
             cursor.moveToFirst();
             String epgServer = cursor.getString(cursor.getColumnIndexOrThrow("value"));
             //epgServer = "http://111.20.105.85:9330";
-            //epgServer = "http://111.20.42.163:33200";
+            //epgServer = "http://111.20.42.158:33200";
             Log.d(TAG,"epgServer:" + epgServer);
             return epgServer;
         }catch (Exception e){

+ 5 - 3
app/src/main/java/com/hc/webapp/web/BaseWebActivity.java

@@ -19,6 +19,7 @@ import android.widget.Toast;
 
 import com.hc.lib.HandlerUtil;
 import com.hc.webapp.BuildConfig;
+import com.hc.webapp.R;
 import com.orhanobut.logger.Logger;
 
 import org.json.JSONObject;
@@ -128,11 +129,12 @@ public abstract class BaseWebActivity extends AppCompatActivity {
         if (getIntent() != null) {
             handleIntent(getIntent());
         }
-
-        webView = new WebView(getApplicationContext());
+        setContentView(R.layout.activity_base);
+        webView = findViewById(R.id.my_webview);
         webView.setBackgroundColor(ContextCompat.getColor(this, android.R.color.transparent));
 //        webView.setBackgroundResource(R.drawable.img_start_bg);
-        setContentView(webView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
+
+        //setContentView(webView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
         webView.setSoundEffectsEnabled(false);
         webView.setAnimationCacheEnabled(false);
 

+ 37 - 5
app/src/main/java/com/hc/webapp/yst/MainActivity.java

@@ -21,6 +21,7 @@ import android.view.animation.LinearInterpolator;
 import android.webkit.WebView;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -52,7 +53,7 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
         AndroidToJS.PlayVideoListener, HCWebViewClient.WebViewErrorListener, AndroidToJS.ThirdActivityManager {
 
     final String url = com.hc.model.BuildConfig.Domain + com.hc.model.BuildConfig.port + "/h5v2/index.html";
-    //final String url = "http://112.35.32.145:8090/h5v2/template/haochuan.html";
+    //final String url = "http://112.18.251.84:8090/tv/h5v2/activity/zt20190218/index.html?source_type=ztList&source_type_val=20190218";
     private static final String KEY_INTENT = "params";
 
     private SingleLiveEvent<String> loginMsg = new SingleLiveEvent<>();
@@ -63,6 +64,7 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
     private VideoControlDelegate controlDelegate;
     private UserViewModel userViewModel;
     private View messageView;
+    private ProgressBar loading;
 
     private boolean isFinish = false;
 
@@ -82,9 +84,9 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        loading = findViewById(R.id.loading_bar);
         observer();
         Log.d("weilai","loadH5");
-        loadH5();
 
         String adImage = LocalStore.getInstance().getOpenAdImage();
         if (!TextUtils.isEmpty(adImage)) {
@@ -230,6 +232,7 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
             Toast.makeText(this,"视频链接错误!",Toast.LENGTH_SHORT).show();
             return;
         }
+        Log.d(TAG,"playFloatVideo");
         if(!hasShowWebView){
             hasOneFloatViewToShow = true;
             lastVideoInfo = new VideoInfo(url,x,y,width,height,uid,sourceId,title,examineId,examineType,limitTime);
@@ -246,6 +249,7 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
     @Override
     public void playFullVideo(String url, String title, String uid, String sourceId, int limitTime, boolean hadFloatVideo, String examineId, String examineType, boolean isShowCompletedDialog) {
         this.hadFloatVideo = hadFloatVideo;
+        Log.d(TAG,"playFullVideo");
         runOnUiThread(() -> {
 //            getWebView().setLayerType(View.LAYER_TYPE_SOFTWARE, null);
             if (hadFloatVideo && TextUtils.isEmpty(url)) {
@@ -265,10 +269,9 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
      * 全屏播放逻辑
      */
     private void playVideo(String url, String title, String uid, String sourceId, int limitTime, String examineId, String examineType, boolean isShowCompletedDialog) {
-
         isFullScreenVideo = true;
         controlDelegate.setFullVideo(true);
-
+        Log.d(TAG,"playVideo");
         if (YSTVideoPlayer.getParent() == null) {
             ViewGroup viewGroup = (ViewGroup) getWindow().getDecorView();
             viewGroup.addView(YSTVideoPlayer);
@@ -311,7 +314,6 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
     private void playVideo(String url, String title, String uid, String sourceId, int x, int y, int width, int height,
                            String examineId, String examineType, int limitTime) {
         initVideoParamsIfNotInit(x, y, width, height);
-
         controlDelegate.setUid(uid);
         controlDelegate.setSourceId(sourceId);
 
@@ -444,6 +446,7 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
      * */
 
     public void favoritePlay(String sourceId,String title){
+        OttLoginUtil.getInstance().reportLog(4,"16," + sourceId );
         new LastPlayTimeStore(this).insert(title,sourceId);
         String url = com.hc.model.BuildConfig.Domain + com.hc.model.BuildConfig.port +"/index.php?m=Home&c=ApiV2&a=getExamineData&source_id="
                 + sourceId ;
@@ -489,6 +492,23 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
                                 controlDelegate.setSourceId(sourceId);
                             }
                         });
+                    }else if (jsonObject.getInt("code") == -3){
+                        Toast("该视频未审核,不能播放");
+                        MainActivity.this.runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                destroyVideo();
+                            }
+                        });
+
+                    }else{
+                        Toast("获取视频信息失败,不能播放");
+                        MainActivity.this.runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                destroyVideo();
+                            }
+                        });
                     }
                 }catch (Exception e){
                     e.printStackTrace();
@@ -497,6 +517,15 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
         });
     }
 
+    private void Toast(final String msg){
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
     /*
     * 获取机顶盒信息
     * */
@@ -550,6 +579,9 @@ public class MainActivity extends BaseWebActivity implements OttLoginUtil.OnOttL
     @Override
     public void onOttLoginSuccess() {
 //        loginMsg.setValue("OTT登陆成功");
+        Log.d(TAG,"onOttLoginSuccess");
+        loading.setVisibility(View.INVISIBLE);
+        loadH5();
     }
 
     @Override

+ 8 - 1
app/src/main/java/com/hc/webapp/yst/OttLoginUtil.java

@@ -52,12 +52,18 @@ public class OttLoginUtil {
             loginSDK.getInstance().sdkInit(loginSDK.TYPE_COMMON,channelCode,appKey,appSecret, context);
             //开始认证
             String loginRet = loginSDK.getInstance().deviceLogin();
-
+            String versionName = context.getPackageManager().getPackageInfo(context.getPackageName(),0).versionName;
+            StringBuffer tf = new StringBuffer();
+            loginSDK.getInstance().getValueByKey("EXT_VERSION_TYPE",tf);
+            String versionType = tf.toString();
             if (loginRet.equals("1")) {
                 initOttInfo(context, loginListener,false);
+                //认证成功,上传日志
+                reportLog(10,"0," + versionType+", " + versionName);
             }
             else {
                 initOttFail(loginRet, loginListener);
+                reportLog(10,"1," + versionType + "," + versionName +"," + loginRet);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -76,6 +82,7 @@ public class OttLoginUtil {
         if(deviceID.isEmpty()){
             return;
         }
+        Logger.d("deviceId:" + deviceID);
         LocalStore.getInstance().putDeviceId(deviceID);
 
         loginSDK.getInstance().getTemplateID(tf);

+ 31 - 11
app/src/main/java/com/hc/webapp/yst/YSTVideoPlayer.java

@@ -201,6 +201,7 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
      * CNTV播放器初始化并播放视频
      */
     public void setData(@NonNull VideoData data,Context context) {
+        Log.d("MainActivity","setData");
         isSeeking = false;
         lastPlayTimeStore = new LastPlayTimeStore(context);
         this.context = context;
@@ -224,7 +225,7 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
             AndroidToJS.evaluateJavascript(webView, String.format(JS_EVENT_PLAY_START, 0, e.getMessage()));
             Logger.e("视频初始化完成但是异常%s", e);
         }
-        lastPlayTimeStore.delete(videoData.getId());
+        //lastPlayTimeStore.delete(videoData.getId());
     }
 
     private void setVideoData(VideoData data){
@@ -328,14 +329,22 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
                     if (event.getAction() == KeyEvent.ACTION_DOWN) {
                         if(icntvPlayer.isPlaying() && !isSeeking ){
                             pauseOrPlay(false);
+                        }else if(!icntvPlayer.isPlaying() && !isSeeking ){
+                            pauseOrPlay(true);
                         }
                     }
                 }
                 break;
             case KeyEvent.KEYCODE_ENTER:
-                if (event.getAction() == KeyEvent.ACTION_DOWN) {
-                    if(icntvPlayer.isPlaying() && !isSeeking ){
-                        pauseOrPlay(false);
+                if(isShowLastPlayBar){
+                    resumePlay();
+                }else{
+                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                        if(icntvPlayer.isPlaying() && !isSeeking ){
+                            pauseOrPlay(false);
+                        }else if(!icntvPlayer.isPlaying() && !isSeeking ){
+                            pauseOrPlay(true);
+                        }
                     }
                 }
                 break;
@@ -344,6 +353,7 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
         return super.onKeyDown(keyCode, event);
     }
 
+
     public void resumePlay(){
         lastPlayBar.setVisibility(INVISIBLE);
         isShowLastPlayBar = false;
@@ -462,12 +472,20 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
             lastPlayBar.setVisibility(INVISIBLE);
             isShowLastPlayBar = false;
         }else{
-            if(icntvPlayer.isPlaying() && !isSeeking ){
-                pauseOrPlay(false);
-            }
+            onPlayerPausedListener.videoExit(false);
         }
+
     }
 
+    private void Toast(final String msg){
+        Activity activity = (Activity)context;
+        activity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
 
     /**
      * 根据业务需求,判断用户按下的键值是否在需要拦截的键值名单中
@@ -497,6 +515,7 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
         if(videoTitle != null){
             videoTitle.setText(videoData.getTitle());
         }
+        layoutLoading.setVisibility(View.VISIBLE);
         setVideoData(videoData);
         showControlWidget(true);
     }
@@ -703,6 +722,9 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
      * 显示控制器
      */
     private void showControlWidget(boolean delayHide) {
+        if(icntvPlayer.isADPlaying()){
+            return;
+        }
         if (isShowUI && icntvPlayer != null) {
             topBar.setVisibility(VISIBLE);
             bottomBar.setVisibility(VISIBLE);
@@ -712,7 +734,6 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
             } else {
                 playOrPause.setImageResource(R.drawable.btn_icon_stop);
             }
-
             if (videoHideControlViewRunnable == null) {
                 videoHideControlViewRunnable = new VideoHideControlViewRunnable(this);
             }
@@ -735,7 +756,6 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
         layoutLoading.setVisibility(View.GONE);
 
         isPrepared = true;
-
         //设置seekbar最大值
         seekBar.setMax(icntvPlayer.getDuration());
         seekBar.setProgress(0);
@@ -883,8 +903,8 @@ public class YSTVideoPlayer extends FrameLayout implements tv.icntv.icntvplayers
                 break;
         }
         new AlertDialog.Builder(getContext())
-                .setTitle("错误")
-                .setMessage("播放错误:" + cnTvError)
+                .setTitle("提示")
+                .setMessage("该节目已下线")
                 .setPositiveButton("确定", (dialog, which) -> {
                     if (onPlayerPausedListener != null) {
                         onPlayerPausedListener.videoExit(true);

+ 1 - 0
lib/src/main/java/com/hc/lib/video/IVideoPlayer.java

@@ -15,6 +15,7 @@ public interface IVideoPlayer {
 
     boolean onKeyDown(int keyCode, KeyEvent event);
 
+
     /**
      * 暂停或播放
      */

+ 1 - 1
lib/src/main/java/com/hc/lib/video/VideoPauseDialog.java

@@ -141,7 +141,7 @@ public class VideoPauseDialog extends Dialog implements View.OnClickListener {
 
     private void getFavoriteData(){
         resetLoadingImage();
-        String url ="http://dudu.a088.ottcn.com:8090/index.php?m=Home&c=ApiV2&a=guessFav&uid=" + getUserName();
+        String url ="http://dudu.a088.ottcn.com:8090/index.php?m=Home&c=ApiV2&a=guessFav&uid=D071C4049637";
         new GetRequest().RequestAsync(url,new GetRequestListener(){
             @Override
             public void onResult(final String msg) {

+ 11 - 0
lib/src/main/res/drawable/my_progressbar.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <rotate
+            android:drawable="@drawable/my_ring"
+            android:pivotX="50%"
+            android:pivotY="50%"
+            android:fromDegrees="0"
+            android:toDegrees="1080"/>
+    </item>
+</layer-list>

+ 11 - 0
lib/src/main/res/drawable/my_ring.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="ring"
+    android:thickness="@dimen/ring_width"
+    android:useLevel="false" >
+    <gradient
+        android:endColor="#888888"
+        android:startColor="#cccccc"
+        android:type="sweep"
+        android:useLevel="false" />
+</shape>

+ 20 - 0
lib/src/main/res/layout/activity_base.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/black"
+    >
+
+    <ProgressBar
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:indeterminateDrawable="@drawable/my_progressbar"
+        android:id="@+id/loading_bar"/>
+
+    <WebView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:id="@+id/my_webview"></WebView>
+
+</FrameLayout>