diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f4eb803..850eebb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -98,8 +98,7 @@ android:screenOrientation="sensorPortrait" /> + android:launchMode="singleTask" /> 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 edaf521..744fe71 100644 --- a/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java +++ b/app/src/main/java/com/uiui/aios/activity/EmergencyActivity.java @@ -14,14 +14,20 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.tencent.mmkv.MMKV; import com.uiui.aios.R; import com.uiui.aios.bean.BaseResponse; +import com.uiui.aios.bean.SOSSetting; +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; import com.uiui.aios.utils.ToastUtil; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -45,13 +51,15 @@ public class EmergencyActivity extends AppCompatActivity { private String TAG = EmergencyActivity.class.getSimpleName(); private boolean needDial = false; private boolean isCalling = false; - private List phoneListSet; + private List phoneListSet; + private CacheHelper mCacheHelper; @Override protected void onCreate(Bundle savedInstanceState) { Log.e(TAG, "onCreate: "); super.onCreate(savedInstanceState); setContentView(R.layout.activity_emergency); + mCacheHelper = new CacheHelper(this); ButterKnife.bind(this); //发送紧急广播 @@ -66,9 +74,19 @@ public class EmergencyActivity extends AppCompatActivity { // return; // } - String setting_sos = Settings.System.getString(getContentResolver(), "setting_sos"); - if (TextUtils.isEmpty(setting_sos)) return; - phoneListSet = new ArrayList<>(Arrays.asList(setting_sos.split(","))); + String jsonString = mCacheHelper.getAsString(URLAddress.GET_SETTINGS); + //为 "" 是已经请求成功的 + if (jsonString == null) { + return; + } + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List setting_sos = gson.fromJson(jsonString, type); + if (setting_sos == null || setting_sos.size() == 0) { + return; + } + phoneListSet = setting_sos; Log.e(TAG, "onCreate: " + phoneListSet); final Long time = 3L; @@ -111,7 +129,7 @@ public class EmergencyActivity extends AppCompatActivity { }); needDial = true; Intent intent1 = new Intent(Intent.ACTION_CALL); - Uri data = Uri.parse("tel:" + phoneListSet.get(0)); + Uri data = Uri.parse("tel:" + phoneListSet.get(0).getMobile()); intent1.setData(data); startActivity(intent1); isCalling = true; @@ -154,7 +172,8 @@ public class EmergencyActivity extends AppCompatActivity { @Override public void run() { Intent intent1 = new Intent(Intent.ACTION_CALL); - Uri data = Uri.parse("tel:" + phoneListSet.get(0)); + String phone = phoneListSet.get(0).getMobile(); + Uri data = Uri.parse("tel:" + phone); intent1.setData(data); startActivity(intent1); isCalling = true; 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 07fd7f0..72304bb 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 @@ -1,6 +1,7 @@ package com.uiui.aios.activity.main; import android.content.Context; +import android.content.Intent; import android.text.TextUtils; import android.util.Log; @@ -10,6 +11,7 @@ import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.aios.BuildConfig; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.NetDesktopIcon; +import com.uiui.aios.bean.SOSSetting; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.AppUsedTimeUtils; @@ -55,9 +57,11 @@ public class MainPresenter implements MainContact.Presenter { @Override public void getSystemSettings() { NetInterfaceManager.getInstance().getSystemSettings(true, getLifecycle(), new NetInterfaceManager.SosNumberCallback() { - @Override - public void setSosNumber(String json) { + @Override + public void setSosNumber(List setting_sos) { + Intent intent = new Intent("setting_sos"); + mContext.sendBroadcast(intent); } @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 54868ad..af0b397 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 @@ -1,5 +1,6 @@ package com.uiui.aios.activity.weather; +import android.content.res.Configuration; import android.content.res.Resources; import android.view.View; import android.widget.ImageView; @@ -40,10 +41,14 @@ public class WeatherActivity extends BaseActivity implements WeatherContact.Weat mPresenter.attachView(this); mPresenter.setLifecycle(lifecycleSubject); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); - linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); Resources resources = getResources(); + if (resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { + linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); + rv_weather.addItemDecoration(new HorizontalItemDecoration(30, this));//10表示10dp + } else { + linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + } rv_weather.setLayoutManager(linearLayoutManager); - rv_weather.addItemDecoration(new HorizontalItemDecoration(30, this));//10表示10dp // rv_weather.setLayoutManager(new GridLayoutManager(this, 3)); // rv_weather.addItemDecoration(new RecyclerItemDecoration(ScreenUtils.dp2px(resources, 10), ScreenUtils.dp2px(resources, 10), 3)); mWeatherDayApdapter = new WeatherDayApdapter(); diff --git a/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java b/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java index 8cb8f54..ec73c9c 100644 --- a/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java +++ b/app/src/main/java/com/uiui/aios/adapter/SOSNnmberAdapter.java @@ -13,15 +13,16 @@ import androidx.recyclerview.widget.RecyclerView; import com.uiui.aios.R; import com.uiui.aios.activity.EmergencyActivity; +import com.uiui.aios.bean.SOSSetting; import java.util.List; public class SOSNnmberAdapter extends RecyclerView.Adapter { - private List phoneNumberList; + private List phoneNumberList; private Context mContext; - public void setPhoneNumberList(List phoneList) { - this.phoneNumberList = phoneList; + public void setPhoneNumberList(List sosSettingList) { + this.phoneNumberList = sosSettingList; notifyDataSetChanged(); } @@ -35,11 +36,11 @@ public class SOSNnmberAdapter extends RecyclerView.Adapter { Intent intent = new Intent(mContext, EmergencyActivity.class); - intent.putExtra("setting_sos", phone); + intent.putExtra("setting_sos", sosSetting.getMobile()); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); diff --git a/app/src/main/java/com/uiui/aios/bean/SOSSetting.java b/app/src/main/java/com/uiui/aios/bean/SOSSetting.java new file mode 100644 index 0000000..152bc03 --- /dev/null +++ b/app/src/main/java/com/uiui/aios/bean/SOSSetting.java @@ -0,0 +1,64 @@ +package com.uiui.aios.bean; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.JsonParser; + +import java.io.Serializable; + +public class SOSSetting implements Serializable { + private static final long serialVersionUID = 8814155739557674021L; + + int id; + String name;//名称 + int is_urgent;//是否紧急联系人 0否1是 + String mobile;//手机号 + String avatar;//头像 + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getIs_urgent() { + return is_urgent; + } + + public void setIs_urgent(int is_urgent) { + this.is_urgent = is_urgent; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} diff --git a/app/src/main/java/com/uiui/aios/bean/SystemSettings.java b/app/src/main/java/com/uiui/aios/bean/SystemSettings.java index 25c4725..e4c42ce 100644 --- a/app/src/main/java/com/uiui/aios/bean/SystemSettings.java +++ b/app/src/main/java/com/uiui/aios/bean/SystemSettings.java @@ -5,6 +5,7 @@ import com.google.gson.Gson; import com.google.gson.JsonParser; import java.io.Serializable; +import java.util.List; public class SystemSettings implements Serializable { @@ -36,7 +37,7 @@ public class SystemSettings implements Serializable { int qch_restore; int setting_browserInput; int dev_mode; - String setting_sos; + List setting_sos; String setting_volume; String setting_luminance; String setting_typeface; @@ -261,11 +262,11 @@ public class SystemSettings implements Serializable { this.setting_hotspot = setting_hotspot; } - public String getSetting_sos() { + public List getSetting_sos() { return setting_sos; } - public void setSetting_sos(String setting_sos) { + public void setSetting_sos(List setting_sos) { this.setting_sos = setting_sos; } diff --git a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java index 344575b..90d85ef 100644 --- a/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java +++ b/app/src/main/java/com/uiui/aios/fragment/CustomFragment.java @@ -34,6 +34,7 @@ import com.amap.api.location.AMapLocationListener; import com.blankj.utilcode.util.NetworkUtils; import com.bumptech.glide.Glide; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qweather.sdk.bean.base.Code; import com.qweather.sdk.bean.base.Lang; import com.qweather.sdk.bean.base.Unit; @@ -54,12 +55,15 @@ import com.uiui.aios.bean.AlarmClockData; import com.uiui.aios.bean.AlarmItem; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.HealthCode; +import com.uiui.aios.bean.SOSSetting; import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.UserAvatarInfo; import com.uiui.aios.dialog.SingleDialog; +import com.uiui.aios.disklrucache.CacheHelper; import com.uiui.aios.manager.AmapManager; import com.uiui.aios.alarm.AlarmUtils; import com.uiui.aios.network.NetInterfaceManager; +import com.uiui.aios.network.URLAddress; import com.uiui.aios.tpush.MessageReceiver; import com.uiui.aios.utils.ApkUtils; import com.uiui.aios.utils.AppUtil; @@ -69,6 +73,7 @@ import com.uiui.aios.utils.ToastUtil; import com.uiui.aios.utils.Utils; import java.lang.reflect.Method; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -148,6 +153,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private MMKV mMMKV; private Activity mContext; private ContentResolver mCRv; + private CacheHelper mCacheHelper; // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -323,6 +329,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt // Inflate the layout for this fragment rootView = inflater.inflate(R.layout.fragment_custom, container, false); mContext = (Activity) rootView.getContext(); + mCacheHelper = new CacheHelper(mContext); mCRv = mContext.getContentResolver(); ButterKnife.bind(this, rootView); initView(); @@ -442,7 +449,7 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt private void checkSosNumber() { NetInterfaceManager.getInstance().getSystemSettings(new NetInterfaceManager.SosNumberCallback() { @Override - public void setSosNumber(String json) { + public void setSosNumber(List setting_sos) { Intent intent = new Intent(mContext, EmergencyActivity.class); // intent.putExtra("setting_sos", phone); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -565,15 +572,24 @@ public class CustomFragment extends Fragment implements NetworkUtils.OnNetworkSt } public void setSosNumber() { - String setting_sos = Settings.System.getString(mCRv, "setting_sos"); - if (TextUtils.isEmpty(setting_sos)) { -// rv_sos.setVisibility(View.GONE); + String jsonString = mCacheHelper.getAsString(URLAddress.GET_SETTINGS); + //为 "" 是已经请求成功的 + if (jsonString == null) { + // rv_sos.setVisibility(View.GONE); // iv_sos.setVisibility(View.VISIBLE); } else { -// rv_sos.setVisibility(View.VISIBLE); + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List setting_sos = gson.fromJson(jsonString, type); + if (setting_sos == null || setting_sos.size() == 0) { + // rv_sos.setVisibility(View.VISIBLE); // iv_sos.setVisibility(View.GONE); - List phoneList = new ArrayList<>(Arrays.asList(setting_sos.split(","))); - sosNnmberAdapter.setPhoneNumberList(phoneList); + sosNnmberAdapter.setPhoneNumberList(setting_sos); + } else { + // rv_sos.setVisibility(View.GONE); +// iv_sos.setVisibility(View.VISIBLE); + } } } 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 40da500..1b15e36 100644 --- a/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/aios/network/NetInterfaceManager.java @@ -20,6 +20,7 @@ import com.uiui.aios.bean.DemandBean; import com.uiui.aios.bean.GoodsInfo; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.bean.NetDesktopIcon; +import com.uiui.aios.bean.SOSSetting; import com.uiui.aios.bean.SnInfo; import com.uiui.aios.bean.SystemSettings; import com.uiui.aios.bean.UserAvatarInfo; @@ -787,7 +788,7 @@ public class NetInterfaceManager { } public interface SosNumberCallback { - void setSosNumber(String json); + void setSosNumber(List setting_sos); void setEmpty(); @@ -808,10 +809,10 @@ public class NetInterfaceManager { getSystemSettings(lifecycle, callback); } else { Gson gson = new Gson(); - Type type = new TypeToken() { + Type type = new TypeToken>() { }.getType(); - String setting_sos = gson.fromJson(jsonString, type); - if (TextUtils.isEmpty(setting_sos)) { + List setting_sos = gson.fromJson(jsonString, type); + if (setting_sos == null || setting_sos.size() == 0) { if (callback != null) callback.setEmpty(); } else { if (callback != null) callback.setSosNumber(setting_sos); @@ -852,12 +853,12 @@ public class NetInterfaceManager { mMMKV.encode("is_health", systemSettings.getIs_health()); mMMKV.encode("is_shopping", systemSettings.getIs_shopping()); mMMKV.encode("is_info", systemSettings.getIs_info()); - String setting_sos = systemSettings.getSetting_sos(); - if (TextUtils.isEmpty(setting_sos)) { + List setting_sos = systemSettings.getSetting_sos(); + if (setting_sos == null || setting_sos.size() == 0) { mCacheHelper.put(URLAddress.GET_SETTINGS, ""); if (callback != null) callback.setEmpty(); } else { - mCacheHelper.put(URLAddress.GET_SETTINGS, setting_sos); + mCacheHelper.put(URLAddress.GET_SETTINGS, GsonUtils.toJsonString(setting_sos)); if (callback != null) callback.setSosNumber(setting_sos); } } else { @@ -869,11 +870,21 @@ public class NetInterfaceManager { @Override public void onError(@NonNull Throwable e) { Log.e("getSystemSettings", "onError: " + e.getMessage()); - String setting_sos = mCacheHelper.getAsString(URLAddress.GET_SETTINGS); - if (TextUtils.isEmpty(setting_sos)) { + String jsonString = mCacheHelper.getAsString(URLAddress.GET_SETTINGS); + //为 "" 是已经请求成功的 + if (jsonString == null) { if (callback != null) callback.setEmpty(); } else { - if (callback != null) callback.setSosNumber(setting_sos); + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + List setting_sos = gson.fromJson(jsonString, type); + if (setting_sos == null || setting_sos.size() == 0) { + if (callback != null) callback.setEmpty(); + } else { + if (callback != null) callback.setSosNumber(setting_sos); + } + if (callback != null) callback.onComplete(); } onComplete(); } diff --git a/app/src/main/res/layout/item_weather.xml b/app/src/main/res/layout-land/item_weather.xml similarity index 100% rename from app/src/main/res/layout/item_weather.xml rename to app/src/main/res/layout-land/item_weather.xml diff --git a/app/src/main/res/layout-port/item_weather.xml b/app/src/main/res/layout-port/item_weather.xml new file mode 100644 index 0000000..df7047c --- /dev/null +++ b/app/src/main/res/layout-port/item_weather.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d2ba573..9657491 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - 桌面OS + 老人OS系统 Hello blank fragment