package com.wm.remusic.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.RelativeLayout; import android.widget.Toast; import com.wm.remusic.R; import com.wm.remusic.activity.MainActivity; import com.wm.remusic.uitl.PermissionHelper; import net.youmi.android.AdManager; import net.youmi.android.normal.common.ErrorCode; import net.youmi.android.normal.spot.SplashViewSettings; import net.youmi.android.normal.spot.SpotListener; import net.youmi.android.normal.spot.SpotManager; /** * <p>开屏窗口</p> * Edited by Alian Lee on 2016-11-25. */ public class SplashActivity extends Activity { private Context mContext; private PermissionHelper mPermissionHelper; private static String TAG = "SplashActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; // 设置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 移除标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_splash); // 当系统为6.0以上时,需要申请权限 mPermissionHelper = new PermissionHelper(this); mPermissionHelper.setOnApplyPermissionListener(new PermissionHelper.OnApplyPermissionListener() { @Override public void onAfterApplyAllPermission() { Log.i(TAG, "All of requested permissions has been granted, so run app logic."); runApp(); } }); if (Build.VERSION.SDK_INT < 23) { // 如果系统版本低于23,直接跑应用的逻辑 Log.d(TAG, "The api level of system is lower than 23, so run app logic directly."); runApp(); } else { // 如果权限全部申请了,那就直接跑应用逻辑 if (mPermissionHelper.isAllRequestedPermissionGranted()) { Log.d(TAG, "All of requested permissions has been granted, so run app logic directly."); runApp(); } else { // 如果还有权限为申请,而且系统版本大于23,执行申请权限逻辑 Log.i(TAG, "Some of requested permissions hasn't been granted, so apply permissions first."); mPermissionHelper.applyPermissions(); } } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); mPermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mPermissionHelper.onActivityResult(requestCode, resultCode, data); } /** * 跑应用的逻辑 */ private void runApp() { //初始化SDK AdManager.getInstance(mContext).init("9ca9f88752601ff9", "c91f620182e46bad", false, true); //设置开屏 setupSplashAd(); } /** * 设置开屏广告 */ private void setupSplashAd() { // 创建开屏容器 final RelativeLayout splashLayout = (RelativeLayout) findViewById(R.id.rl_splash); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); params.addRule(RelativeLayout.ABOVE, R.id.view_divider); // 对开屏进行设置 SplashViewSettings splashViewSettings = new SplashViewSettings(); // // 设置是否展示失败自动跳转,默认自动跳转 // splashViewSettings.setAutoJumpToTargetWhenShowFailed(false); // 设置跳转的窗口类 splashViewSettings.setTargetClass(MainActivity.class); // 设置开屏的容器 splashViewSettings.setSplashViewContainer(splashLayout); // 展示开屏广告 SpotManager.getInstance(mContext) .showSplash(mContext, splashViewSettings, mStopListener); } static SpotListener mStopListener = new SpotListener() { @Override public void onShowSuccess() { logInfo("开屏展示成功"); } @Override public void onShowFailed(int errorCode) { logError("开屏展示失败"); switch (errorCode) { case ErrorCode.NON_NETWORK: logError("网络异常"); break; case ErrorCode.NON_AD: logError("暂无开屏广告"); break; case ErrorCode.RESOURCE_NOT_READY: logError("开屏资源还没准备好"); break; case ErrorCode.SHOW_INTERVAL_LIMITED: logError("开屏展示间隔限制"); break; case ErrorCode.WIDGET_NOT_IN_VISIBILITY_STATE: logError("开屏控件处在不可见状态"); break; default: logError("errorCode: %d", errorCode); break; } } @Override public void onSpotClosed() { logDebug("开屏被关闭"); } @Override public void onSpotClicked(boolean isWebPage) { logDebug("开屏被点击"); logInfo("是否是网页广告?%s", isWebPage ? "是" : "不是"); } }; @Override protected void onDestroy() { super.onDestroy(); // 开屏展示界面的 onDestroy() 回调方法中调用 SpotManager.getInstance(mContext).onDestroy(); } /** * 打印调试级别日志 * * @param format * @param args */ protected static void logDebug(String format, Object... args) { logMessage(Log.DEBUG, format, args); } /** * 打印信息级别日志 * * @param format * @param args */ protected static void logInfo(String format, Object... args) { logMessage(Log.INFO, format, args); } /** * 打印错误级别日志 * * @param format * @param args */ protected static void logError(String format, Object... args) { logMessage(Log.ERROR, format, args); } /** * 展示短时Toast * * @param format * @param args */ protected void showShortToast(String format, Object... args) { showToast(Toast.LENGTH_SHORT, format, args); } /** * 展示长时Toast * * @param format * @param args */ protected void showLongToast(String format, Object... args) { showToast(Toast.LENGTH_LONG, format, args); } /** * 打印日志 * * @param level * @param format * @param args */ private static void logMessage(int level, String format, Object... args) { String formattedString = String.format(format, args); switch (level) { case Log.DEBUG: Log.d(TAG, formattedString); break; case Log.INFO: Log.i(TAG, formattedString); break; case Log.ERROR: Log.e(TAG, formattedString); break; } } /** * 展示Toast * * @param duration * @param format * @param args */ private void showToast(int duration, String format, Object... args) { Toast.makeText(mContext, String.format(format, args), duration).show(); } }