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

修复闪退问题

parent bca448d5
...@@ -156,7 +156,7 @@ public class MainActivity extends Activity { ...@@ -156,7 +156,7 @@ public class MainActivity extends Activity {
@Override @Override
public void OnAdClosed() { public void OnAdClosed() {
Log.d("wxw","RewardVideoAd OnAdClosed"); Log.d("wxw","RewardVideoAd OnAdClosed");
RewardAd(); //RewardAd();
} }
@Override @Override
......
...@@ -11,6 +11,8 @@ import android.net.Uri; ...@@ -11,6 +11,8 @@ import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Environment; import android.os.Environment;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import java.io.File; import java.io.File;
import static android.content.Context.DOWNLOAD_SERVICE; import static android.content.Context.DOWNLOAD_SERVICE;
...@@ -110,20 +112,20 @@ public class HcDownLoadUtils { ...@@ -110,20 +112,20 @@ public class HcDownLoadUtils {
switch (status) { switch (status) {
//下载暂停 //下载暂停
case DownloadManager.STATUS_PAUSED: case DownloadManager.STATUS_PAUSED:
// Log.d("wxw", "下载暂停" + adBean.getDownLoadId()); Log.d("wxw", "下载暂停" + adBean.getDownLoadId());
break; break;
//下载延迟 //下载延迟
case DownloadManager.STATUS_PENDING: case DownloadManager.STATUS_PENDING:
// Log.d("wxw", "下载延迟" + adBean.getDownLoadId()); Log.d("wxw", "下载延迟" + adBean.getDownLoadId());
break; break;
//正在下载 //正在下载
case DownloadManager.STATUS_RUNNING: case DownloadManager.STATUS_RUNNING:
// Log.d("wxw", "正在下载" + adBean.getDownLoadId()); Log.d("wxw", "正在下载" + adBean.getDownLoadId());
break; break;
//下载完成 //下载完成
case DownloadManager.STATUS_SUCCESSFUL: case DownloadManager.STATUS_SUCCESSFUL:
cursor.close(); cursor.close();
// Log.d("wxw", "下载完成" + adBean.getDownLoadId()); Log.d("wxw", "下载完成" + adBean.getDownLoadId());
DownLoadSuccessReport(adBean); DownLoadSuccessReport(adBean);
//下载完成安装APK //下载完成安装APK
installAPK(adBean); installAPK(adBean);
......
package com.ym.zxhcsdk.ads; package com.ym.zxhcsdk.ads;
import android.app.Activity; import android.app.Activity;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.util.Log; import android.util.Log;
...@@ -7,6 +6,7 @@ import com.ym.zxhcsdk.HcAdBean; ...@@ -7,6 +6,7 @@ import com.ym.zxhcsdk.HcAdBean;
import com.ym.zxhcsdk.HttpClientUtils; import com.ym.zxhcsdk.HttpClientUtils;
import com.ym.zxhcsdk.listener.RewardVideoAdShowListener; import com.ym.zxhcsdk.listener.RewardVideoAdShowListener;
import com.ym.zxhcsdk.listener.RewardVideoAdUpdateViewListener; import com.ym.zxhcsdk.listener.RewardVideoAdUpdateViewListener;
import java.io.IOException; import java.io.IOException;
/** /**
...@@ -17,12 +17,12 @@ public class RewardVideoMediaPlayer { ...@@ -17,12 +17,12 @@ 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;//是否装载媒体资源完毕 public boolean isPrepared = false;//是否装载媒体资源完毕
public boolean isReportError = false;//是否装载媒体资源完毕
private RewardVideoAdShowListener mShowListener;//播放激励视频监听回调 private RewardVideoAdShowListener mShowListener;//播放激励视频监听回调
private RewardVideoAdUpdateViewListener updateViewListener; private RewardVideoAdUpdateViewListener updateViewListener;
private Activity mActivity; private Activity mActivity;
private boolean isShowVideo;//是否加载完成视频立即播放视频 private boolean isShowVideo;//是否加载完成视频立即播放视频
private HcAdBean mHcAdBean;//广告资源 private HcAdBean mHcAdBean;//广告资源
private RewardVideoMediaPlayer() {} private RewardVideoMediaPlayer() {}
/** /**
...@@ -54,6 +54,7 @@ public class RewardVideoMediaPlayer { ...@@ -54,6 +54,7 @@ public class RewardVideoMediaPlayer {
public void resetMediaPlayer() { public void resetMediaPlayer() {
getMediaPlayer().release(); getMediaPlayer().release();
mMediaPlayer = null; mMediaPlayer = null;
isReportError =false;
} }
public Activity getActivity() { public Activity getActivity() {
return mActivity; return mActivity;
...@@ -70,6 +71,7 @@ public class RewardVideoMediaPlayer { ...@@ -70,6 +71,7 @@ public class RewardVideoMediaPlayer {
getMediaPlayer().setOnPreparedListener(new MediaPlayer.OnPreparedListener() { getMediaPlayer().setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override @Override
public void onPrepared(MediaPlayer mp) { public void onPrepared(MediaPlayer mp) {
Log.d("wxw", "MediaPlayer onPrepared");
isPrepared = true; isPrepared = true;
if (isShowVideo) { if (isShowVideo) {
startVideo(); startVideo();
...@@ -87,7 +89,6 @@ public class RewardVideoMediaPlayer { ...@@ -87,7 +89,6 @@ public class RewardVideoMediaPlayer {
mShowListener.OnVideoCompleted(); mShowListener.OnVideoCompleted();
} }
}); });
updateViewListener.OnCompletionListener(); updateViewListener.OnCompletionListener();
} }
} }
...@@ -95,19 +96,48 @@ public class RewardVideoMediaPlayer { ...@@ -95,19 +96,48 @@ public class RewardVideoMediaPlayer {
getMediaPlayer().setOnErrorListener(new MediaPlayer.OnErrorListener() {//设置错误信息监听 getMediaPlayer().setOnErrorListener(new MediaPlayer.OnErrorListener() {//设置错误信息监听
@Override @Override
public boolean onError(MediaPlayer mp, int what, int extra) { public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d("wxw", "MediaPlayer error " + what + " extra " + extra); if (!isReportError){
if (null != updateViewListener) { isReportError = true;
mActivity.runOnUiThread(new Runnable() { Log.d("wxw", "MediaPlayer error " + what + " extra " + extra);
@Override if (null != updateViewListener) {
public void run() { mActivity.runOnUiThread(new Runnable() {
mShowListener.OnVideoError("what" + what+" extra "+extra); @Override
} public void run() {
}); mShowListener.OnVideoError("what" + what+" extra "+extra);
updateViewListener.OnErrorListener(what + ""); }
});
updateViewListener.OnErrorListener(what + "");
}
updateViewListener.showLoading();
}
//true 不再回调Complete方法
return true;
}
});
getMediaPlayer().setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.d("wxw", "MediaPlayer onBufferingUpdate"+percent);
}
});
getMediaPlayer().setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
Log.d("wxw", "MediaPlayer setOnInfoListener what"+what+"extra"+extra);
if (what==MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START){
updateViewListener.dismissLoading();
return true;
}else if (what==MediaPlayer.MEDIA_INFO_BUFFERING_END){//MediaPlayer在缓冲完后继续播放。
updateViewListener.dismissLoading();
return true;
}else if (what==MediaPlayer.MEDIA_INFO_BUFFERING_START){//MediaPlayer暂停播放等待缓冲更多数据。
updateViewListener.showLoading();
return true;
} }
return false; return false;
} }
}); });
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -13,7 +13,9 @@ import android.view.KeyEvent; ...@@ -13,7 +13,9 @@ import android.view.KeyEvent;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import android.view.SurfaceView; import android.view.SurfaceView;
import android.view.View; import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
...@@ -42,7 +44,7 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -42,7 +44,7 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
private Timer mTimer;//倒计时 private Timer mTimer;//倒计时
private final int countDownWhat = 0; private final int countDownWhat = 0;
private boolean isVideoCompletion = false;//是否播放完成 private boolean isVideoCompletion = false;//是否播放完成
private RelativeLayout rlLoading;//loadingBg
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
...@@ -61,7 +63,8 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -61,7 +63,8 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
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);
ivPreview = findViewById(R.id.id_iv_preview); ivPreview = findViewById(R.id.id_iv_preview);
rlLoading = findViewById(R.id.id_rl_loading);
findViewById(R.id.id_iv_loading).startAnimation(AnimationUtils.loadAnimation(this, R.anim.anim_progress_loading));
// 设置底部信息 // 设置底部信息
bottomTitle.setText(RewardVideoMediaPlayer.getInstance().getHcAdBean().getVideo_title()); bottomTitle.setText(RewardVideoMediaPlayer.getInstance().getHcAdBean().getVideo_title());
bottomDesc.setText(RewardVideoMediaPlayer.getInstance().getHcAdBean().getVideo_desc()); bottomDesc.setText(RewardVideoMediaPlayer.getInstance().getHcAdBean().getVideo_desc());
...@@ -316,6 +319,16 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo ...@@ -316,6 +319,16 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
TopTimeTv.setVisibility(View.GONE); TopTimeTv.setVisibility(View.GONE);
} }
@Override
public void showLoading() {
rlLoading.setVisibility(View.VISIBLE);
}
@Override
public void dismissLoading() {
rlLoading.setVisibility(View.GONE);
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
......
...@@ -16,4 +16,8 @@ public interface RewardVideoAdUpdateViewListener { ...@@ -16,4 +16,8 @@ public interface RewardVideoAdUpdateViewListener {
/// 激励视频广告各种错误信息回调 /// 激励视频广告各种错误信息回调
/// </summary> /// </summary>
void OnErrorListener(String error); void OnErrorListener(String error);
void showLoading();
void dismissLoading();
} }
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:interpolator="@android:anim/linear_interpolator"
android:repeatCount="-1"/>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充的颜色 -->
<solid android:color="#4a000000"/>
<!-- 设置矩形的四个角为弧形 -->
<!-- android:radius 弧形的半径 -->
<corners android:radius="10dip"/>
</shape>
\ No newline at end of file
...@@ -123,4 +123,19 @@ ...@@ -123,4 +123,19 @@
android:textSize="16sp" /> android:textSize="16sp" />
</LinearLayout> </LinearLayout>
<RelativeLayout
android:id="@+id/id_rl_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/shape_round_loading"
android:padding="20dp"
android:visibility="visible">
<ImageView
android:id="@+id/id_iv_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_loading"
android:layout_centerInParent="true"/>
</RelativeLayout>
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
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