Merge branch 'dev-4.8.0' of git.ghzs.com:halo/assistant-android into dev-4.8.0

This commit is contained in:
张玉久
2021-03-17 15:22:33 +08:00
9 changed files with 96 additions and 35 deletions

View File

@ -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;
}
});
}

View File

@ -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}$";

View File

@ -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
}
}

View File

@ -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)
}

View File

@ -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