diff --git a/app/build.gradle b/app/build.gradle index d8592ec..b09c1e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ static def appName() { } static def releaseTime() { - return new Date().format("yyyyMMdd-HHmmss", TimeZone.getDefault()) + return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault()) } android { @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 94 - versionName "6.5.4" + versionCode 100 + versionName "1.4.0103" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 @@ -237,6 +237,20 @@ android { signingConfig signingConfigs.mtk12 } + G10PDebug.initWith(debug) + G10PDebug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.G10P + buildConfigField "String", "platform", '"G10P"' + } + + G10PRelease.initWith(release) + G10PRelease { + signingConfig signingConfigs.G10P + buildConfigField "String", "platform", '"G10P"' + } + G13Debug.initWith(debug) G13Debug { versionNameSuffix "-debug" @@ -251,22 +265,22 @@ android { buildConfigField "String", "platform", '"HRAD13"' } - G10PDebug.initWith(debug) - G10PDebug { + G104Debug.initWith(debug) + G104Debug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"MTK11"' } - G10PRelease.initWith(release) - G10PRelease { + G104Release.initWith(release) + G104Release { signingConfig signingConfigs.G10P buildConfigField "String", "platform", '"MTK11"' } - G10PUserDebug.initWith(debug) - G10PUserDebug { + G104UserDebug.initWith(debug) + G104UserDebug { versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.G10PUserDebug @@ -356,7 +370,7 @@ android { variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null) { - def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" + def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk" output.outputFileName = fileName } } @@ -376,7 +390,7 @@ android { variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null) { - def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" + def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk" output.outputFileName = fileName } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4d1b93d..ee0f8e6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -134,7 +134,8 @@ - + android:launchMode="singleInstance" + android:label="检查更新" + android:icon="@drawable/com_aoleyun_update" + android:screenOrientation="userPortrait"> + + + + + + @@ -183,6 +192,11 @@ + + + + + diff --git a/app/src/main/java/com/aoleyun/sn/activity/EyeProtectionActivity.java b/app/src/main/java/com/aoleyun/sn/activity/EyeProtectionActivity.java index ea4f3be..63e348b 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/EyeProtectionActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/EyeProtectionActivity.java @@ -37,25 +37,13 @@ public class EyeProtectionActivity extends BaseActivity { @Override public void initView() { ButterKnife.bind(this); - int nightDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0); - if (nightDisplay == 1) { - toggleButton1.setToggleOn(); - } else { - toggleButton1.setToggleOff(); - } + toggleButton1.setOnToggleChanged(new ToggleButton.OnToggleChanged() { @Override public void onToggle(boolean on) { Settings.Secure.putInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, on ? 1 : 0); } }); - - int accessibilityDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0); - if (accessibilityDisplay == 1) { - toggleButton2.setToggleOn(); - } else { - toggleButton2.setToggleOff(); - } toggleButton2.setOnToggleChanged(new ToggleButton.OnToggleChanged() { @Override public void onToggle(boolean on) { @@ -96,4 +84,22 @@ public class EyeProtectionActivity extends BaseActivity { public void initData() { } + + @Override + protected void onResume() { + super.onResume(); + int nightDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0); + if (nightDisplay == 1) { + toggleButton1.setToggleOn(); + } else { + toggleButton1.setToggleOff(); + } + + int accessibilityDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0); + if (accessibilityDisplay == 1) { + toggleButton2.setToggleOn(); + } else { + toggleButton2.setToggleOff(); + } + } } diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java index dddc957..c92d7f9 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java @@ -193,6 +193,13 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, }); // setStoreUpdateListener(bt_checkupdate); registerReceiver(); + + if (BuildConfig.DEBUG) { +// ApkUtils.openPackage(MainActivity.this,"com.android.calculator2","com.android.calculator2.Calculator"); +// ApkUtils.openPackage(MainActivity.this,"com.android.documentsui","com.android.documentsui.LauncherActivity"); +// ApkUtils.openPackage(MainActivity.this,"com.jxw.wuweijidanci","com.jxw.wuweijidanci.MainActivity"); +// ApkUtils.openPackage(MainActivity.this,"com.jxw.singsound","com.jxw.singsound.ui.SplashActivity"); + } } private void setStoreUpdateListener(View view) { diff --git a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java index 48d9546..18f8fca 100644 --- a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java @@ -464,11 +464,16 @@ public class CacheHelper { String cachePath; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) { - cachePath = context.getExternalCacheDir().getPath(); + if (context.getExternalCacheDir() != null) { + cachePath = context.getExternalCacheDir().getPath(); + } else if (context.getExternalFilesDir("cache") != null) { + cachePath = context.getExternalFilesDir("cache").getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } } else { cachePath = context.getCacheDir().getPath(); } return new File(cachePath + File.separator + uniqueName); } - } diff --git a/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java b/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java index d504cee..0d3ad04 100644 --- a/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java +++ b/app/src/main/java/com/aoleyun/sn/hook/AoleyunActivityController.java @@ -16,7 +16,9 @@ public class AoleyunActivityController extends IActivityController.Stub { public boolean activityStarting(Intent intent, String pkg) { Log.e(TAG, "activityStarting: " + pkg + ", intent= " + intent); //retrun false;//false 则不会启动,直接返回。 - return JGYUtils.getInstance().isForbid(pkg); + boolean status = JGYUtils.getInstance().isForbid(pkg); + Log.e(TAG, "activityStarting: " + pkg + "start = " + status); + return status; } @Override diff --git a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java index d451597..045b088 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -6,7 +6,9 @@ import android.app.PendingIntent; import android.app.StatusBarManager; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; import android.os.Build; import android.provider.Settings; import android.text.TextUtils; @@ -105,6 +107,7 @@ import com.aoleyun.sn.network.api.post.SnConfirmBindApi; import com.aoleyun.sn.network.api.post.StudentsInfoApi; import com.aoleyun.sn.network.api.post.SystemSettingApi; import com.aoleyun.sn.network.api.post.UpdateDeviceInfoApi; +import com.aoleyun.sn.network.api.post.UploadAppImgApi; import com.aoleyun.sn.network.api.post.UploadAppInfoApi; import com.aoleyun.sn.network.interceptor.RepeatRequestInterceptor; import com.aoleyun.sn.rlog.LogDBManager; @@ -113,6 +116,7 @@ import com.aoleyun.sn.service.main.MainService; import com.aoleyun.sn.statistics.AppInformation; import com.aoleyun.sn.statistics.StatisticsInfo; import com.aoleyun.sn.utils.ApkUtils; +import com.aoleyun.sn.utils.BitmapUtils; import com.aoleyun.sn.utils.CacheUtils; import com.aoleyun.sn.utils.ForegroundAppUtil; import com.aoleyun.sn.utils.JGYUtils; @@ -150,6 +154,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -172,6 +177,7 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.ResponseBody; +import retrofit2.Call; import retrofit2.Retrofit; import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; @@ -190,6 +196,9 @@ public class NetInterfaceManager { private Retrofit mAolelearnRetrofit; private OkHttpClient mAolelearnOkHttpClient; + private Set mUploadIconPkgs; + private static final String uploadIconPkgsKey = "UPLOAD_ICON_PACKAGE_KEY"; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private CacheHelper cacheHelper; @@ -350,6 +359,9 @@ public class NetInterfaceManager { .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .build(); } + + mUploadIconPkgs = mMMKV.decodeStringSet(uploadIconPkgsKey, new HashSet<>()); + Log.e("init", "NetInterfaceManager: mUploadIconPkgs = " + mUploadIconPkgs); } public static void init(Context context) { @@ -372,6 +384,21 @@ public class NetInterfaceManager { return okHttpClient; } + public static RequestBody convertToRequestBody(String param) { + RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), param); + return requestBody; + } + + public static RequestBody convertToRequestBody(int param) { + RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), String.valueOf(param)); + return requestBody; + } + + public static RequestBody convertToRequestBody(long param) { + RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), String.valueOf(param)); + return requestBody; + } + /** * 获取学习软件 * @@ -758,6 +785,12 @@ public class NetInterfaceManager { return mRetrofit.create(SnConfirmBindApi.class); } + public UploadAppImgApi getUploadAppImgApi() { + return mRetrofit.create(UploadAppImgApi.class); + } + + + /* * * execution @@ -2411,6 +2444,8 @@ public class NetInterfaceManager { tagSets.add(JGYUtils.ZR6016Tag); } else if (platform == JGYUtils.HRAD13Platform) { tagSets.add(JGYUtils.HRAD13Tag); + } else if (platform == JGYUtils.G10PPlatform) { + tagSets.add(JGYUtils.G10PTag); } else if (platform == JGYUtils.C2Platform) { tagSets.add(JGYUtils.C2Tag); } @@ -2539,6 +2574,72 @@ public class NetInterfaceManager { callback.onComplete(); } }); + + PackageManager pm = mContext.getPackageManager(); + List packageInfos = pm.getInstalledPackages(0); + List filter = packageInfos.stream().filter(new Predicate() { + @Override + public boolean test(PackageInfo packageInfo) { + if (ApkUtils.isSystemApp(mContext, packageInfo.packageName)) { + if (ApkUtils.systemApps.contains(packageInfo.packageName)) { + return true; + } else { + return false; + } + } else { + return true; + } + } + }).collect(Collectors.toList()); + List filterJxwApp = filter.stream().filter(packageInfo -> !ApkUtils.jxwApp.contains(packageInfo.packageName)).collect(Collectors.toList()); + for (PackageInfo packageInfo : filterJxwApp) { + if ("com.uiuipad.find".equals(packageInfo.packageName) + || "com.uiuipad.os".equals(packageInfo.packageName) + || "com.uiui.zybrowser".equals(packageInfo.packageName) + ) { + continue; + } + + if (!mUploadIconPkgs.contains(packageInfo.packageName)) { + Drawable drawable = packageInfo.applicationInfo.loadIcon(pm); + File file = BitmapUtils.drawableToFile(mContext, drawable, packageInfo.packageName); + //File转RequestBody + MediaType mediaType = MediaType.Companion.parse("image/png"); + RequestBody fileBody = RequestBody.Companion.create(file, mediaType); + //设置一个file文件 + MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody); + Map params = new HashMap<>(); + params.put("package", convertToRequestBody(packageInfo.packageName)); + Call call = getUploadAppImgApi().uploadAppImg(params, body); + call.enqueue(new RetryCallback(call, 1, 30 * 1000) { + @Override + public void onRequestResponse(Call call, retrofit2.Response response) { + BaseResponse baseResponse = (BaseResponse) response.body(); + Log.e(TAG, "onRequestResponse: " + baseResponse); + if (baseResponse.code == 200 || baseResponse.code == 401) { + addIcon(packageInfo.packageName); + } + } + + @Override + public void onRequestFail(Call call, Throwable t) { + Log.e(TAG, "onRequestFail: "); + } + + @Override + public void onStartRetry() { + Log.e(TAG, "onStartRetry: "); + } + }); + } else { + Log.e(TAG, "updateAppInstall: upload " + packageInfo.packageName); + } + } + } + + public void addIcon(String pkg) { + mUploadIconPkgs.add(pkg); + mMMKV.encode(uploadIconPkgsKey, mUploadIconPkgs); } public void uploadLogFile() { diff --git a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java index b3cd3a5..bc4d719 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -146,6 +146,13 @@ public class UrlAddress { /*上传运行日志设置文件*/ public static final String UPLOAD_IS_LOG_FILE = "And/sn/uploadIsLogFile"; + /** + * 图标相关 + */ + /*获取应用库是否有图标*/ + public static final String GET_IS_APP_IMG = "And/collectData/getIsAppImg"; + /*上传应用图标*/ + public static final String UPLOAD_APP_IMG = "And/collectData/uploadAppImg"; /*通过ip获取信息*/ public static final String PCONLINE_WHOIS = "http://whois.pconline.com.cn/"; diff --git a/app/src/main/java/com/aoleyun/sn/network/api/get/AppImgApi.java b/app/src/main/java/com/aoleyun/sn/network/api/get/AppImgApi.java new file mode 100644 index 0000000..e077684 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/network/api/get/AppImgApi.java @@ -0,0 +1,15 @@ +package com.aoleyun.sn.network.api.get; + +import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface AppImgApi { + @GET(UrlAddress.GET_IS_APP_IMG) + Observable getIsAppImg( + @Query("package") String pkg + ); +} diff --git a/app/src/main/java/com/aoleyun/sn/network/api/post/UploadAppImgApi.java b/app/src/main/java/com/aoleyun/sn/network/api/post/UploadAppImgApi.java new file mode 100644 index 0000000..5459bcf --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/network/api/post/UploadAppImgApi.java @@ -0,0 +1,23 @@ +package com.aoleyun.sn.network.api.post; + +import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.network.UrlAddress; + +import java.util.Map; + +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import retrofit2.Call; +import retrofit2.http.Multipart; +import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.PartMap; + +public interface UploadAppImgApi { + @Multipart + @POST(UrlAddress.UPLOAD_APP_IMG) + Call uploadAppImg( + @PartMap Map params, + @Part MultipartBody.Part body + ); +} diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java index 0594b94..669b9b0 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java @@ -7,6 +7,8 @@ import android.app.IActivityManager; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.Service; +import android.app.job.JobScheduler; +import android.app.job.JobService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -446,13 +448,13 @@ public class MainService extends Service implements MainSContact.MainView, Netwo // createNotificationChannel(); // aliyunPushInit(); - IActivityManager activityManager = ActivityManagerNative.getDefault(); - try { - activityManager.setActivityController(new AoleyunActivityController(), true); - } catch (RemoteException e) { - Log.e(TAG, "setActivityController: " + e.getMessage()); - e.printStackTrace(); - } +// IActivityManager activityManager = ActivityManagerNative.getDefault(); +// try { +// activityManager.setActivityController(new AoleyunActivityController(), true); +// } catch (RemoteException e) { +// Log.e(TAG, "setActivityController: " + e.getMessage()); +// e.printStackTrace(); +// } } @Override @@ -547,6 +549,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo registerInstallReceiver(); registerRefreshReceiver(); registerScreenLockReceiver(); + registerDisplayReceiver(); } private void unRegisterReceivers() { @@ -568,6 +571,9 @@ public class MainService extends Service implements MainSContact.MainView, Netwo if (null != screenLockReceiver) { unregisterReceiver(screenLockReceiver); } + if (null != mDisplayReceiver) { + unregisterReceiver(mDisplayReceiver); + } } private static WindowManager windowManager; @@ -791,6 +797,53 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } } + private DisplayReceiver mDisplayReceiver; + + + public void registerDisplayReceiver() { + mDisplayReceiver = new DisplayReceiver(); + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(NIGHT_DISPLAY_ENABLED); + filter.addAction(NIGHT_DISPLAY_DISABLED); + filter.addAction(READ_MODEL_ENABLED); + filter.addAction(READ_MODEL_DISABLED); + registerReceiver(mDisplayReceiver, filter); + } + + public static final String NIGHT_DISPLAY_ENABLED = "NIGHT_DISPLAY_ENABLED"; + public static final String NIGHT_DISPLAY_DISABLED = "NIGHT_DISPLAY_DISABLED"; + public static final String READ_MODEL_ENABLED = "READ_MODEL_ENABLED"; + public static final String READ_MODEL_DISABLED = "READ_MODEL_DISABLED"; + + + private class DisplayReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + + Log.e("DisplayReceiver", "onReceive: " + action); + if (TextUtils.isEmpty(action)) { + return; + } + switch (action) { + case NIGHT_DISPLAY_ENABLED: + Settings.Secure.putInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 1); + break; + case NIGHT_DISPLAY_DISABLED: + Settings.Secure.putInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0); + break; + case READ_MODEL_ENABLED: + Settings.Secure.putInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 1); + break; + case READ_MODEL_DISABLED: + Settings.Secure.putInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0); + break; + default: + } + } + } + private static final String UPLOAD_LOG_TIME = "23:00:00"; private void checkUploadLogTime() { diff --git a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java index f8f2325..c184182 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -111,6 +111,28 @@ public class ApkUtils { return false; } + public static boolean openPackage(Context context, String packageName, String className) { + if (TextUtils.isEmpty(className)) { + return openPackage(context, packageName); + } + ComponentName cn = new ComponentName(packageName, className); + Intent intent = new Intent(); + intent.setComponent(cn); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + if (context != null) { + try { + context.startActivity(intent); + return true; + } catch (Exception e) { + Log.e(TAG, "openPackage: " + e.getMessage()); + ToastUtil.show("打开失败"); + return false; + } + } + return false; + } + public static Context getPackageContext(Context context, String packageName) { Context pkgContext = null; if (context.getPackageName().equals(packageName)) { @@ -766,6 +788,12 @@ public class ApkUtils { this.add("com.gl.dwlauncher"); this.add("com.qunyu.dividedroad"); this.add("com.ygyb.yischool"); + this.add("com.uiui.floatwindow"); + this.add("com.uiuipad.find"); + this.add("com.uiuipad.appstore"); + this.add("com.uiuipad.os"); + this.add("com.uiuipad.zyinfo"); + this.add("com.yixuepai.os"); }}; //出厂自带的app @@ -997,8 +1025,12 @@ public class ApkUtils { this.add("com.tencent.wework"); this.add("com.tencent.mm"); - this.add("cn.wps.moffice_eng"); this.add("com.baidu.BaiduMap"); + + this.add("com.jxw.singsound"); + this.add("com.qunyu.dividedroad"); + this.add("com.gl.dwlauncher"); + this.add("com.gl.dongwa"); }}; public static Set jxwApp = new HashSet() {{ @@ -1054,6 +1086,27 @@ public class ApkUtils { this.add("com.teclast.zy"); }}; + public static final Set systemApps = new HashSet() {{ + this.add("com.android.deskclock"); + this.add("com.android.music"); + this.add("com.android.documentsui"); + this.add("com.mediatek.camera"); + this.add("com.android.calendar"); + this.add("com.android.calculator2"); + this.add("com.android.gallery3d"); + this.add("com.android.soundrecorder"); + this.add("com.android.settings"); + this.add("org.chromium.chrome"); + this.add("com.softwinner.music"); + this.add("com.softwinner.miracastReceiver"); + this.add("com.softwinner.camera"); + this.add("org.chromium.webview_shell"); +// this.add("com.uiuipad.find"); +// this.add("com.uiuipad.os"); + this.add("com.softwinner.videoplayer"); + this.add("com.sohu.inputmethod.sogou"); + this.add("com.tencent.mtt"); + }}; public static void showAllAPP(Context context) { PackageManager pm = context.getPackageManager(); diff --git a/app/src/main/java/com/aoleyun/sn/utils/BitmapUtils.java b/app/src/main/java/com/aoleyun/sn/utils/BitmapUtils.java new file mode 100644 index 0000000..00ff02a --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/utils/BitmapUtils.java @@ -0,0 +1,69 @@ +package com.aoleyun.sn.utils; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.PixelFormat; +import android.graphics.drawable.Drawable; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.WriterException; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + +import java.io.File; +import java.io.FileOutputStream; +import java.util.HashMap; +import java.util.Map; + +public class BitmapUtils { + /** + * Drawable转换成一个Bitmap + * + * @param drawable drawable对象 + * @return + */ + public static final Bitmap drawableToBitmap(Drawable drawable) { + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), + drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); + drawable.draw(canvas); + return bitmap; + } + + + /** + * drawable转为file + * + * @param mContext + * @param drawable drawable + * @param fileName 转换后的文件名 + * @return + */ + public static File drawableToFile(Context mContext, Drawable drawable, String fileName) { +// InputStream is = view.getContext().getResources().openRawResource(R.drawable.logo); + Bitmap bitmap = drawableToBitmap(drawable); +// Bitmap bitmap = BitmapFactory.decodeStream(is); + String defaultPath = Utils.getCacheDir(mContext) + "/iconCache"; + File file = new File(defaultPath); + if (!file.exists()) { + file.mkdirs(); + } + String defaultImgPath = defaultPath + "/" + fileName; + File iconFile = new File(defaultImgPath); + try { + iconFile.createNewFile(); + FileOutputStream fOut = new FileOutputStream(iconFile); + bitmap.compress(Bitmap.CompressFormat.PNG, 20, fOut); +// is.close(); + fOut.flush(); + fOut.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return iconFile; + } +} diff --git a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java index 7ac5651..8be12be 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java @@ -131,7 +131,7 @@ public class JGYUtils { public static final int AH6016Platform = 9; public static final int ZR6016Platform = 10; public static final int HRAD13Platform = 11; - public static final int Teclast8183Platform = 12; + public static final int G10PPlatform = 12; public static final int C2Platform = 13; @@ -144,7 +144,7 @@ public class JGYUtils { public static final String AH6016Tag = "AH6016"; public static final String ZR6016Tag = "ZR6016"; public static final String HRAD13Tag = "HRAD13"; - public static final String Teclast8183Tag = "teclast8183"; + public static final String G10PTag = "G10P"; public static final String C2Tag = "MTK8183"; @@ -255,6 +255,9 @@ public class JGYUtils { } else if (HRAD13Tag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "HRAD13"); return HRAD13Platform; + } else if (G10PTag.equalsIgnoreCase(platform)) { + Log.i(TAG, "checkAppPlatform: " + "G10P"); + return G10PPlatform; } else if (C2Tag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "C2"); return C2Platform; @@ -296,6 +299,8 @@ public class JGYUtils { getAppPlatformCallback.AppPlatform(ZR6016Platform); } else if (HRAD13Tag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(HRAD13Platform); + } else if (G10PTag.equalsIgnoreCase(platform)) { + getAppPlatformCallback.AppPlatform(G10PPlatform); } else if (C2Tag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(C2Platform); } else { @@ -321,9 +326,11 @@ public class JGYUtils { return ZR6016Tag; } else if (HRAD13Tag.equalsIgnoreCase(platform)) { return HRAD13Tag; - } else if (C2Tag.equalsIgnoreCase(platform)) { + } else if (G10PTag.equalsIgnoreCase(platform)) { + return G10PTag; + } else if (C2Tag.equalsIgnoreCase(platform)) { return C2Tag; - }else { + } else { return Other; } } @@ -1210,8 +1217,10 @@ public class JGYUtils { pkgSet.addAll(ApkUtils.aoleyunAPP); pkgSet.addAll(ApkUtils.aihuaApp); pkgSet.addAll(ApkUtils.jxwApp); - pkgSet.removeIf(TextUtils::isEmpty); + if (JGYUtils.C2Tag.equalsIgnoreCase(JGYUtils.getInstance().getAppPlatform())) { + pkgSet.remove("com.tencent.mm"); + } String aole_app_forbid = String.join(",", pkgSet); Log.e(TAG, "writeAppPackageList: " + aole_app_forbid); boolean b = Settings.System.putString(crv, CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid); @@ -1226,6 +1235,9 @@ public class JGYUtils { pkgSet.addAll(ApkUtils.aoleyunAPP); pkgSet.addAll(ApkUtils.aihuaApp); pkgSet.addAll(ApkUtils.jxwApp); + if (JGYUtils.C2Tag.equalsIgnoreCase(JGYUtils.getInstance().getAppPlatform())) { + pkgSet.remove("com.tencent.mm"); + } String aole_app_forbid = String.join(",", pkgSet); Log.e(TAG, "writeAppPackageList: " + aole_app_forbid); Settings.System.putString(crv, CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid); @@ -1390,39 +1402,43 @@ public class JGYUtils { } public void installDesktop(JsonObject jsonObject) { - String app_name = jsonObject.get("app_name").getAsString(); - String app_url = jsonObject.get("app_url").getAsString(); - String app_package = jsonObject.get("app_package").getAsString(); - int app_version_code = jsonObject.get("app_version_code").getAsInt(); - mMMKV.encode(CommonConfig.DEFAULT_DESKTOP_PACKAGE, app_package); - Set desktop = new HashSet<>(ApkUtils.desktopAPP); - desktop.remove(app_package); - for (String s : desktop) { - ApkUtils.UninstallAPP(mContext, s); - } - PackageInfo info = null; - PackageManager packageManager = mContext.getPackageManager(); - if (null != packageManager) { - try { - info = packageManager.getPackageInfo(app_package, 0); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - Log.e("fht", "installDesktop: " + e.getMessage()); + try { + String app_name = jsonObject.get("app_name").getAsString(); + String app_url = jsonObject.get("app_url").getAsString(); + String app_package = jsonObject.get("app_package").getAsString(); + int app_version_code = jsonObject.get("app_version_code").getAsInt(); + mMMKV.encode(CommonConfig.DEFAULT_DESKTOP_PACKAGE, app_package); + Set desktop = new HashSet<>(ApkUtils.desktopAPP); + desktop.remove(app_package); + for (String s : desktop) { + ApkUtils.UninstallAPP(mContext, s); } - if (null != info) { - packageManager.setApplicationEnabledSetting(app_package, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); - long versionCode; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - versionCode = info.getLongVersionCode(); - } else { - versionCode = info.versionCode; + PackageInfo info = null; + PackageManager packageManager = mContext.getPackageManager(); + if (null != packageManager) { + try { + info = packageManager.getPackageInfo(app_package, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + Log.e("fht", "installDesktop: " + e.getMessage()); } - if (app_version_code > versionCode) { + if (null != info) { + packageManager.setApplicationEnabledSetting(app_package, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0); + long versionCode; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + versionCode = info.getLongVersionCode(); + } else { + versionCode = info.versionCode; + } + if (app_version_code > versionCode) { + Utils.ariaDownload(mContext, app_url, jsonObject); + } + } else { Utils.ariaDownload(mContext, app_url, jsonObject); } - } else { - Utils.ariaDownload(mContext, app_url, jsonObject); } + } catch (Exception e) { + Log.e(TAG, "installDesktop: " + e.getMessage()); } } @@ -1728,6 +1744,7 @@ public class JGYUtils { || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZR6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.HRAD13Platform + || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G10PPlatform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.C2Platform ) { Settings.Global.putInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, state == 1 ? 0 : 1); @@ -2119,8 +2136,8 @@ public class JGYUtils { private String Launcher3 = "com.android.launcher3"; private String Launcher3Class = "com.android.launcher3.Launcher"; - private String AoleyunOs ="com.aoleyun.os"; - private String AoleyunOsClass ="com.aoleyun.os.Launcher"; + private String AoleyunOs = "com.aoleyun.os"; + private String AoleyunOsClass = "com.aoleyun.os.Launcher"; public void setDefaultLauncher(Context context, String defPackageName, String defClassName) { try { @@ -2229,9 +2246,9 @@ public class JGYUtils { private void openLauncher3() { // ApkUtils.openPackage(mContext, Launcher3); - if ("C2".equals(Build.MODEL)){ + if ("C2".equals(Build.MODEL)) { setDefaultDesktop(AoleyunOs, AoleyunOsClass); - }else { + } else { setDefaultDesktop(Launcher3, Launcher3Class); } } @@ -2435,7 +2452,7 @@ public class JGYUtils { } - public boolean isForbid(String pkg) { + public boolean isForbid(String pkg) { switch (pkg) { case "com.mediatek.camera": case "com.android.camera2": @@ -2497,7 +2514,7 @@ public class JGYUtils { default: return true; } - return false; + return true; } diff --git a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java index 8dac348..572494a 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java @@ -76,9 +76,9 @@ public class SysSettingUtils { setBar(context, 1); setCamera(context, 1); setTF(context, 1); - setIcon(context, 1); + setIcon(context, 0); setWallpaper(context, 0); - setCanReset(context, 1); + setCanReset(context, 0); setAutoTime(context, 1); setBrowserInput(context, 1); if (!BuildConfig.DEBUG) { @@ -94,7 +94,10 @@ public class SysSettingUtils { public static void setEnableSetting(Context context) { ToastUtil.betaShow("打开所有功能"); setPhoneList(context, 0); -// setUSBstate(context,0); + if (JGYUtils.C2Tag.equalsIgnoreCase(JGYUtils.getInstance().getAppPlatform())) { + openMtp(context); + } + // setUSBstate(context, 0); setBluetooth(context, 0); setHotspot(context, 0); setBar(context, 0); @@ -110,6 +113,12 @@ public class SysSettingUtils { setAdminApp(context, 0); } + private static void openMtp(Context context) { + String usbStatus = CommonConfig.AOLE_ACTION_USB_USB_MTP; + Intent usbIntent = new Intent(usbStatus); + context.sendBroadcast(usbIntent); + } + private static void setPhoneList(Context context, int state) { try { //设置电话功能,电话白名单 @@ -169,8 +178,6 @@ public class SysSettingUtils { //Midi模式:usb_midi if (!BuildConfig.DEBUG) { try { - SuperPower mService = (SuperPower) context.getSystemService("mdm"); - mService.setUsbDataDisabled(true); boolean aole_usb_choose = Settings.System.putString(context.getContentResolver(), "aole_usb_choose", "usb_charge"); Log.e(TAG, "aole_usb_choose:" + aole_usb_choose); String usbStatus = CommonConfig.AOLE_ACTION_USB_USB_CHARGE; @@ -184,6 +191,9 @@ public class SysSettingUtils { usbIntent.setPackage("com.android.settings"); } context.sendBroadcast(usbIntent); + + SuperPower mService = (SuperPower) context.getSystemService("mdm"); + mService.setUsbDataDisabled(true); } catch (NoClassDefFoundError | Exception e) { Log.e(TAG, "setUSBstate: " + e.getMessage()); } @@ -552,7 +562,7 @@ public class SysSettingUtils { //设置5个app的开关 //时钟 // int deskclock = 1; - Settings.System.putInt(context.getContentResolver(), "qch_app_deskclock", 0); + Settings.System.putInt(context.getContentResolver(), "qch_app_deskclock", state); ApkUtils.hideSystemSettingAPP(context, "com.android.deskclock"); Log.e(TAG, "qch_app_deskclock" + state); //录音机 diff --git a/app/src/main/java/com/aoleyun/sn/utils/Utils.java b/app/src/main/java/com/aoleyun/sn/utils/Utils.java index acfcd1d..4f340ee 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/Utils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/Utils.java @@ -1766,6 +1766,7 @@ public class Utils { || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZR6016Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.HRAD13Platform + || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G10PPlatform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.C2Platform ) { return Utils.getProperty("ro.build.display.id", "获取失败"); @@ -1962,5 +1963,22 @@ public class Utils { } return result; } + + public static String getCacheDir(Context context) { + String cachePath; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) + || !Environment.isExternalStorageRemovable()) { + if (context.getExternalCacheDir() != null) { + cachePath = context.getExternalCacheDir().getPath(); + } else if (context.getExternalFilesDir("cache") != null) { + cachePath = context.getExternalFilesDir("cache").getPath(); + } else { + cachePath = context.getCacheDir().getPath(); + } + } else { + cachePath = context.getCacheDir().getPath(); + } + return cachePath; + } } diff --git a/app/src/main/res/drawable-hdpi/aoleyun_qrcode.jpg b/app/src/main/res/drawable-hdpi/aoleyun_qrcode.jpg new file mode 100644 index 0000000..4c232d6 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/aoleyun_qrcode.jpg differ diff --git a/app/src/main/res/drawable-hdpi/aoleyun_qrcode.png b/app/src/main/res/drawable-hdpi/aoleyun_qrcode.png deleted file mode 100644 index b09800e..0000000 Binary files a/app/src/main/res/drawable-hdpi/aoleyun_qrcode.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/com_aoleyun_appstore.png b/app/src/main/res/drawable-hdpi/com_aoleyun_appstore.png index 033f1c4..ad6a779 100644 Binary files a/app/src/main/res/drawable-hdpi/com_aoleyun_appstore.png and b/app/src/main/res/drawable-hdpi/com_aoleyun_appstore.png differ diff --git a/app/src/main/res/drawable-hdpi/com_aoleyun_browser.png b/app/src/main/res/drawable-hdpi/com_aoleyun_browser.png index 13554a9..1d91e6b 100644 Binary files a/app/src/main/res/drawable-hdpi/com_aoleyun_browser.png and b/app/src/main/res/drawable-hdpi/com_aoleyun_browser.png differ diff --git a/app/src/main/res/drawable-hdpi/com_aoleyun_info.png b/app/src/main/res/drawable-hdpi/com_aoleyun_info.png index b949068..fb5a173 100644 Binary files a/app/src/main/res/drawable-hdpi/com_aoleyun_info.png and b/app/src/main/res/drawable-hdpi/com_aoleyun_info.png differ diff --git a/app/src/main/res/drawable-hdpi/com_aoleyun_os.png b/app/src/main/res/drawable-hdpi/com_aoleyun_os.png index 4d6240b..8e79650 100644 Binary files a/app/src/main/res/drawable-hdpi/com_aoleyun_os.png and b/app/src/main/res/drawable-hdpi/com_aoleyun_os.png differ diff --git a/app/src/main/res/drawable-hdpi/com_aoleyun_update.png b/app/src/main/res/drawable-hdpi/com_aoleyun_update.png new file mode 100644 index 0000000..d0c9e8d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/com_aoleyun_update.png differ diff --git a/app/src/main/res/drawable-hdpi/com_system_clean.png b/app/src/main/res/drawable-hdpi/com_system_clean.png index b21d7e7..f6b590a 100644 Binary files a/app/src/main/res/drawable-hdpi/com_system_clean.png and b/app/src/main/res/drawable-hdpi/com_system_clean.png differ diff --git a/app/src/main/res/drawable-hdpi/com_system_huyan.png b/app/src/main/res/drawable-hdpi/com_system_huyan.png index d81a835..938ad56 100644 Binary files a/app/src/main/res/drawable-hdpi/com_system_huyan.png and b/app/src/main/res/drawable-hdpi/com_system_huyan.png differ diff --git a/app/src/main/res/drawable-hdpi/default_avatar.png b/app/src/main/res/drawable-hdpi/default_avatar.png index 51624b1..b1cb202 100644 Binary files a/app/src/main/res/drawable-hdpi/default_avatar.png and b/app/src/main/res/drawable-hdpi/default_avatar.png differ diff --git a/app/src/main/res/drawable-hdpi/logo.png b/app/src/main/res/drawable-hdpi/logo.png deleted file mode 100644 index 398bfe8..0000000 Binary files a/app/src/main/res/drawable-hdpi/logo.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/main_logo.png b/app/src/main/res/drawable-hdpi/main_logo.png deleted file mode 100644 index 398bfe8..0000000 Binary files a/app/src/main/res/drawable-hdpi/main_logo.png and /dev/null differ diff --git a/app/src/main/res/layout-land/activity_home.xml b/app/src/main/res/layout-land/activity_home.xml index f192139..6cd37df 100644 --- a/app/src/main/res/layout-land/activity_home.xml +++ b/app/src/main/res/layout-land/activity_home.xml @@ -12,7 +12,7 @@ android:layout_width="266dp" android:layout_height="100dp" android:layout_marginTop="80dp" - android:src="@drawable/main_logo" + android:src="@mipmap/ic_launcher" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" @@ -43,7 +43,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="24dp" - android:text="版权所有@深圳市七彩宏云智能设备有限公司" android:textColor="@color/title_textcolor" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout-port/activity_home.xml b/app/src/main/res/layout-port/activity_home.xml index 83e0f48..d6b2501 100644 --- a/app/src/main/res/layout-port/activity_home.xml +++ b/app/src/main/res/layout-port/activity_home.xml @@ -12,7 +12,7 @@ android:layout_width="266dp" android:layout_height="100dp" android:layout_marginTop="160dp" - android:src="@drawable/main_logo" + android:src="@mipmap/ic_launcher" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" @@ -43,7 +43,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="40dp" - android:text="版权所有@深圳市七彩宏云智能设备有限公司" android:textColor="@color/title_textcolor" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/item_app_update.xml b/app/src/main/res/layout/item_app_update.xml index 1e8903f..2d1e6c1 100644 --- a/app/src/main/res/layout/item_app_update.xml +++ b/app/src/main/res/layout/item_app_update.xml @@ -39,8 +39,9 @@ android:id="@+id/tv_app_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textSize="@dimen/sp_9" android:textColor="@color/black" + android:textSize="@dimen/sp_9" + android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:text="应用名" /> @@ -50,8 +51,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_4" - android:textSize="@dimen/sp_8" android:textColor="@color/activation_color" + android:textSize="@dimen/sp_8" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_app_name" tools:text="在线版本" /> @@ -60,8 +61,8 @@ android:id="@+id/tv_local_version" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textSize="@dimen/sp_8" android:layout_marginTop="@dimen/dp_4" + android:textSize="@dimen/sp_8" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_app_version" tools:text="本地版本" /> diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 7ad7ca7..86f4829 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 7ad7ca7..86f4829 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 7ad7ca7..86f4829 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 7ad7ca7..86f4829 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 7ad7ca7..86f4829 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ