package com.llf.common.ui.video;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import com.llf.basemodel.base.BaseActivity;
import com.llf.basemodel.commonwidget.CircleImageView;
import com.llf.basemodel.dialog.ShareDialog;
import com.llf.basemodel.recycleview.BaseAdapter;
import com.llf.basemodel.recycleview.BaseViewHolder;
import com.llf.basemodel.utils.AppInfoUtil;
import com.llf.basemodel.utils.ImageLoaderUtils;
import com.llf.basemodel.utils.LogUtil;
import com.llf.common.R;
import com.llf.common.api.Apis;
import com.llf.common.constant.AppConfig;
import com.llf.common.entity.VideoEntity;
import com.llf.common.ui.video.contract.VideoContract;
import com.llf.common.ui.video.presenter.VideoPresenter;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.sdk.openapi.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXVideoObject;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import llf.videomodel.VideoPlayer;
import static com.tencent.mm.sdk.platformtools.Util.bmpToByteArray;
/**
* Created by llf on 2017/3/17.
* 视频播放
*/
public class VideoDetailActivity extends BaseActivity implements VideoContract.View, ShareDialog.OneShare {
@Bind(R.id.viewPager)
VideoPlayer mViewPager;
@Bind(R.id.toolbar)
Toolbar mToolbar;
@Bind(R.id.recyclerView)
RecyclerView mRecyclerView;
private VideoContract.Presenter mPresenter;
private BaseAdapter mAdapter;
private List<VideoEntity.V9LG4CHORBean> videos = new ArrayList<>();
private int pageIndex = 0;
private IWXAPI iwxapi;
private String url, title;
public static void launch(Context context, String url, String title, int pageIndex) {
Intent intent = new Intent(context, VideoDetailActivity.class);
intent.putExtra("url", url);
intent.putExtra("title", title);
intent.putExtra("pageIndex", pageIndex);
context.startActivity(intent);
}
@Override
protected int getLayoutId() {
return R.layout.activity_video_detail;
}
@Override
protected void initView() {
Intent intent = getIntent();
pageIndex = intent.getIntExtra("pageIndex", 0);
url = intent.getStringExtra("url");
title = intent.getStringExtra("title");
mViewPager.playVideo(url, title);
iwxapi = WXAPIFactory.createWXAPI(this, AppConfig.APP_ID_WEIXIN, false);
iwxapi.registerApp(AppConfig.APP_ID_WEIXIN);
mToolbar.setContentInsetStartWithNavigation(0);
mToolbar.inflateMenu(R.menu.menu_video_detail);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
showToast("搜索");
break;
case R.id.love:
showToast("喜欢");
break;
case R.id.share:
ShareDialog.show(VideoDetailActivity.this, VideoDetailActivity.this);
break;
case R.id.report:
showToast("举报成功");
break;
default:
break;
}
return false;
}
});
GridLayoutManager manager = new GridLayoutManager(this, 2);
mRecyclerView.setLayoutManager(manager);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mAdapter = new BaseAdapter<VideoEntity.V9LG4CHORBean>(this, R.layout.item_video, videos) {
@Override
public void convert(BaseViewHolder viewHolder, VideoEntity.V9LG4CHORBean item) {
viewHolder.setText(R.id.title, item.getTitle());
viewHolder.setText(R.id.source, item.getVideosource());
ImageView imageView = viewHolder.getView(R.id.cover);
CircleImageView circleImageView = viewHolder.getView(R.id.topicImg);
ImageLoaderUtils.loadingImg(VideoDetailActivity.this, imageView, item.getCover());
ImageLoaderUtils.loadingImg(VideoDetailActivity.this, circleImageView, item.getTopicImg());
}
};
mAdapter.setOnItemClickLitener(new BaseAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position, BaseViewHolder viewHolder) {
mViewPager.playVideo(videos.get(position).getMp4_url(), videos.get(position).getTitle());
}
@Override
public void onItemLongClick(int position) {
}
});
mRecyclerView.setAdapter(mAdapter);
mPresenter = new VideoPresenter(this);
mPresenter.loadData(Apis.HOST + Apis.Video + Apis.VIDEO_HOT_ID + "/n/" + pageIndex * 10 + "-10.html");
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
LogUtil.d(getClass().getSimpleName() + "onMenuOpened...unable to set icons for overflow menu");
}
}
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public void onBackPressed() {
if (mViewPager.isFullScreen()) {
mViewPager.setProtrait();
return;
}
super.onBackPressed();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
//一定要记得销毁View
if (mViewPager != null) {
mViewPager.destroyVideo();
mViewPager = null;
}
videos.clear();
super.onDestroy();
}
@Override
public void showLoading() {
startProgressDialog();
}
@Override
public void stopLoading() {
stopProgressDialog();
}
@Override
public void showErrorTip(String msg) {
showErrorHint(msg);
}
@Override
public void returnData(List<VideoEntity.V9LG4CHORBean> datas) {
videos.addAll(datas);
mAdapter.notifyDataSetChanged();
}
@Override
public void weixinShare() {
if (!AppInfoUtil.isWeixinAvilible(this)) {
showToast("请先安装微信");
return;
}
WXVideoObject webpageObject = new WXVideoObject();
webpageObject.videoUrl = url;
WXMediaMessage msg = new WXMediaMessage(webpageObject);
msg.title = "最好的视频";
msg.description = title;
Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
msg.thumbData = bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("video");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
iwxapi.sendReq(req);
}
@Override
public void qqShare() {
}
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
}