Commit 7730b589 authored by jyx's avatar jyx

代码优化

parent bb2feb99
...@@ -298,4 +298,5 @@ dependencies { ...@@ -298,4 +298,5 @@ dependencies {
implementation(name: 'libbase-release', ext: 'aar') implementation(name: 'libbase-release', ext: 'aar')
implementation(name: 'net_native-release', ext: 'aar') implementation(name: 'net_native-release', ext: 'aar')
implementation 'org.greenrobot:eventbus:3.1.1' implementation 'org.greenrobot:eventbus:3.1.1'
} }
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" /> <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.REORDER_TASKS" /> <uses-permission android:name="android.permission.REORDER_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PHONE" />
...@@ -168,17 +169,9 @@ ...@@ -168,17 +169,9 @@
android:name=".ui.activitys.keepalive.ScreenActivity" android:name=".ui.activitys.keepalive.ScreenActivity"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:immersive="true" android:immersive="true"
android:launchMode="singleInstance" android:launchMode="singleTask"
android:theme="@style/AppTheme.LockScreen" /> android:theme="@style/AppTheme.LockScreen" />
<!-- <activity-->
<!-- android:name=".ui.activitys.keepalive.BoostActivity"-->
<!-- android:excludeFromRecents="true"-->
<!-- android:exported="false"-->
<!-- android:finishOnTaskLaunch="false"-->
<!-- android:launchMode="singleInstance"-->
<!-- android:theme="@style/CustomerTransparentTheme" />-->
<activity <activity
android:name=".ui.activitys.keepalive.ApkActivity" android:name=".ui.activitys.keepalive.ApkActivity"
android:excludeFromRecents="true" android:excludeFromRecents="true"
......
package com.mints.flowbox; package com.mints.flowbox;
import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -14,7 +15,6 @@ import androidx.multidex.MultiDex; ...@@ -14,7 +15,6 @@ import androidx.multidex.MultiDex;
import com.KeepAliveHelper; import com.KeepAliveHelper;
import com.activityutil.ActivityManagerProxy; import com.activityutil.ActivityManagerProxy;
import com.activityutil.ActivityManagerProxyImpl; import com.activityutil.ActivityManagerProxyImpl;
import com.ad.AdHelper;
import com.hjq.toast.ToastUtils; import com.hjq.toast.ToastUtils;
import com.mints.flowbox.common.Constant; import com.mints.flowbox.common.Constant;
import com.mints.flowbox.keepalive.BatteryWatch; import com.mints.flowbox.keepalive.BatteryWatch;
...@@ -23,8 +23,8 @@ import com.mints.flowbox.keepalive.NotificationService; ...@@ -23,8 +23,8 @@ import com.mints.flowbox.keepalive.NotificationService;
import com.mints.flowbox.keepalive.NotificationUtil; import com.mints.flowbox.keepalive.NotificationUtil;
import com.mints.flowbox.keepalive.OutAppRouter; import com.mints.flowbox.keepalive.OutAppRouter;
import com.mints.flowbox.keepalive.PackageWatch; import com.mints.flowbox.keepalive.PackageWatch;
import com.mints.flowbox.screen.ScreenLockerObserver;
import com.mints.flowbox.keepalive.ServiceUtil; import com.mints.flowbox.keepalive.ServiceUtil;
import com.mints.flowbox.keepalive.ScreenWatch;
import com.mints.flowbox.keepalive.WifiStateWatch; import com.mints.flowbox.keepalive.WifiStateWatch;
import com.mints.flowbox.manager.CsjGroMoreManager; import com.mints.flowbox.manager.CsjGroMoreManager;
import com.mints.flowbox.manager.MiitHelper; import com.mints.flowbox.manager.MiitHelper;
...@@ -47,6 +47,7 @@ import com.tencent.bugly.crashreport.CrashReport; ...@@ -47,6 +47,7 @@ import com.tencent.bugly.crashreport.CrashReport;
import com.mints.flowbox.keepalive.PhoneWatch; import com.mints.flowbox.keepalive.PhoneWatch;
import net.DebugConfig; import net.DebugConfig;
import net.ad.CoreAdContext;
import net.analytics.AnalyticsLogger; import net.analytics.AnalyticsLogger;
import net.app.BaseApp; import net.app.BaseApp;
import net.common.utils.InternalUtils; import net.common.utils.InternalUtils;
...@@ -99,7 +100,6 @@ public class MintsApplication extends BaseApp { ...@@ -99,7 +100,6 @@ public class MintsApplication extends BaseApp {
// 判断应用是否在前台 // 判断应用是否在前台
ForegroundOrBackground.init(this); ForegroundOrBackground.init(this);
// TODO 加ua字段
initKeepAlive(); initKeepAlive();
} }
...@@ -134,7 +134,6 @@ public class MintsApplication extends BaseApp { ...@@ -134,7 +134,6 @@ public class MintsApplication extends BaseApp {
// 这里可以考虑初始化广告SDK,或者延迟到后面第二个点也可以 // 这里可以考虑初始化广告SDK,或者延迟到后面第二个点也可以
getEventLogger().logEvent("App_init_1"); getEventLogger().logEvent("App_init_1");
} }
// 保活: 进一步初始化保活 // 保活: 进一步初始化保活
...@@ -179,7 +178,7 @@ public class MintsApplication extends BaseApp { ...@@ -179,7 +178,7 @@ public class MintsApplication extends BaseApp {
// TODO 这里可以初始化广告SDK // TODO 这里可以初始化广告SDK
thirdConfig(); thirdConfig();
AdHelper.getInstance().init(this); // AdHelper.getInstance().init(this);
// 这个用来在release版本出toast,方便测试 // 这个用来在release版本出toast,方便测试
// if (TextUtils.isEmpty(channel) || "BUG".equalsIgnoreCase(channel)) { // if (TextUtils.isEmpty(channel) || "BUG".equalsIgnoreCase(channel)) {
...@@ -187,8 +186,18 @@ public class MintsApplication extends BaseApp { ...@@ -187,8 +186,18 @@ public class MintsApplication extends BaseApp {
// Toast.makeText(this, "测试:主进程重启成功", Toast.LENGTH_LONG).show(); // Toast.makeText(this, "测试:主进程重启成功", Toast.LENGTH_LONG).show();
// } // }
// OutAppRouter.INSTANCE.startTransPlace(this); new ScreenLockerObserver(this).start(this);
CoreAdContext.Companion.setLockerResumeCallback(new Function1<Activity, Boolean>() {
@Override
public Boolean invoke(Activity activity) {
// TODO 这里利用activity实例,载入所有的体外广告,比如全屏视频、开屏等等
return true;
}
});
// 监听WIFI状态
WifiStateWatch.getInstance(this).begin(new WifiStateWatch.WifiStateListener() { WifiStateWatch.getInstance(this).begin(new WifiStateWatch.WifiStateListener() {
@Override @Override
public void onWifiOpen() { public void onWifiOpen() {
...@@ -209,52 +218,24 @@ public class MintsApplication extends BaseApp { ...@@ -209,52 +218,24 @@ public class MintsApplication extends BaseApp {
}); });
// 监听锁屏状态 // 监听锁屏状态
ScreenWatch.getInstance(this).begin(new ScreenWatch.ScreenStateListener() { // ScreenWatch.getInstance(this).begin(new ScreenWatch.ScreenStateListener() {
@Override
public void onScreenOn() {
}
@Override
public void onScreenOff() {
if (!ScreenLockerUtils.INSTANCE.canShowScreenLocker(mContext)) {
return;
}
if (WifiDataManager.INSTANCE.getLockOn()) {
OutAppRouter.INSTANCE.showScreenActivity();
}
}
@Override
public void onUserPresent() {
}
});
// 监听实体键状态
// HomeKeyWatch.getInstance(this).begin(new HomeKeyWatch.HomeKeyStateListener() {
// @Override // @Override
// public void onHOME_KEY() { // public void onScreenOn() {
// if (ForegroundOrBackground.isForeground2()) {
// return;
// }
//// if (WifiDataManager.INSTANCE.getHomeKey()) {
// showBoost();
//// }
//
// } // }
// //
// @Override // @Override
// public void onRECENT_APPS() { // public void onScreenOff() {
// if (ForegroundOrBackground.isForeground2()) { // if (!ScreenLockerUtils.INSTANCE.canShowScreenLocker(mContext)) {
// return; // return;
// } // }
// Intent intent = new Intent(MintsApplication.getContext(), TransparentActivity.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// IntentUtils.startActivity(ForegroundOrBackground.getMain_activity(), intent);
//// if (WifiDataManager.INSTANCE.getApplistKey()) {
//// showBoost();
//// }
// //
// if (WifiDataManager.INSTANCE.getLockOn()) {
// OutAppRouter.INSTANCE.showScreenActivity();
// }
// }
//
// @Override
// public void onUserPresent() {
// } // }
// }); // });
......
...@@ -13,8 +13,6 @@ import com.mints.flowbox.utils.ForegroundOrBackground; ...@@ -13,8 +13,6 @@ import com.mints.flowbox.utils.ForegroundOrBackground;
import com.mints.flowbox.utils.keepalive.IntentUtils; import com.mints.flowbox.utils.keepalive.IntentUtils;
import com.mints.flowbox.utils.keepalive.ScreenLockerUtils; import com.mints.flowbox.utils.keepalive.ScreenLockerUtils;
import net.phone.PhoneBrandUtils;
/** /**
* 描述:应用外广告定时器 * 描述:应用外广告定时器
* 作者:孟崔广 * 作者:孟崔广
...@@ -142,12 +140,7 @@ public class AlarmManager implements WeakHandler.IHandler { ...@@ -142,12 +140,7 @@ public class AlarmManager implements WeakHandler.IHandler {
Intent intent = new Intent(MintsApplication.getContext(), TransparentActivity.class); Intent intent = new Intent(MintsApplication.getContext(), TransparentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra(TransparentActivity.TIMING_TYPE, currentType++); intent.putExtra(TransparentActivity.TIMING_TYPE, currentType++);
IntentUtils.startActivity3(intent);
if (PhoneBrandUtils.isLockScreenProtected()) {
IntentUtils.startActivity(intent);
} else {
IntentUtils.startActivity2(intent);
}
} }
public void setAppOutTimingMinter(int timingMinter) { public void setAppOutTimingMinter(int timingMinter) {
......
...@@ -11,7 +11,6 @@ import com.mints.flowbox.ui.activitys.keepalive.ScreenActivity ...@@ -11,7 +11,6 @@ import com.mints.flowbox.ui.activitys.keepalive.ScreenActivity
import com.mints.flowbox.ui.activitys.keepalive.TransPlaceActivity import com.mints.flowbox.ui.activitys.keepalive.TransPlaceActivity
import com.mints.flowbox.ui.activitys.keepalive.TriggerActivity import com.mints.flowbox.ui.activitys.keepalive.TriggerActivity
import com.mints.flowbox.utils.ForegroundOrBackground import com.mints.flowbox.utils.ForegroundOrBackground
import com.mints.flowbox.utils.LogUtil
import com.mints.flowbox.utils.keepalive.IntentUtils import com.mints.flowbox.utils.keepalive.IntentUtils
import com.mints.flowbox.utils.keepalive.ScreenLockerUtils.canShowScreenLocker import com.mints.flowbox.utils.keepalive.ScreenLockerUtils.canShowScreenLocker
import net.phone.PhoneBrandUtils import net.phone.PhoneBrandUtils
...@@ -46,12 +45,7 @@ object OutAppRouter { ...@@ -46,12 +45,7 @@ object OutAppRouter {
intent.putExtra(ApkActivity.APK_STATE, state) intent.putExtra(ApkActivity.APK_STATE, state)
intent.putExtra(ApkActivity.APK_PKG_NAME, pkgName) intent.putExtra(ApkActivity.APK_PKG_NAME, pkgName)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
IntentUtils.startActivity3(intent)
if (PhoneBrandUtils.isLockScreenProtected()) {
IntentUtils.startActivity(intent)
} else {
IntentUtils.startActivity2(intent)
}
} }
/** /**
...@@ -66,12 +60,7 @@ object OutAppRouter { ...@@ -66,12 +60,7 @@ object OutAppRouter {
intent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT intent.flags = Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT
} }
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
IntentUtils.startScreenActivity(intent)
if (PhoneBrandUtils.isLockScreenProtected()) {
IntentUtils.startActivity(intent)
} else {
IntentUtils.startActivity2(intent)
}
} }
...@@ -119,12 +108,8 @@ object OutAppRouter { ...@@ -119,12 +108,8 @@ object OutAppRouter {
intent.putExtra(TriggerActivity.CALL_PHONE_TIME, time) intent.putExtra(TriggerActivity.CALL_PHONE_TIME, time)
intent.putExtra(TriggerActivity.CALL_PHONE_NUM, phone) intent.putExtra(TriggerActivity.CALL_PHONE_NUM, phone)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
IntentUtils.startActivity3(intent)
if (PhoneBrandUtils.isLockScreenProtected()) { }
IntentUtils.startActivity(intent)
} else {
IntentUtils.startActivity2(intent)
} }
/** /**
* 展示弹出页面 * 展示弹出页面
...@@ -153,11 +138,7 @@ object OutAppRouter { ...@@ -153,11 +138,7 @@ object OutAppRouter {
val intent = Intent(MintsApplication.getContext(), TriggerActivity::class.java) val intent = Intent(MintsApplication.getContext(), TriggerActivity::class.java)
intent.putExtra(TriggerActivity.TRIGGER_TYPE, realType) intent.putExtra(TriggerActivity.TRIGGER_TYPE, realType)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_ANIMATION
if (PhoneBrandUtils.isLockScreenProtected()) { IntentUtils.startActivity3(intent)
IntentUtils.startActivity(intent)
} else {
IntentUtils.startActivity2(intent)
}
} }
private var mWifiConnectType = TriggerActivity.TRIGGER_TYPE_WIFI_BOOST - 1 private var mWifiConnectType = TriggerActivity.TRIGGER_TYPE_WIFI_BOOST - 1
......
...@@ -4,10 +4,7 @@ import android.content.BroadcastReceiver; ...@@ -4,10 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler;
import android.os.Looper;
/** /**
* @author jyx * @author jyx
...@@ -39,43 +36,27 @@ public class WifiStateWatch { ...@@ -39,43 +36,27 @@ public class WifiStateWatch {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); /**
if (NetworkInfo.State.DISCONNECTED == info.getState()) {//wifi没连接上 * copy from https://blog.csdn.net/qq_34773981/article/details/79163579
*/
if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
int wifiState = intent.getIntExtra(
WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_DISABLED
);
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLED: {
if (mStateListener != null) { if (mStateListener != null) {
mStateListener.onWifiClose(); mStateListener.onWifiClose();
} }
} else if (NetworkInfo.State.CONNECTED == info.getState()) {//wifi连接上了 }
case WifiManager.WIFI_STATE_ENABLED: {
if (mStateListener != null) { if (mStateListener != null) {
mStateListener.onWifiOpen(); mStateListener.onWifiOpen();
} }
} else if (NetworkInfo.State.CONNECTING == info.getState()) {//正在连接
} }
}
// switch (intent.getIntExtra(WifiManager.EXTRA_NETWORK_INFO, 0)) { }
// case WifiManager.WIFI_STATE_DISABLED: {// wifi已经关闭
// if (mStateListener != null) {
// mStateListener.onWifiClose();
// }
// }
//// case WifiManager.WIFI_STATE_DISABLING: {// wifi正在关闭
//// if (mStateListener != null) {
//// }
//// }
// case WifiManager.WIFI_STATE_ENABLED: {// wifi已经打开
// if (mStateListener != null) {
// mStateListener.onWifiOpen();
// }
// }
//// case WifiManager.WIFI_STATE_ENABLING: {// wifi正在打开
//// if (mStateListener != null) {
//// wifiIsOpen = true;
//// }
//// }
// case WifiManager.WIFI_STATE_UNKNOWN: {// unknown
//
// }
// }
} }
} }
...@@ -99,7 +80,8 @@ public class WifiStateWatch { ...@@ -99,7 +80,8 @@ public class WifiStateWatch {
*/ */
private void registerListener() { private void registerListener() {
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
mContext.registerReceiver(mReceiver, filter); mContext.registerReceiver(mReceiver, filter);
} }
......
package com.mints.flowbox.mvp.presenters
import android.app.Activity
import com.google.gson.JsonObject
import com.mints.flowbox.MintsApplication
import com.mints.flowbox.mvp.model.BaseResponse
import com.mints.flowbox.mvp.views.VideoAdManagerView
import com.mints.library.net.neterror.BaseSubscriber
import com.mints.library.net.neterror.Throwable
import rx.android.schedulers.AndroidSchedulers
import java.util.*
class TzVideoAdPresenter : BasePresenter<VideoAdManagerView>() {
fun reportAddCoinMsg(activity: Activity?, vo: HashMap<String, Any>) {
if (activity == null) return
loanApplication = activity.application as MintsApplication
loanService = loanApplication.loanService
subscription = loanService.reportAddCoinMsg(vo)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(loanApplication.defaultSubscribeScheduler())
.subscribe(object : BaseSubscriber<BaseResponse<JsonObject>>() {
override fun onCompleted() {}
override fun onError(e: Throwable) {
}
override fun onNext(baseResponse: BaseResponse<JsonObject>) {}
})
}
fun dispose() {
loanService = null
loanApplication = null
if (subscription != null && !subscription.isUnsubscribed()) {
subscription.unsubscribe()
}
}
}
\ No newline at end of file
package com.mints.flowbox.screen
object ScreenLockerConstants {
const val INTENT_KEY_FLAGS = "kdd1"
const val INTENT_KEY_MARK = "kdd2"
const val INTENT_KEY_REASON = "kdd3"
const val PAGE_SCREEN_LOCKER = "pg_screenlocker"
const val PAGE_SCREEN_LOCKER_MORE_THAN_2_SEC = "pg_screenlocker2"
const val EVENT_SCREEN_LOCKER_RECEIVE = "ev_dd_rcv"
const val EVENT_SCREEN_LOCKER_RECEIVE3 = "ev_dd_rcv3"
const val EVENT_SCREEN_LOCKER_SCREEN_OFF = "ev_dd_scroff"
const val EVENT_SCREEN_LOCKER_POWER_CONNECT = "ev_dd_pwrcon"
const val EVENT_SCREEN_LOCKER_SCREEN_ON = "ev_dd_scron"
const val EVENT_SCREEN_LOCKER_USER_PRESENT = "ev_dd_usrpre"
const val EVENT_SCREEN_LOCKER_START_PREINVOKE = "ev_dd_actst_preinv"
const val EVENT_SCREEN_LOCKER_START_INVOKED = "ev_dd_actst_inv"
const val EVENT_SCREEN_LOCKER_START_SUCCEED = "ev_dd_actst_sec"
const val EVENT_SCREEN_LOCKER_START_RESUMED = "ev_dd_actst_rsm"
const val EVENT_SCREEN_LOCKER_DESTROYED = "ev_dd_actdst"
const val EVENT_SCREEN_LOCKER_INIT = "ev_dd_init"
const val EVENT_SCREEN_LOCKER_INIT_2 = "ev_dd_init_2"
const val SHOW_REASON_UNKNWON = 0
const val SHOW_REASON_SCREEN_OFF = 1
const val SHOW_REASON_RESTART_SELF = 2
const val SHOW_REASON_SCREEN_ON = 3
const val SHOW_REASON_USER_PRESENT = 4
const val SHOW_REASON_CALL_IDLE = 5
const val SHOW_REASON_CHARGE = 6
const val SHOW_REASON_DIRECT_CALL = 7
}
\ No newline at end of file
package com.mints.flowbox.screen
import android.app.Activity
import java.lang.ref.WeakReference
private const val TAG = "screenlocker.context"
object ScreenLockerContext {
internal var canShowScreenLockerWhenScreenOn = true
internal var lastScreenOffTime = 0L
internal var lastScreenOnTime = 0L
internal var lastScreenLockerStartTime = 0L
internal var screenOffCalled = false
// fun createBottomAd(@Suppress("UNUSED_PARAMETER") context: Context): AdModule {
// if (context !is Activity) {
// throw IllegalArgumentException()
// }
//
// val hasSystemLockScreen = ScreenLockerUtils.hasSystemLockScreen(context)
// if (BuildConfig.DEBUG) Log.d(TAG, "bottomAd() called with: hasSystemLockScreen = $hasSystemLockScreen, context = [$context]")
//
// val adModule = AdUtils.initAdModuleArray(
// context,
// ScreenLockerAdConfig.AD_NAME_BOTTOM_AD,
// R.array.dd_ad_unit__bottom_ad/*,
// supportDeepLink = !hasSystemLockScreen
// */
// )
//
// adModule.updateConfig {
// it.nativeAdTemplate = R.layout.dd_layout_ad_template
// }
//
// return adModule
// }
private var activityRef: WeakReference<Activity>? = null
fun changeOwnership(activity: Activity) {
activityRef = WeakReference(activity)
with(observerInUse) {
isAlive = true
isFinishing = false
isResumed = false
isResumedSinceLastScreenOff = false
isFinishing = false
taskId = activity.taskId
}
}
fun observer(activity: Activity): ActivityObserver {
return if (activityRef?.get() == activity) {
observerInUse
} else {
observerMock
}
}
internal val observerInUse =
ActivityObserver()
private val observerMock =
ActivityObserver() // decrease programming complexity
data class ActivityObserver(
var isAlive: Boolean = true,
var isTouching: Boolean = false,
var isResumedSinceLastScreenOff: Boolean = false,
var isStarted: Boolean = false,
var isResumed: Boolean = false,
var isFinishing: Boolean = false,
var taskId: Int? = null
)
}
\ No newline at end of file
package com.mints.flowbox.screen
//import com.squareup.module.feature.FeatureConstants
internal object ScreenLockerEvents {
private const val BASE = 867_0000
const val USER_UNLOCKED = BASE + 1
// const val SCREENLOCKER_UNLOCKED_BY_USER = FeatureConstants.CUSTOM_UNLOCKED
const val SCREENLOCKER_UNLOCKED_BY_USER = 0x00000232
const val CALL_INCOMING = BASE + 3
const val UNLOCK_REQUESTED = BASE + 4
}
\ No newline at end of file
package com.mints.flowbox.screen.settings
import net.settings.IRemoteKeys
object ScreenLockerRemoteKeys : IRemoteKeys {
const val KEY_DISMISS_WITH_SYSTEM_KEYGUARD = "ext_dd_dwsk"
const val KEY_AD_EXPIRE_INTERVAL = "ext_dd_aexpint"
const val KEY_AD_POPULATE_INTERVAL = "ext_dd_alint"
const val KEY_RED_PACKET_POPUP_INTERVAL = "ext_dd_rp_ppint"
}
\ No newline at end of file
package com.mints.flowbox.screen.settings
import net.cloud.RemoteProxy
import net.common.minutesMillis
import net.settings.AppSettings
import net.settings.ISettings
object ScreenLockerSettings {
const val KEY_ENABLED = "dd_ena"
const val KEY_RED_PACKET_POPUP_TIME = "dd_rp_pptime"
const val ENABLED_DEFAULT = ISettings.BOOLEAN_TRUE
fun isEnabled(): Boolean {
return AppSettings.global.readInt(
KEY_ENABLED,
ENABLED_DEFAULT
) == ISettings.BOOLEAN_TRUE
}
fun isDismissWithSystemKeyguard(): Boolean {
return RemoteProxy.readInt(ScreenLockerRemoteKeys.KEY_DISMISS_WITH_SYSTEM_KEYGUARD, ISettings.BOOLEAN_FALSE) == ISettings.BOOLEAN_TRUE
}
/**
* 如果广告显示超过一定时长,无论如何我都换一个
*/
fun getAdExpireInterval(): Long {
return RemoteProxy.readLong(ScreenLockerRemoteKeys.KEY_AD_EXPIRE_INTERVAL, 45.minutesMillis())
}
fun getAdPopulateInterval(): Long {
return RemoteProxy.readLong(ScreenLockerRemoteKeys.KEY_AD_POPULATE_INTERVAL, 1.minutesMillis())
}
fun getRedPacketPopupInterval(): Long {
return RemoteProxy.readLong(ScreenLockerRemoteKeys.KEY_RED_PACKET_POPUP_INTERVAL, 30.minutesMillis())
}
var lastRedPacketPopupPopupTime: Long
get() = AppSettings.app.readLong(KEY_RED_PACKET_POPUP_TIME, 0L)
set(value) = AppSettings.app.writeLong(KEY_RED_PACKET_POPUP_TIME, value)
}
\ No newline at end of file
...@@ -411,7 +411,7 @@ class MainActivity : BaseActivity(), MainView, View.OnClickListener { ...@@ -411,7 +411,7 @@ class MainActivity : BaseActivity(), MainView, View.OnClickListener {
) )
} }
request.subscribe { granted: Boolean -> request.subscribe { granted: Boolean ->
if (granted) {
// 预加载信息流 // 预加载信息流
ExpressManager.loadExpress(false) ExpressManager.loadExpress(false)
...@@ -421,9 +421,7 @@ class MainActivity : BaseActivity(), MainView, View.OnClickListener { ...@@ -421,9 +421,7 @@ class MainActivity : BaseActivity(), MainView, View.OnClickListener {
IncreasespeedActivity.INCREASE_BOOST IncreasespeedActivity.INCREASE_BOOST
) )
readyGo(IncreasespeedActivity::class.java) readyGo(IncreasespeedActivity::class.java)
} else {
showMissingPermissionDialog("位置,存储")
}
} }
} }
......
...@@ -7,46 +7,73 @@ import android.graphics.drawable.ColorDrawable ...@@ -7,46 +7,73 @@ import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.view.Window
import android.view.WindowManager import android.view.WindowManager
import androidx.core.app.ActivityCompat import androidx.core.app.ActivityCompat
import com.main.ScreenMonitor
import com.mints.flowbox.R import com.mints.flowbox.R
import com.mints.flowbox.screen.ScreenLockerContext
import com.mints.flowbox.screen.ScreenLockerObserver
import com.mints.flowbox.utils.keepalive.ScreenLockerUtils import com.mints.flowbox.utils.keepalive.ScreenLockerUtils
import com.mints.library.base.BaseSwipeBackCompatActivity import com.mints.library.base.BaseSwipeBackCompatActivity
import com.mints.library.net.netstatus.NetUtils import com.mints.library.net.netstatus.NetUtils
import net.common.utils.CommonUtils
import net.phone.PhoneBrandUtils import net.phone.PhoneBrandUtils
import java.lang.Exception import java.lang.Exception
/** /**
* 应用外Activity * 应用外锁屏Activity
*/ */
abstract class OutAppActivity : BaseSwipeBackCompatActivity() { abstract class OutAppActivity : BaseSwipeBackCompatActivity(), ScreenMonitor.Listener {
private var localScreenOnState = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ScreenLockerContext.changeOwnership(this)
val useNewWay = false
if (useNewWay && !ScreenLockerObserver.shouldShowLockerAfterUserPresent()) {
val window: Window = window
if (true) {
if (Build.VERSION.SDK_INT >= 28) { if (Build.VERSION.SDK_INT >= 28) {
setShowWhenLocked(true) setShowWhenLocked(true)
} else { } else {
window.addFlags(524288) window.addFlags(524288)
} }
}
window.addFlags(4194304) window.addFlags(4194304)
if (Build.VERSION.SDK_INT >= 21) { if (Build.VERSION.SDK_INT >= 21) {
window.decorView.systemUiVisibility = 1792 window.decorView.systemUiVisibility = 1792
} }
}
super.onCreate(savedInstanceState) localScreenOnState = CommonUtils.isScreenOn(this) == true
if (!useNewWay) {
window.setWindowAnimations(R.style.AppTheme_LockScreen_Animation) window.setWindowAnimations(R.style.AppTheme_LockScreen_Animation)
val layoutParams = window.attributes val layoutParams = window.attributes
val isUsingShowWhenLockedFlag =
!ScreenLockerUtils.isLockScreenProtected(this) && !ScreenLockerObserver.shouldShowLockerAfterUserPresent()
ScreenLockerUtils.makeLockWindowFullScreen(
this,
layoutParams,
isUsingShowWhenLockedFlag
)
window.attributes = layoutParams window.attributes = layoutParams
window.statusBarColor = Color.TRANSPARENT window.statusBarColor = Color.TRANSPARENT
window.navigationBarColor = Color.TRANSPARENT window.navigationBarColor = Color.TRANSPARENT
resetWindowTransparentBackground()
// 设置锁屏页全屏
val isUsingShowWhenLockedFlag = !ScreenLockerUtils.isLockScreenProtected(this)
if (isUsingShowWhenLockedFlag) {
ScreenLockerUtils.updateWindowFlags(window.decorView) ScreenLockerUtils.updateWindowFlags(window.decorView)
ScreenLockerUtils.makeLockWindowFullScreen(this, window.attributes, true)
} }
ScreenMonitor.getInstance().register(this, null)
resetWindowTransparentBackground()
overridePendingTransition(0, 0)
} }
private fun resetWindowTransparentBackground() { private fun resetWindowTransparentBackground() {
...@@ -85,4 +112,40 @@ abstract class OutAppActivity : BaseSwipeBackCompatActivity() { ...@@ -85,4 +112,40 @@ abstract class OutAppActivity : BaseSwipeBackCompatActivity() {
override fun getLoadingTargetView() = null override fun getLoadingTargetView() = null
override fun onResume() {
super.onResume()
ScreenLockerContext.observer(this).taskId = this.taskId
ScreenLockerContext.observer(this).isResumed = true
ScreenLockerContext.observer(this).isResumedSinceLastScreenOff = true
window.decorView.systemUiVisibility =
window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_IMMERSIVE or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LOW_PROFILE
}
override fun onPause() {
super.onPause()
ScreenLockerContext.observer(this).isResumed = false
ScreenLockerContext.observer(this).isFinishing = this.isFinishing
}
override fun onDestroy() {
super.onDestroy()
ScreenLockerContext.observer(this).taskId = null
ScreenMonitor.getInstance().unregister(this, null)
}
override fun onScreenOff() {
ScreenLockerContext.observer(this).isResumedSinceLastScreenOff = false
}
override fun onScreenOn() {
}
override fun onUserPresent() {
}
} }
\ No newline at end of file
package com.mints.flowbox.utils.keepalive; package com.mints.flowbox.utils.keepalive;
import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -11,7 +10,6 @@ import com.activityutil.BringToFrontListener; ...@@ -11,7 +10,6 @@ import com.activityutil.BringToFrontListener;
import com.activityutil.ContextLike; import com.activityutil.ContextLike;
import com.mints.flowbox.MintsApplication; import com.mints.flowbox.MintsApplication;
import com.mints.flowbox.ui.activitys.keepalive.ScreenActivity; import com.mints.flowbox.ui.activitys.keepalive.ScreenActivity;
import com.mints.flowbox.utils.ForegroundOrBackground;
import com.mints.flowbox.utils.LogUtil; import com.mints.flowbox.utils.LogUtil;
import net.phone.PhoneBrandUtils; import net.phone.PhoneBrandUtils;
...@@ -20,36 +18,12 @@ import org.jetbrains.annotations.NotNull; ...@@ -20,36 +18,12 @@ import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
/**
* @author jyx
* @date 2021/7/10
* @des
*/
public class IntentUtils { public class IntentUtils {
public static final String TAG = "IntentUtils"; public static final String TAG = "IntentUtils";
public static void startActivity2(Intent intent) {
if ((PhoneBrandUtils.isHuaweiOriginal() || isHarmonyOs())) {
if (ForegroundOrBackground.getApp_activity() != null) {
startActivity(intent);
return;
}
}
ActivityManagerProxy.INSTANCE.bringToFront(new BringToFrontListener() {
@Override
public void onCall(@NotNull ContextLike contextLike) {
contextLike.startActivity(intent);
}
@Override
public void onResult(boolean b) {
}
}, null);
}
public static void startScreenActivity(Intent intent) { public static void startScreenActivity(Intent intent) {
if (!shouldShowLockerAfterUserPresent()) { // if (shouldShowLockerAfterUserPresent()) {
ActivityManagerProxy.INSTANCE.bringToFront(new BringToFrontListener() { ActivityManagerProxy.INSTANCE.bringToFront(new BringToFrontListener() {
@Override @Override
public void onCall(@NotNull ContextLike contextLike) { public void onCall(@NotNull ContextLike contextLike) {
...@@ -60,31 +34,20 @@ public class IntentUtils { ...@@ -60,31 +34,20 @@ public class IntentUtils {
public void onResult(boolean b) { public void onResult(boolean b) {
} }
}, null); }, null);
} else { // } else {
ActivityManagerProxy.INSTANCE.bringActivityToFront( // ActivityManagerProxy.INSTANCE.bringActivityToFront(
MintsApplication.getContext(), // MintsApplication.getContext(),
ScreenActivity.class, // ScreenActivity.class,
intent // intent
); // );
} // ActivityManagerProxy.INSTANCE.ensureActive();
// }
} }
public static boolean shouldShowLockerAfterUserPresent() { public static boolean shouldShowLockerAfterUserPresent() {
return PhoneBrandUtils.isOppo() && PhoneBrandUtils.isLockScreenProtected(); return PhoneBrandUtils.isOppo() && PhoneBrandUtils.isLockScreenProtected();
} }
public static void startActivity(Intent intent) {
if (ForegroundOrBackground.getMain_activity() != null) {
Activity activity = ForegroundOrBackground.getMain_activity();
moveToFront(activity);
activity.startActivity(intent);
activity.moveTaskToBack(true);
return;
}
// startActivity3(intent);
}
public static void startActivity3(Intent intent) { public static void startActivity3(Intent intent) {
try { try {
ActivityManagerProxy.INSTANCE.bringToFront(new BringToFrontListener() { ActivityManagerProxy.INSTANCE.bringToFront(new BringToFrontListener() {
...@@ -95,10 +58,7 @@ public class IntentUtils { ...@@ -95,10 +58,7 @@ public class IntentUtils {
@Override @Override
public void onResult(boolean b) { public void onResult(boolean b) {
if (!b) { LogUtil.d("AAAAAAA -> " + b);
LogUtil.d("AAAAAAa");
startActivity(intent);
}
} }
}, null); }, null);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -184,7 +184,6 @@ ...@@ -184,7 +184,6 @@
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
android:layout_marginRight="20dp" android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:background="@color/color_main" android:background="@color/color_main"
android:gravity="center" android:gravity="center"
android:text="同意" android:text="同意"
......
...@@ -29,7 +29,7 @@ RELEASE_UMENG_KEY=60d2ef4d8a102159db781cd3 ...@@ -29,7 +29,7 @@ RELEASE_UMENG_KEY=60d2ef4d8a102159db781cd3
RELEASE_JPUSH_KEY=d9e939e7ec22a9e11dcfc345 RELEASE_JPUSH_KEY=d9e939e7ec22a9e11dcfc345
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
android.useNewApkCreator=false android.useNewApkCreator=true
####### 保活相关 ####### ####### 保活相关 #######
# vvvvvv 下面不要动!!!! # vvvvvv 下面不要动!!!!
APPLICATION_ID= APPLICATION_ID=
......
include ':app' include ':app'
include ':shareSdkLib' include ':shareSdkLib'
include ':screenlocker'
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