From f8b3d96cedf4253e58a58120de08e2e2485b193b Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Mon, 6 Feb 2023 19:06:41 +0800 Subject: [PATCH] =?UTF-8?q?version:8.5=20fix:=20update:=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96,=E5=9B=BA=E5=AE=9A=E6=A8=AA=E5=B1=8F?= =?UTF-8?q?=EF=BC=8C=E5=8F=96=E6=B6=88=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 12 +- app/src/main/AndroidManifest.xml | 29 +- .../aidl/com/uiui/sn/IGetInfoInterface.aidl | 31 ++ .../uiui/aios/activity/EmergencyActivity.java | 21 +- ...Activity.java => FamilySpaceActivity.java} | 13 +- ...deContact.java => FamilySpaceContact.java} | 2 +- ...esenter.java => FamilySpacePresenter.java} | 12 +- .../uiui/aios/activity/main/MainActivity.java | 49 ++- .../aios/activity/main/MainPresenter.java | 9 +- .../activity/weather/WeatherActivity.java | 2 + .../activity/weather/WeatherPresenter.java | 11 +- .../uiui/aios/adapter/AppSelectedAdapter.java | 1 + .../com/uiui/aios/base/BaseApplication.java | 4 +- .../main/java/com/uiui/aios/bean/MapBean.java | 134 ++++++ .../com/uiui/aios/config/CommonConfig.java | 6 + .../uiui/aios/fragment/AppListFragment.java | 4 +- .../uiui/aios/fragment/ControlFragment.java | 37 +- .../aios/fragment/custom/CustomFragment.java | 320 +++++++------- .../com/uiui/aios/manager/AmapManager.java | 410 ------------------ .../com/uiui/aios/manager/RemoteManager.java | 165 +++++++ .../aios/network/NetInterfaceManager.java | 2 +- .../uiui/aios/network/api/AlarmClockApi.java | 2 +- .../com/uiui/aios/receiver/BootReceiver.java | 7 +- .../uiui/aios/service/main/MainService.java | 16 +- .../com/uiui/aios/tpush/MessageReceiver.java | 2 + .../java/com/uiui/aios/utils/ApkUtils.java | 4 +- .../main/res/drawable-hdpi/default_head.png | Bin 2739 -> 21399 bytes ...family_space.png => icon_family_space.png} | Bin ...ity_code.xml => activity_family_space.xml} | 4 +- ...ity_code.xml => activity_family_space.xml} | 4 +- 30 files changed, 618 insertions(+), 695 deletions(-) create mode 100644 app/src/main/aidl/com/uiui/sn/IGetInfoInterface.aidl rename app/src/main/java/com/uiui/aios/activity/code/{HealthCodeActivity.java => FamilySpaceActivity.java} (93%) rename app/src/main/java/com/uiui/aios/activity/code/{HealthCodeContact.java => FamilySpaceContact.java} (93%) rename app/src/main/java/com/uiui/aios/activity/code/{HealthCodePresenter.java => FamilySpacePresenter.java} (79%) create mode 100644 app/src/main/java/com/uiui/aios/bean/MapBean.java delete mode 100644 app/src/main/java/com/uiui/aios/manager/AmapManager.java create mode 100644 app/src/main/java/com/uiui/aios/manager/RemoteManager.java rename app/src/main/res/drawable-hdpi/{family_space.png => icon_family_space.png} (100%) rename app/src/main/res/layout-land/{activity_code.xml => activity_family_space.xml} (96%) rename app/src/main/res/layout-port/{activity_code.xml => activity_family_space.xml} (96%) diff --git a/app/build.gradle b/app/build.gradle index b9dbfa0..e1c8a14 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiui.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 72 - versionName "8.1" + versionCode 76 + versionName "8.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -186,15 +186,15 @@ dependencies { implementation "androidx.room:room-runtime:2.4.3" annotationProcessor "androidx.room:room-compiler:2.4.3" //内存泄漏检测 - debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10' //磁盘缓存 implementation 'com.jakewharton:disklrucache:2.0.2' //glide implementation 'com.github.bumptech.glide:glide:4.13.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.13.1' //RxJava -// implementation 'io.reactivex.rxjava2:rxjava:2.2.12' -// implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + implementation 'io.reactivex.rxjava3:rxjava:3.0.0' + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' // implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'com.squareup.retrofit2:retrofit:2.9.0' @@ -214,7 +214,7 @@ dependencies { implementation 'com.jakewharton:butterknife:10.2.3' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' //百度地图 - implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' +// implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' //MMKV implementation 'com.tencent:mmkv-static:1.2.14' implementation 'com.tencent.tpns:tpns:1.3.7.0-release' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2522f2c..0adc6c6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,9 +27,9 @@ - + - + @@ -39,9 +39,9 @@ - + - + @@ -81,6 +81,7 @@ android:theme="@style/AppTheme"> - - + + + + + - - + + + + getHideAPP(); + //获取禁止打开的APP + List getForbidAPP(); + + //获取app设置 + String getAppTimeControl(); + //获取整机设置 + String getSnTimeControl(); + //获取系统设置 + String getSetting(); + //获取定位结果 + String getMapResult(); +} 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 e498a71..4cc1f31 100644 --- a/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java @@ -18,8 +18,8 @@ import com.tencent.mmkv.MMKV; import com.uiui.aios.R; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.Contact; +import com.uiui.aios.config.CommonConfig; import com.uiui.aios.disklrucache.CacheHelper; -import com.uiui.aios.manager.AmapManager; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.network.URLAddress; import com.uiui.aios.receiver.BootReceiver; @@ -28,7 +28,6 @@ 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; @@ -41,12 +40,13 @@ import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; public class EmergencyActivity extends AppCompatActivity { + private static final String TAG = EmergencyActivity.class.getSimpleName(); + @BindView(R.id.tv_countdown) TextView tv_countdown; @BindView(R.id.iv_finish) ImageView iv_finish; private Disposable subscribe; - private String TAG = EmergencyActivity.class.getSimpleName(); private boolean needDial = false; private boolean isCalling = false; private List phoneListSet; @@ -98,9 +98,9 @@ public class EmergencyActivity extends AppCompatActivity { Log.e(TAG, "accept: " + (time - aLong - 1)); } else { MMKV mmkv = MMKV.defaultMMKV(); - String longitude = mmkv.decodeString(AmapManager.LONGITUDE_KEY, "未知"); - String latitude = mmkv.decodeString(AmapManager.LATITUDE_KEY, "未知"); - String address = mmkv.decodeString(AmapManager.ADDRESS_KEY, "未知"); + String longitude = mmkv.decodeString(CommonConfig.MAP_LONGITUDE_KEY, "未知"); + String latitude = mmkv.decodeString(CommonConfig.MAP_LATITUDE_KEY, "未知"); + String address = mmkv.decodeString(CommonConfig.MAP_ADDRESS_KEY, "未知"); NetInterfaceManager.getInstance() .getSOSRecordObservable(longitude, latitude, address) .subscribe(new Observer() { @@ -162,10 +162,13 @@ public class EmergencyActivity extends AppCompatActivity { @Override protected void onStart() { super.onStart(); - Log.e(TAG, "onResume: "); - Log.e(TAG, "onResume: " + phoneListSet); + Log.e(TAG, "onStart: "); + Log.e(TAG, "onStart: " + phoneListSet); if (needDial) { - if (phoneListSet == null || phoneListSet.size() == 0) return; + if (phoneListSet == null || phoneListSet.size() == 0) { + finish(); + return; + } Handler.getMain().postDelayed(new Runnable() { @Override public void run() { diff --git a/app/src/main/java/com/uiui/aios/activity/code/HealthCodeActivity.java b/app/src/main/java/com/uiui/aios/activity/code/FamilySpaceActivity.java similarity index 93% rename from app/src/main/java/com/uiui/aios/activity/code/HealthCodeActivity.java rename to app/src/main/java/com/uiui/aios/activity/code/FamilySpaceActivity.java index 7b8e806..ee73fd0 100644 --- a/app/src/main/java/com/uiui/aios/activity/code/HealthCodeActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/code/FamilySpaceActivity.java @@ -23,29 +23,30 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -public class HealthCodeActivity extends BaseActivity implements HealthCodeContact.CodeView { +public class FamilySpaceActivity extends BaseActivity implements FamilySpaceContact.CodeView { + + @BindView(R.id.iv_back) + ImageView iv_back; @BindView(R.id.viewPager) ViewPager mViewPager; @BindView(R.id.magicIndicator) MagicIndicator mMagicIndicator; @BindView(R.id.iv_nodata) ImageView iv_nodata; - @BindView(R.id.iv_back) - ImageView iv_back; - private HealthCodePresenter mPresenter; + private FamilySpacePresenter mPresenter; private HealthCodeAdapter mHealthCodeAdapter; private ScaleCircleNavigator scaleCircleNavigator; @Override public int getLayoutId() { - return R.layout.activity_code; + return R.layout.activity_family_space; } @Override public void initView() { ButterKnife.bind(this); - mPresenter = new HealthCodePresenter(this); + mPresenter = new FamilySpacePresenter(this); mPresenter.attachView(this); mPresenter.setLifecycle(lifecycleSubject); iv_back.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/uiui/aios/activity/code/HealthCodeContact.java b/app/src/main/java/com/uiui/aios/activity/code/FamilySpaceContact.java similarity index 93% rename from app/src/main/java/com/uiui/aios/activity/code/HealthCodeContact.java rename to app/src/main/java/com/uiui/aios/activity/code/FamilySpaceContact.java index 1572a5c..271c81f 100644 --- a/app/src/main/java/com/uiui/aios/activity/code/HealthCodeContact.java +++ b/app/src/main/java/com/uiui/aios/activity/code/FamilySpaceContact.java @@ -6,7 +6,7 @@ import com.uiui.aios.bean.HealthCode; import java.util.List; -public class HealthCodeContact { +public class FamilySpaceContact { public interface Presenter extends BasePresenter { void getHealthCode(); } diff --git a/app/src/main/java/com/uiui/aios/activity/code/HealthCodePresenter.java b/app/src/main/java/com/uiui/aios/activity/code/FamilySpacePresenter.java similarity index 79% rename from app/src/main/java/com/uiui/aios/activity/code/HealthCodePresenter.java rename to app/src/main/java/com/uiui/aios/activity/code/FamilySpacePresenter.java index 6cdc816..cbbdac4 100644 --- a/app/src/main/java/com/uiui/aios/activity/code/HealthCodePresenter.java +++ b/app/src/main/java/com/uiui/aios/activity/code/FamilySpacePresenter.java @@ -2,22 +2,20 @@ package com.uiui.aios.activity.code; import android.content.Context; import android.util.Log; -import android.view.View; import androidx.annotation.NonNull; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.network.NetInterfaceManager; -import com.uiui.aios.utils.ToastUtil; import java.util.List; import io.reactivex.rxjava3.subjects.BehaviorSubject; -public class HealthCodePresenter implements HealthCodeContact.Presenter { - private static final String TAG = HealthCodePresenter.class.getSimpleName(); - private HealthCodeContact.CodeView mView; +public class FamilySpacePresenter implements FamilySpaceContact.Presenter { + private static final String TAG = FamilySpacePresenter.class.getSimpleName(); + private FamilySpaceContact.CodeView mView; private Context mContext; @@ -31,14 +29,14 @@ public class HealthCodePresenter implements HealthCodeContact.Presenter { return lifecycle; } - HealthCodePresenter(Context context) { + FamilySpacePresenter(Context context) { this.mContext = context; Log.e(TAG, "MainPresenter: " + context.getClass()); } @Override - public void attachView(@NonNull HealthCodeContact.CodeView view) { + public void attachView(@NonNull FamilySpaceContact.CodeView view) { this.mView = view; } 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 6e1c4f0..e30459a 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 @@ -10,7 +10,9 @@ import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Color; +import android.os.Bundle; import android.os.IBinder; +import android.os.PersistableBundle; import android.os.RemoteException; import android.provider.Settings; import android.text.TextUtils; @@ -100,20 +102,16 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mMainPresenter.attachView(this); mMainPresenter.setLifecycle(lifecycleSubject); - if (BuildConfig.DEBUG) { - Log.e(TAG, "initView: " + this.getClass().getName()); -// SystemClock.setCurrentTimeMillis(1662123600000L);//09-02 -// SystemClock.setCurrentTimeMillis(1662210000000L);//09-03 - } - mFragmentManager = getSupportFragmentManager(); // mFragmentTransaction = mFragmentManager.beginTransaction(); mFragments = new ArrayList<>(); mBaseFragmentPagerAdapter = new BaseFragmentPagerAdapter(mFragmentManager, mFragments); // fragmentTransaction.add(R.id.viewPager, appListFragment); // fragmentTransaction.commit(); + mControlFragment = new ControlFragment(); mFragments.add(mControlFragment); + is_twoscreen = Settings.Global.getInt(getContentResolver(), "is_twoscreen", 0) == 1; if (is_twoscreen) { appListIndex = 3; @@ -121,12 +119,12 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mSecondFragment = new SecondFragment(); mFragments.add(mSecondFragment); } + mCustomFragment = new CustomFragment(); mFragments.add(mCustomFragment); mMainPresenter.getSystemSettings(); -// mMainPresenter.getAdminSnSetting(); - 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) { @@ -153,7 +151,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { }); mViewPager.setAdapter(mBaseFragmentPagerAdapter); - mViewPager.setOffscreenPageLimit(5); + mViewPager.setOffscreenPageLimit(3); mMagicIndicator.setNavigator(scaleCircleNavigator); ViewPagerHelper.bind(mMagicIndicator, mViewPager); if (mFragments.size() > 1) { @@ -255,6 +253,16 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } } + @Override + + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus) {//表示渲染结束 + addData(); + } + } + + private final static int APP_LIST_SIZE = 3 * 4; private void addData() { @@ -326,6 +334,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); + Log.e(TAG, "onConfigurationChanged: "); } @Override @@ -341,6 +350,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { protected void onResume() { super.onResume(); Log.e(TAG, "onResume: "); + Log.e(TAG, "onResume: " + System.currentTimeMillis()); int agree = mMMKV.decodeInt("AgreePrivacyPolicy", 0); if (agree == 0) { showPolicyDialog(); @@ -385,7 +395,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { privacyPolicyDialog.show(); } - private void addHomeWatcher() { if (mHomeWatcher == null) { mHomeWatcher = new HomeWatcher(this); @@ -476,6 +485,20 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } } + @Override + protected void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + Log.e(TAG, "onSaveInstanceState: "); + Log.e(TAG, "onSaveInstanceState: " + System.currentTimeMillis()); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + Log.e(TAG, "onRestoreInstanceState: "); + Log.e(TAG, "onRestoreInstanceState: " + System.currentTimeMillis()); + } + @Override protected void onStop() { super.onStop(); @@ -498,12 +521,13 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } } + private void registmNewAppReceiver() { mNewAppReceiver = new NewAppReceiver(); IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); filter.addAction(Intent.ACTION_PACKAGE_ADDED); - filter.addAction(Intent.ACTION_PACKAGE_CHANGED); +// filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addDataScheme("package"); @@ -519,7 +543,8 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { Log.e(TAG, "onReceive: " + action); if (Intent.ACTION_PACKAGE_ADDED.equals(action) || Intent.ACTION_PACKAGE_REMOVED.equals(action) - || Intent.ACTION_PACKAGE_CHANGED.equals(action)) { +// || Intent.ACTION_PACKAGE_CHANGED.equals(action) + ) { addData(); } } 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 d743073..fe62457 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 @@ -19,9 +19,11 @@ import com.uiui.aios.utils.Utils; import java.util.List; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.BehaviorSubject; public class MainPresenter implements MainContact.Presenter { @@ -122,12 +124,15 @@ public class MainPresenter implements MainContact.Presenter { if (!TextUtils.isEmpty(packagename)) { Log.e(TAG, "onRestart: " + ApkUtils.getAppNameByPackage(mContext, packagename)); Log.e(TAG, "onRestart: " + packagename); - NetInterfaceManager.getInstance().getAppUsageRecordControl() + NetInterfaceManager.getInstance() + .getAppUsageRecordControl() .sendappUsageRecord(Utils.getSerial(), ApkUtils.getAppNameByPackage(mContext, packagename), packagename, AppUsedTimeUtils.getInstance().getStartTime() / 1000, AppUsedTimeUtils.getInstance().getEndTime() / 1000) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer() { @Override @@ -171,6 +176,8 @@ public class MainPresenter implements MainContact.Presenter { Log.e(TAG, "sendRunningInfo: " + jsonString); NetInterfaceManager.getInstance() .getRunningAppObservable(jsonString) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) .subscribe(new Observer() { @Override diff --git a/app/src/main/java/com/uiui/aios/activity/weather/WeatherActivity.java b/app/src/main/java/com/uiui/aios/activity/weather/WeatherActivity.java index af0b397..2757278 100644 --- a/app/src/main/java/com/uiui/aios/activity/weather/WeatherActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/weather/WeatherActivity.java @@ -13,6 +13,7 @@ import com.qweather.sdk.bean.weather.WeatherDailyBean; import com.uiui.aios.R; import com.uiui.aios.adapter.WeatherDayApdapter; import com.uiui.aios.base.BaseActivity; +import com.uiui.aios.manager.RemoteManager; import com.uiui.aios.view.HorizontalItemDecoration; import butterknife.BindView; @@ -40,6 +41,7 @@ public class WeatherActivity extends BaseActivity implements WeatherContact.Weat mPresenter = new WeatherPresenter(this); mPresenter.attachView(this); mPresenter.setLifecycle(lifecycleSubject); + RemoteManager.getInstance().getLocation(); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); Resources resources = getResources(); if (resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { diff --git a/app/src/main/java/com/uiui/aios/activity/weather/WeatherPresenter.java b/app/src/main/java/com/uiui/aios/activity/weather/WeatherPresenter.java index f24b8f7..958ce7b 100644 --- a/app/src/main/java/com/uiui/aios/activity/weather/WeatherPresenter.java +++ b/app/src/main/java/com/uiui/aios/activity/weather/WeatherPresenter.java @@ -5,14 +5,13 @@ import android.util.Log; import androidx.annotation.NonNull; -import com.baidu.location.BDLocation; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.qweather.sdk.bean.weather.WeatherDailyBean; import com.qweather.sdk.view.QWeather; import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.android.ActivityEvent; -import com.uiui.aios.manager.AmapManager; +import com.uiui.aios.manager.RemoteManager; import java.lang.reflect.Type; @@ -58,11 +57,7 @@ public class WeatherPresenter implements WeatherContact.Presenter { @Override public void getLocation() { - BDLocation bdLocation = AmapManager.getInstance().getNowMapLocation(); - String location = "未知"; - if (bdLocation != null) { - location = bdLocation.getCity() + "\t" + bdLocation.getDistrict(); - } + String location = RemoteManager.getInstance().getCityDistrict(); mView.setLocation(location); } @@ -78,7 +73,7 @@ public class WeatherPresenter implements WeatherContact.Presenter { @Override public void getWeather() { - QWeather.getWeather7D(mContext, AmapManager.getInstance().getLocation(), new QWeather.OnResultWeatherDailyListener() { + QWeather.getWeather7D(mContext, RemoteManager.getInstance().getLocationTude(), new QWeather.OnResultWeatherDailyListener() { @Override public void onError(Throwable throwable) { Log.e("getWeather", "onError: " + throwable.getMessage()); diff --git a/app/src/main/java/com/uiui/aios/adapter/AppSelectedAdapter.java b/app/src/main/java/com/uiui/aios/adapter/AppSelectedAdapter.java index c7bcf3f..0ac3abb 100644 --- a/app/src/main/java/com/uiui/aios/adapter/AppSelectedAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/AppSelectedAdapter.java @@ -21,6 +21,7 @@ import java.util.List; public class AppSelectedAdapter extends RecyclerView.Adapter { private static final String TAG = AppSelectedAdapter.class.getSimpleName(); + private Context mContext; private List mAppSelectBeans; private int unselectedStatus = -1; diff --git a/app/src/main/java/com/uiui/aios/base/BaseApplication.java b/app/src/main/java/com/uiui/aios/base/BaseApplication.java index 9cdfbc6..0180335 100644 --- a/app/src/main/java/com/uiui/aios/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/aios/base/BaseApplication.java @@ -14,8 +14,8 @@ import com.tencent.android.tpush.XGPushManager; import com.tencent.mmkv.MMKV; import com.uiui.aios.BuildConfig; import com.uiui.aios.alarm.AlarmUtils; -import com.uiui.aios.manager.AmapManager; import com.uiui.aios.manager.ConnectManager; +import com.uiui.aios.manager.RemoteManager; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.service.main.MainService; import com.uiui.aios.utils.AppUsedTimeUtils; @@ -51,7 +51,7 @@ public class BaseApplication extends Application { HeConfig.init("HE2206151627491952", "03125bfee8934cf4b640af48e8187c9d"); //切换至开发版服务 HeConfig.switchToDevService(); - AmapManager.init(this); + RemoteManager.init(this); ConnectManager.init(this); NetInterfaceManager.init(this); startService(new Intent(this, MainService.class)); diff --git a/app/src/main/java/com/uiui/aios/bean/MapBean.java b/app/src/main/java/com/uiui/aios/bean/MapBean.java new file mode 100644 index 0000000..19feaa1 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/bean/MapBean.java @@ -0,0 +1,134 @@ +package com.uiui.aios.bean; + +import java.io.Serializable; + +public class MapBean implements Serializable { + private static final long serialVersionUID = -4356064111098876676L; + + double longitude; + double latitude; + String adcode; + String address; + String city; + String cityCode; + String country; + String countryCode; + String district; + String province; + String street; + String streetNumber; + String town; + String locationDescribe; + + public double getLongitude() { + return longitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + public double getLatitude() { + return latitude; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + public String getAdcode() { + return adcode; + } + + public void setAdcode(String adcode) { + this.adcode = adcode; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public String getDistrict() { + return district; + } + + public void setDistrict(String district) { + this.district = district; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getStreetNumber() { + return streetNumber; + } + + public void setStreetNumber(String streetNumber) { + this.streetNumber = streetNumber; + } + + public String getTown() { + return town; + } + + public void setTown(String town) { + this.town = town; + } + + public String getLocationDescribe() { + return locationDescribe; + } + + public void setLocationDescribe(String locationDescribe) { + this.locationDescribe = locationDescribe; + } +} diff --git a/app/src/main/java/com/uiui/aios/config/CommonConfig.java b/app/src/main/java/com/uiui/aios/config/CommonConfig.java index 05e03b4..adb0a22 100644 --- a/app/src/main/java/com/uiui/aios/config/CommonConfig.java +++ b/app/src/main/java/com/uiui/aios/config/CommonConfig.java @@ -9,4 +9,10 @@ public class CommonConfig { public static final String UIUI_CODE_TYPE_KEY = "uiui_code_type"; /*体验到期时间戳*/ public static final String UIUI_EXPIRE_TIME_KEY = "uiui_expire_time"; + + public static final String MAP_LOCATION_JSON_KEY = "MAPLOCATION_JSON_STRING"; + public static final String MAP_LONGITUDE_KEY = "map_longitude_key"; + public static final String MAP_LATITUDE_KEY = "map_latitude_key"; + public static final String MAP_ADDRESS_KEY = "map_address_key"; + public static final String MAP_ERROR_KEY = "map_error_key"; } diff --git a/app/src/main/java/com/uiui/aios/fragment/AppListFragment.java b/app/src/main/java/com/uiui/aios/fragment/AppListFragment.java index 59f0aa8..fea2cb8 100644 --- a/app/src/main/java/com/uiui/aios/fragment/AppListFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/AppListFragment.java @@ -22,7 +22,7 @@ import com.google.gson.JsonObject; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.FragmentEvent; import com.uiui.aios.R; -import com.uiui.aios.activity.code.HealthCodeActivity; +import com.uiui.aios.activity.code.FamilySpaceActivity; import com.uiui.aios.base.BaseFragment; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.DesktopIcon; @@ -195,7 +195,7 @@ public class AppListFragment extends BaseFragment { } break; case "aios.family": - startActivity(new Intent(mContext, HealthCodeActivity.class)); + startActivity(new Intent(mContext, FamilySpaceActivity.class)); break; case "com.android.dialer": int qch_call_forbid = Settings.System.getInt(mContext.getContentResolver(), "qch_call_forbid", 0); diff --git a/app/src/main/java/com/uiui/aios/fragment/ControlFragment.java b/app/src/main/java/com/uiui/aios/fragment/ControlFragment.java index 99524fb..7a985c7 100644 --- a/app/src/main/java/com/uiui/aios/fragment/ControlFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/ControlFragment.java @@ -33,12 +33,11 @@ import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; -import com.baidu.location.BDAbstractLocationListener; -import com.baidu.location.BDLocation; -import com.baidu.location.LocationClient; +import com.tencent.mmkv.MMKV; import com.uiui.aios.R; +import com.uiui.aios.config.CommonConfig; import com.uiui.aios.disklrucache.CacheHelper; -import com.uiui.aios.manager.AmapManager; +import com.uiui.aios.manager.RemoteManager; import com.uiui.aios.utils.BrightnessUtils; import com.uiui.aios.view.RulerSeekBar; @@ -748,43 +747,17 @@ public class ControlFragment extends Fragment { }, 1999); } - private LocationClient locationClient; - private void getLocation() { - String addr = mCacheHelper.getAsString(AmapManager.ADDRESS_KEY); + String addr = MMKV.defaultMMKV().decodeString(CommonConfig.MAP_ADDRESS_KEY); if (TextUtils.isEmpty(addr)) { tv_location.setText("未知"); } else { tv_location.setText(addr); } - startLocation(); cl_location.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - startLocation(); - } - }); - } - - private void startLocation() { - if (locationClient == null) { - locationClient = AmapManager.getInstance().getLocationClient(); - } - locationClient.stop(); - locationClient.start(); - locationClient.registerLocationListener(new BDAbstractLocationListener() { - @Override - public void onReceiveLocation(BDLocation bdLocation) { - switch (bdLocation.getLocType()) { - case BDLocation.TypeGpsLocation:// GPS定位结果 - case BDLocation.TypeNetWorkLocation:// 网络定位结果 - case BDLocation.TypeOffLineLocation:// 离线定位结果 - tv_location.setText(bdLocation.getAddrStr()); - break; - default: - tv_location.setText("定位失败"); - break; - } + RemoteManager.getInstance().getLocation(); } }); } diff --git a/app/src/main/java/com/uiui/aios/fragment/custom/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/custom/CustomFragment.java index d457ec6..d3bf947 100644 --- a/app/src/main/java/com/uiui/aios/fragment/custom/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/custom/CustomFragment.java @@ -9,6 +9,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiInfo; @@ -25,14 +26,12 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.baidu.location.BDAbstractLocationListener; -import com.baidu.location.BDLocation; -import com.baidu.location.LocationClient; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -49,10 +48,9 @@ import com.uiui.aios.R; import com.uiui.aios.activity.EmergencyActivity; import com.uiui.aios.activity.QuickAppActivity; import com.uiui.aios.activity.alarm.AlarmClockActivity; -import com.uiui.aios.activity.code.HealthCodeActivity; +import com.uiui.aios.activity.code.FamilySpaceActivity; import com.uiui.aios.activity.contact.ContactActivity; import com.uiui.aios.activity.weather.WeatherActivity; -import com.uiui.aios.adapter.NotificationAdapter; import com.uiui.aios.adapter.SOSNnmberAdapter; import com.uiui.aios.base.BaseFragment; import com.uiui.aios.bean.AlarmClockData; @@ -64,7 +62,7 @@ import com.uiui.aios.bean.UserAvatarInfo; import com.uiui.aios.config.CommonConfig; import com.uiui.aios.dialog.SingleDialog; import com.uiui.aios.disklrucache.CacheHelper; -import com.uiui.aios.manager.AmapManager; +import com.uiui.aios.manager.RemoteManager; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.network.URLAddress; import com.uiui.aios.tpush.MessageReceiver; @@ -180,6 +178,28 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom private String mParam1; private String mParam2; + @Override + public void onDisconnected() { +// wifi_ssid.setText("WiFi未连接"); + } + + @Override + public void onConnected(NetworkUtils.NetworkType networkType) { + if (networkType == NetworkUtils.NetworkType.NETWORK_WIFI) { +// wifi_ssid.setText(getConnectWifiSsid()); + } else { +// wifi_ssid.setText("WiFi未连接"); + } + } + + private String getConnectWifiSsid() { + WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + Log.d("wifiInfo", wifiInfo.toString()); + Log.d("SSID", wifiInfo.getSSID()); + return wifiInfo.getSSID(); + } + public CustomFragment() { // Required empty public constructor } @@ -216,155 +236,20 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom mParam2 = getArguments().getString(ARG_PARAM2); } mMMKV = MMKV.defaultMMKV(); + } + @Override + public void onConfigurationChanged(@NonNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); } @Override public void fetchData() { Log.e(TAG, "fetchData: "); + RemoteManager.getInstance().getLocation(); initData(); } - @Override - public void onDisconnected() { -// wifi_ssid.setText("WiFi未连接"); - } - - @Override - public void onConnected(NetworkUtils.NetworkType networkType) { - if (networkType == NetworkUtils.NetworkType.NETWORK_WIFI) { -// wifi_ssid.setText(getConnectWifiSsid()); - } else { -// wifi_ssid.setText("WiFi未连接"); - } - } - - private String getConnectWifiSsid() { - WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); - WifiInfo wifiInfo = wifiManager.getConnectionInfo(); - Log.d("wifiInfo", wifiInfo.toString()); - Log.d("SSID", wifiInfo.getSSID()); - return wifiInfo.getSSID(); - } - - /** - * 检查wifi是否处开连接状态 - * - * @return - */ - public boolean isWifiConnect() { - ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); - return mWifiInfo.isConnected(); - } - - private RefreshBroadcastReceiver mRefreshBroadcastReceiver; - - private void registerRefreshReceiver() { - if (mRefreshBroadcastReceiver == null) { - mRefreshBroadcastReceiver = new RefreshBroadcastReceiver(); - } - IntentFilter filter = new IntentFilter(); - filter.addAction(QuickAppActivity.QUICK_APP_REFRESH_KEY); - mContext.registerReceiver(mRefreshBroadcastReceiver, filter); - } - - class RefreshBroadcastReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - Log.e(TAG, "onReceive: " + intent.getAction()); - setQuickApp(); - } - } - - private void registerAlarmClockReceiver() { - if (null == mAlarmClockReceiver) { - mAlarmClockReceiver = new AlarmClockReceiver(); - } - IntentFilter filter = new IntentFilter(); - filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - filter.addAction(MessageReceiver.SET_ALARMCLOCK); - mContext.registerReceiver(mAlarmClockReceiver, filter); - } - - private AlarmClockReceiver mAlarmClockReceiver; - - private class AlarmClockReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - Log.e(TAG, "onReceive: " + action); - if (MessageReceiver.SET_ALARMCLOCK.equals(action)) { - Handler.getMain().postDelayed(new Runnable() { - @Override - public void run() { - mCustomPresenter.getAlarmClock(); - } - }, 3456); - } - } - } - - private void registerBatteryReceiver() { - if (null == batteryReceiver) { - batteryReceiver = new BatteryReceiver(); - } - IntentFilter filter = new IntentFilter(); - filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); - filter.addAction(Intent.ACTION_BATTERY_CHANGED); - filter.addAction(Intent.ACTION_BATTERY_LOW); - filter.addAction(Intent.ACTION_BATTERY_OKAY); - filter.addAction(Intent.ACTION_POWER_CONNECTED); - filter.addAction(Intent.ACTION_POWER_DISCONNECTED); - mContext.registerReceiver(batteryReceiver, filter); - } - - private BatteryReceiver batteryReceiver; - - private class BatteryReceiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { - // 当前电量 - int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); - // 最大电量 - int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0); - int elec = (level * 100) / scale; - Log.i(TAG, "electricity:=" + elec + "%"); -// tv_battery.setText(elec + "%"); - } else if (Intent.ACTION_POWER_CONNECTED.equals(action) - || Intent.ACTION_POWER_DISCONNECTED.equals(action) - || Intent.ACTION_BATTERY_LOW.equals(action) - || Intent.ACTION_BATTERY_OKAY.equals(action) - ) { - - } - } - } - - private BroadcastReceiver mbatteryReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - Log.i(TAG, "onReceive: " + action); - if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { - int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); - if (status == BatteryManager.BATTERY_STATUS_CHARGING) { - if (rootView != null) { -// iv_charging.setVisibility(View.VISIBLE); - } - } else { - if (rootView != null) { -// iv_charging.setVisibility(View.GONE); - } - } - } - } - }; - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment @@ -545,6 +430,17 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom refreshMemory(); } + /** + * 检查wifi是否处开连接状态 + * + * @return + */ + public boolean isWifiConnect() { + ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mWifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + return mWifiInfo.isConnected(); + } + private void showExpired() { SingleDialog dialog = new SingleDialog(mContext); dialog.setTitle("温馨提示") @@ -805,28 +701,9 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom } private void initAmap() { - LocationClient locationClient = AmapManager.getInstance().getLocationClient(); - locationClient.stop(); - locationClient.start(); - locationClient.registerLocationListener(new BDAbstractLocationListener() { - @Override - public void onReceiveLocation(BDLocation bdLocation) { - Log.e(TAG, "onReceiveLocation: "); - switch (bdLocation.getLocType()) { - case BDLocation.TypeGpsLocation:// GPS定位结果 - case BDLocation.TypeNetWorkLocation:// 网络定位结果 - case BDLocation.TypeOffLineLocation:// 离线定位结果 - String city = bdLocation.getCity(); - tv_location.setText(city); - getweather(bdLocation.getLongitude(), bdLocation.getLatitude()); - break; - default: - BDLocation location = AmapManager.getInstance().getNowMapLocation(); - getweather(location.getLongitude(), location.getLatitude()); - break; - } - } - }); + String city = RemoteManager.getInstance().getCity(); + tv_location.setText(city); + getweather(RemoteManager.getInstance().getLongitude(), RemoteManager.getInstance().getLatitude()); } private void getAlarm() { @@ -871,7 +748,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom NetInterfaceManager.getInstance().getHealthCode(new NetInterfaceManager.HealthCodeCallback() { @Override public void setHealthCode(List healthCode) { - startActivity(new Intent(mContext, HealthCodeActivity.class)); + startActivity(new Intent(mContext, FamilySpaceActivity.class)); } @Override @@ -999,6 +876,111 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom float x2 = (((total - avail) / (float) total)); } + private RefreshBroadcastReceiver mRefreshBroadcastReceiver; + + private void registerRefreshReceiver() { + if (mRefreshBroadcastReceiver == null) { + mRefreshBroadcastReceiver = new RefreshBroadcastReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.addAction(QuickAppActivity.QUICK_APP_REFRESH_KEY); + mContext.registerReceiver(mRefreshBroadcastReceiver, filter); + } + + class RefreshBroadcastReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + Log.e(TAG, "onReceive: " + intent.getAction()); + setQuickApp(); + } + } + + private void registerAlarmClockReceiver() { + if (null == mAlarmClockReceiver) { + mAlarmClockReceiver = new AlarmClockReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(MessageReceiver.SET_ALARMCLOCK); + mContext.registerReceiver(mAlarmClockReceiver, filter); + } + + private AlarmClockReceiver mAlarmClockReceiver; + + private class AlarmClockReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + Log.e(TAG, "onReceive: " + action); + if (MessageReceiver.SET_ALARMCLOCK.equals(action)) { + Handler.getMain().postDelayed(new Runnable() { + @Override + public void run() { + mCustomPresenter.getAlarmClock(); + } + }, 3456); + } + } + } + + private void registerBatteryReceiver() { + if (null == batteryReceiver) { + batteryReceiver = new BatteryReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(Intent.ACTION_BATTERY_CHANGED); + filter.addAction(Intent.ACTION_BATTERY_LOW); + filter.addAction(Intent.ACTION_BATTERY_OKAY); + filter.addAction(Intent.ACTION_POWER_CONNECTED); + filter.addAction(Intent.ACTION_POWER_DISCONNECTED); + mContext.registerReceiver(batteryReceiver, filter); + } + + private BatteryReceiver batteryReceiver; + + private class BatteryReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { + // 当前电量 + int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); + // 最大电量 + int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0); + int elec = (level * 100) / scale; + Log.i(TAG, "electricity:=" + elec + "%"); +// tv_battery.setText(elec + "%"); + } else if (Intent.ACTION_POWER_CONNECTED.equals(action) + || Intent.ACTION_POWER_DISCONNECTED.equals(action) + || Intent.ACTION_BATTERY_LOW.equals(action) + || Intent.ACTION_BATTERY_OKAY.equals(action) + ) { + + } + } + } + + private BroadcastReceiver mbatteryReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + Log.i(TAG, "onReceive: " + action); + if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { + int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN); + if (status == BatteryManager.BATTERY_STATUS_CHARGING) { + if (rootView != null) { +// iv_charging.setVisibility(View.VISIBLE); + } + } else { + if (rootView != null) { +// iv_charging.setVisibility(View.GONE); + } + } + } + } + }; /** * 时间 diff --git a/app/src/main/java/com/uiui/aios/manager/AmapManager.java b/app/src/main/java/com/uiui/aios/manager/AmapManager.java deleted file mode 100644 index fda6704..0000000 --- a/app/src/main/java/com/uiui/aios/manager/AmapManager.java +++ /dev/null @@ -1,410 +0,0 @@ -package com.uiui.aios.manager; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; - -import com.baidu.location.BDAbstractLocationListener; -import com.baidu.location.BDLocation; -import com.baidu.location.LocationClient; -import com.baidu.location.LocationClientOption; -import com.blankj.utilcode.util.SPUtils; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import com.tencent.mmkv.MMKV; -import com.uiui.aios.disklrucache.CacheHelper; -import com.uiui.aios.utils.GsonUtils; - -import java.lang.reflect.Type; - -public class AmapManager { - private static final String TAG = AmapManager.class.getSimpleName(); - @SuppressLint("StaticFieldLeak") - private static AmapManager sInstance; - private Context mContext; - @SuppressLint("StaticFieldLeak") - private LocationClient mLocationClient = null; - private LocationClientOption mOption; - private BDLocation mLocation; - private CacheHelper mCacheHelper; - - private static final String AMAPLOCATION_JSON_KEY = "MAPLOCATION_JSON_STRING"; - public static final String LONGITUDE_KEY = "map_longitude_key"; - public static final String LATITUDE_KEY = "map_latitude_key"; - public static final String ADDRESS_KEY = "map_address_key"; - public static final String ERROR_KEY = "map_error_key"; - - private AmapManager(Context context) { - this.mContext = context; - this.mCacheHelper = new CacheHelper(context); - Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps"); - initAmap(); - } - - public static void init(Context context) { - if (context == null) { - throw new RuntimeException("Context is NULL"); - } - if (sInstance == null) { - sInstance = new AmapManager(context); - } - } - - public static AmapManager getInstance() { - if (sInstance == null) { - throw new IllegalStateException("You must be init AmapManager first"); - } - return sInstance; - } - - public void initAmap() { - if (mLocationClient == null) { - mLocationClient = new LocationClient(mContext); - } - Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+gps"); - mLocationClient.setLocOption(getDefaultLocationClientOption()); - mLocationClient.registerLocationListener(mListener); - mLocationClient.stop(); - mLocationClient.start(); - } - - - public LocationClient getLocationClient() { - if (mLocationClient == null) { - initAmap(); - } - return mLocationClient; - } - - public BDLocation getNowMapLocation() { - if (mLocation == null) { - String aMapLocationjson = SPUtils.getInstance().getString(AMAPLOCATION_JSON_KEY); - if (TextUtils.isEmpty(aMapLocationjson)) { - return null; - } - Type type = new TypeToken() { - }.getType(); - try { - BDLocation bdLocation = new Gson().fromJson(aMapLocationjson, type); - return bdLocation; - } catch (Exception e) { - Log.e(TAG, "getNowMapLocation: " + e.getMessage()); - return null; - } - } - return this.mLocation; - } - - public String getLocation() { - BDLocation bdLocation = getNowMapLocation(); - if (bdLocation == null) { - return "0,0"; - } else { - String location = bdLocation.getLongitude() + "," + bdLocation.getLatitude(); - Log.e(TAG, "getLocation: " + location); - return location; - } - } - - - /*** - * - * @return DefaultLocationClientOption 默认O设置 - */ - public LocationClientOption getDefaultLocationClientOption() { - if (mOption == null) { - mOption = new LocationClientOption(); - mOption.setCoorType("bd09ll"); // 可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll; - mOption.setScanSpan(0); // 可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的 - mOption.setIsNeedAddress(true); // 可选,设置是否需要地址信息,默认不需要 - mOption.setIsNeedLocationDescribe(true); // 可选,设置是否需要地址描述 - mOption.setNeedDeviceDirect(false); // 可选,设置是否需要设备方向结果 - mOption.setLocationNotify(false); // 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 - mOption.setIgnoreKillProcess(true); // 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop - mOption.setIsNeedLocationDescribe(true); // 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation - mOption.setIsNeedLocationPoiList(true); // 可选,默认false,设置是否需要POI结果,可以在BDLocation - mOption.SetIgnoreCacheException(false); // 可选,默认false,设置是否收集CRASH信息,默认收集 - mOption.setLocationMode(LocationClientOption.LocationMode.Battery_Saving); // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备,模糊 - mOption.setIsNeedAltitude(false); // 可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用 - // 可选,设置首次定位时选择定位速度优先还是定位准确性优先,默认为速度优先 -// mOption.setFirstLocType(LocationClientOption.FirstLocType.SPEED_IN_FIRST_LOC); - } - return mOption; - } - - - /***** - * - * 定位结果回调,重写onReceiveLocation方法,可以直接拷贝如下代码到自己工程中修改 - * - */ - private BDAbstractLocationListener mListener = new BDAbstractLocationListener() { - - /** - * 定位请求回调函数 - * @param location 定位结果 - */ - @Override - public void onReceiveLocation(BDLocation location) { - if (null != location) { - switch (location.getLocType()) { - case BDLocation.TypeGpsLocation:// GPS定位结果 - case BDLocation.TypeNetWorkLocation:// 网络定位结果 - case BDLocation.TypeOffLineLocation:// 离线定位结果 - SPUtils.getInstance().put(AMAPLOCATION_JSON_KEY, GsonUtils.toJsonString(location)); - Log.e(TAG, "onLocationChanged: " + "定位成功"); - Log.e(TAG, "onLocationChanged: longitude = " + location.getLongitude()); - Log.e(TAG, "onLocationChanged: latitude = " + location.getLatitude()); - Log.e(TAG, "onLocationChanged: " + location.getAddrStr() + location.getLocationDescribe()); - mCacheHelper.put(ADDRESS_KEY, location.getAddrStr() + location.getLocationDescribe()); - mCacheHelper.put(LONGITUDE_KEY, location.getLongitude()); - mCacheHelper.put(LATITUDE_KEY, location.getLatitude()); - mCacheHelper.put(ERROR_KEY, "-"); - break; - case BDLocation.TypeServerError: - Log.e(TAG, "onReceiveLocation: " + "服务端网络定位失败"); - mCacheHelper.put(ERROR_KEY, "服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因"); - break; - case BDLocation.TypeNetWorkException: - Log.e(TAG, "onReceiveLocation: " + "网络不同导致定位失败,请检查网络是否通畅"); - mCacheHelper.put(ERROR_KEY, "网络不同导致定位失败,请检查网络是否通畅"); - break; - case BDLocation.TypeCriteriaException: - Log.e(TAG, "onReceiveLocation: " + "无法获取有效定位依据导致定位失败"); - mCacheHelper.put(ERROR_KEY, "无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机"); - break; - default: - } - } -// if (null != location && location.getLocType() != BDLocation.TypeServerError) { -// StringBuffer sb = new StringBuffer(256); -// sb.append("time : "); -// /** -// * 时间也可以使用systemClock.elapsedRealtime()方法 获取的是自从开机以来,每次回调的时间; -// * location.getTime() 是指服务端出本次结果的时间,如果位置不发生变化,则时间不变 -// */ -// sb.append(location.getTime()); -// sb.append("\nsysTime : "); -// sb.append(SystemClock.elapsedRealtime()); -// sb.append("\nlocType : ");// 定位类型 -// sb.append(location.getLocType()); -// sb.append("\nlocType description : ");// *****对应的定位类型说明***** -// sb.append(location.getLocTypeDescription()); -// sb.append("\nlatitude : ");// 纬度 -// sb.append(location.getLatitude()); -// sb.append("\nlongtitude : ");// 经度 -// sb.append(location.getLongitude()); -// sb.append("\nradius : ");// 半径 -// sb.append(location.getRadius()); -// sb.append("\nCountryCode : ");// 国家码 -// sb.append(location.getCountryCode()); -// sb.append("\nProvince : ");// 获取省份 -// sb.append(location.getProvince()); -// sb.append("\nCountry : ");// 国家名称 -// sb.append(location.getCountry()); -// sb.append("\ncitycode : ");// 城市编码 -// sb.append(location.getCityCode()); -// sb.append("\ncity : ");// 城市 -// sb.append(location.getCity()); -// sb.append("\nDistrict : ");// 区 -// sb.append(location.getDistrict()); -// sb.append("\nTown : ");// 获取镇信息 -// sb.append(location.getTown()); -// sb.append("\nStreet : ");// 街道 -// sb.append(location.getStreet()); -// sb.append("\naddr : ");// 地址信息 -// sb.append(location.getAddrStr()); -// sb.append("\nStreetNumber : ");// 获取街道号码 -// sb.append(location.getStreetNumber()); -// sb.append("\nUserIndoorState: ");// *****返回用户室内外判断结果***** -// sb.append(location.getUserIndoorState()); -// sb.append("\nDirection(not all devices have value): "); -// sb.append(location.getDirection());// 方向 -// sb.append("\nlocationdescribe: "); -// sb.append(location.getLocationDescribe());// 位置语义化信息 -// sb.append("\nPoi: ");// POI信息 -// if (location.getPoiList() != null && !location.getPoiList().isEmpty()) { -// for (int i = 0; i < location.getPoiList().size(); i++) { -// Poi poi = (Poi) location.getPoiList().get(i); -// sb.append("poiName:"); -// sb.append(poi.getName() + ", "); -// sb.append("poiTag:"); -// sb.append(poi.getTags() + "\n"); -// } -// } -// if (location.getPoiRegion() != null) { -// sb.append("PoiRegion: ");// 返回定位位置相对poi的位置关系,仅在开发者设置需要POI信息时才会返回,在网络不通或无法获取时有可能返回null -// PoiRegion poiRegion = location.getPoiRegion(); -// sb.append("DerectionDesc:"); // 获取POIREGION的位置关系,ex:"内" -// sb.append(poiRegion.getDerectionDesc() + "; "); -// sb.append("Name:"); // 获取POIREGION的名字字符串 -// sb.append(poiRegion.getName() + "; "); -// sb.append("Tags:"); // 获取POIREGION的类型 -// sb.append(poiRegion.getTags() + "; "); -// sb.append("\nSDK版本: "); -// } -//// int permission = checkPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION); -//// sb.append("\npermsission: " + permission); -//// sb.append(locationService.getSDKVersion()); // 获取SDK版本 -// if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果 -// sb.append("\nspeed : "); -// sb.append(location.getSpeed());// 速度 单位:km/h -// sb.append("\nsatellite : "); -// sb.append(location.getSatelliteNumber());// 卫星数目 -// sb.append("\nheight : "); -// sb.append(location.getAltitude());// 海拔高度 单位:米 -// sb.append("\ngps status : "); -// sb.append(location.getGpsAccuracyStatus());// *****gps质量判断***** -// sb.append("\ndescribe : "); -// sb.append("gps定位成功"); -// } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果 -// // 运营商信息 -// if (location.hasAltitude()) {// *****如果有海拔高度***** -// sb.append("\nheight : "); -// sb.append(location.getAltitude());// 单位:米 -// } -// sb.append("\noperationers : ");// 运营商信息 -// sb.append(location.getOperators()); -// sb.append("\ndescribe : "); -// sb.append("网络定位成功"); -// } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果 -// sb.append("\ndescribe : "); -// sb.append("离线定位成功,离线定位结果也是有效的"); -// } else if (location.getLocType() == BDLocation.TypeServerError) { -// sb.append("\ndescribe : "); -// sb.append("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因"); -// } else if (location.getLocType() == BDLocation.TypeNetWorkException) { -// sb.append("\ndescribe : "); -// sb.append("网络不同导致定位失败,请检查网络是否通畅"); -// } else if (location.getLocType() == BDLocation.TypeCriteriaException) { -// sb.append("\ndescribe : "); -// sb.append("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机"); -// } -//// logMsg(sb.toString(), tag); -// Log.e(TAG, "onReceiveLocation: " + sb); -// } - Log.e(TAG, "AmapAddress: " + mCacheHelper.getAsString(ADDRESS_KEY)); - Log.e(TAG, "AmapError: " + mCacheHelper.getAsString(ERROR_KEY)); - Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-network"); - Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-gps"); - Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.ASSISTED_GPS_ENABLED, 0); - } - - @Override - public void onConnectHotSpotMessage(String s, int i) { - super.onConnectHotSpotMessage(s, i); - } - - /** - * 回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题 - * @param locType 当前定位类型 - * @param diagnosticType 诊断类型(1~9) - * @param diagnosticMessage 具体的诊断信息释义 - */ - @Override - public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) { - super.onLocDiagnosticMessage(locType, diagnosticType, diagnosticMessage); -// int tag = 2; - StringBuffer sb = new StringBuffer(256); - sb.append("诊断结果: "); - if (locType == BDLocation.TypeNetWorkLocation) { - if (diagnosticType == 1) { - sb.append("网络定位成功,没有开启GPS,建议打开GPS会更好"); - sb.append("\n" + diagnosticMessage); - } else if (diagnosticType == 2) { - sb.append("网络定位成功,没有开启Wi-Fi,建议打开Wi-Fi会更好"); - sb.append("\n" + diagnosticMessage); - } - } else if (locType == BDLocation.TypeOffLineLocationFail) { - if (diagnosticType == 3) { - sb.append("定位失败,请您检查您的网络状态"); - sb.append("\n" + diagnosticMessage); - } - } else if (locType == BDLocation.TypeCriteriaException) { - if (diagnosticType == 4) { - sb.append("定位失败,无法获取任何有效定位依据"); - sb.append("\n" + diagnosticMessage); - } else if (diagnosticType == 5) { - sb.append("定位失败,无法获取有效定位依据,请检查运营商网络或者Wi-Fi网络是否正常开启,尝试重新请求定位"); - sb.append(diagnosticMessage); - } else if (diagnosticType == 6) { - sb.append("定位失败,无法获取有效定位依据,请尝试插入一张sim卡或打开Wi-Fi重试"); - sb.append("\n" + diagnosticMessage); - } else if (diagnosticType == 7) { - sb.append("定位失败,飞行模式下无法获取有效定位依据,请关闭飞行模式重试"); - sb.append("\n" + diagnosticMessage); - } else if (diagnosticType == 9) { - sb.append("定位失败,无法获取任何有效定位依据"); - sb.append("\n" + diagnosticMessage); - } - } else if (locType == BDLocation.TypeServerError) { - if (diagnosticType == 8) { - sb.append("定位失败,请确认您定位的开关打开状态,是否赋予APP定位权限"); - sb.append("\n" + diagnosticMessage); - } - } - Log.e(TAG, "onLocationChanged: " + "定位失败"); - mCacheHelper.put(ERROR_KEY, sb.toString()); - Log.e(TAG, "onLocDiagnosticMessage: " + sb); -// logMsg(sb.toString(), tag); - } - }; - -// public AMapLocationClient getLocationClient() { -// if (null == locationClient) { -// initAmap(); -// } -// return locationClient; -// } - -// public void initAmap() { -// locationClient = new AMapLocationClient(mContext); -// AMapLocationClientOption option = new AMapLocationClientOption(); -// option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn); -// option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); -// option.setNeedAddress(true); -// //获取一次定位结果: -// //该方法默认为false。 -// option.setOnceLocation(true); -// //获取最近3s内精度最高的一次定位结果: -// //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。 -// // 如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。 -// option.setOnceLocationLatest(true); -// locationClient.setLocationOption(option); -// //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 -// //设置定位监听 -// locationClient.setLocationListener(new AMapLocationListener() { -// -// @Override -// public void onLocationChanged(AMapLocation aMapLocation) { -// StringBuilder sb = new StringBuilder(); -// //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明 -// if (aMapLocation.getErrorCode() == 0) { -// Log.e(TAG, "onLocationChanged: " + "定位成功"); -// Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress()); -// sb.append(aMapLocation.getAddress()).append("\n"); -// mMMKV.encode( ADDRESS_KEY, aMapLocation.getAddress()); -// mMMKV.encode( LONGITUDE_KEY, aMapLocation.getLongitude()); -// mMMKV.encode( LATITUDE_KEY, aMapLocation.getLatitude()); -// mMMKV.encode( ERROR_KEY, ""); -// } else { -// //定位失败 -// sb.append("定位失败" + "\n"); -// Log.e(TAG, "onLocationChanged: " + "定位失败"); -// mMMKV.encode( ERROR_KEY, String.valueOf(aMapLocation.getErrorInfo())); -// } -// Log.e(TAG, (String) SPUtils.get(mContext, ADDRESS_KEY, "-")); -// Log.e(TAG, (String) SPUtils.get(mContext, ERROR_KEY, "-")); -// Log.e(TAG, "amap: " + sb.toString()); -// } -// }); -// //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 -// locationClient.stopLocation(); -// locationClient.startLocation(); -// Log.e(TAG, "initAmap: " + "startLocation"); -// } - - -} diff --git a/app/src/main/java/com/uiui/aios/manager/RemoteManager.java b/app/src/main/java/com/uiui/aios/manager/RemoteManager.java new file mode 100644 index 0000000..40f592b --- /dev/null +++ b/app/src/main/java/com/uiui/aios/manager/RemoteManager.java @@ -0,0 +1,165 @@ +package com.uiui.aios.manager; + +import android.annotation.SuppressLint; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.text.TextUtils; +import android.util.Log; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.tencent.mmkv.MMKV; +import com.uiui.aios.bean.MapBean; +import com.uiui.aios.config.CommonConfig; +import com.uiui.aios.disklrucache.CacheHelper; +import com.uiui.sn.IGetInfoInterface; + +import java.lang.reflect.Type; + +public class RemoteManager { + private static final String TAG = RemoteManager.class.getSimpleName(); + + @SuppressLint("StaticFieldLeak") + private static RemoteManager sInstance; + private Context mContext; + private MMKV mMMKV = MMKV.defaultMMKV(); + private CacheHelper mCacheHelper; + + private IGetInfoInterface getInfoInterface; + private ServiceConnection mIGetInfoConnection; + + + private RemoteManager(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.mCacheHelper = new CacheHelper(context); + mIGetInfoConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.e(TAG, "onServiceConnected: mIGetInfoConnection"); + getInfoInterface = IGetInfoInterface.Stub.asInterface(service); + getLocation(); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + Log.e(TAG, "onServiceDisconnected: mIGetInfoConnection"); + getInfoInterface = null; + bindInfoService(); + } + }; + bindInfoService(); + } + + public static void init(Context context) { + if (sInstance == null) { + Log.e(TAG, "init: "); + sInstance = new RemoteManager(context); + } + } + + public static RemoteManager getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init RemoteManager first"); + } + return sInstance; + } + + private void bindInfoService() { + if (getInfoInterface == null) { + //这是连接aidl服务的代码 + Intent intent = new Intent(); + intent.setAction("com.uiui.sn.IGetInfoInterface"); + intent.setPackage("com.uiui.sn"); + intent.setComponent(new ComponentName("com.uiui.sn", "com.uiui.sn.service.RemoteService")); + mContext.bindService(intent, mIGetInfoConnection, Context.BIND_AUTO_CREATE); + } + } + + public void getLocation() { + if (getInfoInterface != null) { + try { + String jsonString = getInfoInterface.getMapResult(); + mMMKV.encode(CommonConfig.MAP_LOCATION_JSON_KEY, jsonString); + } catch (Exception e) { + Log.e(TAG, "getMapResult: " + e.getMessage()); + } + } else { + bindInfoService(); + } + } + + public MapBean getMapBean() { + String jsonString = mMMKV.decodeString(CommonConfig.MAP_LOCATION_JSON_KEY); + if (TextUtils.isEmpty(jsonString)) { + return null; + } else { + Gson gson = new Gson(); + Type type = new TypeToken() { + }.getType(); + MapBean mapBean = gson.fromJson(jsonString, type); + mMMKV.encode(CommonConfig.MAP_ADDRESS_KEY, mapBean.getAddress() + mapBean.getLocationDescribe()); + mMMKV.encode(CommonConfig.MAP_LONGITUDE_KEY, mapBean.getLongitude()); + mMMKV.encode(CommonConfig.MAP_LATITUDE_KEY, mapBean.getLatitude()); + return mapBean; + } + } + + public String getCity() { + MapBean mapBean = getMapBean(); + if (mapBean == null) { + getLocation(); + return "北京"; + } else { + return mapBean.getCity(); + } + } + + + public String getCityDistrict() { + MapBean mapBean = getMapBean(); + if (mapBean == null) { + getLocation(); + return "北京"; + } else { + return mapBean.getCity() + "\t" + mapBean.getDistrict(); + } + } + + public double getLongitude() { + MapBean mapBean = getMapBean(); + if (mapBean == null) { + getLocation(); + return 0.0; + } else { + return mapBean.getLongitude(); + } + } + + public double getLatitude() { + MapBean mapBean = getMapBean(); + if (mapBean == null) { + getLocation(); + return 0.0; + } else { + return mapBean.getLatitude(); + } + } + + public String getLocationTude() { + MapBean mapBean = getMapBean(); + if (mapBean == null) { + getLocation(); + return "0.0"; + } else { + return mapBean.getLongitude() + "," + mapBean.getLatitude(); + } + } + + +} 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 c44a540..686c21b 100644 --- a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java @@ -182,7 +182,7 @@ public class NetInterfaceManager { public Observable>> getAlarmClockObservable() { return mRetrofit .create(AlarmClockApi.class) - .getAlarmClockApiApi(Utils.getSerial()) + .getAlarmClock(Utils.getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } diff --git a/app/src/main/java/com/uiui/aios/network/api/AlarmClockApi.java b/app/src/main/java/com/uiui/aios/network/api/AlarmClockApi.java index ad5e53d..71543fc 100644 --- a/app/src/main/java/com/uiui/aios/network/api/AlarmClockApi.java +++ b/app/src/main/java/com/uiui/aios/network/api/AlarmClockApi.java @@ -12,7 +12,7 @@ import retrofit2.http.Query; public interface AlarmClockApi { @GET(URLAddress.GET_ALARM_CLOCK) - Observable>> getAlarmClockApiApi( + Observable>> getAlarmClock( @Query("sn") String sn ); } diff --git a/app/src/main/java/com/uiui/aios/receiver/BootReceiver.java b/app/src/main/java/com/uiui/aios/receiver/BootReceiver.java index 7ed83ed..bd097cd 100644 --- a/app/src/main/java/com/uiui/aios/receiver/BootReceiver.java +++ b/app/src/main/java/com/uiui/aios/receiver/BootReceiver.java @@ -70,11 +70,10 @@ public class BootReceiver extends BroadcastReceiver { default: break; case BOOT_COMPLETED: - NetInterfaceManager.getInstance().getAlarmClock(); - Intent alarmIntent = new Intent(MessageReceiver.SET_ALARMCLOCK); - context.sendBroadcast(alarmIntent); +// NetInterfaceManager.getInstance().getAlarmClock(); +// Intent alarmIntent = new Intent(MessageReceiver.SET_ALARMCLOCK); +// context.sendBroadcast(alarmIntent); case Intent.ACTION_BOOT_COMPLETED: - break; case Intent.ACTION_BATTERY_CHANGED: case Intent.ACTION_BATTERY_LOW: 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 55045fe..ce72fcc 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 @@ -50,8 +50,7 @@ import okhttp3.RequestBody; public class MainService extends BaseService implements MainSContact.MainSView, NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = MainService.class.getSimpleName(); - @SuppressLint("StaticFieldLeak") - public static MainSPresenter mPresenter; + public MainSPresenter mPresenter; public MainService() { @@ -64,7 +63,9 @@ public class MainService extends BaseService implements MainSContact.MainSView, @Override public void onConnected(NetworkUtils.NetworkType networkType) { - mPresenter.getAlarmClock(); + if (isScreenOn()) { + mPresenter.getAlarmClock(); + } } @Override @@ -73,7 +74,6 @@ public class MainService extends BaseService implements MainSContact.MainSView, return null; } - @Override public void onCreate() { super.onCreate(); @@ -117,6 +117,12 @@ public class MainService extends BaseService implements MainSContact.MainSView, } + public boolean isScreenOn() { + PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); + //true为打开,false为关闭 + return powerManager.isInteractive(); + } + public static final String ALARMWAKEUP = "ALARM_WAKEUP"; private void registerAlarmReceiver() { @@ -417,7 +423,7 @@ public class MainService extends BaseService implements MainSContact.MainSView, @Download.onTaskComplete void taskComplete(DownloadTask task) { //在这里处理任务完成的状态 - Log.e(TAG, "taskComplete: "+task.getFilePath() ); + Log.e(TAG, "taskComplete: " + task.getFilePath()); } @Download.onTaskFail diff --git a/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java index 2fc1cbb..9550608 100644 --- a/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiui/aios/tpush/MessageReceiver.java @@ -16,6 +16,7 @@ import com.tencent.android.tpush.XGPushClickedResult; import com.tencent.android.tpush.XGPushRegisterResult; import com.tencent.android.tpush.XGPushShowedResult; import com.tencent.android.tpush.XGPushTextMessage; +import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.service.main.MainService; import com.uiui.aios.tpush.common.NotificationService; import com.uiui.aios.tpush.po.XGNotification; @@ -309,6 +310,7 @@ public class MessageReceiver extends XGPushBaseReceiver { switch (title) { case JIGUANG_ALARM_CLOCK: ToastUtil.betaShow("收到推送消息: 设置闹钟"); + NetInterfaceManager.getInstance().getAlarmClock(); Intent intent = new Intent(SET_ALARMCLOCK); mContext.sendBroadcast(intent); break; 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 cfd243e..a50c7b0 100644 --- a/app/src/main/java/com/uiui/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/aios/utils/ApkUtils.java @@ -231,7 +231,7 @@ public class ApkUtils { } } DesktopIcon familyIcon = new DesktopIcon(); - familyIcon.setIcon(context.getDrawable(R.drawable.family_space)); + familyIcon.setIcon(context.getDrawable(R.drawable.icon_family_space)); familyIcon.setLable("家庭空间"); familyIcon.setPackageName("aios.family"); desktopIcons.add(0, familyIcon); @@ -343,6 +343,8 @@ public class ApkUtils { 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) { context.startActivity(intent); return true; diff --git a/app/src/main/res/drawable-hdpi/default_head.png b/app/src/main/res/drawable-hdpi/default_head.png index fd9bca215abbc3ed7fe7924ce5f56cbd5f213be1..4dc3c83f0fec28048082ead05a1811e2512617e9 100644 GIT binary patch delta 20918 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 URR+rEGynhq07*qoM6N<$f}lSbfdBvi delta 2111 zcmZ{mYd8}O8^?D-GDS>sY9!wixF1doySA4j@fi`SfLAL8!xIRE48L@Nx`8Ub^Cb~0m zH#T;EjoL^DR@XxHUI%HQ&gZ@vxOja7%I1Bt?h>k0=8hJm5W)zjwmRB*HUl?D!cV4V zDk&46@+UhddkuHDwp)I6nZ?Ww2s0=!xv3@a>~rBRCtJf8oB12L@!R$R%(I1NYe%9? zXnD$tdAAl0;EKVxmK>$%V(20>oYAAmGG^Y2d}8LwOPJj^n)y)7FEQyjDNjHq|&3)60a}!umq%F?}Re z(kOKQS3GI&j7FQ_(Nh)#dSt+~RF9T8sEy3@k?}hmiIthL3lNAd_<)q$DEn$R9sDT9 zo|^CR!eYH`Kxtl$0bK1RxA586{3i284p-$SueP`;tK1}mQ#ST|Bcz<)*LRVMU!9)pZNej4`CI9L^5cHJA9!|1}%=(DD zhN|{7n4gBEU*vMR4WkJ^2=pX*Uz<8MD$J`LiZ+N#!wYkKtt~9-0(oRj)@t*WYuDsQ zpP3_(R^PLtX#uprK(96ueaBw$WxM=TMa4EVR7`e+u8z)MZ@I~$b-bsi1C>fG|2Vh4 z-YN}jv9~`k-`+Fx?c3uAr|@`uV34>OS}7mg+KuYntzpxslM^5Fsb9SeGct2Km0nYe zeg559d(Sd8VscV_5^!r(whDUaC)x~(lIy7*7Ks}4+-coOiEE3&_h6-x5R}p7LtudJ zzK`WxeJNAZJG`j$Yz9W6UPON~eF%=cGyGZw7prF?<58+8*KZo2x{{t?1~A&Sn62JX z31cLzb+1b?)r{nKaU6u>ptBO`^bjV@{MOnK5QS>dP*ojLmkI1Ng$&Pij1CXKntfS% zeMVxC#)z>sRDjCLim$k4!r#jV*EDlDNzRI5fRlY(92?fm<2F5^@z(dIVNos^b#?XB ztYWBOaB6D&VVwMqb(dE)2y=7sMFvj=Z(a`zNu@uNvYj^G<58zk=oCwqnx(%gRCS?B`<-*7GBV3p(oZ&sZHeJ7se zTyV6vY5Iva-g$dHE8{?6{GOhbzn5BsO+gCLXU}3sYFICqw>R4Qwt)AJFt1;yAxT?= zP(J2E)zGPcgo~GlKmt#!&FczefnAR%>hCBf}<8j?U04g zEzFzqTFlqo$Frmw)f5H@*|f$l(rbe%tJhpaZ=+y8hF8v54@5g6Sl$v4yD-8Fr)A@; z&xH;2q*!1eTH8fcLNR*n5M)R^lgYTKrkwOvqP{<{`C?7FlcvFgJUS;AN97x#sB~S diff --git a/app/src/main/res/drawable-hdpi/family_space.png b/app/src/main/res/drawable-hdpi/icon_family_space.png similarity index 100% rename from app/src/main/res/drawable-hdpi/family_space.png rename to app/src/main/res/drawable-hdpi/icon_family_space.png diff --git a/app/src/main/res/layout-land/activity_code.xml b/app/src/main/res/layout-land/activity_family_space.xml similarity index 96% rename from app/src/main/res/layout-land/activity_code.xml rename to app/src/main/res/layout-land/activity_family_space.xml index f97bda8..90bf84c 100644 --- a/app/src/main/res/layout-land/activity_code.xml +++ b/app/src/main/res/layout-land/activity_family_space.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".activity.code.HealthCodeActivity"> + tools:context=".activity.code.FamilySpaceActivity"> diff --git a/app/src/main/res/layout-port/activity_code.xml b/app/src/main/res/layout-port/activity_family_space.xml similarity index 96% rename from app/src/main/res/layout-port/activity_code.xml rename to app/src/main/res/layout-port/activity_family_space.xml index f97bda8..90bf84c 100644 --- a/app/src/main/res/layout-port/activity_code.xml +++ b/app/src/main/res/layout-port/activity_family_space.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".activity.code.HealthCodeActivity"> + tools:context=".activity.code.FamilySpaceActivity">