lvjincheng hace 3 años
padre
commit
2b630f10bf

+ 0 - 33
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/ScreenProjection.java

@@ -1,33 +0,0 @@
-package com.example.smartbowlib;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import com.hpplay.sdk.source.api.IBindSdkListener;
-import com.hpplay.sdk.source.api.LelinkSourceSDK;
-import com.hpplay.sdk.source.browse.api.IAPI;
-
-public class ScreenProjection {
-    static Context curContext;
-
-    public static void initSDK(Context context) {
-        curContext = context;
-        LelinkSourceSDK.getInstance().bindSdk(
-                context, "21602", "123e35a2f7a9b8e3ee8c00d2c4562328", mBindSdkListener);
-        UnityMsgSender.log("initSDK");
-    }
-
-    static IBindSdkListener mBindSdkListener = new IBindSdkListener() {
-        @Override
-        public void onBindCallback(boolean success) {
-            UnityMsgSender.log("onBindCallback:" + success);
-            if (!success) {
-                UnityMsgSender.error("bindSDK Fail");
-                return;
-            }
-            LelinkSourceSDK.getInstance().setPermissionMode(IAPI.PERMISSION_MODE_CLOUD_LICENSE,
-                    Settings.Secure.getString(curContext.getContentResolver(), Settings.Secure.ANDROID_ID));
-            UnityMsgSender.log("License Permission");
-        }
-    };
-}

+ 246 - 0
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/ScreenProjection.java

@@ -0,0 +1,246 @@
+package com.example.smartbowlib.lebo;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import com.example.smartbowlib.UnityMsgSender;
+import com.hpplay.sdk.source.api.IBindSdkListener;
+import com.hpplay.sdk.source.api.IConnectListener;
+import com.hpplay.sdk.source.api.IDaPlayerListener;
+import com.hpplay.sdk.source.api.INewPlayerListener;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.bean.CastBean;
+import com.hpplay.sdk.source.bean.DaCastBean;
+import com.hpplay.sdk.source.browse.api.AuthListener;
+import com.hpplay.sdk.source.browse.api.IAPI;
+import com.hpplay.sdk.source.browse.api.IBrowseListener;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+
+import org.json.JSONArray;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ScreenProjection {
+    private Context curContext;
+    private static boolean firstAuthSuccess = true;
+
+    public void initSDK(Context context) {
+        curContext = context;
+        LelinkSourceSDK.getInstance()
+                .setBindSdkListener(mBindSdkListener)
+                .setBrowseResultListener(mBrowseListener)
+                .setConnectListener(mConnectListener)
+                .setNewPlayListener(mPlayerListener)
+                .setDaPlayListener(mDaPlayerListener)
+                .setSdkInitInfo(context, "21602", "123e35a2f7a9b8e3ee8c00d2c4562328")
+                .bindSdk();
+        LelinkSourceSDK.getInstance().setOption(IAPI.OPTION_4, mAuthLister);
+        UnityMsgSender.log("initSDK");
+    }
+
+    IBindSdkListener mBindSdkListener = new IBindSdkListener() {
+        @Override
+        public void onBindCallback(boolean success) {
+            UnityMsgSender.log("onBindCallback:" + success);
+        }
+    };
+
+    List<LelinkServiceInfo> mBrowseList = new ArrayList<>();
+    IBrowseListener mBrowseListener = new IBrowseListener() {
+        @Override
+        public void onBrowse(int i, List<LelinkServiceInfo> list) {
+            if (i == IBrowseListener.BROWSE_ERROR_AUTH) {
+                UnityMsgSender.warn("授权失败");
+                return;
+            }
+            if (i == IBrowseListener.BROWSE_STOP) {
+                UnityMsgSender.warn("搜索停止");
+            } else if (i == IBrowseListener.BROWSE_TIMEOUT) {
+                UnityMsgSender.warn("搜索超时");
+            }
+            mBrowseList = list;
+            JSONArray jsonArray = new JSONArray();
+            for (LelinkServiceInfo item : list) {
+                JSONObject jo = new JSONObject();
+                try {
+                    jo.put("name", item.getName());
+                    jo.put("uid", item.getUid());
+                    jo.put("udnUuid", item.getUdnUuid());
+                } catch (Exception e) {
+                    UnityMsgSender.error("jo err");
+                }
+                jsonArray.put(jo);
+            }
+            UnityMsgSender.log("onBrowseItem: " + jsonArray.toString());
+        }
+    };
+
+    LelinkServiceInfo mSelectInfo;
+    IConnectListener mConnectListener = new IConnectListener() {
+        @Override
+        public void onConnect(LelinkServiceInfo lelinkServiceInfo, int protocol) {
+            UnityMsgSender.log("onConnect:" + lelinkServiceInfo.getName());
+            String type = protocol == IConnectListener.TYPE_LELINK ? "Lelink"
+                    : protocol == IConnectListener.TYPE_DLNA ? "DLNA"
+                    : protocol == IConnectListener.TYPE_IM ? "IM" : ("协议:" + protocol);
+            UnityMsgSender.log(type + "  " + lelinkServiceInfo.getName() + "连接成功");
+            mSelectInfo = lelinkServiceInfo;
+        }
+
+        @Override
+        public void onDisconnect(LelinkServiceInfo lelinkServiceInfo, int what, int extra) {
+            if (lelinkServiceInfo == null) {
+                return;
+            }
+            UnityMsgSender.log("onDisconnect:" + lelinkServiceInfo.getName() + " disConnectType:" + what + " extra:" + extra);
+            String text = null;
+            if (what == IConnectListener.WHAT_HARASS_WAITING) {// 防骚扰,等待用户确认
+                // 乐播投屏防骚扰等待消息,请开发者务必处理该消息
+                text = lelinkServiceInfo.getName() + "等待用户确认";
+            } else if (what == IConnectListener.WHAT_DISCONNECT) {
+                switch (extra) {
+                    case IConnectListener.EXTRA_HARASS_REJECT:// 防骚扰,用户拒绝投屏
+                        text = lelinkServiceInfo.getName() + "连接被拒绝";
+                        break;
+                    case IConnectListener.EXTRA_HARASS_TIMEOUT:// 防骚扰,用户响应超时
+                        text = lelinkServiceInfo.getName() + "防骚扰响应超时";
+                        break;
+                    case IConnectListener.EXTRA_HARASS_BLACKLIST:// 防骚扰,该用户被加入黑名单
+                        text = lelinkServiceInfo.getName() + "已被加入投屏黑名单";
+                        break;
+                    case IConnectListener.EXTRA_CONNECT_DEVICE_OFFLINE:
+                        text = lelinkServiceInfo.getName() + "不在线";
+                        break;
+                    default:
+                        text = lelinkServiceInfo.getName() + "连接断开";
+                        break;
+                }
+            } else if (what == IConnectListener.WHAT_CONNECT_FAILED) {
+                switch (extra) {
+                    case IConnectListener.EXTRA_CONNECT_DEVICE_OFFLINE:
+                        text = lelinkServiceInfo.getName() + "不在线";
+                        break;
+                    default:
+                        text = lelinkServiceInfo.getName() + "连接失败";
+                        break;
+                }
+            }
+            if (TextUtils.isEmpty(text)) {
+                text = "onDisconnect " + what + "/" + extra;
+            }
+            UnityMsgSender.log(text);
+        }
+    };
+
+    INewPlayerListener mPlayerListener = new INewPlayerListener() {
+
+        @Override
+        public void onLoading(CastBean bean) {
+            UnityMsgSender.log("onLoading");
+        }
+
+        @Override
+        public void onStart(CastBean bean) {
+            UnityMsgSender.log("onStart");
+        }
+
+        @Override
+        public void onPause(CastBean bean) {
+            UnityMsgSender.log("onPause");
+        }
+
+        @Override
+        public void onCompletion(CastBean bean, int type) {
+            UnityMsgSender.log("onCompletion 1:" + type);
+        }
+
+        @Override
+        public void onStop(CastBean bean) {
+            UnityMsgSender.log("onStop");
+        }
+
+        @Override
+        public void onSeekComplete(CastBean bean, int position) {
+            UnityMsgSender.log("onSeekComplete 1:" + position);
+        }
+
+        @Override
+        public void onInfo(CastBean bean, final int what, final int extra) {
+            UnityMsgSender.log("onInfoA 1:" + what + " 2:" + extra);
+        }
+
+        @Override
+        public void onInfo(CastBean bean, int what, final String data) {
+            UnityMsgSender.log("onInfoB 1:" + what + " 2:" + data);
+        }
+
+        @Override
+        public void onError(CastBean bean, int what, int extra) {
+            UnityMsgSender.log("onError 1:" + what + " 2:" + extra);
+        }
+
+        @Override
+        public void onVolumeChanged(CastBean bean, float percent) {
+            UnityMsgSender.log("onVolumeChanged 1:" + percent);
+        }
+
+        @Override
+        public void onPositionUpdate(CastBean bean, long duration, long position) {
+            UnityMsgSender.log("onPositionUpdate 1:" + duration + " 2:" + position);
+        }
+    };
+
+    IDaPlayerListener mDaPlayerListener = new IDaPlayerListener() {
+        @Override
+        public void onResult(DaCastBean bean, boolean hasDa) {
+            UnityMsgSender.log("onResult 1:" + hasDa);
+        }
+
+        @Override
+        public void onLoading(DaCastBean bean) {
+            UnityMsgSender.log("onLoading");
+        }
+
+        @Override
+        public void onStart(DaCastBean bean) {
+            UnityMsgSender.log("onStart");
+        }
+
+        @Override
+        public void onStop(DaCastBean bean) {
+            UnityMsgSender.log("onStop");
+        }
+    };
+
+    AuthListener mAuthLister = new AuthListener() {
+        @Override
+        public void onAuthSuccess(String s, String s1) {
+            UnityMsgSender.log("onAuthSuccess 1:" + s + " 2:" + s1);
+            if (firstAuthSuccess) {
+                firstAuthSuccess = false;
+                LelinkSourceSDK.getInstance().setPermissionMode(IAPI.PERMISSION_MODE_CLOUD_LICENSE, getAndroidID(curContext));
+                UnityMsgSender.log("Permission License");
+            }
+            LelinkSourceSDK.getInstance().startBrowse();
+        }
+        @Override
+        public void onAuthFailed(int i) {
+            UnityMsgSender.error("onAuthFailed 1:" + i);
+        }
+    };
+
+    String getAndroidID(Context context) {
+        try {
+            String sAndroidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
+            return sAndroidID;
+        } catch (Exception e) {} catch (Error r) {}
+        try {
+            String sAndroidID = Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID);
+            return sAndroidID;
+        } catch (Exception e) {} catch (Error r) {}
+        return "";
+    }
+}