Quellcode durchsuchen

安卓库修改-乐播部分

lvjincheng vor 3 Jahren
Ursprung
Commit
9c156c63bb

+ 2 - 2
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/UnityMsgSender.java

@@ -16,7 +16,7 @@ public class UnityMsgSender {
         UnityPlayer.UnitySendMessage("MsgReceiver", "Error", info);
     }
 
-    public static void onMessage(String msg) {
-        UnityPlayer.UnitySendMessage("MsgReceiver", "OnMessage", msg);
+    public static void onMessage(String tag, String msg) {
+        UnityPlayer.UnitySendMessage("MsgReceiver", "OnMessage", tag + '|' + msg);
     }
 }

+ 54 - 0
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/AuthFragment.java

@@ -0,0 +1,54 @@
+package com.example.smartbowlib.lebo;
+
+import android.content.Context;
+import android.provider.Settings;
+
+import com.example.smartbowlib.UnityMsgSender;
+import com.hpplay.sdk.source.api.IBindSdkListener;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.browse.api.AuthListener;
+import com.hpplay.sdk.source.browse.api.IAPI;
+
+class AuthFragment {
+    private Context mContext;
+    public void setContext(Context context) {
+        this.mContext = context;
+    }
+
+    public final IBindSdkListener bindSdkListener = new IBindSdkListener() {
+        @Override
+        public void onBindCallback(boolean success) {
+            UnityMsgSender.log("onBindCallback:" + success);
+        }
+    };
+
+    private boolean mFirstAuthSuccess = true;
+    public final AuthListener authLister = new AuthListener() {
+        @Override
+        public void onAuthSuccess(String s, String s1) {
+            UnityMsgSender.log("onAuthSuccess 1:" + s + " 2:" + s1);
+            if (mFirstAuthSuccess) {
+                mFirstAuthSuccess = false;
+                LelinkSourceSDK.getInstance().setPermissionMode(IAPI.PERMISSION_MODE_CLOUD_LICENSE, getAndroidID(mContext));
+                UnityMsgSender.log("Permission License");
+            }
+            UnityMsgSender.onMessage("lebo.onAuthSuccess", "");
+        }
+        @Override
+        public void onAuthFailed(int i) {
+            UnityMsgSender.error("onAuthFailed 1:" + i);
+        }
+    };
+
+    private 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 "";
+    }
+}

+ 49 - 0
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/BrowseFragment.java

@@ -0,0 +1,49 @@
+package com.example.smartbowlib.lebo;
+
+import com.example.smartbowlib.UnityMsgSender;
+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;
+
+class BrowseFragment {
+    private List<LelinkServiceInfo> mBrowseList = new ArrayList<>();
+    public List<LelinkServiceInfo> getBrowseList() {
+        return mBrowseList;
+    }
+
+    public final IBrowseListener browseListener = new IBrowseListener() {
+        @Override
+        public void onBrowse(int i, List<LelinkServiceInfo> list) {
+            if (i == IBrowseListener.BROWSE_ERROR_AUTH) {
+                UnityMsgSender.warn("授权失败");
+                return;
+            }
+            boolean isStop = false;
+            if (i == IBrowseListener.BROWSE_STOP) {
+                isStop = true;
+                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.getIp());
+                } catch (Exception e) {}
+                jsonArray.put(jo);
+            }
+            UnityMsgSender.onMessage("lebo.onBrowse", jsonArray.toString());
+            if (isStop) {
+                UnityMsgSender.onMessage("lebo.onBrowseStop", "");
+            }
+        }
+    };
+}

+ 71 - 0
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/ConnectFragment.java

@@ -0,0 +1,71 @@
+package com.example.smartbowlib.lebo;
+
+import android.text.TextUtils;
+
+import com.example.smartbowlib.UnityMsgSender;
+import com.hpplay.sdk.source.api.IConnectListener;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+
+class ConnectFragment {
+    private LelinkServiceInfo mSelectInfo;
+    public LelinkServiceInfo getSelectInfo() {
+        return mSelectInfo;
+    }
+
+    public final IConnectListener connectListener = 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;
+            UnityMsgSender.onMessage("lebo.onConnect", "");
+        }
+        @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);
+            UnityMsgSender.onMessage("lebo.onDisconnect", "");
+        }
+    };
+}

+ 175 - 0
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/MirrorFragment.java

@@ -0,0 +1,175 @@
+package com.example.smartbowlib.lebo;
+
+import android.text.TextUtils;
+
+import com.example.smartbowlib.UnityMsgSender;
+import com.hpplay.sdk.source.api.INewPlayerListener;
+import com.hpplay.sdk.source.api.LelinkPlayerInfo;
+import com.hpplay.sdk.source.api.LelinkSourceSDK;
+import com.hpplay.sdk.source.bean.CastBean;
+import com.hpplay.sdk.source.browse.api.LelinkServiceInfo;
+
+class MirrorFragment {
+    public final INewPlayerListener playerListener = new INewPlayerListener() {
+        @Override
+        public void onLoading(CastBean bean) {
+            UnityMsgSender.log("onLoading");
+        }
+        @Override
+        public void onStart(CastBean bean) {
+            UnityMsgSender.log("onStart");
+            UnityMsgSender.onMessage("lebo.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");
+            UnityMsgSender.onMessage("lebo.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) {
+            String text = "未知异常";
+            switch (extra) {
+                case EXTRA_ERROR_AUTH:
+                case EXTRA_ERROR_AUTH_TIME_DONE:
+                    text = "SDK认证失败";
+                    break;
+                case EXTRA_NEED_SCREEN_CODE:
+                    text = "请输入密码";
+                    break;
+                case EXTRA_DEVICE_OFFLINE:
+                    text = "接收端不在线";
+                    break;
+                case EXTRA_ERROR_MIRROR_REQUEST_PERMISSION:
+                    text = "申请录屏权限发生异常";
+                    break;
+                case EXTRA_ERROR_MIRROR_REJECT_PERMISSION:
+                    text = "申请录屏权限被拒绝";
+                    break;
+                case EXTRA_ERROR_MIRROR_DEVICE_UNSUPPORTED:
+                    text = "此设备不支持镜像";
+                    break;
+                case EXTRA_ERROR_MIRROR_IO:
+                    text = "网络通讯异常";
+                    break;
+                case EXTRA_ERROR_MIRROR_UNSUPPORTED:
+                    text = "SDK不支持镜像";
+                    break;
+                case EXTRA_ERROR_MIRROR_SINK_UNSUPPORTED:
+                    text = "接收端不支持此镜像";
+                    break;
+                case EXTRA_ERROR_CLOUD_MIRROR_UNSUPPORTED:
+                    text = "没有云镜像权益";
+                    break;
+                case EXTRA_ERROR_MIRROR_INVALID_INPUT:
+                    text = "输入异常";
+                    break;
+            }
+            if (TextUtils.isEmpty(text)) {
+                text = "镜像 onError " + what + "/" + extra;
+            }
+            UnityMsgSender.error(text);
+            UnityMsgSender.onMessage("lebo.onError", text);
+        }
+        @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);
+        }
+    };
+
+    private String mPassword;
+    public void setPassword(String password) {
+        this.mPassword = password;
+    }
+
+    public void startMirror(LelinkServiceInfo mSelectInfo, int resolutionCheckId) {
+        // 分辨率
+        int resolutionLevel = 0;
+        switch (resolutionCheckId) {
+            case 2:
+                resolutionLevel = LelinkSourceSDK.RESOLUTION_HIGH;
+                break;
+            case 1:
+                resolutionLevel = LelinkSourceSDK.RESOLUTION_MIDDLE;
+                break;
+            case 0:
+                resolutionLevel = LelinkSourceSDK.RESOLUTION_AUTO;
+                break;
+        }
+        // 比特率
+        int bitrateLevel = 0;
+        int bitrateCheckId = 2;
+        switch (bitrateCheckId) {
+            case 2:
+                bitrateLevel = LelinkSourceSDK.BITRATE_HIGH;
+                break;
+            case 1:
+                bitrateLevel = LelinkSourceSDK.BITRATE_MIDDLE;
+                break;
+            case 0:
+                bitrateLevel = LelinkSourceSDK.BITRATE_LOW;
+                break;
+        }
+        // 音频
+        int audioType = LelinkPlayerInfo.CAPTURE_AUDIO_AUTO;
+        int audioCheckId = 1;
+        switch (audioCheckId) {
+            case 1:
+                audioType = LelinkPlayerInfo.CAPTURE_AUDIO_AUTO;
+                break;
+            case 0:
+                audioType = LelinkPlayerInfo.CAPTURE_AUDIO_CLOSE;
+                break;
+        }
+        // 全屏镜像
+        int fullScreen = LelinkPlayerInfo.FULLSCREEN_AUTO;
+        int fullScreenCheckId = 2;
+        switch (fullScreenCheckId) {
+            case 2:
+                fullScreen = LelinkPlayerInfo.FULLSCREEN_AUTO;
+                break;
+            case 1:
+                fullScreen = LelinkPlayerInfo.FULLSCREEN_ON;
+                break;
+            case 0:
+                fullScreen = LelinkPlayerInfo.FULLSCREEN_OFF;
+                break;
+        }
+        //两种方法都可镜像
+        LelinkPlayerInfo lelinkPlayerInfo = new LelinkPlayerInfo();
+        lelinkPlayerInfo.setAutoBitrate(false);
+        lelinkPlayerInfo.setLelinkServiceInfo(mSelectInfo);
+        lelinkPlayerInfo.setBitRateLevel(bitrateLevel);
+        lelinkPlayerInfo.setResolutionLevel(resolutionLevel);
+        if (!TextUtils.isEmpty(mPassword)) {
+            lelinkPlayerInfo.setCastPwd(mPassword);
+        }
+        lelinkPlayerInfo.setMirrorAudioType(audioType);
+        lelinkPlayerInfo.setFullScreen(fullScreen);
+        LelinkSourceSDK.getInstance().disableExternalAudio();
+        LelinkSourceSDK.getInstance().startMirror(lelinkPlayerInfo);
+    }
+}

+ 46 - 212
SmartBowLib/smartbowlib/src/main/java/com/example/smartbowlib/lebo/ScreenProjection.java

@@ -1,246 +1,80 @@
 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;
+    private static AuthFragment mAuthFragment = new AuthFragment();
+    private static BrowseFragment mBrowseFragment = new BrowseFragment();
+    private static ConnectFragment mConnectFragment = new ConnectFragment();
+    private static MirrorFragment mMirrorFragment = new MirrorFragment();
 
     public void initSDK(Context context) {
-        curContext = context;
+        //重新绑定时,测试发现没法覆盖最初绑定的监听器,因此各种Fragment对象都用static存储,保证全局唯一
+        mAuthFragment.setContext(context);
         LelinkSourceSDK.getInstance()
-                .setBindSdkListener(mBindSdkListener)
-                .setBrowseResultListener(mBrowseListener)
-                .setConnectListener(mConnectListener)
-                .setNewPlayListener(mPlayerListener)
-                .setDaPlayListener(mDaPlayerListener)
+                .setBindSdkListener(mAuthFragment.bindSdkListener)
+                .setBrowseResultListener(mBrowseFragment.browseListener)
+                .setConnectListener(mConnectFragment.connectListener)
+                .setNewPlayListener(mMirrorFragment.playerListener)
                 .setSdkInitInfo(context, "21602", "123e35a2f7a9b8e3ee8c00d2c4562328")
                 .bindSdk();
-        LelinkSourceSDK.getInstance().setOption(IAPI.OPTION_4, mAuthLister);
+        LelinkSourceSDK.getInstance().setOption(IAPI.OPTION_4, mAuthFragment.authLister);
         UnityMsgSender.log("initSDK");
     }
 
-    IBindSdkListener mBindSdkListener = new IBindSdkListener() {
-        @Override
-        public void onBindCallback(boolean success) {
-            UnityMsgSender.log("onBindCallback:" + success);
-        }
-    };
+    public void unBindSdk() {
+        LelinkSourceSDK.getInstance().unBindSdk();
+        UnityMsgSender.log("unBindSdk");
+    }
 
-    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());
-        }
-    };
+    public void startBrowse() {
+        LelinkSourceSDK.getInstance().startBrowse();
+    }
 
-    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;
-        }
+    public void stopBrowse() {
+        LelinkSourceSDK.getInstance().stopBrowse();
+    }
 
-        @Override
-        public void onDisconnect(LelinkServiceInfo lelinkServiceInfo, int what, int extra) {
-            if (lelinkServiceInfo == null) {
+    public void connect(String uid) {
+        UnityMsgSender.log("start connect");
+        for (LelinkServiceInfo item: mBrowseFragment.getBrowseList()) {
+            if (item.getIp().equals(uid)) {
+                LelinkSourceSDK.getInstance().connect(item);
                 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");
         }
+        UnityMsgSender.log("start connect fail, can not find target.");
+    }
 
-        @Override
-        public void onStop(DaCastBean bean) {
-            UnityMsgSender.log("onStop");
-        }
-    };
+    public void startMirror(int resolutionCheckId) {
+        mMirrorFragment.startMirror(mConnectFragment.getSelectInfo(), resolutionCheckId);
+    }
 
-    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);
-        }
-    };
+    public void stopPlay() {
+        LelinkSourceSDK.getInstance().stopPlay();
+    }
 
-    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 "";
+    public void getConnectList() {
+        List<LelinkServiceInfo> list = LelinkSourceSDK.getInstance().getConnectInfos();
+        JSONArray jsonArray = new JSONArray();
+        for (LelinkServiceInfo item : list) {
+            JSONObject jo = new JSONObject();
+            try {
+                jo.put("name", item.getName());
+                jo.put("uid", item.getIp());
+            } catch (Exception e) {}
+            jsonArray.put(jo);
+        }
+        UnityMsgSender.log("getConnectList: " + jsonArray.toString());
     }
 }