diff --git a/FlycoTabLayoutZ_Lib/build.gradle b/FlycoTabLayoutZ_Lib/build.gradle index e21b40c..3c6ae3c 100644 --- a/FlycoTabLayoutZ_Lib/build.gradle +++ b/FlycoTabLayoutZ_Lib/build.gradle @@ -13,6 +13,8 @@ android { versionName version } buildTypes { + M50T60Debug {} + M50T60Release {} U807Debug {} U807Release {} iPlay50SEDebug {} diff --git a/app/build.gradle b/app/build.gradle index bf5e84c..c0c0b01 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.xxpatx.os" minSdkVersion 24 targetSdkVersion 29 - versionCode 1037 - versionName "1.3.6" + versionCode 1039 + versionName "1.3.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -26,9 +26,7 @@ android { // 还可以添加 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64' } - manifestPlaceholders = [ - AMAP_KEY: "963a156c0e1b525856d9b1d304666fe9" - ] + } dataBinding { @@ -68,10 +66,42 @@ android { v1SigningEnabled true v2SigningEnabled true } + + M50T60 { + storeFile file("keystore/T40Air.jks") + storePassword "123456" + keyAlias "T40Air" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } } buildTypes { + M50T60Debug.initWith(debug) + M50T60Debug { + manifestPlaceholders = [ + AMAP_KEY: "aa85f12a2b0060a687c1755e08161875" + ] + buildConfigField "String", "platform", '"TD606"' + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.M50T60 + } + + M50T60Release.initWith(release) + M50T60Release { + manifestPlaceholders = [ + AMAP_KEY: "aa85f12a2b0060a687c1755e08161875" + ] + buildConfigField "String", "platform", '"TD606"' + signingConfig signingConfigs.M50T60 + } + debug { + manifestPlaceholders = [ + AMAP_KEY: "963a156c0e1b525856d9b1d304666fe9" + ] buildConfigField "String", "platform", '"MTK01"' versionNameSuffix "-debug" //Zipalign优化 @@ -94,6 +124,9 @@ android { } release { + manifestPlaceholders = [ + AMAP_KEY: "963a156c0e1b525856d9b1d304666fe9" + ] buildConfigField "String", "platform", '"MTK01"' //Zipalign优化 zipAlignEnabled true diff --git a/app/keystore/KTouchMTK.keystore b/app/keystore/KTouchMTK.keystore new file mode 100644 index 0000000..30b39da Binary files /dev/null and b/app/keystore/KTouchMTK.keystore differ diff --git a/app/keystore/T40Air.jks b/app/keystore/T40Air.jks new file mode 100644 index 0000000..04a061a Binary files /dev/null and b/app/keystore/T40Air.jks differ diff --git a/app/src/main/java/com/xxpatx/os/activity/emergency/EmergencyActivity.java b/app/src/main/java/com/xxpatx/os/activity/emergency/EmergencyActivity.java index 3851911..8585409 100644 --- a/app/src/main/java/com/xxpatx/os/activity/emergency/EmergencyActivity.java +++ b/app/src/main/java/com/xxpatx/os/activity/emergency/EmergencyActivity.java @@ -85,7 +85,7 @@ public class EmergencyActivity extends BaseMvvmActivity() { @Override public void onSubscribe(@NonNull Disposable d) { diff --git a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java index dcbb96e..589f925 100644 --- a/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java +++ b/app/src/main/java/com/xxpatx/os/activity/main/MainActivity.java @@ -170,8 +170,8 @@ public class MainActivity extends BaseMvvmActivity() { + @Override + public void onChanged(SystemSettings systemSettings) { + mViewDataBinding.setSystemSettings(systemSettings); + mMMKV.encode(UIUIAIOS_DESKTOP_LOCATION_STATUS, systemSettings.getDesktop_location()); + } + }); + mViewModel.getSetting(); } @Override @@ -122,23 +147,42 @@ public class SettingsFragment extends BaseMvvmFragment { private static final String TAG = "SettingsViewModel"; @@ -25,5 +37,36 @@ public class SettingsViewModel extends BaseViewModel mSystemSettingsData = new MutableLiveData<>(); + + public void getSetting() { + NetInterfaceManager.getInstance().getSettingControl() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getSetting", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getSetting", "onNext: " + baseResponse); + if (baseResponse.code == 200) { + SystemSettings systemSettings = baseResponse.data; + mSystemSettingsData.setValue(systemSettings); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getSetting", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getSetting", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java b/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java index 762becf..7d92bae 100644 --- a/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java +++ b/app/src/main/java/com/xxpatx/os/manager/AppStatusManager.java @@ -30,9 +30,10 @@ public class AppStatusManager { private Set hidedAppSet; public static final String APP_STATUS_MANAGER_KEY = "AppStatusManagerSet"; + private static final Set defaultHiedApp = new HashSet() {{ this.add("om.android.fmradio");//收音机 -// this.add("com.android.mms");//信息 + this.add("com.android.mms");//信息 this.add("com.android.gallery3d"); this.add("com.android.documentsui"); this.add("com.android.calculator2"); @@ -71,6 +72,13 @@ public class AppStatusManager { mMMKV.encode(CommonConfig.HIDE_CALENDAR_KEY, true); Log.e(TAG, "AppStatusManager: hide calendar"); } + long oldVersionCode = mMMKV.decodeLong(CommonConfig.APP_VERSION_CODE, 0); + if (oldVersionCode == 0) { + addHidedApp("com.android.stk"); + addHidedApp("com.tencent.mm"); + addHidedApp("com.ss.android.ugc.aweme"); + addHidedApp("com.android.mms"); + } } public static void init(Context context) { diff --git a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java index a86adcc..dc7aa63 100644 --- a/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java +++ b/app/src/main/java/com/xxpatx/os/network/NetInterfaceManager.java @@ -20,7 +20,6 @@ import com.xxpatx.os.bean.AddressInfo; import com.xxpatx.os.bean.AlarmClockId; import com.xxpatx.os.bean.AppInfo; import com.xxpatx.os.bean.ArticleList; -import com.xxpatx.os.bean.BaiduMapGeoBean; import com.xxpatx.os.bean.BaseResponse; import com.xxpatx.os.bean.Contact; import com.xxpatx.os.bean.DemandBean; @@ -46,7 +45,6 @@ import com.xxpatx.os.disklrucache.CacheHelper; import com.xxpatx.os.gson.GsonUtils; import com.xxpatx.os.manager.ConnectManager; import com.xxpatx.os.manager.ConnectMode; -import com.xxpatx.os.network.api.amap.GeocodingApi; import com.xxpatx.os.network.api.qweather.LookupApi; import com.xxpatx.os.network.api.uiui.ActivityListApi; import com.xxpatx.os.network.api.uiui.AddressIndexApi; @@ -132,9 +130,6 @@ public class NetInterfaceManager { private Retrofit mRetrofit; private OkHttpClient okHttpClient; - private Retrofit mAmapRetrofit; - private OkHttpClient mAmapOkHttpClient; - private Retrofit mQweatherRetrofit; private OkHttpClient mQweatherOkHttpClient; @@ -175,31 +170,6 @@ public class NetInterfaceManager { .build(); } - if (mAmapOkHttpClient == null) { - //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 - OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.connectTimeout(TIME_OUT, TimeUnit.SECONDS); // 设置连接超时时间 - builder.writeTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置写入超时时间 - builder.readTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置读取数据超时时间 - builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 - builder.addInterceptor(new RepeatRequestInterceptor()); - - // 设置缓存文件路径 - String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; - Cache cache = new Cache(new File(cacheDirectory), CACHE_SIZE); - builder.cache(cache);// 设置缓存 - mAmapOkHttpClient = builder.build(); - } - - if (mAmapRetrofit == null) { - mAmapRetrofit = new Retrofit.Builder() - .client(mAmapOkHttpClient) - .baseUrl(UrlAddress.AMAP_ROOT_URL) - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) - .build(); - } - if (mQweatherOkHttpClient == null) { //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 OkHttpClient.Builder builder = new OkHttpClient.Builder(); @@ -280,14 +250,6 @@ public class NetInterfaceManager { return okHttpClient; } - @Deprecated - public Observable getGeoObservable(String address) { - return mAmapRetrofit.create(GeocodingApi.class) - .geocoding(address, "json", "RGAsG7hN9gbDxeruqF4Lsf0ro6pp362O") - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); - } - public Observable getLookupObservable(String address) { return mQweatherRetrofit.create(LookupApi.class) .lookup(address, "c5928a6a274c4a1cb80957a293b27898") @@ -295,7 +257,6 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } - public static RequestBody convertToRequestBody(String param) { RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), param); return requestBody; @@ -349,14 +310,14 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } - public Observable> getsettingControl() { + public Observable> getSettingControl() { return mRetrofit.create(SettingApi.class) .getSetting(Utils.getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } - public Observable getSOSRecordObservable(String longitude, String latitude, String address) { + public Observable getSosRecordObservable(String longitude, String latitude, String address) { return mRetrofit.create(SosRecordApi.class) .sendSosRecord(Utils.getSerial(), longitude, latitude, address) .subscribeOn(Schedulers.io()) @@ -1182,18 +1143,18 @@ public class NetInterfaceManager { } public void getSystemSettings(BehaviorSubject lifecycle, ContactCallback callback) { - getsettingControl() + getSettingControl() .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(getSystemSettingsObserver(callback)); } public void getSystemSettings(ContactCallback callback) { - getsettingControl() + getSettingControl() .subscribe(getSystemSettingsObserver(callback)); } public void getSystemSettings() { - getsettingControl() + getSettingControl() .subscribe(getSystemSettingsObserver(null)); } diff --git a/app/src/main/java/com/xxpatx/os/network/UrlAddress.java b/app/src/main/java/com/xxpatx/os/network/UrlAddress.java index 95093e0..4dc4fca 100644 --- a/app/src/main/java/com/xxpatx/os/network/UrlAddress.java +++ b/app/src/main/java/com/xxpatx/os/network/UrlAddress.java @@ -2,9 +2,7 @@ package com.xxpatx.os.network; public class UrlAddress { public static final String ROOT_URL = "https://ghapi.mdmsaas.cn/android/"; - /*百度地图*/ - @Deprecated - public static final String AMAP_ROOT_URL = "https://api.map.baidu.com/"; + /*和风天气*/ public static final String QWEATHER_ROOT_URL = "https://geoapi.qweather.com/"; @@ -157,11 +155,6 @@ public class UrlAddress { - - /*逆地理编码*/ - @Deprecated - public static final String GEOCODING = "geocoding/v3/"; - /*城市搜索*/ public static final String CITY_LOOKUP = "v2/city/lookup"; diff --git a/app/src/main/java/com/xxpatx/os/network/api/amap/GeocodingApi.java b/app/src/main/java/com/xxpatx/os/network/api/amap/GeocodingApi.java deleted file mode 100644 index 61bbedc..0000000 --- a/app/src/main/java/com/xxpatx/os/network/api/amap/GeocodingApi.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.xxpatx.os.network.api.amap; - -import com.xxpatx.os.bean.BaiduMapGeoBean; -import com.xxpatx.os.network.UrlAddress; - -import io.reactivex.rxjava3.core.Observable; -import retrofit2.http.GET; -import retrofit2.http.Query; - -public interface GeocodingApi { - @GET(UrlAddress.GEOCODING) - Observable geocoding( - @Query("address") String address, - @Query("output") String output, - @Query("ak") String key - ); -} diff --git a/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java b/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java index 4d8ae9e..82873ec 100644 --- a/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java +++ b/app/src/main/java/com/xxpatx/os/service/WeAccessibilityService.java @@ -375,6 +375,7 @@ public class WeAccessibilityService extends AccessibilityService { Point point = getPointtByNode(node); Log.e(TAG, "stepAnswer: " + point); clickByNode(point.x, point.y - 50); + clickByNode(point.x, point.y); // clickNode(node); Log.e(TAG, "stepAnswer: mCurrentStep " + mCurrentStep + " done"); mCurrentStep = Step.WAITING; diff --git a/app/src/main/java/com/xxpatx/os/service/main/MainService.java b/app/src/main/java/com/xxpatx/os/service/main/MainService.java index 043a781..a76cbca 100644 --- a/app/src/main/java/com/xxpatx/os/service/main/MainService.java +++ b/app/src/main/java/com/xxpatx/os/service/main/MainService.java @@ -50,7 +50,9 @@ import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.Calendar; import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Set; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; @@ -165,6 +167,17 @@ public class MainService extends BaseRxService implements MainSContact.MainSView NetworkUtils.registerNetworkStatusChangedListener(this); mPresenter.addAlarmClock(); + long oldVersionCode = mMMKV.decodeLong(CommonConfig.APP_VERSION_CODE, 0); + if (oldVersionCode == 1038) { + + } + if (oldVersionCode < BuildConfig.VERSION_CODE) { + + } else { + + } + mMMKV.encode(CommonConfig.APP_VERSION_CODE, BuildConfig.VERSION_CODE); + registerAlarmReceiver(); registerTimeReceiver(); registerLockScreenReceiver(); @@ -637,13 +650,22 @@ public class MainService extends BaseRxService implements MainSContact.MainSView isBallShown = true; } + private static final Set skip_kill_app = new HashSet() {{ + this.add(BuildConfig.APPLICATION_ID); + this.add("com.xxpatx.sn"); + this.add("com.tencent.mm"); + this.add("com.google.android.inputmethod.pinyin"); + this.add("com.sohu.inputmethod.sogou"); + this.add("com.baidu.input"); + this.add("com.tencent.wetype"); + this.add("com.tencent.qqpinyin"); + this.add("com.iflytek.inputmethod"); + }}; + private void killBackgroundApp() { List pkgList = ApkUtils.getRuningPackageList(this); for (String pkg : pkgList) { - if (pkg.equalsIgnoreCase(BuildConfig.APPLICATION_ID) - || "com.xxpatx.sn".equals(pkg) - || "com.tencent.mm".equals(pkg) - ) { + if (skip_kill_app.contains(pkg)) { continue; } killBackgroundProcesses(pkg); diff --git a/app/src/main/java/com/xxpatx/os/utils/Utils.java b/app/src/main/java/com/xxpatx/os/utils/Utils.java index 6a9ee8b..a3252f2 100644 --- a/app/src/main/java/com/xxpatx/os/utils/Utils.java +++ b/app/src/main/java/com/xxpatx/os/utils/Utils.java @@ -25,7 +25,9 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.TelephonyManager; import android.text.TextUtils; +import android.util.DisplayMetrics; import android.util.Log; +import android.view.WindowManager; import androidx.core.content.ContextCompat; @@ -119,8 +121,8 @@ public class Utils { context.startActivity(i); } - private static String Launcher3 = "com.android.launcher3"; - private static String Launcher3Class = "com.android.launcher3.Launcher"; + private static final String Launcher3 = "com.android.launcher3"; + private static final String Launcher3Class = "com.android.launcher3.Launcher"; public static void setDefaultDesktop(Context context, String pkg, String className) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -384,4 +386,26 @@ public class Utils { return cachePath; } + public static String getAndroiodScreenProperty(Context context) { + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + int width = dm.widthPixels; // 屏幕宽度(像素) + int height = dm.heightPixels; // 屏幕高度(像素) + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + int densityDpi = dm.densityDpi; // 屏幕密度dpi(120 / 160 / 240) + // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度 + int screenWidth = (int) (width / density); // 屏幕宽度(dp) + int screenHeight = (int) (height / density);// 屏幕高度(dp) + + Log.e("getAndroiodScreenProperty", "屏幕宽度(像素):" + width); + Log.e("getAndroiodScreenProperty", "屏幕高度(像素):" + height); + Log.e("getAndroiodScreenProperty", "屏幕密度(0.75 / 1.0 / 1.5):" + density); + Log.e("getAndroiodScreenProperty", "屏幕密度dpi(120 / 160 / 240):" + densityDpi); + Log.e("getAndroiodScreenProperty", "屏幕宽度(dp):" + screenWidth); + Log.e("getAndroiodScreenProperty", "屏幕高度(dp):" + screenHeight); + + Log.e("getAndroiodScreenProperty", "smallestScreenWidthDp: " + context.getResources().getConfiguration().smallestScreenWidthDp); + return width + "×" + height; + } } diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index cdf29db..73e1d43 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -9,6 +9,12 @@ + + + + - + android:visibility="@{systemSettings.desktop_location==1?View.VISIBLE:View.INVISIBLE}"> + + + + + + - - diff --git a/niceimageview/build.gradle b/niceimageview/build.gradle index c97f41b..c974071 100644 --- a/niceimageview/build.gradle +++ b/niceimageview/build.gradle @@ -11,6 +11,8 @@ android { } buildTypes { + M50T60Debug {} + M50T60Release {} debug {} release {} } diff --git a/verification-view/build.gradle b/verification-view/build.gradle index c3085cb..eb63dac 100644 --- a/verification-view/build.gradle +++ b/verification-view/build.gradle @@ -13,6 +13,8 @@ android { } buildTypes { + M50T60Debug {} + M50T60Release {} debug {} release {} }