Parcourir la source

1,升级版本号
2,添加deviceInfo的获取
3,添加系统播放器,ijk播放器的切换

lyn il y a 4 ans
Parent
commit
7a57e1538f

+ 25 - 2
app/src/main/java/com/haochuan/hciptvbasic/BaseWebActivity.java

@@ -52,6 +52,7 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     private BaseMediaPlayer mHCPlayer = null;
     protected ELS els;
     VRUtil vrUtil;
+    private int playerType = 1; //1,ijk播放器;2,系统播放器
 
     //vr模块
     MDVRLibrary mVRLibrary;
@@ -88,6 +89,10 @@ public abstract class BaseWebActivity extends AppCompatActivity {
         Logger.init(this,getWebView());
 
         runH5();
+
+        //测试
+        String params = "{\"type\":2}";
+        playerToJS.setPlayType(params);
     }
 
     private void runH5(){
@@ -183,7 +188,16 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     * */
     private void initPlayer(){
         Logger.d("BaseWebActivity,initPlayer()");
-        mHCPlayer = new SystemVideoPlayer(this);
+        switch (playerType){
+            case 2:
+                mHCPlayer = new SystemVideoPlayer(this);
+                break;
+            default:
+                mHCPlayer = new IjkVideoPlayer(this);
+                break;
+
+        }
+
         mHCPlayer.setVideoPlayerListener(new IVideoPlayer() {
             @Override
             public void onPreparing() {
@@ -303,9 +317,14 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     private void setPlayerToJS(){
         playerToJS = new PlayerToJS(this,webView,mHCPlayer);
         //添加VrRotate接口
-        playerToJS.setVrRotate((int x, int y)->{
+        playerToJS.setVrRotateListener((int x, int y)->{
             mVRLibrary.rotateScreen(Float.parseFloat(String.valueOf(x)),Float.parseFloat(String.valueOf(y)));
         });
+        //添加playerTypeListener接口
+        playerToJS.setPlayerTypeListener(type -> {
+            playerType = type;
+            initPlayerAndVr();
+        });
     }
     private void setPayToJS(){ payToJS = new PayToJS(this,webView); }
     private void setToolToJS(){ utilToJS = new UtilToJS(this,webView); }
@@ -378,4 +397,8 @@ public abstract class BaseWebActivity extends AppCompatActivity {
     public interface VrRotate{
         void rotate(int x, int y);
     }
+
+    public interface playerType{
+        void changePlayerType(int type);
+    }
 }

+ 27 - 2
app/src/main/java/com/haochuan/hciptvbasic/webview/PlayerToJS.java

@@ -37,9 +37,11 @@ public class PlayerToJS {
     private BaseMediaPlayer baseMediaPlayer;        //播放器
     private WebView webView;
 
-    //vr视角旋转结果
+    //vr视角旋转接口
     private BaseWebActivity.VrRotate vrRotateListener;
 
+    //切换播放器接口
+    private BaseWebActivity.playerType playerTypeListener;
 
     /*--------------------传给前端的播放器事件--------------------------*/
     private String JS_EVENT_PLAYERROR="javascript:onPlayerError(%s,%s)";
@@ -52,10 +54,14 @@ public class PlayerToJS {
         this.webView = webView;
     }
 
-    public void setVrRotate(BaseWebActivity.VrRotate rotateListener){
+    public void setVrRotateListener(BaseWebActivity.VrRotate rotateListener){
         this.vrRotateListener = rotateListener;
     }
 
+    public void setPlayerTypeListener(BaseWebActivity.playerType listener){
+        this.playerTypeListener = listener;
+    }
+
 
     public void setBaseMediaPlayer(BaseMediaPlayer mediaPlayer){
         this.baseMediaPlayer = mediaPlayer;
@@ -119,6 +125,8 @@ public class PlayerToJS {
         JsUtil.evaluateJavascript(context,webView,String.format(JS_EVENT_PLAYERROR,what,extra));
     }
 
+
+
     /*----------------------------------播放器功能函数----------------------------------------*/
 
     /*
@@ -354,6 +362,23 @@ public class PlayerToJS {
         return baseMediaPlayer.getCurrentPlayPosition();
     }
 
+    /**
+     * 切换播放器类型
+     * @param  params json字符串,只有一个值:type;1,ijk播放器;2,系统播放器
+     */
+    @JavascriptInterface
+    public int setPlayType(String params){
+        try{
+            JSONObject jsonObject = new JSONObject(params);
+            int type = JSONUtil.getInt(jsonObject,"type",1);
+            playerTypeListener.changePlayerType(type);
+            return SUCCESS;
+        }catch (Exception e){
+            e.printStackTrace();
+            return EXCEPTION_ERROR;
+        }
+    }
+
 
     /**-------------------------------------------功能函数-----------------------------------------------*/
 

+ 6 - 1
app/src/main/java/com/haochuan/hciptvbasic/webview/UtilToJS.java

@@ -10,6 +10,7 @@ import android.webkit.WebView;
 
 
 import com.haochuan.core.Logger;
+import com.haochuan.core.util.DeviceInfoUtil;
 import com.haochuan.core.util.HandlerUtil;
 import com.haochuan.hciptvbasic.BaseWebActivity;
 import com.haochuan.hciptvbasic.BuildConfig;
@@ -109,7 +110,11 @@ public class UtilToJS {
         }
     }
 
-
+    @JavascriptInterface
+    public String getDeviceInfo(){
+        Logger.d("UtilToJS,getDeviceInfo()");
+        return DeviceInfoUtil.getDeviceInfo();
+    }
 
     /*-----------------------------操作APK-------------------------------------*/
 

+ 2 - 2
build.gradle

@@ -19,8 +19,8 @@ buildscript {
             'compileSdk'            : 28,
             'Java'                  : JavaVersion.VERSION_1_8,
             'supportLibrary'        : '28.0.0',
-            'versionCode'           : 1,
-            'versionName'           : "1.0.1"
+            'versionCode'           : 2,
+            'versionName'           : "1.0.2"
     ]
 
     // 引用的lib

+ 43 - 0
core/src/main/java/com/haochuan/core/util/DeviceInfoUtil.java

@@ -0,0 +1,43 @@
+package com.haochuan.core.util;
+
+import android.os.Build;
+
+import org.json.JSONObject;
+
+/**
+ * @author: xulin
+ * @projectName:HcVRBasic
+ * @createTime:2020/8/8 11:23
+ */
+public class DeviceInfoUtil {
+    @SuppressWarnings("deprecation")
+    public static String getDeviceInfo() {
+        try{
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("board" , Build.BOARD);
+            jsonObject.put("bootloader" , Build.BOOTLOADER);
+            jsonObject.put("brand" , Build.BRAND);
+            jsonObject.put("abi1" , Build.CPU_ABI);
+            jsonObject.put("abi2" , Build.CPU_ABI2);
+            jsonObject.put("device" , Build.DEVICE);
+            jsonObject.put("display" , Build.DISPLAY);
+            jsonObject.put("fingerpint" , Build.FINGERPRINT);
+            jsonObject.put("hardware" , Build.HARDWARE);
+            jsonObject.put("host" , Build.HOST);
+            jsonObject.put("id" , Build.ID);
+            jsonObject.put("manufacturer" , Build.MANUFACTURER);
+            jsonObject.put("model" , Build.MODEL);
+            jsonObject.put("serial" , Build.SERIAL);
+            jsonObject.put("product" , Build.PRODUCT);
+            jsonObject.put("tags" , Build.TAGS);
+            jsonObject.put("time" , Build.TIME);
+            jsonObject.put("type" , Build.TYPE);
+            jsonObject.put("user" , Build.USER);
+            return jsonObject.toString();
+        }catch (Exception e){
+            e.printStackTrace();
+            return "";
+        }
+
+    }
+}