From 75214f440a25d17db6b07fa2b9fbcef33404f396 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Mon, 6 Feb 2023 19:00:02 +0800 Subject: [PATCH] =?UTF-8?q?version:2.3=20fix:=20update:=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E6=A8=AA=E5=B1=8F=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AE=B6=E5=BA=AD?= =?UTF-8?q?=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 +- app/src/main/AndroidManifest.xml | 30 +- .../aidl/com/uiuios/sn/IGetInfoInterface.aidl | 31 ++ .../uiuios/aios/activity/ControlActivity.java | 50 +-- .../aios/activity/EmergencyActivity.java | 8 +- .../aios/activity/QuickAppActivity.java | 7 +- ...Activity.java => FamilySpaceActivity.java} | 12 +- ...deContact.java => FamilySpaceContact.java} | 2 +- ...esenter.java => FamilySpacePresenter.java} | 10 +- .../aios/activity/main/MainActivity.java | 3 + .../activity/weather/WeatherPresenter.java | 11 +- .../aios/adapter/AppSelectedAdapter.java | 8 +- .../com/uiuios/aios/base/BaseApplication.java | 9 +- .../java/com/uiuios/aios/bean/MapBean.java | 134 ++++++ .../com/uiuios/aios/config/CommonConfig.java | 9 + .../uiuios/aios/fragment/AppListFragment.java | 5 + .../aios/fragment/custom/CustomFragment.java | 75 ++-- .../aios/fragment/second/SecondFragment.java | 46 +- .../com/uiuios/aios/manager/AmapManager.java | 410 ------------------ .../uiuios/aios/manager/RemoteManager.java | 165 +++++++ .../java/com/uiuios/aios/utils/ApkUtils.java | 18 +- .../java/com/uiuios/aios/utils/JGYUtils.java | 43 ++ .../res/drawable-hdpi/icon_family_space.png | Bin 0 -> 4957 bytes .../main/res/layout-land/activity_code.xml | 40 -- .../res/layout-land/activity_family_space.xml | 84 ++++ .../main/res/layout-port/activity_code.xml | 40 -- .../res/layout-port/activity_family_space.xml | 84 ++++ 27 files changed, 698 insertions(+), 642 deletions(-) create mode 100644 app/src/main/aidl/com/uiuios/sn/IGetInfoInterface.aidl rename app/src/main/java/com/uiuios/aios/activity/code/{HealthCodeActivity.java => FamilySpaceActivity.java} (89%) rename app/src/main/java/com/uiuios/aios/activity/code/{HealthCodeContact.java => FamilySpaceContact.java} (93%) rename app/src/main/java/com/uiuios/aios/activity/code/{HealthCodePresenter.java => FamilySpacePresenter.java} (81%) create mode 100644 app/src/main/java/com/uiuios/aios/bean/MapBean.java create mode 100644 app/src/main/java/com/uiuios/aios/config/CommonConfig.java delete mode 100644 app/src/main/java/com/uiuios/aios/manager/AmapManager.java create mode 100644 app/src/main/java/com/uiuios/aios/manager/RemoteManager.java create mode 100644 app/src/main/java/com/uiuios/aios/utils/JGYUtils.java create mode 100644 app/src/main/res/drawable-hdpi/icon_family_space.png delete mode 100644 app/src/main/res/layout-land/activity_code.xml create mode 100644 app/src/main/res/layout-land/activity_family_space.xml delete mode 100644 app/src/main/res/layout-port/activity_code.xml create mode 100644 app/src/main/res/layout-port/activity_family_space.xml diff --git a/app/build.gradle b/app/build.gradle index 3898b7c..2b1a755 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiuios.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 13 - versionName "2.2" + versionCode 14 + versionName "2.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -195,7 +195,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 e2b8090..98386b1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,9 +22,9 @@ - + - + @@ -34,9 +34,9 @@ - + - + @@ -91,6 +91,7 @@ android:launchMode="singleTask" android:resizeableActivity="true" android:resumeWhilePausing="true" + android:screenOrientation="userLandscape" android:stateNotNeeded="true" android:taskAffinity="com.example.taskaffinity.newtask" android:windowSoftInputMode="adjustPan"> @@ -106,7 +107,7 @@ - - - + + + + + + + + + + + getHideAPP(); + //获取禁止打开的APP + List getForbidAPP(); + + //获取app设置 + String getAppTimeControl(); + //获取整机设置 + String getSnTimeControl(); + //获取系统设置 + String getSetting(); + //获取定位结果 + String getMapResult(); +} diff --git a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java b/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java index 53ad505..182ede7 100644 --- a/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/ControlActivity.java @@ -30,11 +30,10 @@ import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; -import com.baidu.location.BDAbstractLocationListener; -import com.baidu.location.BDLocation; -import com.baidu.location.LocationClient; +import com.tencent.mmkv.MMKV; import com.uiuios.aios.R; -import com.uiuios.aios.manager.AmapManager; +import com.uiuios.aios.config.CommonConfig; +import com.uiuios.aios.manager.RemoteManager; import com.uiuios.aios.utils.BrightnessUtils; import com.uiuios.aios.view.RulerSeekBar; @@ -726,49 +725,18 @@ public class ControlActivity extends AppCompatActivity { }); } - private LocationClient locationClient; - private void getLocation() { - BDLocation bdLocation = AmapManager.getInstance().getNowMapLocation(); - if (bdLocation != null) { - if (bdLocation.getLocType() == BDLocation.TypeGpsLocation // GPS定位结果 - || bdLocation.getLocType() == BDLocation.TypeNetWorkLocation // 网络定位结果 - || bdLocation.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果 - tv_location.setText(bdLocation.getAddrStr()); - } else { - tv_location.setText("未知"); - } + String addr = MMKV.defaultMMKV().decodeString(CommonConfig.MAP_ADDRESS_KEY); + + if (TextUtils.isEmpty(addr)) { + tv_location.setText("未知"); } else { - tv_location.setText("定位失败"); + 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/uiuios/aios/activity/EmergencyActivity.java b/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java index f89baf5..cb3830d 100644 --- a/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/EmergencyActivity.java @@ -18,8 +18,8 @@ import com.tencent.mmkv.MMKV; import com.uiuios.aios.R; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.Contact; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.disklrucache.CacheHelper; -import com.uiuios.aios.manager.AmapManager; import com.uiuios.aios.network.NetInterfaceManager; import com.uiuios.aios.network.URLAddress; import com.uiuios.aios.receiver.BootReceiver; @@ -97,9 +97,9 @@ public class EmergencyActivity extends AppCompatActivity { Log.e(TAG, "accept: " + (time - aLong - 1)); } else { MMKV mmkv = MMKV.defaultMMKV(); - String longitude = mCacheHelper.getAsString(AmapManager.LONGITUDE_KEY); - String latitude = mCacheHelper.getAsString(AmapManager.LATITUDE_KEY); - String address = mCacheHelper.getAsString(AmapManager.ADDRESS_KEY); + String longitude = mCacheHelper.getAsString(CommonConfig.MAP_LONGITUDE_KEY); + String latitude = mCacheHelper.getAsString(CommonConfig.MAP_LATITUDE_KEY); + String address = mCacheHelper.getAsString(CommonConfig.MAP_ADDRESS_KEY); NetInterfaceManager.getInstance() .getSOSRecordObservable(longitude, latitude, address) .subscribe(new Observer() { diff --git a/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java b/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java index bfb9107..49ec0bd 100644 --- a/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/QuickAppActivity.java @@ -22,7 +22,12 @@ import butterknife.BindView; import butterknife.ButterKnife; public class QuickAppActivity extends BaseActivity { - public static final String QUICK_APP_KEY = "QuickAppKey"; + private static final String TAG = QuickAppActivity.class.getSimpleName(); + + public static final String QUICK_APP_KEY = "QuickAppPackageKey"; + public static final String QUICK_APP_REFRESH_KEY = "QuickAppRefreshKey"; + public static final String QUICK_APP_ENABLED_KEY = "QuickAppEnabledKey"; + private AppSelectedAdapter mAppSelectedAdapter; @BindView(R.id.rv_goods) diff --git a/app/src/main/java/com/uiuios/aios/activity/code/HealthCodeActivity.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/activity/code/HealthCodeActivity.java rename to app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java index fa0546d..b8cf038 100644 --- a/app/src/main/java/com/uiuios/aios/activity/code/HealthCodeActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java @@ -23,7 +23,10 @@ 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) @@ -31,21 +34,22 @@ public class HealthCodeActivity extends BaseActivity implements HealthCodeContac @BindView(R.id.iv_nodata) ImageView iv_nodata; - 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(view -> finish()); mHealthCodeAdapter = new HealthCodeAdapter(); mViewPager.setAdapter(mHealthCodeAdapter); scaleCircleNavigator = new ScaleCircleNavigator(this); diff --git a/app/src/main/java/com/uiuios/aios/activity/code/HealthCodeContact.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/activity/code/HealthCodeContact.java rename to app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java index 39ebaaf..dc38ebe 100644 --- a/app/src/main/java/com/uiuios/aios/activity/code/HealthCodeContact.java +++ b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java @@ -6,7 +6,7 @@ import com.uiuios.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/uiuios/aios/activity/code/HealthCodePresenter.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java similarity index 81% rename from app/src/main/java/com/uiuios/aios/activity/code/HealthCodePresenter.java rename to app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java index 2e14a77..24275d7 100644 --- a/app/src/main/java/com/uiuios/aios/activity/code/HealthCodePresenter.java +++ b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java @@ -13,9 +13,9 @@ 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; @@ -29,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/uiuios/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java index dc75f1c..ba0efa3 100644 --- a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java @@ -63,11 +63,14 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { private FragmentManager mFragmentManager; private FragmentTransaction mFragmentTransaction; + private ScaleCircleNavigator scaleCircleNavigator; private BaseFragmentPagerAdapter mBaseFragmentPagerAdapter; + private List mFragments; private CustomFragment mCustomFragment; private SecondFragment mSecondFragment; + private boolean is_twoscreen = false; private int appListIndex = 1; private int defaultCurrent = 0; diff --git a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java index 74ff2e0..a921513 100644 --- a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherPresenter.java +++ b/app/src/main/java/com/uiuios/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.uiuios.aios.manager.AmapManager; +import com.uiuios.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/uiuios/aios/adapter/AppSelectedAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java index 192101a..11f16e1 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/AppSelectedAdapter.java @@ -1,6 +1,8 @@ package com.uiuios.aios.adapter; import android.content.Context; +import android.provider.Settings; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,6 +20,7 @@ import com.uiuios.aios.bean.AppSelectBean; import java.util.List; public class AppSelectedAdapter extends RecyclerView.Adapter { + private static final String TAG = AppSelectedAdapter.class.getSimpleName(); private Context mContext; private List mAppSelectBeans; @@ -53,11 +56,12 @@ public class AppSelectedAdapter extends RecyclerView.Adapter healthCode) { - startActivity(new Intent(mContext, HealthCodeActivity.class)); + startActivity(new Intent(mContext, FamilySpaceActivity.class)); } @Override diff --git a/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java b/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java index 36abaf7..7e123f2 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/second/SecondFragment.java @@ -31,6 +31,7 @@ import com.uiuios.aios.bean.ArticleInfo; import com.uiuios.aios.bean.DemandBean; import com.uiuios.aios.bean.GoodsInfo; import com.uiuios.aios.network.NetInterfaceManager; +import com.uiuios.aios.utils.JGYUtils; import java.text.SimpleDateFormat; import java.util.Date; @@ -119,7 +120,7 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, @BindView(R.id.tv_info_more) TextView tv_info_more; - private android.view.View rootView; + private View rootView; private Context mContext; private ContentResolver mCRv; private SecondPresenter mPresenter; @@ -144,7 +145,9 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, @Override public void onConnected(NetworkUtils.NetworkType networkType) { - initData(); + if (JGYUtils.getInstance().isScreenOn()) { + initData(); + } } public SecondFragment() { @@ -181,12 +184,12 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, @Override public void fetchData() { - + initData(); } @Override - public android.view.View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { // Inflate the layout for this fragment rootView = inflater.inflate(R.layout.fragment_second, container, false); mContext = rootView.getContext(); @@ -196,7 +199,6 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, mPresenter.setLifecycle(lifecycleSubject); ButterKnife.bind(this, rootView); initView(); - initData(); return rootView; } @@ -212,15 +214,15 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, rv_activity.setLayoutManager(new LinearLayoutManager(mContext)); rv_activity.setAdapter(mActivityAdapter); - cl_activity.setOnClickListener(new android.view.View.OnClickListener() { + cl_activity.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(android.view.View view) { + public void onClick(View view) { openApp(0); } }); - cl_demand.setOnClickListener(new android.view.View.OnClickListener() { + cl_demand.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(android.view.View view) { + public void onClick(View view) { openApp(1); } }); @@ -255,16 +257,16 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, NetInterfaceManager.getInstance().getDemandList(true, lifecycleSubject, new NetInterfaceManager.DemandListCallback() { @Override public void setDemandList(List demandBeans) { - cl4.setVisibility(android.view.View.VISIBLE); - iv4.setVisibility(android.view.View.GONE); + cl4.setVisibility(View.VISIBLE); + iv4.setVisibility(View.GONE); DemandBean demandBean = demandBeans.get(0); setDemand(demandBean); } @Override public void noData() { - cl4.setVisibility(android.view.View.GONE); - iv4.setVisibility(android.view.View.VISIBLE); + cl4.setVisibility(View.GONE); + iv4.setVisibility(View.VISIBLE); } @Override @@ -325,10 +327,10 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, @Override public void setGoods(List goodsInfos) { if (goodsInfos != null && goodsInfos.size() != 0) { - iv1.setVisibility(android.view.View.GONE); + iv1.setVisibility(View.GONE); mGoodsAdapter.setGoodsInfoList(goodsInfos); } else { - iv1.setVisibility(android.view.View.VISIBLE); + iv1.setVisibility(View.VISIBLE); } } @@ -336,23 +338,23 @@ public class SecondFragment extends BaseFragment implements SecondContact.View, public void setArticle(List articleInfoList) { if (articleInfoList != null && articleInfoList.size() != 0) { // cl2.setVisibility(View.VISIBLE); - iv2.setVisibility(android.view.View.GONE); + iv2.setVisibility(View.GONE); mArticleAdapter.setArticleBeanList(articleInfoList); } else { // cl2.setVisibility(View.GONE); - iv2.setVisibility(android.view.View.VISIBLE); + iv2.setVisibility(View.VISIBLE); } } @Override public void setActivityList(List activityList) { if (activityList != null && activityList.size() != 0) { -// cl3.setVisibility(android.view.View.VISIBLE); - iv3.setVisibility(android.view.View.GONE); +// cl3.setVisibility(View.VISIBLE); + iv3.setVisibility(View.GONE); mActivityAdapter.setActivityBeans(activityList); } else { -// cl3.setVisibility(android.view.View.GONE); - iv3.setVisibility(android.view.View.VISIBLE); +// cl3.setVisibility(View.GONE); + iv3.setVisibility(View.VISIBLE); } } } diff --git a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java deleted file mode 100644 index d618875..0000000 --- a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java +++ /dev/null @@ -1,410 +0,0 @@ -package com.uiuios.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.uiuios.aios.disklrucache.CacheHelper; -import com.uiuios.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.Hight_Accuracy); // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备,模糊 - 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/uiuios/aios/manager/RemoteManager.java b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java new file mode 100644 index 0000000..fc7697f --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java @@ -0,0 +1,165 @@ +package com.uiuios.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.uiuios.aios.bean.MapBean; +import com.uiuios.aios.config.CommonConfig; +import com.uiuios.aios.disklrucache.CacheHelper; +import com.uiuios.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.uiuios.sn.IGetInfoInterface"); + intent.setPackage("com.uiuios.sn"); + intent.setComponent(new ComponentName("com.uiuios.sn", "com.uiuios.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/uiuios/aios/utils/ApkUtils.java b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java index 50a61e6..aff3da0 100644 --- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java @@ -1,11 +1,9 @@ package com.uiuios.aios.utils; import android.app.PendingIntent; -import android.app.role.RoleManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; @@ -13,9 +11,6 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Binder; import android.os.Build; -import android.os.Process; -import android.os.SystemProperties; -import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -23,6 +18,7 @@ import android.util.Log; import androidx.annotation.RequiresApi; import com.uiuios.aios.BuildConfig; +import com.uiuios.aios.R; import com.uiuios.aios.bean.DesktopIcon; import com.uiuios.aios.receiver.InstallResultReceiver; @@ -33,13 +29,10 @@ import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; -import java.util.concurrent.Executor; -import java.util.function.Consumer; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; @@ -232,6 +225,13 @@ public class ApkUtils { desktopIcons.add(DesktopIcon.creatDesktopIcon(context, applicationInfo)); } } + + DesktopIcon familyIcon = new DesktopIcon(); + familyIcon.setIcon(context.getDrawable(R.drawable.icon_family_space)); + familyIcon.setLable("家庭空间"); + familyIcon.setPackageName("aios.family"); + desktopIcons.add(0, familyIcon); + return desktopIcons; } @@ -334,6 +334,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/java/com/uiuios/aios/utils/JGYUtils.java b/app/src/main/java/com/uiuios/aios/utils/JGYUtils.java new file mode 100644 index 0000000..4f342b7 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/utils/JGYUtils.java @@ -0,0 +1,43 @@ +package com.uiuios.aios.utils; + +import android.annotation.SuppressLint; +import android.content.ContentResolver; +import android.content.Context; +import android.os.PowerManager; + + +public class JGYUtils { + private static final String TAG = JGYUtils.class.getSimpleName(); + + @SuppressLint("StaticFieldLeak") + private static JGYUtils sInstance; + private Context mContext; + private ContentResolver resolver; + + private JGYUtils(Context context) { + if (context == null) { + throw new RuntimeException("Context is NULL"); + } + this.mContext = context; + this.resolver = mContext.getContentResolver(); + } + + public static void init(Context context) { + if (sInstance == null) { + sInstance = new JGYUtils(context); + } + } + + public static JGYUtils getInstance() { + if (sInstance == null) { + throw new IllegalStateException("You must be init JGYUtils first"); + } + return sInstance; + } + + public boolean isScreenOn() { + PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); + //true为打开,false为关闭 + return powerManager.isInteractive(); + } +} diff --git a/app/src/main/res/drawable-hdpi/icon_family_space.png b/app/src/main/res/drawable-hdpi/icon_family_space.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4763947f85a1708db5e07418b3f17b7a07acd1 GIT binary patch literal 4957 zcmaJ_cQ~8v+eVDo6jc;S#A<8ADzOqfDy4X9bP0)3BS@^MYOGjAHMB~V4&|+?D79+T zXsOn$RkgMDrbdllyuWvR$MJpd_Z-i2uj4$=>$>jy`s2EvIIHuf+#I4D3=9n1C^I8# zdY^Li0a@wow8=yTy%QlC+Y@c@uEZdWKaK&3#XI9bC~u4#&KifohWNGObQl-_5D!~> zqCMII?t=GL#2jH1gS~y}Yz77${a{~=izkiluN_~=5GtLq>j53DZ4P93d`_BF)0 zdzg{@aW92+YObxEC0arN-`tyO% zt@&eJ;nqebf7+tYbRq6UqAy%YDJUpNF-TPr@9(Ar)6&v9(oj)Rpd%CrAwEP*u!0Xk z>MsQ&9Kprk!O#Vw~{-L|q8o)BlFx?fbW^58=;kqHmZ|FveF2rl@=r(qBL{ z`u~S|d;g6l5Up|l`1^kf6Kq3#aZ1)W0zSasg?@0ZQb(qI;fDS=3=!{di^qHYwTo8n zcp{$Qj`sx_+Gv2}>^yw1_#lG(A9yqxj`AT8F+MIhl#wokuAu1QfrTp@7^$nkU@DsG zMusq$v5}S*Ov^~)tSZbv`7BaH-RLi_5#A-h8|Op(i;Mk-tNO3pqg3$rrCT<_`FjN7 zuqOU^Z_pnh!#)1p7v+D|`;&|PcVA%t%2lE}qjYqz|Kp(lTB2vq(eUrIrBD7&e4GzG z+x_Wjjax)lF);9Up^T8W!Cx1yaQa^U9&oTU{QM%mj)oP}es6zb@{7-0#hXcn&rN>j z?5gj;DLg##(zB%%=xzfy^XHbStg2vy%rj{oaI*)Hijd(m2eZEqTv6R7d(C6oQqK&g zPo@3L4I8e}bqhjcbFVCpgk2fdl_abrg>7YrcN`9{KUzPWK793f9v+`4ld29?fSyC8 zr+fkz$QDHB@U7h8y1Q{V3#xU#+q{JGwETX28ie0nsC5yVY5kO+%4?B#4;7elQdyNe zkonDUEhN?R>8M3q5USR6&FG_NMg)QzdI_~8ogovZCar9=Cf8bS_Vzm@#lT;-)ex%s z)G`msYIg8o>KBwG&t7_eNe3G!QJ$dOc6Sx>NLfU&Mx2BVs-px$)+i8=BiU3QFEVf!v2qAP%|5q|wc*cfW zQY5 zUc9wuC(1fHmkR#07VBPrdz6LgPQz$s>uo*5jJW-fuY2QyxgFXE{UFSi3?QQHR3 zx>S!HV{$k~KGAXMAG+hcvJD{FoJ+Ayjz#pF0qC6bU}5)+1Kg0#xq$`aP{v8*?VoA3 zBNr|(JL-tr+hUiCeMO70d30lA@;RaXg8jd|p8a|e&(~5ifM{&{SlL{;HRoD&*zmE$ z&A1N`HYsrHdHoQ(s~vzhykyPGW0#a8u?X3nyy{Lm+2hq~kIiJc#26f&BV6$-x}mgd zlKJL_NKOGC-k#GlHi(S@FIarq%C$206Fpe}=EJC;lRGPVS+Seoq)`o;gLl(ryJvCb zb@c}`1U*d>&-VJgTX%|AL)8R4B)}c7w1Ri`F~YKB&bqoeBs6e9_Nh z8+tDT?!?YW;n&M+r+uM)(H7hUc^)0BFjbApwHL0_EPZU@>7y>J0>U;$oiq zRC~|(5uF(-HD=j1uQjQJV!nkg1B>U?_O-Y!pFkHC_TQmopj47gJ_S&5p9|!zzJ_l= zAlG&SmNGj0*Nl>1X*Ay;djOkO+v}LaIi#~g362YdRg3+5d6!uQc6x?8FHs1x5`vm_ z-A}lRX`x zMZM#%7USNa6}HwjxO-Veayqvr9^RbETDm8a7uy7%5KdWkAIW=oIx8qvHt6EE6qI_Q zzrrl5b^q!cCS8BhFSCO!&BaKSI!EACk0I)8Dq8|m)hfJOs;TD5ek=8$3DmiKZfTXH z`Ia1iE3(ON=&l&s4k9|;0YMNi_R=W6@urJ)x_pcB`Pr`eDk5<=Un)cL!)@NVvKDWZ znDXtnUF>g-MfwX819@bYz@Kh#a*YV;}*TMb$|k z-G*pVayn^Dct0cr^kL$C$<{;ph#9S)CWRMYeVUh$406l1*hpeJT!H&ezn%)%e%NR{ zP}lCpJ-q5=%{$-5JhZt}Gih>7o%?5HuR+eaZG%lyZvFVPb}ySQmw^|hZ(M)xb|@BH zpgwz@$YP8pJJ2~qM~cdGjyLGfF`1ZA=cIdHnK6jdi*^$lK})??IlW)6oc(QfUaodk z#&_A0OptC5c95LM?R%hn@toAWZ+2h3gU&=$J?;|RcdcsvLSa&xq~z*4T&W(=5F0HR zikO{i^5opAC6R-z?U^5p5k^GvO-wiZ_#N6?~ag}x1W%Y#%ahMgaS3K2Q#Gnf!f@cuARF;tEsn9W15rE zl}@w_7=HT={_~A3dLvu4e(UFhdpe1)>O2aAKNl*Ov8~M^gC~((@Au%=LvNV=50)MwE$^nr!E##=RFC;S*B;0lGD_gPz$pES9 z`QOpEc?uUR`IYpyz)|yAvBvRrVS~!~S2$kHRLj{IF?6`sRQ!CV7!~89^-}6|!gWmD z{Hc5~S57j#bba7>Fbm#vh}+or&D@FI+R772ebM*poY_mOT%%e%nx8NT67GEXVdlda zu_c(aQJWw}Y6vbG0({PEY`J4F_tl~JuvbOy^>7+0=iwcJijG66sEz#G<)JyLeEr_U zBGYu|mg&egk;beLg_TcN+J|1`WJDWTNVq{xo8~X`wP)#(8MvE^M0rPM{GCF=1u>ED zqPoYT_Q^t4;jeT|Bd7|Tp`;B3ug(2?m^CN`AWjDK_|dMBYd(_mCmLpxf^s$`ExgJu zh|7f!x_w+ccI|ZT4(3 z^V!A=t)-PJtIs2y(g8n%Z;~D#Zi_V~UoO=n!{vYMXde=Gl54V0goyG&roR=3yf@+7 zP#b#D)fdS1aYbIUEo=X4>#ruZq0TP9tQcBb|H53sU?_hx#yQpT)EJ+W_kkTDSh|s>Q!U= z)P<-G+DLtL;C3YVda~|ffT<_7iDIAzyNLy^0wVjQ_(C6khTk2F_?~c9V{T#;#i+ISFPKM^27e$;?Liq!d%$x5|5+XNZ~Wcs$@u-Yg`GC`MF z3-V4x`nRs%pI+{ErX_$lSMF53T{NtlBHuT*jJ?9_FcC+;Cafb89ig&9V$FIHTw`~2 zgh6G@8iDHBhZC2aCEr1V1zq|q)BLJQqSmxd3))>Lrpq7)^RI*C*f97qBg+@^%}MbfU=p*HTy6%D6>m?b;1rLyVFY7qJt8K zndQIf@`tGK$G%g&%^SCPN@6Gl^UNS)%8Mn5aueZC8K6N{xmqQq8XY{%k5dRMJ5Z%m zFTv1@g2Ci{*Hp8-gp$EN0o1TNWuVl#SW0XSdoJf3boXRyqw}S<$#L6jrX`j3FyGoQ zFQJwZ9iIj5+4uZ!>m!q%>BheUe5_cQlyAX4`K|tLR8ZczUQSrlZMOc%mBOhjP=NEH zd;-~4vgoWq_6?m*`xT~zYpHuIt!lG(n zO-q)T9ew*wmip^Xp&)jgq&Sinkcj0);bCcqbqoN8!76+0h=NhgqaR)< - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_family_space.xml b/app/src/main/res/layout-land/activity_family_space.xml new file mode 100644 index 0000000..90bf84c --- /dev/null +++ b/app/src/main/res/layout-land/activity_family_space.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_code.xml b/app/src/main/res/layout-port/activity_code.xml deleted file mode 100644 index f5d8be8..0000000 --- a/app/src/main/res/layout-port/activity_code.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_family_space.xml b/app/src/main/res/layout-port/activity_family_space.xml new file mode 100644 index 0000000..90bf84c --- /dev/null +++ b/app/src/main/res/layout-port/activity_family_space.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file