Merge branch 'dev-4.8.0' of git.ghzs.com:halo/assistant-android into dev-4.8.0
This commit is contained in:
@ -15,6 +15,7 @@ import android.os.TransactionTooLargeException;
|
||||
import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
@ -50,6 +51,7 @@ import com.gh.gamecenter.eventbus.EBShowDialog;
|
||||
import com.lightgame.BaseAppCompatActivity;
|
||||
import com.lightgame.download.DownloadEntity;
|
||||
import com.lightgame.download.FileUtils;
|
||||
import com.lightgame.utils.Util_System_Keyboard;
|
||||
import com.lightgame.utils.Utils;
|
||||
import com.tencent.tauth.Tencent;
|
||||
|
||||
@ -89,6 +91,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
|
||||
private boolean mHasAddTaskFloat = false;
|
||||
private View mTaskBackView;
|
||||
private WindowManager mWM;
|
||||
private WindowManager.LayoutParams mWmParams;
|
||||
|
||||
protected final Handler mBaseHandler = new BaseHandler(this);
|
||||
|
||||
@ -314,22 +317,75 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy
|
||||
|
||||
private void addTaskBackView() {
|
||||
mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
|
||||
WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
|
||||
wmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION;
|
||||
wmParams.format = PixelFormat.RGBA_8888;
|
||||
wmParams.gravity = Gravity.LEFT | Gravity.BOTTOM;
|
||||
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||
wmParams.width = DisplayUtils.dip2px(76F);
|
||||
wmParams.height = DisplayUtils.dip2px(36F);
|
||||
wmParams.y = DisplayUtils.dip2px(114F);
|
||||
mWmParams = new WindowManager.LayoutParams();
|
||||
mWmParams.type = WindowManager.LayoutParams.TYPE_APPLICATION;
|
||||
mWmParams.format = PixelFormat.RGBA_8888;
|
||||
mWmParams.gravity = Gravity.LEFT | Gravity.BOTTOM;
|
||||
mWmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
|
||||
mWmParams.width = DisplayUtils.dip2px(76F);
|
||||
mWmParams.height = DisplayUtils.dip2px(36F);
|
||||
mWmParams.y = SPUtils.getInt(Constants.SP_TASK_FLOAT_LAST_Y, DisplayUtils.dip2px(114F));
|
||||
mTaskBackView = View.inflate(this, R.layout.layout_task_back, null);
|
||||
mTaskBackView.setOnClickListener(v -> {
|
||||
// 如果当前是在键盘输入时,点击"返回任务"要先收起键盘
|
||||
Util_System_Keyboard.hideSoftKeyboard(this);
|
||||
startActivity(EnergyCenterActivity.Companion.getIntent(this));
|
||||
SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, false);
|
||||
mWM.removeView(mTaskBackView);
|
||||
mHasAddTaskFloat = false;
|
||||
});
|
||||
mWM.addView(mTaskBackView, wmParams);
|
||||
setFloatTouchListener();
|
||||
mWM.addView(mTaskBackView, mWmParams);
|
||||
}
|
||||
|
||||
private void setFloatTouchListener() {
|
||||
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
||||
|
||||
mTaskBackView.setOnTouchListener(new View.OnTouchListener() {
|
||||
|
||||
private int intervalY;
|
||||
private int startY;
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
final int y = (int) event.getRawY();
|
||||
|
||||
switch (event.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
intervalY = y;
|
||||
startY = y;
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
mWmParams.y -= (y - intervalY);
|
||||
if (mWmParams.y < 0) {
|
||||
mWmParams.y = 0;
|
||||
}
|
||||
|
||||
if (mWmParams.y > screenHeight) {
|
||||
mWmParams.y = screenHeight;
|
||||
}
|
||||
|
||||
if (mWM != null && mTaskBackView != null && mHasAddTaskFloat) {
|
||||
mWM.updateViewLayout(mTaskBackView, mWmParams);
|
||||
}
|
||||
|
||||
intervalY = y;
|
||||
return true;
|
||||
|
||||
case MotionEvent.ACTION_UP:
|
||||
// 滑动距离少于10视为点击,返回false,否则视为拖动,返回true
|
||||
if (Math.abs(y - startY) <= 10) {
|
||||
return false;
|
||||
} else {
|
||||
// 记录位置
|
||||
SPUtils.setInt(Constants.SP_TASK_FLOAT_LAST_Y, mWmParams.y);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -180,8 +180,10 @@ public class Constants {
|
||||
// 头像挂件ID
|
||||
public static final String SP_CHOOSE_AVATAR_ID = "choose_avatar_id";
|
||||
|
||||
//是否显示返回任务悬浮图标
|
||||
// 是否显示返回任务悬浮图标
|
||||
public static final String SP_SHOW_TASK_FLOAT = "show_task_float";
|
||||
// 悬浮图标Y值
|
||||
public static final String SP_TASK_FLOAT_LAST_Y = "task_float_last_y";
|
||||
|
||||
//手机号码匹配规则
|
||||
public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
|
||||
|
||||
@ -23,10 +23,25 @@ object BrowserInstallHelper {
|
||||
|
||||
private const val PORT = 32321
|
||||
|
||||
private val mServer by lazy { DownloadServer(PORT) }
|
||||
private val mServer by lazy { getServer() }
|
||||
private val mFileNameSet by lazy { hashSetOf<String>() }
|
||||
private val mContext by lazy { HaloApp.getInstance().application }
|
||||
|
||||
private val mAllInstalledPackageList: ArrayList<String> by lazy {
|
||||
PackageUtils.getAllPackageNameIncludeSystemApps(HaloApp.getInstance().applicationContext)
|
||||
}
|
||||
|
||||
private fun getServer(): DownloadServer {
|
||||
val server = DownloadServer(PORT)
|
||||
for (packageName in mAllInstalledPackageList) {
|
||||
if (packageName.contains("com.freeme") || packageName.contains("com.zhuoyi")) {
|
||||
server.isBuggyDevice = true
|
||||
break
|
||||
}
|
||||
}
|
||||
return server
|
||||
}
|
||||
|
||||
fun downloadFile(filePath: String) {
|
||||
var fileName = filePath.substringAfterLast(File.separator)
|
||||
// 山寨机没有 .apk 后缀但有 Content-Type 管用,还是给它补上 .apk 后缀
|
||||
@ -72,7 +87,7 @@ object BrowserInstallHelper {
|
||||
// if (SPUtils.getBoolean(Constants.SP_USE_BROWSER_TO_INSTALL)) {
|
||||
// false
|
||||
// } else {
|
||||
SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_GAMEDETAIL_USE_BROWSER_TO_INSTALL_HINT, true)
|
||||
SPUtils.getBoolean(Constants.SP_SHOULD_SHOW_GAMEDETAIL_USE_BROWSER_TO_INSTALL_HINT, true)
|
||||
// }
|
||||
} else {
|
||||
false
|
||||
@ -123,11 +138,6 @@ object BrowserInstallHelper {
|
||||
*/
|
||||
@JvmStatic
|
||||
fun isUseBrowserToInstallEnabled(): Boolean {
|
||||
// 如果已经手动设置了使用浏览器安装,那么后台开关强制为开,直到用户关闭才走下面的逻辑
|
||||
if (SPUtils.getBoolean(Constants.SP_USE_BROWSER_TO_INSTALL)) {
|
||||
return true
|
||||
}
|
||||
|
||||
val settingsEntity = Config.getNewSettingsEntity()
|
||||
|
||||
if (settingsEntity == null) {
|
||||
@ -139,7 +149,7 @@ object BrowserInstallHelper {
|
||||
|
||||
settingsEntity.installModel.packages?.let {
|
||||
for (packageName in it) {
|
||||
if (mServer.allInstalledPackageList.contains(packageName)) {
|
||||
if (mAllInstalledPackageList.contains(packageName)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ package com.gh.download.server
|
||||
|
||||
import com.gh.common.constant.Constants
|
||||
import com.gh.common.exposure.ExposureEvent
|
||||
import com.gh.common.util.PackageUtils
|
||||
import com.gh.common.util.getMetaExtra
|
||||
import com.gh.common.util.toObject
|
||||
import com.gh.download.DownloadManager
|
||||
@ -20,7 +19,6 @@ class DownloadServer(port: Int) : NanoHTTPD(port) {
|
||||
|
||||
private val mPublishSubject: PublishSubject<String> = PublishSubject.create()
|
||||
private val mCompositeDisposable: CompositeDisposable = CompositeDisposable()
|
||||
val allInstalledPackageList by lazy { PackageUtils.getAllPackageNameIncludeSystemApps(HaloApp.getInstance().applicationContext) }
|
||||
|
||||
// 是否是山寨机
|
||||
var isBuggyDevice: Boolean = false
|
||||
@ -35,13 +33,6 @@ class DownloadServer(port: Int) : NanoHTTPD(port) {
|
||||
logBrowserDownload(it, false)
|
||||
}, {})
|
||||
|
||||
for (packageName in allInstalledPackageList) {
|
||||
if (packageName.contains("com.freeme") || packageName.contains("com.zhuoyi")) {
|
||||
isBuggyDevice = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
mCompositeDisposable.add(disposable)
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,6 @@ import com.gh.common.util.createRequestBody
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.entity.*
|
||||
import com.gh.gamecenter.eventbus.EBUserFollow
|
||||
import com.gh.gamecenter.manager.UserManager
|
||||
import com.gh.gamecenter.retrofit.BiResponse
|
||||
import com.gh.gamecenter.retrofit.Response
|
||||
import com.gh.gamecenter.retrofit.RetrofitManager
|
||||
|
||||
Reference in New Issue
Block a user