Commit d0f21318 authored by 王雪伟's avatar 王雪伟

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	app/src/main/java/com/ym/zxhcsdkaar/MainActivity.java
#	zxhcsdk/src/main/java/com/ym/zxhcsdk/ads/RewardvideoPortraitADActivity.java
#	zxhcsdk/src/main/java/com/ym/zxhcsdk/view/ZXHCRewardVideoAD.java
parents ace5ab79 067a6521
......@@ -141,7 +141,6 @@ public class MainActivity extends Activity {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, RewardvideoPortraitADActivity.class));
}
});
......@@ -192,7 +191,7 @@ public class MainActivity extends Activity {
zxhcRewardVideoAD.loadRewardAD(new RewardVideoAdLoadListener() {
@Override
public void OnAdLoaded() {
RewardVideoPlayerUtils.getInstance().setVideo(zxhcRewardVideoAD);
//RewardVideoPlayerUtils.getInstance().setVideo(zxhcRewardVideoAD);
zxhcRewardVideoAD.showRewardAD(MainActivity.this, new RewardVideoAdShowListener() {
@Override
public void OnAdShow() {
......
package com.ym.zxhcsdk.ads;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.CountDownTimer;
import android.util.Log;
import com.ym.zxhcsdk.HcAdBean;
import com.ym.zxhcsdk.listener.RewardVideoAdShowListener;
import com.ym.zxhcsdk.listener.RewardVideoAdUpdateViewListener;
import java.io.IOException;
/**
* 激励视频播放器
......@@ -11,35 +14,128 @@ public class RewardVideoMediaPlayer {
private static volatile RewardVideoMediaPlayer mRewardVideoMediaPlayer = null;
private static MediaPlayer mMediaPlayer = null;
public boolean isPrepared = false;//是否装载媒体资源完毕
private RewardVideoAdShowListener mShowListener;//播放激励视频监听回调
private RewardVideoAdUpdateViewListener updateViewListener;
private RewardVideoMediaPlayer() {}
/**
* 单例
* 单例
* @return
*/
public static MediaPlayer getInstance() {
public static RewardVideoMediaPlayer getInstance() {
synchronized (RewardVideoMediaPlayer.class) {
if (null == mRewardVideoMediaPlayer) {
mRewardVideoMediaPlayer = new RewardVideoMediaPlayer();
}
}
return mRewardVideoMediaPlayer.getMediaPlayer();
return mRewardVideoMediaPlayer;
}
/**
* MediaPlayer实例化
* @return
*/
public MediaPlayer getMediaPlayer() {
if (null == mMediaPlayer) {
mMediaPlayer = new MediaPlayer();
}
return mMediaPlayer;
}
public void setHcAdBean(HcAdBean mHcAdBean) {
try {
isPrepared = false;
getMediaPlayer().reset();
getMediaPlayer().setDataSource("https://zx-cdn.zhangxinhulian.com/file/2020/5/8447fa5488ee19a54d2adbe8d127693045540211.mp4");
getMediaPlayer().prepareAsync();
getMediaPlayer().setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
isPrepared = true;
}
});
getMediaPlayer().setOnCompletionListener(new MediaPlayer.OnCompletionListener() {//网络流媒体播放结束监听
@Override
public void onCompletion(MediaPlayer mp) {
Log.d("wxw", "MediaPlayer onCompletion");
if (null != updateViewListener) {
mShowListener.OnVideoCompleted();
updateViewListener.OnCompletionListener();
}
}
});
getMediaPlayer().setOnErrorListener(new MediaPlayer.OnErrorListener() {//设置错误信息监听
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d("wxw", "MediaPlayer error " + what + " extra " + extra);
if (null != updateViewListener) {
mShowListener.OnVideoError("" + what);
updateViewListener.OnErrorListener(what + "");
}
return false;
}
});
/* RewardVideoMediaPlayer.getInstance().setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {//网络流媒体的缓冲监听
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.d("wxw", "percent" + percent);
if (percent==100){
// mp.start();
isLoadFinish = true;
}
Log.d("wxw", "mp.getCurrentPosition() " + mp.getCurrentPosition());
}
});*/
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 开始播放激励视频
*/
public void startVideo() {
if (null != mShowListener) {
mShowListener.OnAdShow();
}
getMediaPlayer().start();
}
/**
* 关闭激励视频页面
*/
public void closeVideoAdPage() {
mShowListener.OnAdClosed();
}
/**
* 可以领取奖励
*/
public void rewardVerify() {
mShowListener.OnRewardVerify();
}
return mMediaPlayer;
/**
* 点击激励视频下载
*/
public void clickVideoAd() {
mShowListener.OnAdClicked();
}
/**
* 设置播放激励视频监听回调
*/
public void setShowRewardVideoListener(RewardVideoAdShowListener showListener) {
this.mShowListener = showListener;
}
/**
* 更新Activity View监听
*/
public void setRewardVideoUpdateListener(RewardVideoAdUpdateViewListener updateListener) {
this.updateViewListener = updateListener;
}
}
package com.ym.zxhcsdk.ads;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
......@@ -15,17 +12,11 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.ym.zxhcsdk.HcAdBean;
import com.ym.zxhcsdk.HttpClientUtils;
import com.ym.zxhcsdk.R;
import com.ym.zxhcsdk.view.ZXHCRewardVideoAD;
import java.io.Serializable;
import com.ym.zxhcsdk.listener.RewardVideoAdUpdateViewListener;
public class RewardvideoPortraitADActivity extends Activity implements SurfaceHolder.Callback {
public class RewardvideoPortraitADActivity extends Activity implements SurfaceHolder.Callback, RewardVideoAdUpdateViewListener {
private MediaPlayer mPlayer = null;
private SurfaceView sfv_reward_show;
private SurfaceHolder surfaceHolder;
private FrameLayout frameView;
......@@ -37,24 +28,14 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
private TextView TopTimeTv;
private ImageView TopClose;
// public ZXHCRewardVideoAD mZxhcRewardVideoAD;
private HcAdBean zxRewardAdBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rewardvideo_portrait_a_d);
// mZxhcRewardVideoAD = RewardVideoPlayerUtils.getInstance().getVideo();
mPlayer = RewardVideoMediaPlayer.getInstance();
zxRewardAdBean = (HcAdBean) getIntent().getSerializableExtra("ZXRewardAdBean");
bindViews();
RewardVideoMediaPlayer.getInstance().setRewardVideoUpdateListener(this);//设置播放回调监听,更新Activity View
}
private void bindViews() {
sfv_reward_show = findViewById(R.id.sfv_reward_video_ad_show);
frameView = findViewById(R.id.frame_content);
......@@ -64,39 +45,17 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
bottomBtnTv = findViewById(R.id.reward_video_ad_btn);
TopTimeTv = findViewById(R.id.reward_ad_time);
TopClose = findViewById(R.id.reward_ad_close);
//初始化SurfaceHolder类,SurfaceView的控制器
surfaceHolder = sfv_reward_show.getHolder();
surfaceHolder.addCallback(this);
//设置底部信息
bottomTitle.setText(zxRewardAdBean.getVideo_title());
bottomDesc.setText(zxRewardAdBean.getVideo_desc());
bottomBtnTv.setText(zxRewardAdBean.getVideo_iconbuttontext());
HttpClientUtils.LoadImg(zxRewardAdBean.getVideo_icon_url(), new HttpClientUtils.OnRequestImgCallBack() {
@Override
public void onSuccess(Bitmap bitmap) {
runOnUiThread(new Runnable() {
@Override
public void run() {
bottomIcon.setImageBitmap(bitmap);
}
});
}
findViewById(R.id.ll_bottom_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onError(String errorMsg) {
public void onClick(View v) {
RewardVideoMediaPlayer.getInstance().clickVideoAd();
}
});
//初始化SurfaceHolder类,SurfaceView的控制器
surfaceHolder = sfv_reward_show.getHolder();
surfaceHolder.addCallback(this);
SetAdVideo();
// mPlayer = new MediaPlayer();
// mPlayer.setDataSource("https://zx-cdn.zhangxinhulian.com/file/2020/5/8447fa5488ee19a54d2adbe8d127693045540211.mp4");
// mPlayer.setDisplay(surfaceHolder);
// mPlayer.prepareAsync();
TopClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
......@@ -105,61 +64,35 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
});
}
private void SetAdVideo(){
TopClose.setVisibility(View.GONE);
TopTimeTv.setVisibility(View.VISIBLE);
//网络流媒体播放结束监听
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Log.d("wxw", "MediaPlayer onCompletion");
TopClose.setVisibility(View.VISIBLE);
TopTimeTv.setVisibility(View.GONE);
}
});
//设置错误信息监听
mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d("wxw", "MediaPlayer error " + what + " extra " + extra);
TopClose.setVisibility(View.VISIBLE);
TopTimeTv.setVisibility(View.GONE);
return false;
}
});
//视频尺寸监听
mPlayer.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
// int phoneWidth = PhoneUtils.getInstance().getScreenWidth(RewardvideoPortraitADActivity.this);
// float pro = height / (float) width;
// ViewGroup.LayoutParams layoutParams = frameView.getLayoutParams();
// layoutParams.width = phoneWidth;
// layoutParams.height = (int) (phoneWidth * pro);
// frameView.setLayoutParams(layoutParams);
Log.d("wxw", "mp.getCurrentPosition() " + mp.getCurrentPosition());
}
});
TopClose.setVisibility(View.GONE);
TopTimeTv.setVisibility(View.VISIBLE);
}
@Override
public void surfaceCreated(@NonNull SurfaceHolder holder) {
Log.d("wxw", "surfaceCreated");
if (mPlayer!=null){
mPlayer.setDisplay(surfaceHolder);
// return;
}
RewardVideoMediaPlayer.getInstance().getMediaPlayer().setDisplay(surfaceHolder);
RewardVideoMediaPlayer.getInstance().startVideo();
}
//mPlayer.start();
/**
* 播放激励视频完成回调
*/
@Override
public void OnCompletionListener() {
TopClose.setVisibility(View.VISIBLE);
TopTimeTv.setVisibility(View.GONE);
}
/**
* 播放激励视频错误回调
* @param error
*/
@Override
public void OnErrorListener(String error) {
TopClose.setVisibility(View.VISIBLE);
TopTimeTv.setVisibility(View.GONE);
}
@Override
......@@ -197,6 +130,12 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
countDownTimer.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
RewardVideoMediaPlayer.getInstance().closeVideoAdPage();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
......@@ -204,33 +143,4 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onResume() {
super.onResume();
if (mPlayer!=null){
if (!mPlayer.isPlaying()){
mPlayer.start();
}
}
}
@Override
protected void onPause() {
super.onPause();
if (mPlayer!=null){
if (mPlayer.isPlaying()){
mPlayer.pause();
}
}
}
@Override
protected void onDestroy() {
if (mPlayer!=null){
mPlayer.release();
mPlayer=null;
}
super.onDestroy();
}
}
\ No newline at end of file
package com.ym.zxhcsdk.listener;
public interface RewardVideoAdUpdateViewListener {
/// <summary>
/// 广告加载成功,可在此回调后进行广告展示
/// </summary>
void OnCompletionListener();
/// <summary>
/// 激励视频广告各种错误信息回调
/// </summary>
void OnErrorListener(String error);
}
......@@ -49,6 +49,7 @@ public class ZXHCRewardVideoAD implements Serializable {
adBean.setClickReport(false);
adBean.setClickDpLinkSucReport(false);
adBean.setClickDpLinkfailReport(false);
RewardVideoMediaPlayer.getInstance().setHcAdBean(adBean);//将广告资源加载到MediaPlayer
context.runOnUiThread(new Runnable() {
@Override
public void run() {
......@@ -58,30 +59,10 @@ public class ZXHCRewardVideoAD implements Serializable {
}
});
if (adBean.getSrcUrls().size() > 0) {
}
/* if (adBean.getSrcUrls().size() > 0) {
// try {
// isLoadFinish = false;
// RewardVideoMediaPlayer.getInstance().setDataSource("https://zx-cdn.zhangxinhulian.com/file/2020/5/8447fa5488ee19a54d2adbe8d127693045540211.mp4");
// // mPlayer.setDisplay(surfaceHolder);
// RewardVideoMediaPlayer.getInstance().prepareAsync();
// //网络流媒体的缓冲监听
// RewardVideoMediaPlayer.getInstance().setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
// @Override
// public void onBufferingUpdate(MediaPlayer mp, int percent) {
// Log.d("wxw", "percent" + percent);
// if (percent==100){
//// mp.start();
// isLoadFinish = true;
// }
// Log.d("wxw", "mp.getCurrentPosition() " + mp.getCurrentPosition());
// }
// });
// } catch (IOException e) {
// e.printStackTrace();
// }
}*/
}
@Override
......@@ -102,12 +83,8 @@ public class ZXHCRewardVideoAD implements Serializable {
/**
* 播放激励视频
*/
public void showRewardAD(Activity context, RewardVideoAdShowListener listener) {
if (adBean!=null){
Intent intent = new Intent(context, RewardvideoPortraitADActivity.class);
intent.putExtra("ZXRewardAdBean",adBean);
context.startActivity(intent);
}
public void showRewardAD(Activity activity, RewardVideoAdShowListener listener) {
RewardVideoMediaPlayer.getInstance().setShowRewardVideoListener(listener);
activity.startActivity(new Intent(activity, RewardvideoPortraitADActivity.class));
}
}
......@@ -58,6 +58,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/ll_bottom_download"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment