diff --git a/app/build.gradle b/app/build.gradle index e966190..e3f5935 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' apply plugin: "com.tencent.android.tpns" def appName() { - return "老人OS系统" + return "关怀系统OS" } def releaseTime() { @@ -16,8 +16,8 @@ android { applicationId "com.uiui.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 33 - versionName "4.2" + versionCode 37 + versionName "4.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -80,7 +80,6 @@ android { zhanRuiDebug.initWith(debug) zhanRuiDebug { - buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug" debuggable true @@ -129,8 +128,6 @@ android { } } } - - } dependencies { diff --git a/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java b/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java index 8589b44..e498a71 100644 --- a/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java @@ -28,6 +28,8 @@ import com.uiui.aios.utils.ToastUtil; import java.lang.reflect.Type; import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; +import java.util.stream.Collectors; import butterknife.BindView; import butterknife.ButterKnife; @@ -64,13 +66,13 @@ public class EmergencyActivity extends AppCompatActivity { sendBroadcast(bootIntent); Intent intent = getIntent(); -// String setting_sos = intent.getStringExtra("setting_sos"); -// if (TextUtils.isEmpty(setting_sos)) { +// String contactList = intent.getStringExtra("contactList"); +// if (TextUtils.isEmpty(contactList)) { // finish(); // return; // } - String jsonString = mCacheHelper.getAsString(URLAddress.GET_SETTINGS); + String jsonString = mCacheHelper.getAsString(URLAddress.GET_MAIL_LIST); //为 "" 是已经请求成功的 if (jsonString == null) { return; @@ -78,11 +80,11 @@ public class EmergencyActivity extends AppCompatActivity { Gson gson = new Gson(); Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); - if (setting_sos == null || setting_sos.size() == 0) { + List contactList = gson.fromJson(jsonString, type); + if (contactList == null || contactList.size() == 0) { return; } - phoneListSet = setting_sos; + phoneListSet = contactList.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); Log.e(TAG, "onCreate: " + phoneListSet); final Long time = 3L; diff --git a/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java b/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java index 2b52863..5190a69 100644 --- a/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/contact/ContactActivity.java @@ -66,6 +66,12 @@ public class ContactActivity extends BaseActivity implements ContactContact.Cont mContactPresenter.getContact(); } + @Override + protected void onDestroy() { + super.onDestroy(); + mContactPresenter.detachView(); + } + @Override public void setContact(List contactList) { if (contactList != null) { diff --git a/app/src/main/java/com/uiui/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiui/aios/activity/main/MainActivity.java index aff5209..1708f0a 100644 --- a/app/src/main/java/com/uiui/aios/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/main/MainActivity.java @@ -74,6 +74,9 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { private List mFragments; private CustomFragment mCustomFragment; private SecondFragment mSecondFragment; + private boolean is_twoscreen = false; + private int appListIndex = 1; + private int defaultCurrent = 0; @Override public int getLayoutId() { @@ -99,14 +102,20 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); // fragmentTransaction.add(R.id.viewPager, appListFragment); // fragmentTransaction.commit(); - mSecondFragment = new SecondFragment(); - mFragments.add(mSecondFragment); + + is_twoscreen = Settings.Global.getInt(getContentResolver(), "is_twoscreen", 0) == 1; + if (is_twoscreen) { + appListIndex = 2; + defaultCurrent = 1; + mSecondFragment = new SecondFragment(); + mFragments.add(mSecondFragment); + } mCustomFragment = new CustomFragment(); mFragments.add(mCustomFragment); mMainPresenter.getSystemSettings(); - ArrayList desktopIcons = ApkUtils.queryFilterAppInfo(this); + ArrayList desktopIcons = ApkUtils.queryFilterAppInfo(this); int x = 0; for (int i = 0; i <= desktopIcons.size(); i++) { if (i != 0 && i % APP_LIST_SIZE == 0) { @@ -133,11 +142,11 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { }); mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOffscreenPageLimit(3); + mViewPager.setOffscreenPageLimit(2); mMagicIndicator.setNavigator(scaleCircleNavigator); ViewPagerHelper.bind(mMagicIndicator, mViewPager); if (mFragments.size() > 1) { - mViewPager.setCurrentItem(1); + mViewPager.setCurrentItem(defaultCurrent); } } @@ -230,8 +239,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } //从第三个开始改 for (int i = 0; i < fragmentList.size(); i++) { - if (i + 2 < mFragments.size()) { - mBaseFragmentPagerAdapter.replaceFragment(i + 2, fragmentList.get(i)); + if (i + appListIndex < mFragments.size()) { + mBaseFragmentPagerAdapter.replaceFragment(i + appListIndex, fragmentList.get(i)); // mFragments.remove(i + 2); // mFragments.add(i + 2, fragmentList.get(i)); } else { @@ -240,7 +249,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mBaseFragmentPagerAdapter.addFragment(fragmentList.get(i)); } } - for (int i = mFragments.size(); i > fragmentList.size() + 2; i--) { + for (int i = mFragments.size(); i > fragmentList.size() + appListIndex; i--) { mFragments.remove(i - 1); } scaleCircleNavigator.setCircleCount(mFragments.size()); @@ -249,7 +258,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } - @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { @@ -270,7 +278,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { default: break; case Intent.ACTION_MAIN: - mViewPager.setCurrentItem(1); + mViewPager.setCurrentItem(defaultCurrent); break; } } @@ -291,12 +299,14 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { @Override protected void onResume() { super.onResume(); + Log.e(TAG, "onResume: "); if (!isNotificationListenersEnabled()) { ToastUtil.show("请授予\"" + getString(R.string.app_name) + "\"使用通知权"); gotoNotificationAccessSetting(this); } addData(); mMainPresenter.sendRunningInfo(); + mMainPresenter.getAdminSnSetting(); } private static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; @@ -440,4 +450,9 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { public void sendRunningInfoFinish() { } + + @Override + public void setAdminSnSetting() { + + } } diff --git a/app/src/main/java/com/uiui/aios/activity/main/MainContact.java b/app/src/main/java/com/uiui/aios/activity/main/MainContact.java index 2c43b52..7de0405 100644 --- a/app/src/main/java/com/uiui/aios/activity/main/MainContact.java +++ b/app/src/main/java/com/uiui/aios/activity/main/MainContact.java @@ -15,6 +15,8 @@ public class MainContact { void sendAPPUsage(); /*上传后台运行的APP*/ void sendRunningInfo(); + /*获取负二屏开关*/ + void getAdminSnSetting(); } public interface MainView extends BaseView { @@ -23,5 +25,7 @@ public class MainContact { void updateDesktopLayoutFinish(); void sendAPPUsageFinish(); void sendRunningInfoFinish(); + void setAdminSnSetting(); + } } diff --git a/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java b/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java index f496626..b4fd44c 100644 --- a/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java +++ b/app/src/main/java/com/uiui/aios/activity/main/MainPresenter.java @@ -10,9 +10,8 @@ import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.aios.BuildConfig; import com.uiui.aios.bean.BaseResponse; -import com.uiui.aios.bean.EmergencyContact; -import com.uiui.aios.bean.NetDesktopIcon; import com.uiui.aios.bean.Contact; +import com.uiui.aios.bean.NetDesktopIcon; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.AppUsedTimeUtils; @@ -57,14 +56,18 @@ public class MainPresenter implements MainContact.Presenter { @Override public void getSystemSettings() { - NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.SosNumberCallback() { - + NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.ContactCallback() { @Override - public void setSosNumber(List setting_sos) { + public void setContact(List contactList) { Intent intent = new Intent("setting_sos"); mContext.sendBroadcast(intent); } + @Override + public void setEmergencyContact(List emergencyContact) { + + } + @Override public void setEmpty() { @@ -192,4 +195,14 @@ public class MainPresenter implements MainContact.Presenter { } }); } + + @Override + public void getAdminSnSetting() { + NetInterfaceManager.getInstance().getAdminSnSetting(true, lifecycle, new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); + } } diff --git a/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java b/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java index 3274cac..b8d80dc 100644 --- a/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/ContactAdapter.java @@ -1,6 +1,9 @@ package com.uiui.aios.adapter; import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -37,6 +40,19 @@ public class ContactAdapter extends RecyclerView.Adapter setting_sos; + List setting_sos; String setting_volume; String setting_luminance; String setting_typeface; @@ -262,11 +262,11 @@ public class SystemSettings implements Serializable { this.setting_hotspot = setting_hotspot; } - public List getSetting_sos() { + public List getSetting_sos() { return setting_sos; } - public void setSetting_sos(List setting_sos) { + public void setSetting_sos(List setting_sos) { this.setting_sos = setting_sos; } diff --git a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java index 8df2b27..d9753f1 100644 --- a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java @@ -14,6 +14,7 @@ import android.net.wifi.WifiManager; import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; +import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -32,6 +33,7 @@ import com.amap.api.location.AMapLocationListener; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.king.view.circleprogressview.CircleProgressView; import com.qweather.sdk.bean.base.Code; import com.qweather.sdk.bean.base.Lang; import com.qweather.sdk.bean.base.Unit; @@ -53,7 +55,6 @@ import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmItem; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.Contact; -import com.uiui.aios.bean.EmergencyContact; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.UserAvatarInfo; @@ -105,6 +106,8 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ConstraintLayout cl_contact; @BindView(R.id.cl_ai) ConstraintLayout cl_ai; + @BindView(R.id.cl_appstore) + ConstraintLayout cl_appstore; // @BindView(R.id.cl_battery) // ConstraintLayout cl_battery; @@ -118,9 +121,9 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt ImageView iv_pic; @BindView(R.id.tv_temp) TextView tv_temp; - // @BindView(R.id.cpv) -// CircleProgressView cpv; -// @BindView(R.id.iv_charging) + @BindView(R.id.cpv) + CircleProgressView cpv; + // @BindView(R.id.iv_charging) // ImageView iv_charging; @BindView(R.id.rv_noti) RecyclerView rv_noti; @@ -134,14 +137,15 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt RecyclerView rv_sos; @BindView(R.id.iv_note_nodata) ImageView iv_note_nodata; - @BindView(R.id.iv_head) - ImageView iv_head; + // @BindView(R.id.iv_head) +// ImageView iv_head; @BindView(R.id.tv_name) TextView tv_name; private String TAG = CustomFragment.class.getSimpleName(); // private int[] mShaderColors = new int[]{0xFFfa3db5, 0xFFF8867E, 0xFFF79F6B, 0xFFF79F6B, 0xFFF79F6B, 0xFFF8867E, 0xFFfa3db5}; private int[] mShaderColors = new int[]{0xFF3984f6, 0xFF3984f6, 0xFF3984f6, 0xFF3984f6, 0xFF3984f6, 0xFF3984f6, 0xFF3984f6}; + private int[] mShaderColorsRed = new int[]{0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000, 0xFFFF0000}; private View rootView; private List alarmItemList; private NotificationAdapter notificationAdapter; @@ -339,14 +343,20 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt registerBatteryReceiver(); registerAlarmClockReceiver(); mContext.registerReceiver(mbatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - + if (Settings.Global.getInt(mCRv, "is_aihealth", 0) == 1) { + cl_appstore.setVisibility(View.GONE); + cl_ai.setVisibility(View.VISIBLE); + } else { + cl_appstore.setVisibility(View.VISIBLE); + cl_ai.setVisibility(View.GONE); + } // tv_battery.setText(Utils.getBatteryLevel(mContext) + "%"); -// cpv.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// killBackgroundApp(); -// } -// }); + cpv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + killBackgroundApp(); + } + }); // cl_alarm.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { @@ -397,20 +407,21 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt cl_shared_space.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - SingleDialog dialog = new SingleDialog(mContext); - dialog.setTitle("温馨提示") - .setMessage("此功能暂未上线") - .setPositive("确定") -// .setNegtive("拒绝") -// .setSingle(true) - - .setOnClickBottomListener(new SingleDialog.OnClickBottomListener() { - @Override - public void onPositiveClick() { - dialog.dismiss(); - } - }); - dialog.show(); + killBackgroundApp(); +// SingleDialog dialog = new SingleDialog(mContext); +// dialog.setTitle("温馨提示") +// .setMessage("此功能暂未上线") +// .setPositive("确定") +//// .setNegtive("拒绝") +//// .setSingle(true) +// +// .setOnClickBottomListener(new SingleDialog.OnClickBottomListener() { +// @Override +// public void onPositiveClick() { +// dialog.dismiss(); +// } +// }); +// dialog.show(); } }); cl_health.setOnClickListener(new View.OnClickListener() { @@ -422,7 +433,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt cl_contact.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - startActivity(new Intent(getActivity(), ContactActivity.class)); + checkContact(); } }); cl_ai.setOnClickListener(new View.OnClickListener() { @@ -431,22 +442,37 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt openScheme(SchemeUtils.SCHEME_HAND); } }); + cl_appstore.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ApkUtils.openApp(mContext, "com.uiui.appstore"); + } + }); refreshMemory(); } private void checkSosNumber() { - NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() { + NetInterfaceManager.getInstance().getContactList(new NetInterfaceManager.ContactCallback() { @Override - public void setSosNumber(List setting_sos) { - Intent intent = new Intent(mContext, EmergencyActivity.class); + public void setContact(List contactList) { + + } + + @Override + public void setEmergencyContact(List emergencyContact) { + if (emergencyContact == null || emergencyContact.size() == 0) { + showNoData("温馨提示", "请在小程序上面设置紧急联系人"); + } else { + Intent intent = new Intent(mContext, EmergencyActivity.class); // intent.putExtra("setting_sos", phone); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivity(intent); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } } @Override public void setEmpty() { - showNoData("温馨提示", "没有设置紧急联系人"); + showNoData("温馨提示", "请在小程序上面设置紧急联系人"); } @Override @@ -454,7 +480,34 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } }); + } + private void checkContact() { + NetInterfaceManager.getInstance().getContactList(new NetInterfaceManager.ContactCallback() { + @Override + public void setContact(List contactList) { + if (contactList == null || contactList.size() == 0) { + showNoData("温馨提示", "请在小程序上设置通讯录"); + } else { + startActivity(new Intent(getActivity(), ContactActivity.class)); + } + } + + @Override + public void setEmergencyContact(List emergencyContact) { + + } + + @Override + public void setEmpty() { + showNoData("温馨提示", "请在小程序上设置通讯录"); + } + + @Override + public void onComplete() { + + } + }); } private void initData() { @@ -618,7 +671,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt @Override public void setAlarmClockEmpty() { - showNoData("温馨提示", "当前没有数据"); + showNoData("温馨提示", "请在小程序上设置爱心闹钟"); rv_noti.setVisibility(View.GONE); iv_note_nodata.setVisibility(View.VISIBLE); } @@ -686,7 +739,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt @Override public void noData() { - showNoData("温馨提示", "当前没有数据"); + showNoData("温馨提示", "请在小程序上设置健康码"); } @Override @@ -796,8 +849,12 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt long avail = AppUtil.getAvailMemory(mContext); long total = AppUtil.getTotalMemory(mContext); int x = (int) (((total - avail) / (double) total) * 100); -// cpv.setProgressColor(mShaderColors); -// cpv.showAnimation(0, x, 1000); + if (x > 80) { + cpv.setProgressColor(mShaderColorsRed); + } else { + cpv.setProgressColor(mShaderColors); + } + cpv.showAnimation(0, x, 1000); float x2 = (((total - avail) / (float) total)); } diff --git a/app/src/main/java/com/uiui/aios/manager/AmapManager.java b/app/src/main/java/com/uiui/aios/manager/AmapManager.java index 796613b..5e8cc74 100644 --- a/app/src/main/java/com/uiui/aios/manager/AmapManager.java +++ b/app/src/main/java/com/uiui/aios/manager/AmapManager.java @@ -76,8 +76,11 @@ public class AmapManager { if (aMapLocation.getErrorCode() == 0) { Log.e(TAG, "onLocationChanged: " + "定位成功"); Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress()); - mMMKV.encode(LONGITUDE_KEY, aMapLocation.getLongitude()); - mMMKV.encode(LATITUDE_KEY, aMapLocation.getLatitude()); + Log.e(TAG, "onLocationChanged: getLongitude = " + aMapLocation.getLongitude()); + mMMKV.encode(LONGITUDE_KEY, String.valueOf(aMapLocation.getLongitude())); + Log.e(TAG, "onLocationChanged: getLatitude = " + aMapLocation.getLatitude()); + mMMKV.encode(LATITUDE_KEY, String.valueOf(aMapLocation.getLatitude())); + Log.e(TAG, "onLocationChanged: getAddress = " + aMapLocation.getAddress()); mMMKV.encode(ADDRESS_KEY, aMapLocation.getAddress()); } else { //定位失败 @@ -114,8 +117,8 @@ public class AmapManager { if (aMapLocation.getErrorCode() == 0) { nowAMapLocation = aMapLocation; mMMKV.encode(AMAPLOCATION_JSON_KEY, aMapLocation.toStr()); - mMMKV.encode(LONGITUDE_KEY, aMapLocation.getLongitude()); - mMMKV.encode(LATITUDE_KEY, aMapLocation.getLatitude()); + mMMKV.encode(LONGITUDE_KEY, String.valueOf(aMapLocation.getLongitude())); + mMMKV.encode(LATITUDE_KEY, String.valueOf(aMapLocation.getLatitude())); mMMKV.encode(ADDRESS_KEY, aMapLocation.getAddress()); } else { mMMKV.encode(AMAPLOCATION_JSON_KEY, ""); diff --git a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java index 3f09e0c..717f73b 100644 --- a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java @@ -17,7 +17,6 @@ import com.uiui.aios.bean.ArticleInfo; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.Contact; import com.uiui.aios.bean.DemandBean; -import com.uiui.aios.bean.EmergencyContact; import com.uiui.aios.bean.GoodsInfo; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.bean.NetDesktopIcon; @@ -33,6 +32,7 @@ import com.uiui.aios.network.api.AlarmClockApi; import com.uiui.aios.network.api.AppUsageRecordApi; import com.uiui.aios.network.api.ArticleListApi; import com.uiui.aios.network.api.DemandListApi; +import com.uiui.aios.network.api.GetAdminSnSettingApi; import com.uiui.aios.network.api.GetDesktopApi; import com.uiui.aios.network.api.GetMailList; import com.uiui.aios.network.api.GetUserIDApi; @@ -248,6 +248,14 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable getAdminSnSettingObservable() { + return mRetrofit.create(GetAdminSnSettingApi.class) + .getAdminSnSetting(Utils.getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public interface onCompleteCallback { void onComplete(); } @@ -796,15 +804,17 @@ public class NetInterfaceManager { }); } - public interface SosNumberCallback { - void setSosNumber(List setting_sos); + public interface ContactCallback { + void setContact(List contactList); + + void setEmergencyContact(List emergencyContact); void setEmpty(); void onComplete(); } - public void getSystemSettings(boolean refresh, BehaviorSubject lifecycle, SosNumberCallback callback) { + public void getSystemSettings(boolean refresh, BehaviorSubject lifecycle, ContactCallback callback) { ConnectMode connectMode = ConnectMode.ONE_MINUTE; if (refresh) { connectMode = ConnectMode.DEFAULT; @@ -818,26 +828,26 @@ public class NetInterfaceManager { getSystemSettings(lifecycle, callback); } else { Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { if (callback != null) callback.setEmpty(); } else { - if (callback != null) callback.setSosNumber(setting_sos); + if (callback != null) callback.setContact(setting_sos); } if (callback != null) callback.onComplete(); } } } - public void getSystemSettings(BehaviorSubject lifecycle, SosNumberCallback callback) { + public void getSystemSettings(BehaviorSubject lifecycle, ContactCallback callback) { getsettingControl() .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(getSystemSettingsObserver(callback)); } - public void getSystemSettings(SosNumberCallback callback) { + public void getSystemSettings(ContactCallback callback) { getsettingControl() .subscribe(getSystemSettingsObserver(callback)); } @@ -847,7 +857,7 @@ public class NetInterfaceManager { .subscribe(getSystemSettingsObserver(null)); } - public Observer> getSystemSettingsObserver(SosNumberCallback callback) { + public Observer> getSystemSettingsObserver(ContactCallback callback) { return new Observer>() { @Override public void onSubscribe(@NonNull Disposable d) { @@ -862,14 +872,17 @@ public class NetInterfaceManager { mMMKV.encode("is_health", systemSettings.getIs_health()); mMMKV.encode("is_shopping", systemSettings.getIs_shopping()); mMMKV.encode("is_info", systemSettings.getIs_info()); - List setting_sos = systemSettings.getSetting_sos(); + List setting_sos = systemSettings.getSetting_sos(); if (setting_sos == null || setting_sos.size() == 0) { mCacheHelper.put(URLAddress.GET_SETTINGS, ""); if (callback != null) callback.setEmpty(); } else { - List contactList = setting_sos.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); - mCacheHelper.put(URLAddress.GET_SETTINGS, GsonUtils.toJsonString(contactList)); - if (callback != null) callback.setSosNumber(setting_sos); + List emergencyContact = setting_sos.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); + mCacheHelper.put(URLAddress.GET_SETTINGS, GsonUtils.toJsonString(setting_sos)); + if (callback != null) { + callback.setContact(setting_sos); + callback.setEmergencyContact(emergencyContact); + } } } else { mCacheHelper.put(URLAddress.GET_SETTINGS, ""); @@ -886,13 +899,13 @@ public class NetInterfaceManager { if (callback != null) callback.setEmpty(); } else { Gson gson = new Gson(); - Type type = new TypeToken>() { + Type type = new TypeToken>() { }.getType(); - List setting_sos = gson.fromJson(jsonString, type); + List setting_sos = gson.fromJson(jsonString, type); if (setting_sos == null || setting_sos.size() == 0) { if (callback != null) callback.setEmpty(); } else { - if (callback != null) callback.setSosNumber(setting_sos); + if (callback != null) callback.setContact(setting_sos); } if (callback != null) callback.onComplete(); } @@ -907,8 +920,52 @@ public class NetInterfaceManager { }; } + + public void getContactList(boolean refresh, BehaviorSubject lifecycle, ContactCallback callback) { + ConnectMode connectMode = ConnectMode.ONE_MINUTE; + if (refresh) { + connectMode = ConnectMode.DEFAULT; + } + if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_MAIL_LIST, connectMode)) { + getContactList(lifecycle, callback); + } else { + String jsonString = mCacheHelper.getAsString(URLAddress.GET_MAIL_LIST); + //为 "" 是已经请求成功的 + if (jsonString == null) { + getContactList(lifecycle, callback); + } else { + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List setting_sos = gson.fromJson(jsonString, type); + if (setting_sos == null || setting_sos.size() == 0) { + if (callback != null) callback.setEmpty(); + } else { + if (callback != null) callback.setContact(setting_sos); + } + if (callback != null) callback.onComplete(); + } + } + } + + public void getContactList(BehaviorSubject lifecycle, ContactCallback callback) { + getContactListObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(getContactListObserver(callback)); + } + + public void getContactList(ContactCallback callback) { + getContactListObservable() + .subscribe(getContactListObserver(callback)); + } + public void getContactList() { - getContactListObservable().subscribe(new Observer>>() { + getContactListObservable() + .subscribe(getContactListObserver(null)); + } + + public Observer>> getContactListObserver(ContactCallback callback) { + return new Observer>>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.e("getContactList", "onSubscribe: "); @@ -917,17 +974,103 @@ public class NetInterfaceManager { @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { Log.e("getContactList", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + List contactList = listBaseResponse.data; + if (contactList == null || contactList.size() == 0) { + mCacheHelper.put(URLAddress.GET_MAIL_LIST, ""); + if (callback != null) callback.setEmpty(); + } else { + mCacheHelper.put(URLAddress.GET_MAIL_LIST, GsonUtils.toJsonString(contactList)); + List emergencyContact = contactList.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); + if (callback != null) { + callback.setContact(contactList); + callback.setEmergencyContact(emergencyContact); + } + } + } else { + mCacheHelper.put(URLAddress.GET_MAIL_LIST, ""); + if (callback != null) callback.setEmpty(); + } } @Override public void onError(@NonNull Throwable e) { Log.e("getContactList", "onError: " + e.getMessage()); + onComplete(); } @Override public void onComplete() { Log.e("getContactList", "onComplete: "); + if (callback != null) callback.onComplete(); } - }); + + }; } + + public void getAdminSnSetting(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { + ConnectMode connectMode = ConnectMode.ONE_MINUTE; + if (refresh) { + connectMode = ConnectMode.DEFAULT; + } + if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_ADMIN_SN_SETTING, connectMode)) { + getAdminSnSetting(lifecycle, callback); + } else { + String jsonString = mCacheHelper.getAsString(URLAddress.GET_ADMIN_SN_SETTING); + //为 "" 是已经请求成功的 + if (jsonString == null) { + getAdminSnSetting(lifecycle, callback); + } else { + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List setting_sos = gson.fromJson(jsonString, type); + + } + } + } + + public void getAdminSnSetting(BehaviorSubject lifecycle, onCompleteCallback callback) { + getAdminSnSettingObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(getAdminSnSettingObserver(callback)); + } + + public void getAdminSnSetting(onCompleteCallback callback) { + getAdminSnSettingObservable() + .subscribe(getAdminSnSettingObserver(callback)); + } + + + public void getAdminSnSetting() { + getAdminSnSettingObservable() + .subscribe(getAdminSnSettingObserver(null)); + } + + public Observer getAdminSnSettingObserver(onCompleteCallback callback) { + return new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getAdminSnSettingObserver", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getAdminSnSettingObserver", "onNext: " + baseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getAdminSnSettingObserver", "onError: "); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getAdminSnSettingObserver", "onComplete: "); + } + }; + } + + } diff --git a/app/src/main/java/com/uiui/aios/network/URLAddress.java b/app/src/main/java/com/uiui/aios/network/URLAddress.java index f244b69..f21b4b6 100644 --- a/app/src/main/java/com/uiui/aios/network/URLAddress.java +++ b/app/src/main/java/com/uiui/aios/network/URLAddress.java @@ -40,6 +40,9 @@ public class URLAddress { public static final String GET_HEALTH_CODE = "getHealthCode"; /*获取联系人*/ public static final String GET_MAIL_LIST = "Control/getMailList"; + /*获取负二屏开关*/ + public static final String GET_ADMIN_SN_SETTING = "getAdminSnSetting"; + public static final String GET_USER_ID = "getUserId"; diff --git a/app/src/main/java/com/uiui/aios/network/api/GetAdminSnSettingApi.java b/app/src/main/java/com/uiui/aios/network/api/GetAdminSnSettingApi.java new file mode 100644 index 0000000..604fccc --- /dev/null +++ b/app/src/main/java/com/uiui/aios/network/api/GetAdminSnSettingApi.java @@ -0,0 +1,15 @@ +package com.uiui.aios.network.api; + +import com.uiui.aios.bean.BaseResponse; +import com.uiui.aios.network.URLAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface GetAdminSnSettingApi { + @GET(URLAddress.GET_ADMIN_SN_SETTING) + Observable getAdminSnSetting( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiui/aios/service/main/MainService.java b/app/src/main/java/com/uiui/aios/service/main/MainService.java index 708aae8..b392cca 100644 --- a/app/src/main/java/com/uiui/aios/service/main/MainService.java +++ b/app/src/main/java/com/uiui/aios/service/main/MainService.java @@ -78,7 +78,7 @@ public class MainService extends BaseService implements MainSContact.MainSView, public void onCreate() { super.onCreate(); Log.e(TAG, "onCreate: "); - ApkUtils.UninstallAPP(this, "com.joytv.live"); +// ApkUtils.UninstallAPP(this, "com.joytv.live"); // ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader"); Aria.init(this); diff --git a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java index 74cce82..ea36eb9 100644 --- a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java @@ -11,6 +11,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Binder; import android.os.Build; +import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -31,6 +32,7 @@ import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; +import java.util.function.Predicate; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; @@ -52,6 +54,8 @@ public class ApkUtils { this.add("com.android.uiuios"); this.add("com.uiui.os"); this.add("com.uiui.health"); + this.add("com.tencent.android.qqdownloader"); + this.add("com.uiui.appstore"); }}; private static HashSet showPackageName = new HashSet() {{ this.add("com.android.dialer"); @@ -62,6 +66,7 @@ public class ApkUtils { this.add("com.mediatek.camera"); this.add("com.android.mms"); this.add("com.uiui.city"); + this.add("com.alldocube.store"); }}; private static HashSet allHintPackage = new HashSet() {{ this.add("com.android.uiuios"); @@ -163,6 +168,10 @@ public class ApkUtils { } } } + if (Settings.Global.getInt(context.getContentResolver(), "is_activity", 0) == 0) { + applicationInfos.removeIf(applicationInfo -> "com.uiui.city".equals(applicationInfo.packageName)); + } + applicationInfos.sort(new Comparator() { @Override public int compare(ApplicationInfo o1, ApplicationInfo o2) { diff --git a/app/src/main/res/drawable-hdpi/appstore_icon.png b/app/src/main/res/drawable-hdpi/appstore_icon.png new file mode 100644 index 0000000..b761f60 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/appstore_icon.png differ diff --git a/app/src/main/res/drawable/join_background.xml b/app/src/main/res/drawable/join_background.xml index b6a3aff..66d24fe 100644 --- a/app/src/main/res/drawable/join_background.xml +++ b/app/src/main/res/drawable/join_background.xml @@ -3,7 +3,7 @@ - + - + + + + + + + + + + + + - + @@ -351,6 +365,42 @@ app:layout_constraintTop_toTopOf="parent" /> + + + + + + + - + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_custom_back.xml b/app/src/main/res/layout-land/fragment_custom_back.xml index 150c039..a23ea7a 100644 --- a/app/src/main/res/layout-land/fragment_custom_back.xml +++ b/app/src/main/res/layout-land/fragment_custom_back.xml @@ -91,7 +91,7 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" - android:text="爱心守护" + android:text="爱心提醒" android:textColor="@color/black" android:textSize="20sp" android:textStyle="bold" diff --git a/app/src/main/res/layout-port/fragment_custom.xml b/app/src/main/res/layout-port/fragment_custom.xml index 2d0d5ca..bbc2451 100644 --- a/app/src/main/res/layout-port/fragment_custom.xml +++ b/app/src/main/res/layout-port/fragment_custom.xml @@ -103,20 +103,34 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" - android:text="共享空间" + android:text="一键加速" android:textColor="@color/black" android:textSize="20sp" android:textStyle="bold" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/single_dialog.xml b/app/src/main/res/layout/single_dialog.xml index 6d8a46a..74e5c37 100644 --- a/app/src/main/res/layout/single_dialog.xml +++ b/app/src/main/res/layout/single_dialog.xml @@ -84,7 +84,7 @@ - 老人OS系统 + 关怀系统OS Hello blank fragment diff --git a/settings.gradle b/settings.gradle index f77e167..02d332a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ include ':app', ':niceimageview' -rootProject.name='老人OS系统' \ No newline at end of file +rootProject.name='关怀系统OS' \ No newline at end of file