BuWanVideo/build.gradle
@@ -94,8 +94,8 @@ } defaultConfig { applicationId "com.doudou.ysvideo" versionCode 104 versionName "3.8.6" versionCode 105 versionName "3.8.7" multiDexEnabled = true minSdkVersion 17 targetSdkVersion 27 BuWanVideo/res/drawable-xhdpi/icon_video_detail_history.png
BuWanVideo/res/drawable/shape_video_detail_vip_btn.xml
New file @@ -0,0 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="0" android:endColor="#E9CE93" android:startColor="#F7EDD7" /> <corners android:radius="20dp" /> </shape> BuWanVideo/res/layout/browser_pptv_activity.xml
@@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" @@ -25,21 +25,79 @@ </FrameLayout> <LinearLayout android:id="@+id/ll_bottom" android:layout_width="match_parent" android:layout_height="48dp" android:layout_gravity="bottom" android:background="#b4000000" android:gravity="center_vertical"> <TextView android:id="@+id/tv_top_bar_left" style="@style/TextBuleNormal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_gravity="left|top" android:drawableLeft="@drawable/ic_back_two" android:drawablePadding="3dp" android:gravity="center" android:padding="8dp" /> <ImageView android:id="@+id/iv_add_to_favourite" android:layout_width="wrap_content" android:layout_height="21dp" android:layout_marginLeft="28.5dp" android:src="@drawable/selector_favourite" /> <ImageView android:id="@+id/iv_watch_history" android:layout_width="wrap_content" android:layout_height="21dp" android:layout_marginLeft="23.5dp" android:src="@drawable/icon_video_detail_history" /> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="1" /> <LinearLayout android:id="@+id/ll_vip_open" android:layout_width="237dp" android:layout_height="38dp" android:background="@drawable/shape_video_detail_vip_btn" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/tv_vip_open" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开通VIP" android:textColor="#ff885e24" android:textSize="15sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="海量高清无广告" android:textColor="#ff885e24" android:textSize="9sp" /> </LinearLayout> </LinearLayout> </FrameLayout> <TextView android:id="@+id/tv_top_bar_left" style="@style/TextBuleNormal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_gravity="left|top" android:drawableLeft="@drawable/ic_back_two" android:drawablePadding="3dp" android:gravity="center" android:padding="8dp" /> </LinearLayout> </FrameLayout> BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java
@@ -1058,13 +1058,16 @@ } public static void getVideoDetail(Context context, String uid, String ResourceId, String videoId, String loginid, String type, String ResourceId, String videoId, Integer position, String loginid, String type, ResponseHandlerInterface handler) { LinkedHashMap<String, String> params = new LinkedHashMap<String, String>(); params.put("Method", "getVideoDetail"); params.put("Uid", uid); params.put("LoginUid", loginid); params.put("VideoId", videoId); if (position != null) { params.put("Position", position+""); } params.put("ResourceId", ResourceId); params.put("Type", type); commonPost(context, BASE_URL + "recommend", params, handler); BuWanVideo/src/com/weikou/beibeivideo/entity/vo/WatchHistoryVO.java
New file @@ -0,0 +1,53 @@ package com.weikou.beibeivideo.entity.vo; import com.weikou.beibeivideo.entity.VideoInfo; public class WatchHistoryVO { private String id; private Long createTime; private VideoInfo videoInfo; private int position; //选中 private boolean selected; public String getId() { return id; } public void setId(String id) { this.id = id; } public VideoInfo getVideoInfo() { return videoInfo; } public void setVideoInfo(VideoInfo videoInfo) { this.videoInfo = videoInfo; } public Long getCreateTime() { return createTime; } public void setCreateTime(Long createTime) { this.createTime = createTime; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } } BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java
@@ -50,7 +50,7 @@ */ public class PlayVideoPreADFragment extends Fragment implements View.OnClickListener { private int AD_DURATION = 10; private int AD_DURATION = 5; private final static String TAG = PlayVideoPreADFragment.class.getName(); @@ -165,6 +165,7 @@ if (AdUtil.getAdType(getContext(), AdUtil.POSITION_VIDEO_PLAY_PRE) != AdUtil.AD_TYPE.gdt) pid = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; tv_skip.setText(AD_DURATION + "s后可跳过"); // loadCSJ(CSJConstant.PLAY_VIDEO_PRE, videoAdListener); loadGDT(setting.getGdtAppId(), pid, videoAdListener); } BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java
@@ -70,6 +70,7 @@ import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.ExitDialog; import com.weikou.beibeivideo.util.LoginFirstDialog; import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.ad.manager.SearchResultAdManager; import com.yeshi.appupdate.AppUpdate; @@ -262,13 +263,14 @@ videoInfo.setId("8065880"); videoInfo.setThirdType("0"); Intent intent = new Intent(MainActivity.this, VideoDetailActivity2.class); intent.putExtra("video_info",videoInfo); intent.putExtra("video_info", videoInfo); startActivity(intent); } },2000); }, 2000); } // startActivity(new Intent(this, PhoneLoginActivity.class)); //拉取详情问题 UserUtil.updateUserInfo(getApplicationContext(), null); } BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java
@@ -796,7 +796,7 @@ "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); String loginid = preferences.getString("LoginUid", ""); BeibeiVideoAPI.getVideoDetail(getContext(), uid, resourceId, videoId, loginid, BeibeiVideoAPI.getVideoDetail(getContext(), uid, resourceId, videoId,null, loginid, videoThirdType, new BasicTextHttpResponseHandler() { @Override BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java
@@ -629,7 +629,7 @@ Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); String loginid = preferences.getString("LoginUid", ""); BeibeiVideoAPI.getVideoDetail(context, uid, resourceId, videoId, loginid, BeibeiVideoAPI.getVideoDetail(context, uid, resourceId, videoId,null, loginid, videoThirdType, new BasicTextHttpResponseHandler() { @Override BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java
@@ -730,11 +730,13 @@ private void getVideoDetail(final Context context, String videoId, String videoThirdType, final boolean isSetup) { int position = getIntent().getIntExtra( "playing_position", 0); SharedPreferences preferences = context.getSharedPreferences("user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); String loginid = preferences.getString("LoginUid", ""); BeibeiVideoAPI.getVideoDetail(context, uid, resourceId, videoId, loginid, BeibeiVideoAPI.getVideoDetail(context, uid, resourceId, videoId, position, loginid, videoThirdType, new BasicTextHttpResponseHandler() { @Override @@ -780,9 +782,15 @@ JSONObject data = jsonObject.optJSONObject("Data"); boolean pptv = data.optBoolean("pptv", false); if (pptv) { String playUrl = data.optString("playUrl"); fl_pptv.setVisibility(View.VISIBLE); ll_other.setVerticalGravity(View.GONE); getSupportFragmentManager().beginTransaction().replace(R.id.fl_pptv, new PPTVPlayFragment()).commit(); PPTVPlayFragment pptvPlayFragment = new PPTVPlayFragment(); Bundle bundle = new Bundle(); bundle.putString("playUrl", playUrl); bundle.putString("videoId",data.optString("videoId")); pptvPlayFragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.fl_pptv, pptvPlayFragment).commit(); if (progressDialog.isShowing()) { progressDialog.dismiss(); } BuWanVideo/src/com/weikou/beibeivideo/ui/mine/BrowserActivity.java
@@ -1,5 +1,6 @@ package com.weikou.beibeivideo.ui.mine; import android.app.Activity; import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationChannel; @@ -153,6 +154,8 @@ webview.addJavascriptInterface(new BWJavaInterface(this, webview), "yestv"); } private boolean needSetResult = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -192,6 +195,7 @@ String url = getIntent().getStringExtra("url"); // String url="http://192.168.3.122:8848/buwan-web/BuWanWeb/vip/index.html"; webview.loadUrl(url); needSetResult = getIntent().getBooleanExtra("result", false); } // 文件下载监听 @@ -303,7 +307,7 @@ super.onResume(); MobclickAgent.onPageStart("网页"); // webview.reload(); if(webview!=null){ if (webview != null) { webview.loadUrl("javascript:onResume()"); } } @@ -332,19 +336,25 @@ switch (v.getId()) { case R.id.tv_top_bar_left: { if (!webview.canGoBack()) finish(); finishPage(); else { webview.goBack(); } } break; case R.id.tv_top_bar_left2: { finish(); finishPage(); } break; default: break; } } private void finishPage() { if (needSetResult) setResult(Activity.RESULT_OK); finish(); } // 设置回退 @@ -354,6 +364,10 @@ if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); // goBack()表示返回WebView的上一页面 return true; } else { if (keyCode == KeyEvent.KEYCODE_BACK) { finishPage(); } } return super.onKeyDown(keyCode, event); } BuWanVideo/src/com/weikou/beibeivideo/ui/mine/PPTVPlayFragment.java
@@ -1,18 +1,15 @@ package com.weikou.beibeivideo.ui.mine; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.net.http.SslError; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.NotificationCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -27,13 +24,15 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import com.lcjian.library.RetainViewFragment; import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient; import com.lcjian.library.util.SingleToast; import com.umeng.analytics.MobclickAgent; 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.ad.PlayVideoPreADSetting; @@ -44,8 +43,12 @@ import com.weikou.beibeivideo.util.ConfigUtil; import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.ad.AdUtil; import com.weikou.beibeivideo.util.ad.GDTConstant; import com.weikou.beibeivideo.util.browser.PPJavaInterface; import com.weikou.beibeivideo.util.ui.IPageEventListener; import org.apache.http.Header; import org.json.JSONObject; public class PPTVPlayFragment extends RetainViewFragment implements OnClickListener { private final static int REQUEST_CODE_LOGIN = 1001; @@ -59,6 +62,9 @@ private android.webkit.WebView webview; FrameLayout fl_ad; FrameLayout fl_container; private ImageView iv_favourite, iv_watch_history; private LinearLayout ll_bottom, ll_vip_open; private TextView tv_vip_open; private boolean showAd = true; @@ -208,12 +214,17 @@ return R.layout.browser_pptv_activity; } private String videoId; @Override public void onCreateView(View contentView, Bundle savedInstanceState) { initView(contentView); String url = "http://vip.pptv.com/activity/2021/pg_bwysdqmovie?cid=32159127&vid=32159127&programtype=2"; url = "https://acmd.api.pptv.com/2021/bwysdqmovie_thrid_h5.html?cid=32159127&vid=32159127&programtype=3"; webview.loadUrl(url); Bundle bundle = getArguments(); if (bundle != null) { String url = bundle.getString("playUrl", ""); videoId = bundle.getString("videoId"); webview.loadUrl(url); } } @@ -222,6 +233,20 @@ tv_top_bar_left = view.findViewById(R.id.tv_top_bar_left); tv_top_bar_left.setOnClickListener(this); fl_container = view.findViewById(R.id.fl_container); iv_favourite = view.findViewById(R.id.iv_add_to_favourite); iv_watch_history = view.findViewById(R.id.iv_watch_history); ll_bottom = view.findViewById(R.id.ll_bottom); ll_vip_open = view.findViewById(R.id.ll_vip_open); tv_vip_open = view.findViewById(R.id.tv_vip_open); iv_favourite.setOnClickListener(this); iv_watch_history.setOnClickListener(this); ll_vip_open.setOnClickListener(this); vipDialog = new VIPDialog.Builder(getActivity()).setCloseListener(new OnClickListener() { @Override public void onClick(View v) { @@ -231,19 +256,25 @@ @Override public void onClick(View v) { vipDialog.dismiss(); startActivityForResult(new Intent(BeibeiVideoApplication.application, BrowserActivity.class).putExtra("url", ConfigUtil.getVipLink(BeibeiVideoApplication.application)), REQUEST_CODE_VIP); jumpToVIP(); } }).create(); } //测试 // fl_container.postDelayed(new Runnable() { // @Override // public void run() { // getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // if (!vipDialog.isShowing()) // vipDialog.show(); // } // }, 10000); private void jumpToVIP() { startActivityForResult(new Intent(BeibeiVideoApplication.application, BrowserActivity.class).putExtra("result", true).putExtra("url", ConfigUtil.getVipLink(BeibeiVideoApplication.application)), REQUEST_CODE_VIP); } private void initData() { if (UserUtil.isVIP(BeibeiVideoApplication.application)) { tv_vip_open.setText("VIP续费"); } else { tv_vip_open.setText("开通VIP"); } isCollect(); } Dialog vipDialog; @@ -252,18 +283,13 @@ PlayVideoPreADFragment mVideoDetailVideoAdFragment; private NotificationManager manager; private Notification notif; private Notification.Builder oBuilder; private NotificationCompat.Builder builder; int j = -1; @Override public void onResume() { super.onResume(); MobclickAgent.onPageStart("网页"); // webview.reload(); initData(); } @Override @@ -291,23 +317,19 @@ case R.id.tv_top_bar_left: { getActivity().finish(); } break; case R.id.iv_add_to_favourite: collect(collected); break; case R.id.iv_watch_history: startActivity(new Intent(iv_watch_history.getContext(), WatchHistoryActivity.class)); break; case R.id.ll_vip_open: jumpToVIP(); break; default: break; } } // 设置回退 // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 // @Override // public boolean onKeyDown(int keyCode, KeyEvent event) { // if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { // webview.goBack(); // goBack()表示返回WebView的上一页面 // return true; // } // return super.onKeyDown(keyCode, event); // } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -367,7 +389,7 @@ getChildFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commitAllowingStateLoss(); adPlayFinish(); } }, new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_ID, "5061928359494942", null)); }, new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_ID, GDTConstant.PID_2_VIDEO_DETAIL_PLAYER_PRE_PPTV, null)); } }); @@ -379,4 +401,57 @@ if (webview != null) webview.loadUrl("javascript:adPlayFinish()"); } private boolean collected = false; private void isCollect() { BeibeiVideoAPI.isCollect(iv_favourite.getContext(), UserUtil.getUid(BeibeiVideoApplication.application), videoId, 0 + "", new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.getBoolean("IsPost")) { collected = true; iv_favourite.setImageResource(R.drawable.ic_video_detail_favourite2); } else { collected = false; iv_favourite.setImageResource(R.drawable.ic_video_detail_favourite1); } } }); } private void collect(boolean cancel) { SharedPreferences preferences = getContext().getSharedPreferences( "user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); BeibeiVideoAPI.getScoreCollect(getContext(), uid, UserUtil.getLoginUid(BeibeiVideoApplication.application), videoId, 0+"", cancel ? "0" : "1", new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.getBoolean("IsPost")) { if (!cancel) { collected = true; SingleToast.showToast(getContext(), "收藏成功"); } else { collected = false; SingleToast.showToast(getContext(), "取消收藏成功"); } } else { if (!cancel) { SingleToast.showToast(getContext(), "收藏失败"); } else { SingleToast.showToast(getContext(), "取消收藏失败"); } } isCollect(); } }); } } BuWanVideo/src/com/weikou/beibeivideo/ui/recent/WatchHistoryAdapter.java
@@ -2,15 +2,12 @@ import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.support.v4.widget.CursorAdapter; import android.text.TextUtils; import android.text.TextUtils.TruncateAt; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.CheckBox; import android.widget.FrameLayout; import android.widget.ImageButton; @@ -18,46 +15,22 @@ import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; 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.util.common.StringUtils; import com.mozillaonline.providers.DownloadManager; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.db.DownloadTable; import com.weikou.beibeivideo.db.WatchHistoryTable; import com.weikou.beibeivideo.entity.VideoDetailInfo; import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.ui.media.VideoDetailActivity; import com.weikou.beibeivideo.entity.vo.WatchHistoryVO; import com.weikou.beibeivideo.ui.media.VideoDetailActivity2; import com.weikou.beibeivideo.util.VideoUtil; import java.util.ArrayList; import java.util.Formatter; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; public class WatchHistoryAdapter extends CursorAdapter { public class WatchHistoryAdapter extends BaseAdapter { private RequestManager glide; private List<WatchHistoryVO> voList; private Context context; private StringBuilder mFormatBuilder; private Formatter mFormatter; private Map<String, VideoInfo> mVideoInfos; private List<Long> mSelectedIds; private DownloadManager mDownloadManager; private Set<String> mSelectedIds = new HashSet<>(); private boolean mSelectedMode; private DownloadAdapter2.IGetDeleteCallback getdeleteNumber = null; @@ -67,302 +40,14 @@ this.getdeleteNumber = getdeleteNumber; } public WatchHistoryAdapter(Context context1, Context context, Cursor c, boolean autoRequery) { super(context, c, autoRequery); this.mFormatBuilder = new StringBuilder(); this.mFormatter = new Formatter(mFormatBuilder, Locale.getDefault()); this.mVideoInfos = new HashMap<String, VideoInfo>(); this.mSelectedIds = new ArrayList<Long>(); this.glide = Glide.with(context); this.mDownloadManager = new DownloadManager( context1.getContentResolver(), context1.getPackageName()); this.mDownloadManager.setAccessAllDownloads(true);// true public WatchHistoryAdapter(Context context, List<WatchHistoryVO> voList) { this.voList = voList; this.context = context; } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.watch_history_item, parent, false); ViewHolder holder = new ViewHolder(); holder.iv_cover = (ImageView) view.findViewById(R.id.iv_cover); holder.tv_title = (TextView) view.findViewById(R.id.tv_title); holder.tv_watch_time = (TextView) view.findViewById(R.id.tv_watch_time); // holder.btn_status = (ImageButton) view.findViewById(R.id.btn_status); // holder.chb_watch_history = (CheckBox) view // .findViewById(R.id.chb_watch_history); holder.btn_delete = (ImageButton) view .findViewById(R.id.btn_delete_download); holder.chb_delete = (CheckBox) view.findViewById(R.id.chb_delete); holder.fl_video_select = (FrameLayout) view .findViewById(R.id.fl_video_select); view.setTag(holder); return view; } @Override public void bindView(View view, Context context, final Cursor cursor) { final ViewHolder viewHolder = (ViewHolder) view.getTag(); // viewHolder.tv_watch_time.setText(cursor.getString(cursor // .getColumnIndex(WatchHistoryTable.VIDEO_RESOURCE)) + ""); // String str = " "; // for (int i = 0; i < cursor.getColumnNames().length; i++) { // str += (cursor.getColumnNames()[i] + " "); // } // viewHolder.tv_watch_time.setText(str); // Log.i("mResult", "列名为:" + str + "------第1列为:" + cursor.getString(0)); final Long id = cursor.getLong(cursor .getColumnIndex(WatchHistoryTable._ID)); final String videoId = cursor.getString(cursor .getColumnIndex(WatchHistoryTable.VIDEO_ID)); final String videoDetailId = cursor.getString(cursor .getColumnIndex(WatchHistoryTable.VIDEO_DETAIL_ID)); String videoInfoStr = cursor.getString(cursor .getColumnIndexOrThrow(WatchHistoryTable.VIDEO_DETAIL)); if (!mSelectedMode) { viewHolder.fl_video_select.setVisibility(View.GONE); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Map<String, VideoInfo> videoInfos = getVideoInfos(); VideoInfo videoInfo = videoInfos.get(videoId); if (videoInfo != null) { int playingPosition = 0; for (int i = 0; i < videoInfo.getVideoDetailList() .size(); i++) { VideoDetailInfo item =videoInfo.getVideoDetailList().get(i); if (item.getId().equals(videoDetailId)) { playingPosition = i; break; } } Intent intent = new Intent(v.getContext(), VideoDetailActivity2.class); VideoInfo info = new VideoInfo(); info.setId(videoInfo.getId()); info.setShare(videoInfo.getShare()); info.setThirdType(videoInfo.getThirdType()); intent.putExtra("video_info", info); intent.putExtra("video_detail_id", videoDetailId); intent.putExtra("playing_position", playingPosition); intent.putExtra("isFromWatchHistory", true); v.getContext().startActivity(intent); } } }); selectAll(false); viewHolder.fl_video_select.setVisibility(View.GONE); Cursor downloadCursor = context.getContentResolver().query( DownloadTable.CONTENT_URI, null, DownloadTable.VIDEO_ID + " = ? AND " + DownloadTable.VIDEO_DETAIL_ID + " = ? ", new String[]{videoId, videoDetailId}, null); if (downloadCursor.moveToFirst()) { // viewHolder.chb_watch_history.setVisibility(View.GONE); // viewHolder.btn_status.setVisibility(View.GONE); DownloadManager.Query baseQuery = new DownloadManager.Query() .setOnlyIncludeVisibleInDownloadsUi(true); baseQuery.setFilterById(downloadCursor.getLong(downloadCursor .getColumnIndex(DownloadTable.TASK_ID))); Cursor c = mDownloadManager.query(baseQuery); if (c.moveToFirst()) { // viewHolder.btn_status.setImageResource(R.drawable.ic_play); // viewHolder.btn_status.setVisibility(View.GONE); } c.close(); } // else { // viewHolder.chb_watch_history.setVisibility(View.INVISIBLE); // viewHolder.btn_status.setVisibility(View.VISIBLE); // viewHolder.btn_status.setImageResource(R.drawable.ic_download); // viewHolder.btn_status.setOnClickListener(new OnClickListener() { // // @Override // public void onClick(final View v) { // final VideoInfo videoInfo = mVideoInfos.get(videoId); // // if (!videoInfo.isCanSave()) { // Toast.makeText(mContext, "该视频暂不提供缓存", // Toast.LENGTH_SHORT).show(); // return; // } // viewHolder.btn_status.setVisibility(View.GONE); // if (videoInfo != null) { // VideoDetailInfo videoDetailInfoOrg = null; // for (VideoDetailInfo item : videoInfo // .getVideoDetailList()) { // if (item.getId().equals(videoDetailId)) { // videoDetailInfoOrg = item; // break; // } // } // if (videoDetailInfoOrg != null) { // // 点击下载操作 // final DownloadManager downloadManager = new DownloadManager( // v.getContext().getContentResolver(), v // .getContext().getPackageName()); // final VideoDetailInfo videoDetailInfo = videoDetailInfoOrg; // String url = ""; //// VideoPlayUrlUtil.getVideoUrl( //// videoDetailInfo).getUrl(); // if (StringUtils.isBlank(videoInfo // .getExtraData())) { // videoInfo // .setExtraData("http://cloud.letv.com"); // } // (new GetDownLoadTask(v.getContext()) { // protected void onPostExecute(String[] result) { // DownloadManager.Request request = new Request( // Uri.parse(result[0])); // try { // Uri uri = Uri.fromFile(new File( // SDCardUtil.getDownLoadPath(v // .getContext()))); // request.setDestinationUri(uri); // request.setUserAgent(result[1]); // // } catch (Exception e) { // e.printStackTrace(); // } // /* // * request.setDestinationInExternalPublicDir // * ( Environment.DIRECTORY_DOWNLOADS, // * "/"); // */ // Cursor cursor = getContext() // .getContentResolver() // .query(DownloadTable.CONTENT_URI, // new String[] { // DownloadTable.VIDEO_ID, // DownloadTable.VIDEO_DETAIL_ID }, // DownloadTable.VIDEO_DETAIL_ID // + "=?", // new String[] { videoDetailInfo // .getId() + "" }, // DownloadTable.VIDEO_DETAIL_ID // + " ASC");// 查询cursor // if (cursor.getCount() > 0) { // cursor.close(); // return; // } // cursor.close(); // // if (getContext().getSharedPreferences( // "settings", // Context.MODE_PRIVATE) // .getBoolean( // "only_wifi_download", // true)) { // request.setAllowedNetworkTypes(Request.NETWORK_WIFI); // } // request.setTitle(videoInfo.getName()); // request.setDescription(TextUtils // .isEmpty(videoDetailInfo // .getTag()) ? videoDetailInfo // .getName() : videoDetailInfo // .getTag()); // long taskId = downloadManager // .enqueue(request); // // ContentValues values = new ContentValues(); // values.put(DownloadTable.TASK_ID, // taskId); // values.put(DownloadTable.VIDEO_ID, // videoInfo.getId()); // values.put( // DownloadTable.VIDEO_DETAIL_ID, // videoDetailInfo.getId()); // values.put( // DownloadTable.VIDEO_THIRD_TYPE, // videoInfo.getThirdType()); // Gson gson = new GsonBuilder() // .setFieldNamingPolicy( // FieldNamingPolicy.UPPER_CAMEL_CASE) // .create(); // values.put(DownloadTable.VIDEO_DETAIL, // gson.toJson(videoInfo)); // getContext() // .getContentResolver() // .insert(DownloadTable.CONTENT_URI, // values); // // Toast.makeText(getContext(), // // "已加入下载列表", // // Toast.LENGTH_LONG).show(); // SingleToast.showToast(getContext(), // "已加入下载列表"); // notifyDataSetChanged(); // }; // // }).execute( // url, // videoDetailInfo.getId(), // GetRealPathTask // .getNeedSecondConnectServerUrl(videoInfo // .getExtraData())); // } // } // } // }); // } downloadCursor.close(); } else { viewHolder.fl_video_select.setVisibility(View.VISIBLE); // viewHolder.chb_watch_history.setVisibility(View.GONE); // viewHolder.btn_status.setVisibility(View.GONE); // viewHolder.fl_video_select.setVisibility(View.VISIBLE); // viewHolder.btn_delete.setVisibility(View.VISIBLE); // viewHolder.chb_delete.setVisibility(View.VISIBLE); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSelectedIds.contains(id)) { mSelectedIds.remove(id); } else { mSelectedIds.add(id); } viewHolder.chb_delete.setChecked(mSelectedIds.contains(id)); if (getdeleteNumber != null) getdeleteNumber.onGetNum(mSelectedIds.size()); } }); viewHolder.chb_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSelectedIds.contains(id)) { mSelectedIds.remove(id); } else { mSelectedIds.add(id); } viewHolder.chb_delete.setChecked(mSelectedIds.contains(id)); if (getdeleteNumber != null) getdeleteNumber.onGetNum(mSelectedIds.size()); } }); viewHolder.chb_delete.setChecked(mSelectedIds.contains(id)); } viewHolder.iv_cover.setImageResource(R.drawable.ic_default_cover); viewHolder.tv_title.setText(""); getVideoDetail(context, videoId, videoDetailId, videoInfoStr, viewHolder); } private void bindView(ViewHolder viewHolder, String videoDetailId, private void bindView(ViewHolder viewHolder, int position, VideoInfo videoInfo) { String subName = ""; for (VideoDetailInfo videoDetailInfo : videoInfo.getVideoDetailList()) { if (videoDetailId.equals(videoDetailInfo.getId())) { subName = TextUtils.isEmpty(videoDetailInfo.getTag()) ? videoDetailInfo .getName() : videoDetailInfo.getTag(); } } if (StringUtils.isEmpty(videoInfo.getName())) { videoInfo.setName("."); } if (subName.equalsIgnoreCase(videoInfo.getName())) { viewHolder.tv_title.setSingleLine(true); viewHolder.tv_title.setEllipsize(TruncateAt.END); @@ -374,16 +59,14 @@ } viewHolder.tv_title.setText(videoInfo.getName() + System.getProperty("line.separator")); viewHolder.tv_watch_time.setText(mContext.getResources().getString( viewHolder.tv_watch_time.setText(context.getResources().getString( R.string.watch_history_time, subName)); } // imageLoader.displayImage(videoInfo.getPicture(), viewHolder.iv_cover, // options); if (StringUtils.isEmpty(videoInfo.getPicture())) videoInfo.setPicture(""); try { glide.load(videoInfo.getPicture()) Glide.with(context).load(videoInfo.getPicture()) .placeholder(R.drawable.ic_default_cover) .error(R.drawable.ic_default_cover).into(viewHolder.iv_cover); } catch (IllegalArgumentException e) { @@ -391,57 +74,129 @@ } } private void getVideoDetail(Context context, final String videoId, final String videoDetailId, String videoInfoStr, private void getVideoDetail(WatchHistoryVO vo, final ViewHolder viewHolder) { viewHolder.tv_title.setTag(videoId); VideoInfo videoInfo = mVideoInfos.get(videoId); viewHolder.tv_title.setTag(vo.getId()); VideoInfo videoInfo = vo.getVideoInfo(); if (videoInfo != null) { bindView(viewHolder, videoDetailId, videoInfo); } else { Gson gson = new GsonBuilder().setFieldNamingPolicy( FieldNamingPolicy.UPPER_CAMEL_CASE).create(); videoInfo = gson.fromJson(videoInfoStr, new TypeToken<VideoInfo>() { }.getType()); mVideoInfos.put(videoId, videoInfo); if (viewHolder.tv_title.getTag().equals(videoId)) { bindView(viewHolder, videoDetailId, videoInfo); } bindView(viewHolder, vo.getPosition(), videoInfo); } } private String stringForTime(int timeMs) { int totalSeconds = timeMs / 1000; int seconds = totalSeconds % 60; int minutes = (totalSeconds / 60) % 60; int hours = totalSeconds / 3600; mFormatBuilder.setLength(0); if (hours > 0) { return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds) .toString(); } else { return mFormatter.format("%02d:%02d", minutes, seconds).toString(); } @Override public int getCount() { return 0; } public Map<String, VideoInfo> getVideoInfos() { return mVideoInfos; @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { final WatchHistoryVO vo = voList.get(position); View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.watch_history_item, parent, false); if (view.getTag() == null) { ViewHolder holder = new ViewHolder(); holder.iv_cover = (ImageView) view.findViewById(R.id.iv_cover); holder.tv_title = (TextView) view.findViewById(R.id.tv_title); holder.tv_watch_time = (TextView) view.findViewById(R.id.tv_watch_time); holder.btn_delete = (ImageButton) view .findViewById(R.id.btn_delete_download); holder.chb_delete = (CheckBox) view.findViewById(R.id.chb_delete); holder.fl_video_select = (FrameLayout) view .findViewById(R.id.fl_video_select); view.setTag(holder); } final ViewHolder holder = (ViewHolder) view.getTag(); //非编辑模式 if (!mSelectedMode) { holder.fl_video_select.setVisibility(View.GONE); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { VideoInfo videoInfo = vo.getVideoInfo(); if (videoInfo != null) { int playingPosition = vo.getPosition(); Intent intent = new Intent(v.getContext(), VideoDetailActivity2.class); VideoInfo info = new VideoInfo(); info.setId(videoInfo.getId()); info.setShare(videoInfo.getShare()); info.setThirdType(videoInfo.getThirdType()); intent.putExtra("video_info", info); intent.putExtra("playing_position", playingPosition); intent.putExtra("isFromWatchHistory", true); v.getContext().startActivity(intent); } } }); selectAll(false); holder.fl_video_select.setVisibility(View.GONE); } else { holder.fl_video_select.setVisibility(View.VISIBLE); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSelectedIds.contains(vo.getId())) { mSelectedIds.remove(vo.getId()); } else { mSelectedIds.add(vo.getId()); } holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId())); if (getdeleteNumber != null) getdeleteNumber.onGetNum(mSelectedIds.size()); } }); holder.chb_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSelectedIds.contains(vo.getId())) { mSelectedIds.remove(vo.getId()); } else { mSelectedIds.add(vo.getId()); } holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId())); if (getdeleteNumber != null) getdeleteNumber.onGetNum(mSelectedIds.size()); } }); holder.chb_delete.setChecked(mSelectedIds.contains(vo.getId())); } holder.iv_cover.setImageResource(R.drawable.ic_default_cover); holder.tv_title.setText(""); getVideoDetail(vo, holder); return view; } private static class ViewHolder { ImageView iv_cover; TextView tv_title; TextView tv_watch_time; // ImageButton btn_status; // CheckBox chb_watch_history; ImageButton btn_delete; CheckBox chb_delete; FrameLayout fl_video_select; } public List<Long> getSelectedIds() { public Set<String> getSelectedIds() { return mSelectedIds; } @@ -457,18 +212,14 @@ public void selectAll(boolean isSelected) { mSelectedIds.clear(); if (isSelected) { if (mCursor.moveToFirst()) { do { mSelectedIds.add(mCursor.getLong(mCursor .getColumnIndex(WatchHistoryTable._ID))); } while (mCursor.moveToNext()); for (WatchHistoryVO vo : voList) { vo.setSelected(true); mSelectedIds.add(vo.getId()); } } else { if (mCursor.moveToFirst()) { do { mSelectedIds.remove(mCursor.getLong(mCursor .getColumnIndex(WatchHistoryTable._ID))); } while (mCursor.moveToNext()); for (WatchHistoryVO vo : voList) { vo.setSelected(false); } } if (getdeleteNumber != null) BuWanVideo/src/com/weikou/beibeivideo/util/BeibeiConstant.java
@@ -18,7 +18,7 @@ public static final String ABOUT_US = "http://bwweb.yeshitv.com/abountOur/index.html"; public static final String HOST = "http://api.ysdq.yeshitv.com:8089";//正式上线版本 public static final String HOST = "http://cb.ysdq.yeshitv.com";//正式上线版本 public static final String BAICHUAN_APPKEY = "24980167"; BuWanVideo/src/com/weikou/beibeivideo/util/ad/GDTConstant.java
@@ -3,9 +3,9 @@ //广告常量 public class GDTConstant { public static String PID_HOME_RECOMMEND_BIG_IMG="2011627548122579"; public static String PID_HOME_RECOMMEND_BIG_IMG = "2011627548122579"; public static String PID_VIDEO_DETAIL_PLAYER="5061928359494942"; public static String PID_VIDEO_DETAIL_PLAYER = "5061928359494942"; //视频播放器下方广告位 public static String PID_2_VIDEO_DETAIL_PLAY_EXPRESS1 = "9031528552257617"; //相关视频下方广告位 @@ -15,4 +15,9 @@ public static String PID_2_VIDEO_LIST_SMALL_AD_COLUMN2 = "7001426565143389"; //PPTV视频前贴 public static String PID_2_VIDEO_DETAIL_PLAYER_PRE_PPTV = "5091266068484315"; } BuWanVideo/src/com/weikou/beibeivideo/util/browser/BWJavaInterface.java
@@ -137,6 +137,18 @@ }); } @JavascriptInterface public void finishPageWithResultOK() { mContext.runOnUiThread(new Runnable() { @Override public void run() { mContext.setResult(Activity.RESULT_OK); mContext.finish(); } }); } /** * 淘宝授权 * @@ -159,6 +171,14 @@ mContext.startActivity(intent); } @JavascriptInterface public void jumpWeb() { Intent intent = new Intent(mContext, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } /** * 电话号码绑定 */ BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java
@@ -17,6 +17,7 @@ import com.lcjian.library.util.security.MD5Utils; import com.umeng.analytics.MobclickAgent; import com.weikou.beibeivideo.BeibeiVideoAPI; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.JumpActivityUtil; import org.json.JSONException; @@ -107,6 +108,14 @@ } @JavascriptInterface public void jumpWeb(String url) { Intent intent = new Intent(mContext, BrowserActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("url", url); mContext.startActivity(intent); } @JavascriptInterface public String getRequestBaseParams(String json) { LinkedHashMap<String, String> params = new LinkedHashMap<>(); int version = PackageUtils2.getVersionCode(mContext);