Commit 512b7457 authored by zxhljwl's avatar zxhljwl

修改

parent 13f41672
...@@ -17,6 +17,7 @@ import com.ym.zxhcsdk.ads.RewardVideoPlayerUtils; ...@@ -17,6 +17,7 @@ import com.ym.zxhcsdk.ads.RewardVideoPlayerUtils;
import com.ym.zxhcsdk.ads.RewardvideoPortraitADActivity; import com.ym.zxhcsdk.ads.RewardvideoPortraitADActivity;
import com.ym.zxhcsdk.listener.FeedAdListener; import com.ym.zxhcsdk.listener.FeedAdListener;
import com.ym.zxhcsdk.listener.RewardVideoAdLoadListener; import com.ym.zxhcsdk.listener.RewardVideoAdLoadListener;
import com.ym.zxhcsdk.listener.RewardVideoAdShowListener;
import com.ym.zxhcsdk.listener.SplashAdListener; import com.ym.zxhcsdk.listener.SplashAdListener;
import com.ym.zxhcsdk.manager.ZXHCADManager; import com.ym.zxhcsdk.manager.ZXHCADManager;
import com.ym.zxhcsdk.manager.ZXHCAdViewManager; import com.ym.zxhcsdk.manager.ZXHCAdViewManager;
...@@ -190,7 +191,38 @@ public class MainActivity extends Activity { ...@@ -190,7 +191,38 @@ public class MainActivity extends Activity {
zxhcRewardVideoAD.loadRewardAD(new RewardVideoAdLoadListener() { zxhcRewardVideoAD.loadRewardAD(new RewardVideoAdLoadListener() {
@Override @Override
public void OnAdLoaded() { public void OnAdLoaded() {
RewardVideoPlayerUtils.getInstance().setVideo(zxhcRewardVideoAD); //RewardVideoPlayerUtils.getInstance().setVideo(zxhcRewardVideoAD);
zxhcRewardVideoAD.showRewardAD(MainActivity.this, new RewardVideoAdShowListener() {
@Override
public void OnAdShow() {
}
@Override
public void OnRewardVerify() {
}
@Override
public void OnAdClicked() {
}
@Override
public void OnVideoCompleted() {
}
@Override
public void OnAdClosed() {
}
@Override
public void OnVideoError(String error) {
}
});
} }
@Override @Override
......
package com.ym.zxhcsdk.ads; package com.ym.zxhcsdk.ads;
import android.content.Intent;
import android.media.MediaPlayer; 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 { ...@@ -11,35 +14,128 @@ public class RewardVideoMediaPlayer {
private static volatile RewardVideoMediaPlayer mRewardVideoMediaPlayer = null; private static volatile RewardVideoMediaPlayer mRewardVideoMediaPlayer = null;
private static MediaPlayer mMediaPlayer = null; private static MediaPlayer mMediaPlayer = null;
public boolean isPrepared = false;//是否装载媒体资源完毕
private RewardVideoAdShowListener mShowListener;//播放激励视频监听回调
private RewardVideoAdUpdateViewListener updateViewListener;
private RewardVideoMediaPlayer() {} private RewardVideoMediaPlayer() {}
/** /**
* 单例 * 单例
* @return * @return
*/ */
public static MediaPlayer getInstance() { public static RewardVideoMediaPlayer getInstance() {
synchronized (RewardVideoMediaPlayer.class) { synchronized (RewardVideoMediaPlayer.class) {
if (null == mRewardVideoMediaPlayer) { if (null == mRewardVideoMediaPlayer) {
mRewardVideoMediaPlayer = new RewardVideoMediaPlayer(); mRewardVideoMediaPlayer = new RewardVideoMediaPlayer();
} }
} }
return mRewardVideoMediaPlayer.getMediaPlayer(); return mRewardVideoMediaPlayer;
} }
/**
* MediaPlayer实例化
* @return
*/
public MediaPlayer getMediaPlayer() { public MediaPlayer getMediaPlayer() {
if (null == mMediaPlayer) { if (null == mMediaPlayer) {
mMediaPlayer = new MediaPlayer(); 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; package com.ym.zxhcsdk.ads;
import android.app.Activity; import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.util.Log; import android.util.Log;
...@@ -14,11 +13,10 @@ import android.widget.ImageView; ...@@ -14,11 +13,10 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.ym.zxhcsdk.R; import com.ym.zxhcsdk.R;
import com.ym.zxhcsdk.view.ZXHCRewardVideoAD; 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 SurfaceView sfv_reward_show;
private SurfaceHolder surfaceHolder; private SurfaceHolder surfaceHolder;
private FrameLayout frameView; private FrameLayout frameView;
...@@ -30,23 +28,14 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -30,23 +28,14 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
private TextView TopTimeTv; private TextView TopTimeTv;
private ImageView TopClose; private ImageView TopClose;
public ZXHCRewardVideoAD mZxhcRewardVideoAD;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rewardvideo_portrait_a_d); setContentView(R.layout.activity_rewardvideo_portrait_a_d);
mZxhcRewardVideoAD = RewardVideoPlayerUtils.getInstance().getVideo();
if (null != mZxhcRewardVideoAD) {
mPlayer = RewardVideoMediaPlayer.getInstance();
}
bindViews(); bindViews();
RewardVideoMediaPlayer.getInstance().setRewardVideoUpdateListener(this);//设置播放回调监听,更新Activity View
} }
private void bindViews() { private void bindViews() {
sfv_reward_show = findViewById(R.id.sfv_reward_video_ad_show); sfv_reward_show = findViewById(R.id.sfv_reward_video_ad_show);
frameView = findViewById(R.id.frame_content); frameView = findViewById(R.id.frame_content);
...@@ -56,16 +45,17 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -56,16 +45,17 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
bottomBtnTv = findViewById(R.id.reward_video_ad_btn); bottomBtnTv = findViewById(R.id.reward_video_ad_btn);
TopTimeTv = findViewById(R.id.reward_ad_time); TopTimeTv = findViewById(R.id.reward_ad_time);
TopClose = findViewById(R.id.reward_ad_close); TopClose = findViewById(R.id.reward_ad_close);
findViewById(R.id.ll_bottom_download).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RewardVideoMediaPlayer.getInstance().clickVideoAd();
}
});
//初始化SurfaceHolder类,SurfaceView的控制器 //初始化SurfaceHolder类,SurfaceView的控制器
surfaceHolder = sfv_reward_show.getHolder(); surfaceHolder = sfv_reward_show.getHolder();
surfaceHolder.addCallback(this); surfaceHolder.addCallback(this);
SetAdVideo(); 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() { TopClose.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -75,54 +65,34 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -75,54 +65,34 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
} }
private void SetAdVideo(){ private void SetAdVideo(){
TopClose.setVisibility(View.GONE); TopClose.setVisibility(View.GONE);
TopTimeTv.setVisibility(View.VISIBLE); TopTimeTv.setVisibility(View.VISIBLE);
} }
@Override @Override
public void surfaceCreated(@NonNull SurfaceHolder holder) { public void surfaceCreated(@NonNull SurfaceHolder holder) {
Log.d("wxw", "surfaceCreated"); Log.d("wxw", "surfaceCreated");
if (mPlayer!=null){ RewardVideoMediaPlayer.getInstance().getMediaPlayer().setDisplay(surfaceHolder);
mPlayer.setDisplay(surfaceHolder); RewardVideoMediaPlayer.getInstance().startVideo();
// return; }
}
//网络流媒体播放结束监听
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());
}
});
//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 @Override
...@@ -160,6 +130,12 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -160,6 +130,12 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
countDownTimer.start(); countDownTimer.start();
} }
@Override
protected void onDestroy() {
super.onDestroy();
RewardVideoMediaPlayer.getInstance().closeVideoAdPage();
}
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){ if(keyCode == KeyEvent.KEYCODE_BACK){
...@@ -167,33 +143,4 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -167,33 +143,4 @@ public class RewardvideoPortraitADActivity extends Activity implements SurfaceHo
} }
return super.onKeyDown(keyCode, event); 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);
}
...@@ -9,6 +9,7 @@ import com.ym.zxhcsdk.HttpClientUtils; ...@@ -9,6 +9,7 @@ import com.ym.zxhcsdk.HttpClientUtils;
import com.ym.zxhcsdk.PhoneUtils; import com.ym.zxhcsdk.PhoneUtils;
import com.ym.zxhcsdk.ZXHCConstant; import com.ym.zxhcsdk.ZXHCConstant;
import com.ym.zxhcsdk.ads.RewardVideoMediaPlayer; import com.ym.zxhcsdk.ads.RewardVideoMediaPlayer;
import com.ym.zxhcsdk.ads.RewardvideoPortraitADActivity;
import com.ym.zxhcsdk.listener.RewardVideoAdLoadListener; import com.ym.zxhcsdk.listener.RewardVideoAdLoadListener;
import com.ym.zxhcsdk.listener.RewardVideoAdShowListener; import com.ym.zxhcsdk.listener.RewardVideoAdShowListener;
...@@ -48,6 +49,7 @@ public class ZXHCRewardVideoAD implements Serializable { ...@@ -48,6 +49,7 @@ public class ZXHCRewardVideoAD implements Serializable {
adBean.setClickReport(false); adBean.setClickReport(false);
adBean.setClickDpLinkSucReport(false); adBean.setClickDpLinkSucReport(false);
adBean.setClickDpLinkfailReport(false); adBean.setClickDpLinkfailReport(false);
RewardVideoMediaPlayer.getInstance().setHcAdBean(adBean);//将广告资源加载到MediaPlayer
context.runOnUiThread(new Runnable() { context.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
...@@ -57,30 +59,10 @@ public class ZXHCRewardVideoAD implements Serializable { ...@@ -57,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 @Override
...@@ -101,7 +83,8 @@ public class ZXHCRewardVideoAD implements Serializable { ...@@ -101,7 +83,8 @@ public class ZXHCRewardVideoAD implements Serializable {
/** /**
* 播放激励视频 * 播放激励视频
*/ */
public void showRewardAD(Activity context, RewardVideoAdShowListener listener) { public void showRewardAD(Activity activity, RewardVideoAdShowListener listener) {
RewardVideoMediaPlayer.getInstance().setShowRewardVideoListener(listener);
activity.startActivity(new Intent(activity, RewardvideoPortraitADActivity.class));
} }
} }
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/ll_bottom_download"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dp"
android:layout_alignParentBottom="true" 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