From 21a3b19894807c46f96e2106a5acb92d8afbd720 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 30 九月 2020 17:28:17 +0800
Subject: [PATCH] 百度内容输出集成

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java |  484 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 459 insertions(+), 25 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
index d086eeb..c217327 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
@@ -1,14 +1,23 @@
 package com.weikou.beibeivideo.ui.video;
 
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
 import android.media.MediaPlayer;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.os.Bundle;
-import android.text.TextUtils;
+import android.support.annotation.Nullable;
 import android.util.Log;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
 import android.widget.Toast;
 
 import com.fun.xm.Definition;
@@ -16,23 +25,52 @@
 import com.fun.xm.FSIVideoPlayer;
 import com.fun.xm.FSPlayer;
 import com.fun.xm.FSVideoReqData;
+import com.fun.xm.ad.FSAD;
+import com.fun.xm.ad.FSThirdAd;
+import com.fun.xm.ad.adloader.FSPreMediaAdLoader;
+import com.fun.xm.ad.adview.FSPreMediaView;
+import com.fun.xm.ad.callback.FSPreMediaAdCallBack;
 import com.funshion.video.logger.FSLogcat;
 import com.funshion.video.util.FSError;
+import com.google.gson.FieldNamingPolicy;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
 import com.lcjian.library.RetainViewFragment;
+import com.lcjian.library.video.VideoDefinition;
+import com.lcjian.library.video.VideoEpisode;
 import com.lcjian.library.video.VideoPlayerController;
+import com.lcjian.library.widget.RatioLayout;
+import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
+import com.weikou.beibeivideo.BeibeiVideoAPI;
 import com.weikou.beibeivideo.BeibeiVideoApplication;
 import com.weikou.beibeivideo.R;
+import com.weikou.beibeivideo.entity.Play;
+import com.weikou.beibeivideo.entity.PlayUrl;
+import com.weikou.beibeivideo.entity.VideoDetailInfo;
+import com.weikou.beibeivideo.entity.VideoInfo;
+import com.weikou.beibeivideo.entity.VideoResource;
+import com.weikou.beibeivideo.entity.video.FunshionPlayInfo;
+import com.weikou.beibeivideo.util.DimenUtils;
+import com.weikou.beibeivideo.util.FunshionConstant;
+import com.weikou.beibeivideo.util.UserUtil;
 import com.weikou.beibeivideo.util.downutil.StringUtils;
 import com.weikou.beibeivideo.util.ui.IPageEventListener;
 
+import org.apache.http.Header;
+import org.json.JSONObject;
+
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
-public class FunshionPlayerFragment extends RetainViewFragment implements OnClickListener {
-    private final static String TAG = FunshionPlayerFragment.class.getName();
+import de.greenrobot.event.EventBus;
 
-    private final static String ACCESS_TOKEN = "Zms4NHZseSwxNjAwNDE4MDQ0LDU0MmQyNDI5ZjY5MGQwODM1OTcyYTM3MDMwOTg3MzNj";
-    public final static String APICODE = "fk84vly";
+public class FunshionPlayerFragment extends RetainViewFragment implements OnClickListener, VideoPlayerController.IVideoPlayerListener {
+    private final static String TAG = FunshionPlayerFragment.class.getName();
 
     //濯掍綋瑙嗛鎾斁鍣�
     private MediaPlayer mVideoPlayer = new MediaPlayer();
@@ -49,7 +87,26 @@
 
     private IPageEventListener pageEventListener;
 
+    private VideoInfo mVideoInfo;
+    private int mCurrentPosition;
+    private PlayUrl playUrl;
+    private boolean collected;
+    private VideoResource videoResource;
+
     private VideoPlayerController vpc_funshion;
+
+    private RatioLayout rl_container;
+
+    private FrameLayout fl_container, fl_ad;
+
+    //椋庤骞垮憡鍔犺浇鍣�
+    private FSPreMediaAdLoader fsPreMediaAdLoader;
+
+    private FSPreMediaView mFSVideoAD;
+
+    private FunshionPlayInfo playInfo;
+
+    private MediaPlayer mediaPlayer;
 
     public void setPageEventListener(IPageEventListener pageEventListener) {
         this.pageEventListener = pageEventListener;
@@ -67,33 +124,133 @@
         mVideoPlayer.setOnErrorListener(mOnErrorListener);
         initAccessToken();
         if (getArguments() != null) {
-            String mediaId = getArguments().getString("mediaId");
-            String ep = getArguments().getString("ep");
-            String vid = getArguments().getString("vid");
-            mVideoSurfView.postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    if (StringUtils.isNullOrEmpty(vid))
-                        playMedia(mediaId, ep);
-                    else
-                        playVideo(vid);
-                }
-            }, 1000);
+            mVideoInfo = (VideoInfo) getArguments().getSerializable("videoInfo");
+            mCurrentPosition = getArguments().getInt("position", 0);
+            playUrl = (PlayUrl) getArguments().getSerializable("playUrl");
+            collected = getArguments().getBoolean("collect", false);
+            videoResource = (VideoResource) getArguments().getSerializable("resource");
+
+            playInfo = new FunshionPlayInfo();
+            playInfo.setCollected(collected);
+            playInfo.setPlayUrl(playUrl);
+            playInfo.setPosition(mCurrentPosition);
+            playInfo.setVideoInfo(mVideoInfo);
         }
-        vpc_funshion.setContentView(mVideoSurfView);
-        vpc_funshion.build(getActivity());
+
+    }
+
+    private void initAd() {
+        FSAD.init(getContext().getApplicationContext(), Collections.singletonList(FunshionConstant.AD_ADP), FunshionConstant.AD_PARTENER, FunshionConstant.AD_TOKEN, FunshionConstant.AD_CHANNEL, FunshionConstant.AD_PRE_DOWNLOAD_CHANNEL);
+        fsPreMediaAdLoader = new FSPreMediaAdLoader(getContext(), FunshionConstant.AD_CHANNEL);
+    }
+
+    private void loadAD() {
+        String adid = "bfys_a_qt";
+        int width = fl_ad.getWidth();
+        int height = fl_ad.getHeight();
+        Log.i(TAG, String.format("fl_ad: width:%s  height:%s", width, height));
+        fsPreMediaAdLoader.loadAD(adid, "", width, height, true, false, new FSPreMediaAdCallBack() {
+            @Override
+            public void onCreate(FSPreMediaView fsadView) {
+                mFSVideoAD = fsadView;
+                fl_ad.removeAllViews();
+                fl_ad.addView(fsadView);
+            }
+
+            @Override
+            public void onCreateThirdAD(List<FSThirdAd> fsThirdAd) {
+
+            }
+
+            @Override
+            public void onClose() {
+                adShowFinish();
+            }
+
+            @Override
+            public void onADLoad() {
+                if (null != mFSVideoAD) {
+                    mFSVideoAD.showAD();
+                }
+            }
+
+            @Override
+            public void onVideoComplete() {
+                adShowFinish();
+            }
+
+            @Override
+            public void onADShow() {
+
+            }
+
+            @Override
+            public void onClick() {
+
+            }
+
+            @Override
+            public void onAdLoadedFail(int param1Int, String param1String) {
+                Log.v(TAG, "onAdLoadedFail param1Int:" + param1Int + " MSG:" + param1String);
+                adShowFinish();
+            }
+        });
+    }
+
+    //骞垮憡灞曠ず瀹屾垚
+    private void adShowFinish() {
+        fl_ad.setVisibility(View.GONE);
+        fl_ad.removeAllViews();
+        mFSVideoAD = null;
+        //鎾斁瑙嗛
+        mVideoSurfView.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                EventBus.getDefault().post(playInfo);
+            }
+        }, 1000);
     }
 
     private void initView(View view) {
         mVideoSurfView = view.findViewById(R.id.video_view);
         vpc_funshion = view.findViewById(R.id.vpc_funshion);
+        rl_container = view.findViewById(R.id.rl_container);
+        fl_container = view.findViewById(R.id.fl_container);
+        fl_ad = view.findViewById(R.id.fl_ad);
+    }
 
+    //鍒涘缓骞挎挱鎺ュ彈鑰呭璞�
+    BatteryReceiver batteryReceiver = new BatteryReceiver();
+    NetworkReceiver networkReceiver = new NetworkReceiver();
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        //娉ㄥ唽receiver
     }
 
     @Override
     public void onCreateView(View contentView, Bundle savedInstanceState) {
         initView(contentView);
         initPlayer();
+        getContext().registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+        getContext().registerReceiver(networkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
+        initAd();
+        fl_ad.setVisibility(View.VISIBLE);
+        fl_ad.post(new Runnable() {
+            @Override
+            public void run() {
+                loadAD();
+            }
+        });
+
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        getContext().unregisterReceiver(batteryReceiver);
+        getContext().unregisterReceiver(networkReceiver);
     }
 
     @Override
@@ -118,11 +275,10 @@
         }
         //锛侊紒锛佹敞鎰忔挱鏀鹃暱鐭棰戞瀯寤虹殑FSVideoReqData鏈夊尯鍒�傜煭瑙嗛娌℃湁epso鍒嗛泦ID銆傞暱瑙嗛鏈夈�傚~鍐欓敊璇皢鏃犳硶姝e父鎾斁
         //FSVideoReqData鏋勫缓闇�瑕佺殑鏁版嵁闇�瑕佷粠鏈嶅姟鍣ㄨ幏鍙栥�備富瑕佹槸濯掍綋璧勬簮videoID锛氣�淰IDEO_ID鈥� 榛樿 娓呮櫚搴︼細new Definition(Definition.CLARITY_LOW) 浠ュ強Accesstoken锛欰ccesstoken
-        mFSVideoReqData = new FSVideoReqData(videoID, new Definition(Definition.CLARITY_LOW), ACCESS_TOKEN);
+        mFSVideoReqData = new FSVideoReqData(videoID, new Definition(Definition.CLARITY_LOW), FunshionConstant.ACCESS_TOKEN);
         try {
             Log.d(TAG, "request");
-
-            mFunshionIVideoPlayer.requestAndPrepare(mFSVideoReqData, APICODE);
+            mFunshionIVideoPlayer.requestAndPrepare(mFSVideoReqData, FunshionConstant.APICODE);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -141,10 +297,10 @@
         }
         //锛侊紒锛佹敞鎰忔挱鏀鹃暱鐭棰戞瀯寤虹殑FSVideoReqData鏈夊尯鍒�傜煭瑙嗛娌℃湁epso鍒嗛泦ID銆傞暱瑙嗛鏈夈�傚~鍐欓敊璇皢鏃犳硶姝e父鎾斁
         //FSVideoReqData鏋勫缓闇�瑕佺殑鏁版嵁闇�瑕佷粠鏈嶅姟鍣ㄨ幏鍙栥�備富瑕佹槸濯掍綋璧勬簮videoID锛氣�淰IDEO_ID鈥漞pso 濯掍綋鍒嗛泦ID 榛樿 娓呮櫚搴︼細new Definition(Definition.CLARITY_LOW) 浠ュ強Accesstoken锛欰ccesstoken
-        mFSVideoReqData = new FSVideoReqData(mediaID, epso, new Definition(Definition.CLARITY_LOW), ACCESS_TOKEN);
+        mFSVideoReqData = new FSVideoReqData(mediaID, epso, new Definition(Definition.CLARITY_LOW), FunshionConstant.ACCESS_TOKEN);
         try {
             Log.d(TAG, "request");
-            mFunshionIVideoPlayer.requestAndPrepare(mFSVideoReqData, APICODE);
+            mFunshionIVideoPlayer.requestAndPrepare(mFSVideoReqData, FunshionConstant.APICODE);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -173,6 +329,24 @@
         }
     }
 
+    private String getDefinitionName(String clarity) {
+        switch (clarity) {
+            case "tv":
+            case "dvd":
+                return "鏍囨竻";
+            case "hd":
+                return "楂樻竻";
+            case "sdvd":
+                return "瓒呮竻";
+            default:
+                return "鏍囨竻";
+        }
+
+
+    }
+
+    private String videoPlayUrl = "";
+
 
     FSCallback mFSCall = new FSCallback() {
 
@@ -183,6 +357,22 @@
             }
             FunshionPlayerFragment.this.mDefinitions = definitions;
             FunshionPlayerFragment.this.mCurrDefinition = currDefinition;
+
+            //璁剧疆娓呮櫚搴�
+            List<VideoDefinition> vdfList = new ArrayList<>();
+            if (definitions != null)
+                for (Definition df : definitions) {
+                    VideoDefinition vdf = new VideoDefinition();
+                    vdf.setClarity(df.getStringDefinition());
+                    vdf.setName(getDefinitionName(df.getStringDefinition()));
+                    vdfList.add(vdf);
+                }
+            VideoDefinition vdf = new VideoDefinition();
+            vdf.setClarity(mCurrDefinition.getStringDefinition());
+            vdf.setName(getDefinitionName(mCurrDefinition.getStringDefinition()));
+
+            vpc_funshion.setDefinition(vdfList, vdf);
+
             Toast.makeText(BeibeiVideoApplication.application, "褰撳墠娓呮櫚搴︼細" + currDefinition.getStringDefinition(), Toast.LENGTH_LONG).show();
         }
 
@@ -194,6 +384,7 @@
         public void onReceiveUrl(String url) {
             Log.d(TAG, "onReceiveUrl" + url);
             try {
+                videoPlayUrl = url;
                 mVideoPlayer.reset();
                 mVideoPlayer.setDataSource(url);
                 mVideoPlayer.prepareAsync();
@@ -213,20 +404,48 @@
         }
     };
 
+    boolean isReady = false;
+
+    int position = 0;
 
     SurfaceHolder.Callback mVideoSurfaceViewCallBack = new SurfaceHolder.Callback() {
 
         @Override
         public void surfaceDestroyed(SurfaceHolder holder) {
+            isReady = false;
+
+            Log.d(TAG, "surfaceDestroyed");
+            if (mVideoPlayer.isPlaying()) {
+                position = mVideoPlayer.getCurrentPosition();
+                Log.d(TAG, "褰撳墠鎾斁鏃堕棿锛�" + position);
+                mVideoPlayer.stop();
+            }
         }
 
         @Override
         public void surfaceCreated(SurfaceHolder holder) {
+            Log.d(TAG, "surfaceCreated");
+            isReady = true;
             mVideoPlayer.setDisplay(holder);
+            if (!"".equals(videoPlayUrl) && !mVideoPlayer.isPlaying()) {
+                try {
+                    mVideoPlayer.reset();
+                    mVideoPlayer.setDataSource(videoPlayUrl);
+                    mVideoPlayer.prepare();
+                    if (position > 0)
+                        mVideoPlayer.seekTo(position);
+                    position = -1;
+                    Log.d(TAG, "缁挱鏃堕棿锛�" + position);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
         }
 
         @Override
         public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+
+            Log.d(TAG, "surfaceChanged");
         }
     };
 
@@ -235,10 +454,57 @@
 
         @Override
         public void onPrepared(MediaPlayer mp) {
+            Log.i(TAG, "onPrepared");
+            mediaPlayer = mp;
             mFunshionIVideoPlayer.onMediaPlayerPrepared();
-            mp.start();
+            autoReSize(mp);
+            vpc_funshion.onPrepared(mp);
+            if (position > 0)
+                mVideoPlayer.seekTo(position);
         }
     };
+
+    private void autoReSize(MediaPlayer mp) {
+        Log.i(TAG, "autoReSize");
+        final int vWidth = mp.getVideoWidth();
+        final int vHeight = mp.getVideoHeight();
+        if (vHeight == 0 || vWidth == 0)
+            return;
+        //鑾峰彇瀹瑰櫒鐨勫
+        fl_container.post(new Runnable() {
+            @Override
+            public void run() {
+                float ratio = new BigDecimal(vHeight).divide(new BigDecimal(vWidth), 4, RoundingMode.FLOOR).floatValue();
+                int cwidth = fl_container.getWidth();
+                int cheight = fl_container.getHeight();
+                Log.i(TAG, String.format("MediaPlayer: width-%s  height-%s", vWidth, vHeight));
+
+                ViewGroup.LayoutParams params = rl_container.getLayoutParams();
+                if (vHeight * cwidth > vWidth * cheight) {
+                    Log.i(TAG, "瀹借嚜閫傚簲");
+                    params.height = fl_container.getHeight();
+                    params.width = (int) (params.height / ratio);
+                } else {
+                    Log.i(TAG, "楂樿嚜閫傚簲");
+                    params.width = fl_container.getWidth();
+                    params.height = (int) (params.width * ratio);
+                }
+                rl_container.setLayoutParams(params);
+
+                rl_container.setRatio(ratio);
+                Log.i(TAG, String.format("Ratio: %s", ratio));
+
+                mVideoSurfView.post(new Runnable() {
+                    @Override
+                    public void run() {
+                        Log.i(TAG, String.format("mVideoSurfView: width-%s  height-%s", mVideoSurfView.getWidth(), mVideoSurfView.getHeight()));
+
+
+                    }
+                });
+            }
+        });
+    }
 
     MediaPlayer.OnErrorListener mOnErrorListener = new MediaPlayer.OnErrorListener() {
 
@@ -262,6 +528,8 @@
             mFunshionIVideoPlayer.onActivityDestroy();
             mFunshionIVideoPlayer.release();
         }
+
+
     }
 
     @Override
@@ -274,5 +542,171 @@
         super.onStop();
         if (mVideoPlayer != null && mVideoPlayer.isPlaying())
             mVideoPlayer.pause();
+
     }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (mFunshionIVideoPlayer != null)
+            mFunshionIVideoPlayer.onActivityResume();
+        EventBus.getDefault().register(this);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        if (mVideoPlayer.isPlaying())
+            mVideoPlayer.pause();
+        if (mFunshionIVideoPlayer != null)
+            mFunshionIVideoPlayer.onActivityPause();
+        EventBus.getDefault().unregister(this);
+    }
+
+
+    public void requestLayout() {
+        Log.i(TAG, "requestLayout");
+        if (mediaPlayer != null)
+            autoReSize(mediaPlayer);
+        else
+            autoReSize(mVideoPlayer);
+        vpc_funshion.changeOrien(getActivity().getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+    }
+
+    //鐢垫睜鐢甸噺鐩戞帶
+    class BatteryReceiver extends BroadcastReceiver {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            // TODO Auto-generated method stub
+            //鍒ゆ柇瀹冩槸鍚︽槸涓虹數閲忓彉鍖栫殑Broadcast Action
+            if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {//鐢甸噺鍙樺寲
+                //鑾峰彇褰撳墠鐢甸噺
+                int level = intent.getIntExtra("level", 0);
+                //鐢甸噺鐨勬�诲埢搴�
+                int scale = intent.getIntExtra("scale", 100);
+                //鎶婂畠杞垚鐧惧垎姣�
+                if (vpc_funshion != null)
+                    vpc_funshion.setBattery((level * 100) / scale);
+            }
+        }
+    }
+
+    public class NetworkReceiver extends BroadcastReceiver {
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
+                ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+                NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
+                vpc_funshion.setNetworkInfo(networkInfo, false);
+            }
+        }
+    }
+
+
+    public void onEventMainThread(FunshionPlayInfo info) {
+        List<VideoEpisode> episodes = new ArrayList<>();
+        for (int i = 0; i < info.getVideoInfo().getVideoDetailList().size(); i++) {
+            VideoDetailInfo detail = info.getVideoInfo().getVideoDetailList().get(i);
+            VideoEpisode es = new VideoEpisode();
+            es.setId(detail.getId());
+            es.setTag(detail.getTag());
+            es.setVideoId(info.getVideoInfo().getId());
+            episodes.add(es);
+        }
+        mCurrentPosition = info.getPosition();
+        vpc_funshion.setContentView(fl_container).setVideoInfo(episodes, info.getVideoInfo().getName(), info.getPlayUrl().getUrl(), info.getPosition()).setVideoPlayerListener(this).build(getActivity(), FunshionPlayerFragment.this);
+        //鎾斁瑙嗛
+//        playVideo(info.getVideoInfo().getVideoDetailList().get(info.getPosition()).getId());
+
+        playMedia("99989", (info.getPosition() + 1) + "");
+    }
+
+    //鐩戝惉
+    @Override
+    public void onNext() {
+        if (mCurrentPosition >= mVideoInfo.getVideoDetailList().size() - 1) {
+            Toast.makeText(getContext(), "娌℃湁涓嬩竴闆嗕簡", Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        selectEpisode(mCurrentPosition + 1, null);
+    }
+
+    @Override
+    public void onBack() {//杩斿洖
+        if (getActivity().getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
+            getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+        } else {//缁撴潫
+            getActivity().finish();
+        }
+    }
+
+    @Override
+    public void onVideoPause() {
+
+    }
+
+    @Override
+    public void onVideoPlay() {
+
+    }
+
+    @Override
+    public void changeDefinition(int p, VideoDefinition definition) {
+        Toast.makeText(BeibeiVideoApplication.application, "姝e湪鍒囨崲娓呮櫚搴�", Toast.LENGTH_SHORT).show();
+        if (mVideoPlayer != null && mVideoPlayer.isPlaying())
+            position = mVideoPlayer.getCurrentPosition();
+        mFunshionIVideoPlayer.changeDefinition(mFSVideoReqData.getUniqueID(), mDefinitions.get(p));
+    }
+
+    @Override
+    public void selectEpisode(int p, VideoEpisode episode) {
+        //閫夐泦
+        final FunshionPlayInfo playInfo = new FunshionPlayInfo();
+        playInfo.setVideoInfo(mVideoInfo);
+        playInfo.setPosition(p);
+        playInfo.setCollected(collected);
+        VideoDetailInfo detailInfo = mVideoInfo.getVideoDetailList().get(p);
+        String uid = UserUtil.getUid(BeibeiVideoApplication.application);
+        BeibeiVideoAPI.getPlayUrl(BeibeiVideoApplication.application, uid, detailInfo.getType(), mVideoInfo.getId(),
+                detailInfo.getId(), videoResource.getId(), detailInfo.geteId(),
+                new BasicTextHttpResponseHandler() {
+
+                    @Override
+                    public void onSuccessPerfect(int statusCode,
+                                                 Header[] headers, JSONObject jsonObject)
+                            throws Exception {
+                        if (jsonObject.getBoolean("IsPost")) {
+                            Gson gson = new GsonBuilder().setFieldNamingPolicy(
+                                    FieldNamingPolicy.UPPER_CAMEL_CASE)
+                                    .create();
+                            VideoResource resource = gson.fromJson(
+                                    jsonObject.getJSONObject("Data")
+                                            .getJSONObject("Resource")
+                                            .toString(),
+                                    new TypeToken<VideoResource>() {
+                                    }.getType());
+                            PlayUrl info = new PlayUrl();
+                            info.setResource(resource);
+                            info.setPlayType(Integer.parseInt(jsonObject
+                                    .getJSONObject("Data")
+                                    .optString("PlayType")));
+                            info.setUrl(jsonObject.getJSONObject("Data")
+                                    .optString("Url"));
+                            info.setParams(jsonObject.getJSONObject("Data")
+                                    .optString("Params"));
+                            playInfo.setPlayUrl(info);
+                            EventBus.getDefault().post(playInfo);
+                        }
+                    }
+                });
+    }
+
+    @Override
+    public void collect(boolean collect) {
+
+    }
+
+
 }

--
Gitblit v1.8.0