| | |
| | | |
| | | import com.androidquery.AQuery; |
| | | import com.bumptech.glide.Glide; |
| | | import com.bumptech.glide.RequestBuilder; |
| | | import com.bumptech.glide.load.model.GlideUrl; |
| | | import com.bumptech.glide.load.model.Headers; |
| | | import com.bumptech.glide.request.RequestOptions; |
| | | import com.bumptech.glide.request.target.SimpleTarget; |
| | | import com.bumptech.glide.request.transition.Transition; |
| | | import com.bytedance.sdk.openadsdk.TTAdSdk; |
| | | import com.google.gson.FieldNamingPolicy; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.hanju.video.app.ui.video.PPTVPlayFragment; |
| | | import com.hanju.video.app.ui.video.VideoPlayerFragment; |
| | | import com.hanju.video.app.ui.video.parser.VideoPlayUrlParseFragment; |
| | | import com.hanju.video.app.util.JsonUtil; |
| | | import com.hanju.video.app.util.ad.GDTADConstant; |
| | | import com.hanju.video.app.util.ad.IntertitialAdUtil; |
| | | import com.hanju.video.app.util.http.BasicTextHttpResponseHandler; |
| | | import com.hanju.video.app.util.http.HttpApiUtil; |
| | | import com.hanju.video.app.R; |
| | |
| | | import com.hanju.lib.library.util.SystemCommon; |
| | | import com.hanju.lib.library.util.common.DimenUtils; |
| | | import com.hanju.lib.library.util.common.StringUtils; |
| | | import com.qq.e.ads.cfg.VideoOption; |
| | | import com.qq.e.ads.interstitial2.UnifiedInterstitialAD; |
| | | import com.qq.e.ads.interstitial2.UnifiedInterstitialADListener; |
| | | import com.qq.e.comm.util.AdError; |
| | | import com.umeng.socialize.ShareAction; |
| | | import com.umeng.socialize.UMShareAPI; |
| | | import com.umeng.socialize.UMShareListener; |
| | |
| | | import org.json.JSONObject; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | |
| | | resourceId = bundle.getString("ResourceId"); |
| | | detailid = bundle.getString("DetailId"); |
| | | } |
| | | //TODO 测试 |
| | | videoInfo.setId("8457562"); |
| | | if (!StringUtils.isNumeric(videoInfo.getId())) { |
| | | iv_favourite.setVisibility(View.GONE); |
| | | } else { |
| | |
| | | AdUtil.AD_TYPE adType = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.videoDetailFullVideo); |
| | | if (adType != null) { |
| | | String pid = AdUtil.getAdPid(getApplicationContext(), AdPositionEnum.videoDetailFullVideo); |
| | | try { |
| | | FullVideoAdManager.getInstance().loadAd(getApplicationContext(), pid, new FullVideoAdManager.IFullVideoAdListener() { |
| | | if (TTAdSdk.isInitSuccess() && adType == AdUtil.AD_TYPE.csj) { |
| | | try { |
| | | FullVideoAdManager.getInstance().loadAd(VideoDetailActivity.this, AdUtil.AD_TYPE.csj, pid, new FullVideoAdManager.IFullVideoAdListener() { |
| | | @Override |
| | | public void onFail(String msg) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFinish() { |
| | | |
| | | } |
| | | |
| | | }); |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | } else { |
| | | FullVideoAdManager.getInstance().loadAd(VideoDetailActivity.this, AdUtil.AD_TYPE.gdt, GDTADConstant.PID_VIDEO_DETAIL_INSERT, new FullVideoAdManager.IFullVideoAdListener() { |
| | | @Override |
| | | public void onSuccess() { |
| | | FullVideoAdManager.getInstance().showAd(VideoDetailActivity.this); |
| | | public void onFail(String msg) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onFinish() { |
| | | |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | private void clickPlay() { |
| | | if (playUrl == null) { |
| | | SingleToast.showToast(VideoDetailActivity.this, "初始化播放路径中,请稍候点击播放!"); |
| | | return; |
| | | } |
| | | |
| | |
| | | String tempUrl = playUrl.getUrl(); |
| | | |
| | | List<VideoPlayUrlParseFragment.ParseParams> parseParams = new ArrayList<>(); |
| | | String js = "function parseResult(url, data) {console.log(data); try {var result =JSON.parse( data);if (result.code == 200) {return result.url.replace('/\"/g', '');}} catch (e) {if (url.indexOf('.m3u8') > -1) { return url;}}return null;};"; |
| | | String js = "function parseResult(url, data) {console.log(data); try {var result =JSON.parse( data);if (result.code == 200) {return result.url.replace('/\"/g', '');}} catch (e) {if (url.indexOf('.m3u8') > -1) { " + |
| | | "return url;"+ |
| | | "}}return null;};"; |
| | | |
| | | |
| | | parseParams.add(new VideoPlayUrlParseFragment.ParseParams("^(https://){1}.*(\\.m3u8)$", js, false)); |
| | | |
| | | parseParams.add(new VideoPlayUrlParseFragment.ParseParams("^(https://jx\\.bolecdn\\.com/index2\\.php\\?url=){1}.*", js, false)); |
| | | |
| | | parseParams.add(new VideoPlayUrlParseFragment.ParseParams("^(https://chaoren\\.sc2yun\\.com/superman\\.php)", js, true)); |
| | | videoPlayUrlParseFragment.startParse(tempUrl, parseParams, new VideoPlayUrlParseFragment.IVideoParseListener() { |
| | |
| | | update(); |
| | | } |
| | | |
| | | Gson gson = new GsonBuilder().setFieldNamingPolicy( |
| | | FieldNamingPolicy.UPPER_CAMEL_CASE) |
| | | .create(); |
| | | final VideoInfo videoInfo = gson |
| | | .fromJson(jsonObject.getJSONObject("Data") |
| | | .toString(), |
| | | //判断PPTV, |
| | | JSONObject data = jsonObject.optJSONObject("Data"); |
| | | boolean pptv = data.optBoolean("pptv", false); |
| | | |
| | | if (pptv) { |
| | | String playUrl = data.optString("playUrl"); |
| | | mAquery.id(R.id.fl_pptv).visibility(View.VISIBLE); |
| | | mAquery.id(R.id.rl_page).visibility(View.GONE); |
| | | |
| | | |
| | | PPTVPlayFragment pptvPlayFragment = new PPTVPlayFragment(); |
| | | Bundle bundle = new Bundle(); |
| | | bundle.putString("playUrl", playUrl); |
| | | bundle.putString("videoId", data.optString("videoId")); |
| | | bundle.putString("name", data.optString("name")); |
| | | bundle.putBoolean("vip", data.optBoolean("vip", false)); |
| | | pptvPlayFragment.setArguments(bundle); |
| | | getSupportFragmentManager().beginTransaction().replace(R.id.fl_pptv, pptvPlayFragment).commit(); |
| | | if (progressDialog.isShowing()) { |
| | | progressDialog.dismiss(); |
| | | } |
| | | return; |
| | | } else { |
| | | mAquery.id(R.id.fl_pptv).visibility(View.GONE); |
| | | mAquery.id(R.id.rl_page).visibility(View.VISIBLE); |
| | | } |
| | | |
| | | |
| | | |
| | | final VideoInfo videoInfo = JsonUtil.videoGson |
| | | .fromJson(data.toString(), |
| | | new TypeToken<VideoInfo>() { |
| | | }.getType()); |
| | | |
| | |
| | | |
| | | initResource(); |
| | | |
| | | if (StringUtils.isEmpty(videoInfo.getPlayPicture())) { |
| | | Glide.with(getApplicationContext()) |
| | | .load(videoInfo.getPicture()).apply(new RequestOptions().centerCrop()).into(target); |
| | | } else { |
| | | Glide.with(getApplicationContext()) |
| | | .load(videoInfo.getPlayPicture()).apply(new RequestOptions().centerCrop()).into(target); |
| | | String playPicture = videoInfo.getPlayPicture(); |
| | | if (StringUtils.isEmpty(playPicture)) { |
| | | playPicture = videoInfo.getPicture(); |
| | | } |
| | | |
| | | RequestBuilder<Drawable> requestBuilder = null; |
| | | GlideUrl glideUrl = new GlideUrl(playPicture, new Headers() { |
| | | @Override |
| | | public Map<String, String> getHeaders() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("Referer", "https://www.hmtv.me/"); |
| | | map.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14 Safari/602.1"); |
| | | return map; |
| | | } |
| | | }); |
| | | |
| | | if (playPicture != null && playPicture.contains("hmtv.me")) { |
| | | requestBuilder = Glide.with(getApplicationContext()).load(glideUrl); |
| | | } else { |
| | | requestBuilder = Glide.with(getApplicationContext()).load(playPicture); |
| | | } |
| | | |
| | | requestBuilder.apply(new RequestOptions().centerCrop()).into(target); |
| | | |
| | | |
| | | if (isSetup) { |
| | | int position = getIntent().getIntExtra( |
| | | "playing_position", 0); |
| | |
| | | Header[] headers, JSONObject jsonObject) |
| | | throws Exception { |
| | | if (jsonObject.getBoolean("IsPost")) { |
| | | Gson gson = new GsonBuilder().setFieldNamingPolicy( |
| | | FieldNamingPolicy.UPPER_CAMEL_CASE) |
| | | .create(); |
| | | VideoResource resource = gson.fromJson( |
| | | |
| | | VideoResource resource = JsonUtil.videoGson.fromJson( |
| | | jsonObject.getJSONObject("Data") |
| | | .getJSONObject("Resource") |
| | | .toString(), |
| | |
| | | startPlay(); |
| | | isClick = false; |
| | | } |
| | | } else { |
| | | Toast.makeText(getApplicationContext(), jsonObject.optString("Error"), Toast.LENGTH_SHORT).show(); |
| | | } |
| | | } |
| | | }); |
| | |
| | | } |
| | | break; |
| | | case R.id.tv_resource: |
| | | if (popupWindow == null) |
| | | return; |
| | | if (popupWindow.isShowing()) { |
| | | // bug:listview 中的isShowing()可以正确获取而到了这里就一直不进入,原因是pop没设置焦点获取 |
| | | popupWindow.dismiss(); |
| | |
| | | values.put(WatchHistoryTable.VIDEO_DETAIL_ID, videoDetailId); |
| | | values.put(WatchHistoryTable.VIDEO_THIRD_TYPE, |
| | | videoInfo.getThirdType()); |
| | | Gson gson = new GsonBuilder().setFieldNamingPolicy( |
| | | FieldNamingPolicy.UPPER_CAMEL_CASE).create(); |
| | | |
| | | values.put(WatchHistoryTable.VIDEO_DETAIL, |
| | | gson.toJson(videoInfo)); |
| | | JsonUtil.videoGson.toJson(videoInfo)); |
| | | values.put(WatchHistoryTable.WATCH_TIME, 0); |
| | | values.put(WatchHistoryTable.VIDEO_RESOURCE, from); |
| | | values.put(WatchHistoryTable.VIDEO_RESOURCE_ID, resoureID); |