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

修复闪退问题

parent bca448d5
......@@ -156,7 +156,7 @@ public class MainActivity extends Activity {
@Override
public void OnAdClosed() {
Log.d("wxw","RewardVideoAd OnAdClosed");
RewardAd();
//RewardAd();
}
@Override
......
......@@ -11,6 +11,8 @@ import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import androidx.core.content.FileProvider;
import java.io.File;
import static android.content.Context.DOWNLOAD_SERVICE;
......@@ -110,20 +112,20 @@ public class HcDownLoadUtils {
switch (status) {
//下载暂停
case DownloadManager.STATUS_PAUSED:
// Log.d("wxw", "下载暂停" + adBean.getDownLoadId());
Log.d("wxw", "下载暂停" + adBean.getDownLoadId());
break;
//下载延迟
case DownloadManager.STATUS_PENDING:
// Log.d("wxw", "下载延迟" + adBean.getDownLoadId());
Log.d("wxw", "下载延迟" + adBean.getDownLoadId());
break;
//正在下载
case DownloadManager.STATUS_RUNNING:
// Log.d("wxw", "正在下载" + adBean.getDownLoadId());
Log.d("wxw", "正在下载" + adBean.getDownLoadId());
break;
//下载完成
case DownloadManager.STATUS_SUCCESSFUL:
cursor.close();
// Log.d("wxw", "下载完成" + adBean.getDownLoadId());
Log.d("wxw", "下载完成" + adBean.getDownLoadId());
DownLoadSuccessReport(adBean);
//下载完成安装APK
installAPK(adBean);
......
package com.ym.zxhcsdk.ads;
import android.app.Activity;
import android.media.MediaPlayer;
import android.util.Log;
......@@ -7,6 +6,7 @@ import com.ym.zxhcsdk.HcAdBean;
import com.ym.zxhcsdk.HttpClientUtils;
import com.ym.zxhcsdk.listener.RewardVideoAdShowListener;
import com.ym.zxhcsdk.listener.RewardVideoAdUpdateViewListener;
import java.io.IOException;
/**
......@@ -17,12 +17,12 @@ public class RewardVideoMediaPlayer {
private static volatile RewardVideoMediaPlayer mRewardVideoMediaPlayer = null;
private static MediaPlayer mMediaPlayer = null;
public boolean isPrepared = false;//是否装载媒体资源完毕
public boolean isReportError = false;//是否装载媒体资源完毕
private RewardVideoAdShowListener mShowListener;//播放激励视频监听回调
private RewardVideoAdUpdateViewListener updateViewListener;
private Activity mActivity;
private boolean isShowVideo;//是否加载完成视频立即播放视频
private HcAdBean mHcAdBean;//广告资源
private RewardVideoMediaPlayer() {}
/**
......@@ -54,6 +54,7 @@ public class RewardVideoMediaPlayer {
public void resetMediaPlayer() {
getMediaPlayer().release();
mMediaPlayer = null;
isReportError =false;
}
public Activity getActivity() {
return mActivity;
......@@ -70,6 +71,7 @@ public class RewardVideoMediaPlayer {
getMediaPlayer().setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.d("wxw", "MediaPlayer onPrepared");
isPrepared = true;
if (isShowVideo) {
startVideo();
......@@ -87,7 +89,6 @@ public class RewardVideoMediaPlayer {
mShowListener.OnVideoCompleted();
}
});
updateViewListener.OnCompletionListener();
}
}
......@@ -95,6 +96,8 @@ public class RewardVideoMediaPlayer {
getMediaPlayer().setOnErrorListener(new MediaPlayer.OnErrorListener() {//设置错误信息监听
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
if (!isReportError){
isReportError = true;
Log.d("wxw", "MediaPlayer error " + what + " extra " + extra);
if (null != updateViewListener) {
mActivity.runOnUiThread(new Runnable() {
......@@ -105,9 +108,36 @@ public class RewardVideoMediaPlayer {
});
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;
}
});
} catch (IOException e) {
e.printStackTrace();
}
......
......@@ -13,7 +13,9 @@ import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
......@@ -42,7 +44,7 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
private Timer mTimer;//倒计时
private final int countDownWhat = 0;
private boolean isVideoCompletion = false;//是否播放完成
private RelativeLayout rlLoading;//loadingBg
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -61,7 +63,8 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
TopTimeTv = findViewById(R.id.reward_ad_time);
TopClose = findViewById(R.id.reward_ad_close);
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());
bottomDesc.setText(RewardVideoMediaPlayer.getInstance().getHcAdBean().getVideo_desc());
......@@ -316,6 +319,16 @@ public class RewardVideoPortraitADActivity extends Activity implements SurfaceHo
TopTimeTv.setVisibility(View.GONE);
}
@Override
public void showLoading() {
rlLoading.setVisibility(View.VISIBLE);
}
@Override
public void dismissLoading() {
rlLoading.setVisibility(View.GONE);
}
@Override
protected void onDestroy() {
super.onDestroy();
......
......@@ -16,4 +16,8 @@ public interface RewardVideoAdUpdateViewListener {
/// 激励视频广告各种错误信息回调
/// </summary>
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 @@
android:textSize="16sp" />
</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>
\ 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