diff --git a/app/build.gradle b/app/build.gradle index 7321fda..b93cc1f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.uiuios.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 51 - versionName "6.0" + versionCode 52 + versionName "6.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 312b64e..50a6e00 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -192,6 +192,10 @@ android:name=".activity.contact.AddContactActivity" android:launchMode="singleTask" android:screenOrientation="portrait" /> + phoneListSet; - private CacheHelper mCacheHelper; +// 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); +// mCacheHelper = new CacheHelper(this); ButterKnife.bind(this); //发送紧急广播 @@ -75,20 +83,22 @@ public class EmergencyActivity extends AppCompatActivity { // return; // } - String jsonString = mCacheHelper.getAsString(UrlAddress.GET_MAIL_LIST); - //为 "" 是已经请求成功的 - if (jsonString == null) { - return; - } - Gson gson = new Gson(); - Type type = new TypeToken>() { - }.getType(); - List contactList = gson.fromJson(jsonString, type); - if (contactList == null || contactList.size() == 0) { - return; - } - phoneListSet = contactList.stream().filter(contact -> contact.getIs_urgent() == 1).collect(Collectors.toList()); - Log.e(TAG, "onCreate: " + phoneListSet); +// String jsonString = mCacheHelper.getAsString(UrlAddress.GET_MAIL_LIST); +// //为 "" 是已经请求成功的 +// if (jsonString == null) { +// return; +// } +// Gson gson = new Gson(); +// Type type = new TypeToken>() { +// }.getType(); +// List contactList = gson.fromJson(jsonString, type); +// if (contactList == null || contactList.size() == 0) { +// return; +// } + String phone = mMMKV.decodeString(CommonConfig.EMERGENCY_CONTACT_KEY, ""); + +// phoneListSet = new ArrayList(); +// Log.e(TAG, "onCreate: " + phoneListSet); final Long time = 3L; subscribe = Observable.interval(1, TimeUnit.SECONDS) @@ -100,10 +110,9 @@ public class EmergencyActivity extends AppCompatActivity { tv_countdown.setText("倒计时(" + (time - aLong - 1) + ")秒"); Log.e(TAG, "accept: " + (time - aLong - 1)); } else { - MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - String longitude = mCacheHelper.getAsString(CommonConfig.MAP_LONGITUDE_KEY); - String latitude = mCacheHelper.getAsString(CommonConfig.MAP_LATITUDE_KEY); - String address = mCacheHelper.getAsString(CommonConfig.MAP_ADDRESS_KEY); + String longitude = mMMKV.decodeString(CommonConfig.MAP_LONGITUDE_KEY, ""); + String latitude = mMMKV.decodeString(CommonConfig.MAP_LATITUDE_KEY, ""); + String address = mMMKV.decodeString(CommonConfig.MAP_ADDRESS_KEY, ""); NetInterfaceManager.getInstance() .getSOSRecordObservable(longitude, latitude, address) .subscribe(new Observer() { @@ -128,15 +137,21 @@ public class EmergencyActivity extends AppCompatActivity { Log.e("SosRecordApi", "onComplete: "); } }); + needDial = true; + if (TextUtils.isEmpty(phone)) { + Toaster.show("没有设置紧急联系人"); + finish(); + } Intent intent1 = new Intent(Intent.ACTION_CALL); - Uri data = Uri.parse("tel:" + phoneListSet.get(0).getMobile()); + Uri data = Uri.parse("tel:" + phone); intent1.setData(data); startActivity(intent1); isCalling = true; - phoneListSet.remove(0); -// finish(); + +// phoneListSet.remove(0); subscribe.dispose(); + finish(); } }); iv_finish.setOnClickListener(new View.OnClickListener() { @@ -166,36 +181,36 @@ public class EmergencyActivity extends AppCompatActivity { protected void onStart() { super.onStart(); Log.e(TAG, "onResume: "); - Log.e(TAG, "onResume: " + phoneListSet); - if (needDial) { - if (phoneListSet == null || phoneListSet.size() == 0) { - return; - } - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - Intent intent1 = new Intent(Intent.ACTION_CALL); - String phone = phoneListSet.get(0).getMobile(); - Uri data = Uri.parse("tel:" + phone); - intent1.setData(data); - startActivity(intent1); - isCalling = true; - phoneListSet.remove(0); - } - }, 2000); - } else { - if (phoneListSet == null) { - Toaster.show("没有设置紧急联系人"); - finish(); - } - } +// Log.e(TAG, "onResume: " + phoneListSet); +// if (needDial) { +// if (phoneListSet == null || phoneListSet.size() == 0) { +// return; +// } +// new Handler().postDelayed(new Runnable() { +// @Override +// public void run() { +// Intent intent1 = new Intent(Intent.ACTION_CALL); +// String phone = phoneListSet.get(0).getMobile(); +// Uri data = Uri.parse("tel:" + phone); +// intent1.setData(data); +// startActivity(intent1); +// isCalling = true; +// phoneListSet.remove(0); +// } +// }, 2000); +// } else { +// if (phoneListSet == null) { +// Toaster.show("没有设置紧急联系人"); +// finish(); +// } +// } } @Override protected void onDestroy() { super.onDestroy(); Log.e(TAG, "onDestroy: "); - if (subscribe != null) { + if (subscribe != null && !subscribe.isDisposed()) { subscribe.dispose(); subscribe = null; } diff --git a/app/src/main/java/com/uiuios/aios/activity/InformationActivity.java b/app/src/main/java/com/uiuios/aios/activity/InformationActivity.java deleted file mode 100644 index ca3b016..0000000 --- a/app/src/main/java/com/uiuios/aios/activity/InformationActivity.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.uiuios.aios.activity; - -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.google.android.material.tabs.TabLayout; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.ActivityEvent; -import com.uiuios.aios.R; -import com.uiuios.aios.adapter.InformationAdapter; -import com.uiuios.aios.base.BaseDataBindingActivity; -import com.uiuios.aios.bean.ArticleInfo; -import com.uiuios.aios.bean.ArticleList; -import com.uiuios.aios.bean.BaseResponse; -import com.uiuios.aios.bean.CategoryBean; -import com.uiuios.aios.databinding.ActivityInformationBinding; -import com.uiuios.aios.network.NetInterfaceManager; -import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; - -import java.util.HashMap; -import java.util.List; -import java.util.stream.Collectors; - -import butterknife.BindView; -import butterknife.ButterKnife; -import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.core.Observer; -import io.reactivex.rxjava3.disposables.Disposable; - -public class InformationActivity extends BaseDataBindingActivity { - private static final String TAG = InformationActivity.class.getSimpleName(); - - @BindView(R.id.tabLayout) - TabLayout tabLayout; - @BindView(R.id.cl_bar) - ConstraintLayout cl_bar; - @BindView(R.id.rv_video) - RecyclerView rv_video; - @BindView(R.id.cl_nodata) - ConstraintLayout cl_nodata; - - private ActivityInformationBinding mBinding; - private InformationAdapter mInformationAdapter; - - private HashMap mCategoryMap; - - @Override - public boolean setNightMode() { - return true; - } - - @Override - protected void initDataBinding() { - mBinding = DataBindingUtil.setContentView(this, R.layout.activity_information); - } - - @Override - public void initView() { - ButterKnife.bind(this); -// UltimateBarX.statusBarOnly(this) -// .transparent() -// .apply(); - UltimateBarX.addStatusBarTopPadding(cl_bar); - - mInformationAdapter = new InformationAdapter(); - LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(this); - linearLayoutManager1.setOrientation(LinearLayoutManager.VERTICAL); - rv_video.setLayoutManager(linearLayoutManager1); - rv_video.setAdapter(mInformationAdapter); - - mBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { - @Override - public void onTabSelected(TabLayout.Tab tab) { - Log.e(TAG, "onTabSelected: " + tab.getText()); - if (tab.getText() != null && !TextUtils.isEmpty(tab.getText())) { - String text = tab.getText().toString(); - if (mCategoryMap.get(text) != null) { - getArticleList(mCategoryMap.get(text).getId()); - } - } - } - - @Override - public void onTabUnselected(TabLayout.Tab tab) { - Log.e(TAG, "onTabUnselected: " + tab.getText()); - } - - @Override - public void onTabReselected(TabLayout.Tab tab) { - Log.e(TAG, "onTabReselected: " + tab.getText()); - } - }); - } - - @Override - public void initData() { - getCategorys(); - } - - private void getCategorys() { - NetInterfaceManager.getInstance().getCategorysObservable() - .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY)) - .subscribe(new Observer>>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getCategorys", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getCategorys", "onNext: " + listBaseResponse); - if (listBaseResponse.code == 200) { - mBinding.tabLayout.setVisibility(View.VISIBLE); - List categoryList = listBaseResponse.data; - List typeString = categoryList.stream().map(CategoryBean::getName).collect(Collectors.toList()); - String[] type = new String[categoryList.size()]; - type = typeString.toArray(type); - mCategoryMap = new HashMap<>(); - for (int i = 0; i < type.length; i++) { - mCategoryMap.put(type[i], categoryList.get(i)); - TabLayout.Tab tab = mBinding.tabLayout.newTab();//关键的创建一个Tab,注意这里使用的是已经实例的mTablayout创建的Tab,很容易疏忽使用new Tablayout().new Tab()的方式创建,这个是会报错的. - tab.setText(type[i]); - if (i == 0) { - mBinding.tabLayout.addTab(tab, 0, true);//设置选择的item - } else { - mBinding.tabLayout.addTab(tab); - } - } - getArticleList(categoryList.get(0).getId()); - } else { - mBinding.tabLayout.setVisibility(View.GONE); - getArticleList(); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getCategorys", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getCategorys", "onComplete: "); - } - }); - - } - - private void getArticleList() { - NetInterfaceManager.getInstance() - .getArticleListObservable() - .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY)) - .subscribe(getArticleListObserver()); - } - - private void getArticleList(int id) { - NetInterfaceManager.getInstance() - .getArticleListObservable(id) - .compose(RxLifecycle.bindUntilEvent(getLifecycleSubject(), ActivityEvent.DESTROY)) - .subscribe(getArticleListObserver()); - } - - private Observer> getArticleListObserver() { - return new Observer>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getArticle", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse listBaseResponse) { - Log.e("getArticle", "onNext: " + listBaseResponse); - if (listBaseResponse.code == 200) { - ArticleList articleList = listBaseResponse.data; - List articleInfoList = articleList.getData(); - if (articleInfoList != null && articleInfoList.size() != 0) { - articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight())); - mInformationAdapter.setArticleInfos(articleInfoList); - rv_video.setVisibility(View.VISIBLE); - cl_nodata.setVisibility(android.view.View.GONE); - } else { - rv_video.setVisibility(android.view.View.GONE); - cl_nodata.setVisibility(android.view.View.VISIBLE); - } - } else { - rv_video.setVisibility(android.view.View.GONE); - cl_nodata.setVisibility(android.view.View.VISIBLE); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getArticle", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("getArticle", "onComplete: "); - } - }; - } -} diff --git a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java index be9294c..b08de80 100644 --- a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceActivity.java @@ -4,65 +4,71 @@ import android.graphics.Color; import android.view.View; import android.widget.ImageView; -import androidx.databinding.DataBindingUtil; -import androidx.viewpager.widget.ViewPager; +import androidx.lifecycle.Observer; import com.bumptech.glide.Glide; import com.hjq.toast.Toaster; import com.uiuios.aios.R; import com.uiuios.aios.adapter.HealthCodeAdapter; -import com.uiuios.aios.base.BaseDataBindingActivity; +import com.uiuios.aios.base.mvvm.BaseMvvmActivity; import com.uiuios.aios.bean.HealthCode; +import com.uiuios.aios.databinding.ActivityFamilySpaceBinding; import com.uiuios.aios.view.ScaleCircleNavigator; -import net.lucode.hackware.magicindicator.MagicIndicator; import net.lucode.hackware.magicindicator.ViewPagerHelper; import java.util.ArrayList; import java.util.List; -import butterknife.BindView; import butterknife.ButterKnife; -public class FamilySpaceActivity extends BaseDataBindingActivity implements FamilySpaceContact.CodeView { +public class FamilySpaceActivity extends BaseMvvmActivity { - @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; - - private FamilySpacePresenter mPresenter; private HealthCodeAdapter mHealthCodeAdapter; private ScaleCircleNavigator scaleCircleNavigator; + @Override + protected int getLayoutId() { + return R.layout.activity_family_space; + } + @Override protected void initDataBinding() { - DataBindingUtil.setContentView(this, R.layout.activity_family_space); + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new Click()); } @Override public void initView() { - ButterKnife.bind(this); - mPresenter = new FamilySpacePresenter(this); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); - iv_back.setOnClickListener(view -> finish()); mHealthCodeAdapter = new HealthCodeAdapter(); - mViewPager.setAdapter(mHealthCodeAdapter); + mViewDataBinding.viewPager.setAdapter(mHealthCodeAdapter); scaleCircleNavigator = new ScaleCircleNavigator(this); } @Override public void initData() { - mPresenter.getHealthCode(); + mViewModel.getHealthCodeListData().observe(this, new Observer>() { + @Override + public void onChanged(List healthCodes) { + if (healthCodes==null||healthCodes.isEmpty()){ + mViewDataBinding.viewPager.setVisibility(View.GONE); + mViewDataBinding.magicIndicator.setVisibility(View.GONE); + mViewDataBinding.ivNodata.setVisibility(View.VISIBLE); + }else { + setImageViews(healthCodes); + mViewDataBinding.viewPager.setVisibility(View.VISIBLE); + mViewDataBinding.magicIndicator.setVisibility(View.VISIBLE); + mViewDataBinding.ivNodata.setVisibility(View.GONE); + } + } + }); + mViewModel.getHealthCode(); } private void setImageViews(List healthCodes) { - mMagicIndicator.setNavigator(scaleCircleNavigator); + mViewDataBinding.magicIndicator.setNavigator(scaleCircleNavigator); scaleCircleNavigator.setCircleCount(healthCodes.size()); scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY); scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY); @@ -72,7 +78,7 @@ public class FamilySpaceActivity extends BaseDataBindingActivity implements Fami } }); - ViewPagerHelper.bind(mMagicIndicator, mViewPager); + ViewPagerHelper.bind(mViewDataBinding.magicIndicator, mViewDataBinding.viewPager); List imageViews = new ArrayList<>(); for (HealthCode healthCode : healthCodes) { ImageView image = new ImageView(this); @@ -85,23 +91,10 @@ public class FamilySpaceActivity extends BaseDataBindingActivity implements Fami mHealthCodeAdapter.notifyDataSetChanged(); } - @Override - public void setHealthCode(List codeList) { - setImageViews(codeList); - mViewPager.setVisibility(View.VISIBLE); - mMagicIndicator.setVisibility(View.VISIBLE); - iv_nodata.setVisibility(View.GONE); - } + public class Click { + public void exit(View view) { + finish(); + } - @Override - public void setHealthCodeNodata() { - mViewPager.setVisibility(View.GONE); - mMagicIndicator.setVisibility(View.GONE); - iv_nodata.setVisibility(View.VISIBLE); - } - - @Override - public void onError() { - Toaster.show("连接服务器失败,请检查网络连接"); } } diff --git a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java deleted file mode 100644 index 6c952f4..0000000 --- a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceContact.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.uiuios.aios.activity.code; - -import com.uiuios.aios.base.mvp.BasePresenter; -import com.uiuios.aios.base.mvp.BaseView; -import com.uiuios.aios.bean.HealthCode; - -import java.util.List; - -public class FamilySpaceContact { - public interface Presenter extends BasePresenter { - void getHealthCode(); - } - - public interface CodeView extends BaseView { - void setHealthCode(List codeList); - void setHealthCodeNodata(); - void onError(); - } -} diff --git a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java deleted file mode 100644 index 24275d7..0000000 --- a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpacePresenter.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.uiuios.aios.activity.code; - -import android.content.Context; -import android.util.Log; - -import androidx.annotation.NonNull; - -import com.trello.rxlifecycle4.android.ActivityEvent; -import com.uiuios.aios.bean.HealthCode; -import com.uiuios.aios.network.NetInterfaceManager; - -import java.util.List; - -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -public class FamilySpacePresenter implements FamilySpaceContact.Presenter { - private static final String TAG = FamilySpacePresenter.class.getSimpleName(); - private FamilySpaceContact.CodeView mView; - - private Context mContext; - - private BehaviorSubject lifecycle; - - void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - FamilySpacePresenter(Context context) { - this.mContext = context; - Log.e(TAG, "MainPresenter: " + context.getClass()); - } - - - @Override - public void attachView(@NonNull FamilySpaceContact.CodeView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - - - @Override - public void getHealthCode() { - NetInterfaceManager.getInstance().getHealthCode(true, getLifecycle(), new NetInterfaceManager.HealthCodeCallback() { - @Override - public void setHealthCode(List healthCode) { - mView.setHealthCode(healthCode); - } - - @Override - public void noData() { - mView.setHealthCodeNodata(); - } - - @Override - public void onError() { - mView.onError(); - } - }); - } -} diff --git a/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceViewModel.java b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceViewModel.java new file mode 100644 index 0000000..7220bd4 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/code/FamilySpaceViewModel.java @@ -0,0 +1,50 @@ +package com.uiuios.aios.activity.code; + +import androidx.lifecycle.MutableLiveData; + +import com.hjq.toast.Toaster; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.base.mvvm.BaseViewModel; +import com.uiuios.aios.bean.HealthCode; +import com.uiuios.aios.databinding.ActivityFamilySpaceBinding; +import com.uiuios.aios.network.NetInterfaceManager; + +import java.util.List; + +public class FamilySpaceViewModel extends BaseViewModel { + + @Override + public ActivityFamilySpaceBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + private MutableLiveData> mHealthCodeListData = new MutableLiveData<>(); + + public MutableLiveData> getHealthCodeListData() { + return mHealthCodeListData; + } + + public void getHealthCode() { + NetInterfaceManager.getInstance().getHealthCode(true, getLifecycle(), new NetInterfaceManager.HealthCodeCallback() { + @Override + public void setHealthCode(List healthCode) { + mHealthCodeListData.setValue(healthCode); + } + + @Override + public void noData() { + mHealthCodeListData.setValue(null); + } + + @Override + public void onError() { + Toaster.show("连接服务器失败,请检查网络连接"); + } + }); + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java index 8166a74..9ecf5d7 100644 --- a/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/contact/AddWechatContactActivity.java @@ -181,7 +181,7 @@ public class AddWechatContactActivity extends BaseMvvmActivity { + private static final String TAG = EditContactActivity.class.getSimpleName(); + + private LoadingDialog mLoadingDialog; + private String mPictrueFilePath; + private Contact mContact; + + @Override + protected int getLayoutId() { + return R.layout.activity_edit_contact; + } + + @Override + protected void initDataBinding() { + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new BtnClick()); + } + + @Override + protected void initView() { + mLoadingDialog = new LoadingDialog(this); + mLoadingDialog.setLoadingText("正在上传") + .setSuccessText("添加成功") + .setFailedText("添加失败") + .setInterceptBack(true) + .setLoadSpeed(LoadingDialog.Speed.SPEED_TWO) + .closeSuccessAnim() + .closeFailedAnim(); + } + + @Override + protected void initData() { + mViewModel.getBaseResponseMutableLiveData().observe(this, new Observer() { + @Override + public void onChanged(BaseResponse baseResponse) { + if (baseResponse.code == 200) { + mLoadingDialog.loadSuccess(); + mLoadingDialog.close(); + finish(); + } else { + mLoadingDialog.setFailedText(baseResponse.msg); + mLoadingDialog.loadFailed(); + mLoadingDialog.close(); + } + } + }); + + getContactData(); + } + + private void getContactData() { + Intent intent = getIntent(); + if (intent == null) { + return; + } + mContact = (Contact) intent.getSerializableExtra("Contact"); + if (mContact == null) { + return; + } + if (mContact.getIs_urgent() == 1) { + mViewDataBinding.toggleButton.setToggleOn(false); + } else { + mViewDataBinding.toggleButton.setToggleOff(false); + } + Glide.with(this).asBitmap().load(mContact.getAvatar()).error(R.drawable.default_avatar).into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + mPictrueFilePath = bitmapToFile(resource, "avatar").getAbsolutePath(); + Log.e(TAG, "onResourceReady: " + mPictrueFilePath); + } + }); + mViewDataBinding.setContact(mContact); + } + + /** + * bitmap + * + * @param bitmap bitmap + * @param fileName 转换后的文件名 + * @return + */ + public File bitmapToFile(Bitmap bitmap, String fileName) { + String defaultPath = getFilesDir().getAbsolutePath() + "/defaultGoodInfo"; + File file = new File(defaultPath); + if (!file.exists()) { + file.mkdirs(); + } + String defaultImgPath = defaultPath + "/" + fileName; + file = new File(defaultImgPath); + try { + file.createNewFile(); + FileOutputStream fOut = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); +// is.close(); + fOut.flush(); + fOut.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file; + } + + + private void openSelector() { + PictureSelector.create(EditContactActivity.this) + .openGallery(SelectMimeType.ofAll()) + .setSelectionMode(1) + .setImageEngine(GlideEngine.createGlideEngine()) + .forResult(new OnResultCallbackListener() { + @Override + public void onResult(ArrayList result) { + mPictrueFilePath = result.get(0).getRealPath(); + File file = new File(mPictrueFilePath); + if (file.exists()) { + RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtil.dip2px(EditContactActivity.this, 8F))); + Glide.with(mViewDataBinding.nvAvatar).load(file).apply(options).into(mViewDataBinding.nvAvatar); + } else { + mPictrueFilePath = ""; + } + } + + @Override + public void onCancel() { + Log.e(TAG, "onCancel: "); + } + }); + } + + private void checkContact() { + String name = mViewDataBinding.etName.getText().toString(); + if (TextUtils.isEmpty(name)) { + Toaster.show("请输入联系人姓名"); + return; + } + String phone = mViewDataBinding.etPhone.getText().toString(); + if (TextUtils.isEmpty(phone)) { + Toaster.show("请输入手机号码"); + return; + } + String groupTag = mViewDataBinding.etGroup.getText().toString(); + if (TextUtils.isEmpty(groupTag)) { + Toaster.show("请输入微信群组标签"); + return; + } + File avatarFile; + Log.e("checkContact", "mPictrueFilePath: " + mPictrueFilePath); + if (TextUtils.isEmpty(mPictrueFilePath)) { + avatarFile = drawableToFile(R.drawable.default_avatar, "avatar"); + } else { + Uri uri = Uri.parse(mPictrueFilePath); + avatarFile = uriToFile(uri, EditContactActivity.this); + } + MediaType mediaType = MediaType.Companion.parse("image/png"); + RequestBody requestBody = RequestBody.Companion.create(avatarFile, mediaType); + MultipartBody.Part body = MultipartBody.Part.createFormData("avatar", avatarFile.getName(), requestBody); + Map params = new HashMap<>(); + params.put("sn", RemoteManager.getInstance().getSerial()); + params.put("id", mContact.getId()); + params.put("name", name); + params.put("mobile", phone); + params.put("tag", groupTag); + params.put("is_urgent", String.valueOf(mViewDataBinding.toggleButton.isToggleOn())); + mViewModel.editContact(params, body); + mLoadingDialog.show(); + } + + /** + * drawable转为file + * + * @param drawableId drawable的ID + * @param fileName 转换后的文件名 + * @return + */ + public File drawableToFile(int drawableId, String fileName) { +// InputStream is = view.getContext().getResources().openRawResource(R.drawable.logo); + Bitmap bitmap = BitmapFactory.decodeResource(getResources(), drawableId); +// Bitmap bitmap = BitmapFactory.decodeStream(is); + String defaultPath = getFilesDir().getAbsolutePath() + "/defaultGoodInfo"; + File file = new File(defaultPath); + if (!file.exists()) { + file.mkdirs(); + } + String defaultImgPath = defaultPath + "/" + fileName; + file = new File(defaultImgPath); + try { + file.createNewFile(); + FileOutputStream fOut = new FileOutputStream(file); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); +// is.close(); + fOut.flush(); + fOut.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return file; + } + + public static File uriToFile(Uri uri, Context context) { + String path = null; + if ("file".equals(uri.getScheme())) { + path = uri.getEncodedPath(); + if (path != null) { + path = Uri.decode(path); + ContentResolver cr = context.getContentResolver(); + StringBuffer buff = new StringBuffer(); + buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")"); + Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA}, buff.toString(), null, null); + int index = 0; + int dataIdx = 0; + for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) { + index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID); + index = cur.getInt(index); + dataIdx = cur.getColumnIndex(MediaStore.Images.ImageColumns.DATA); + path = cur.getString(dataIdx); + } + cur.close(); + if (index == 0) { + } else { + Uri u = Uri.parse("content://media/external/images/media/" + index); + System.out.println("temp uri is :" + u); + } + } + if (path != null) { + return new File(path); + } + } else if ("content".equals(uri.getScheme())) { + // 4.2.2以后 + String[] proj = {MediaStore.Images.Media.DATA}; + Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null); + if (cursor.moveToFirst()) { + int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + path = cursor.getString(columnIndex); + } + cursor.close(); + + return new File(path); + } else { + Log.e(TAG, "uriToFile uriString:" + uri.toString()); + return new File(uri.toString()); + } + return null; + } + + public class BtnClick { + public void exit(View view) { + finish(); + } + + public void selectPic(View v) { + openSelector(); + } + + public void confirm(View v) { + checkContact(); + } + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/contact/EditContactViewModel.java b/app/src/main/java/com/uiuios/aios/activity/contact/EditContactViewModel.java new file mode 100644 index 0000000..474cb73 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/contact/EditContactViewModel.java @@ -0,0 +1,70 @@ +package com.uiuios.aios.activity.contact; + +import android.util.Log; + +import androidx.lifecycle.MutableLiveData; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.base.mvvm.BaseViewModel; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.databinding.ActivityEditContactBinding; +import com.uiuios.aios.network.NetInterfaceManager; + +import java.util.Map; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; +import okhttp3.MultipartBody; + +public class EditContactViewModel extends BaseViewModel { + + @Override + public ActivityEditContactBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + private MutableLiveData mBaseResponseMutableLiveData = new MutableLiveData<>(); + + public MutableLiveData getBaseResponseMutableLiveData() { + return mBaseResponseMutableLiveData; + } + + public void editContact(Map params, MultipartBody.Part body) { + NetInterfaceManager.getInstance() + .getMailListEditObservable(params, body) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("editContact", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("editContact", "onNext: " + baseResponse); + mBaseResponseMutableLiveData.setValue(baseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("editContact", "onError: " + e.getMessage()); + BaseResponse baseResponse = new BaseResponse(); + baseResponse.code = 404; + baseResponse.msg = "网络连接失败"; + mBaseResponseMutableLiveData.setValue(baseResponse); + } + + @Override + public void onComplete() { + Log.e("editContact", "onComplete: "); + } + }); + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/information/InformationActivity.java b/app/src/main/java/com/uiuios/aios/activity/information/InformationActivity.java new file mode 100644 index 0000000..cfa99f7 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/information/InformationActivity.java @@ -0,0 +1,160 @@ +package com.uiuios.aios.activity.information; + +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.databinding.DataBindingUtil; +import androidx.lifecycle.Observer; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.tabs.TabLayout; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.R; +import com.uiuios.aios.adapter.InformationAdapter; +import com.uiuios.aios.base.BaseDataBindingActivity; +import com.uiuios.aios.base.mvvm.BaseMvvmActivity; +import com.uiuios.aios.bean.ArticleInfo; +import com.uiuios.aios.bean.ArticleList; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.CategoryBean; +import com.uiuios.aios.databinding.ActivityInformationBinding; +import com.uiuios.aios.network.NetInterfaceManager; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +import butterknife.BindView; +import butterknife.ButterKnife; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.disposables.Disposable; + +public class InformationActivity extends BaseMvvmActivity { + private static final String TAG = InformationActivity.class.getSimpleName(); + + + private InformationAdapter mInformationAdapter; + + private HashMap mCategoryMap; + + @Override + public boolean setNightMode() { + return true; + } + + @Override + protected int getLayoutId() { + return R.layout.activity_information; + } + + @Override + protected void initDataBinding() { + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new Click()); + } + + @Override + public void initView() { +// UltimateBarX.statusBarOnly(this) +// .transparent() +// .apply(); + UltimateBarX.addStatusBarTopPadding(mViewDataBinding.clBar); + + mInformationAdapter = new InformationAdapter(); + LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(this); + linearLayoutManager1.setOrientation(LinearLayoutManager.VERTICAL); + mViewDataBinding.rvVideo.setLayoutManager(linearLayoutManager1); + mViewDataBinding.rvVideo.setAdapter(mInformationAdapter); + + mViewDataBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + Log.e(TAG, "onTabSelected: " + tab.getText()); + if (tab.getText() != null && !TextUtils.isEmpty(tab.getText())) { + String text = tab.getText().toString(); + if (mCategoryMap.get(text) != null) { + mViewModel.getArticleList(mCategoryMap.get(text).getId()); + } + } + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + Log.e(TAG, "onTabUnselected: " + tab.getText()); + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + Log.e(TAG, "onTabReselected: " + tab.getText()); + } + }); + } + + @Override + public void initData() { + mViewModel.getCategoryBeanListData().observe(this, new Observer>() { + @Override + public void onChanged(List categoryBeans) { + if (categoryBeans != null && !categoryBeans.isEmpty()) { + mViewDataBinding.tabLayout.setVisibility(View.VISIBLE); + List typeString = categoryBeans.stream().map(CategoryBean::getName).collect(Collectors.toList()); + String[] type = new String[categoryBeans.size()]; + type = typeString.toArray(type); + mCategoryMap = new HashMap<>(); + for (int i = 0; i < type.length; i++) { + mCategoryMap.put(type[i], categoryBeans.get(i)); + TabLayout.Tab tab = mViewDataBinding.tabLayout.newTab();//关键的创建一个Tab,注意这里使用的是已经实例的mTablayout创建的Tab,很容易疏忽使用new Tablayout().new Tab()的方式创建,这个是会报错的. + tab.setText(type[i]); + if (i == 0) { + mViewDataBinding.tabLayout.addTab(tab, 0, true);//设置选择的item + } else { + mViewDataBinding.tabLayout.addTab(tab); + } + } + mViewModel.getArticleList(categoryBeans.get(0).getId()); + } else { + mViewDataBinding.tabLayout.setVisibility(View.GONE); + mViewModel. getArticleList(); + } + } + }); + + mViewModel.getArticleListData().observe(this, new Observer() { + @Override + public void onChanged(ArticleList articleList) { + if (articleList!=null) { + List articleInfoList = articleList.getData(); + if (articleInfoList != null && articleInfoList.size() != 0) { + articleInfoList.sort((o1, o2) -> Integer.compare(o2.getWeight(), o1.getWeight())); + mInformationAdapter.setArticleInfos(articleInfoList); + mViewDataBinding.rvVideo.setVisibility(View.VISIBLE); + mViewDataBinding.clNodata.setVisibility(android.view.View.GONE); + } else { + mViewDataBinding.rvVideo.setVisibility(android.view.View.GONE); + mViewDataBinding.clNodata.setVisibility(android.view.View.VISIBLE); + } + } else { + mViewDataBinding.rvVideo.setVisibility(android.view.View.GONE); + mViewDataBinding.clNodata.setVisibility(android.view.View.VISIBLE); + } + } + }); + + mViewModel.getCategorys(); + } + + + public class Click { + public void exit(View view) { + finish(); + } + + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/information/InformationViewModel.java b/app/src/main/java/com/uiuios/aios/activity/information/InformationViewModel.java new file mode 100644 index 0000000..042fd4c --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/activity/information/InformationViewModel.java @@ -0,0 +1,122 @@ +package com.uiuios.aios.activity.information; + +import android.util.Log; + +import androidx.lifecycle.MutableLiveData; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.base.mvvm.BaseViewModel; +import com.uiuios.aios.bean.ArticleList; +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.CategoryBean; +import com.uiuios.aios.databinding.ActivityInformationBinding; +import com.uiuios.aios.network.NetInterfaceManager; + +import java.util.List; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +public class InformationViewModel extends BaseViewModel { + + @Override + public ActivityInformationBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + private MutableLiveData> mCategoryBeanListData = new MutableLiveData<>(); + + public MutableLiveData> getCategoryBeanListData() { + return mCategoryBeanListData; + } + + public void getCategorys() { + NetInterfaceManager.getInstance().getCategorysObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getCategorys", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getCategorys", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + List categoryList = listBaseResponse.data; + mCategoryBeanListData.setValue(categoryList); + } else { + mCategoryBeanListData.setValue(null); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getCategorys", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getCategorys", "onComplete: "); + } + }); + + } + + public void getArticleList() { + NetInterfaceManager.getInstance() + .getArticleListObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(getArticleListObserver()); + } + + public void getArticleList(int id) { + NetInterfaceManager.getInstance() + .getArticleListObservable(id) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(getArticleListObserver()); + } + + private MutableLiveData mArticleListData = new MutableLiveData<>(); + + public MutableLiveData getArticleListData() { + return mArticleListData; + } + + private Observer> getArticleListObserver() { + return new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getArticleListObserver", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse listBaseResponse) { + Log.e("getArticleListObserver", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + ArticleList articleList = listBaseResponse.data; + mArticleListData.setValue(articleList); + } else { + mArticleListData.setValue(null); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getArticleListObserver", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getArticleListObserver", "onComplete: "); + } + }; + } +} diff --git a/app/src/main/java/com/uiuios/aios/activity/location/LocationAcivity.java b/app/src/main/java/com/uiuios/aios/activity/location/LocationAcivity.java index b8e6473..f7f562a 100644 --- a/app/src/main/java/com/uiuios/aios/activity/location/LocationAcivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/location/LocationAcivity.java @@ -11,20 +11,18 @@ import android.view.View; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; import android.widget.TextView; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.databinding.DataBindingUtil; +import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import com.uiuios.aios.R; import com.uiuios.aios.adapter.CityAdapter; import com.uiuios.aios.adapter.DistrictAdapter; -import com.uiuios.aios.base.BaseDataBindingActivity; +import com.uiuios.aios.base.mvvm.BaseMvvmActivity; import com.uiuios.aios.bean.AddressBean; +import com.uiuios.aios.databinding.ActivityLocationBinding; import com.uiuios.aios.manager.AmapManager; import com.uiuios.aios.view.RecyclerViewSpacesItemDecoration; @@ -34,24 +32,7 @@ import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; -import butterknife.BindView; -import butterknife.ButterKnife; - -public class LocationAcivity extends BaseDataBindingActivity implements LocationContact.LocationView, CityAdapter.CityCallback, DistrictAdapter.DistrictCallback { - - @BindView(R.id.bg) - ConstraintLayout bg; - @BindView(R.id.root) - ConstraintLayout root; - @BindView(R.id.rv_area) - RecyclerView rv_area; - - @BindView(R.id.edit_search) - EditText edit_search; - @BindView(R.id.rv_city) - RecyclerView rv_city; - @BindView(R.id.cl_location) - ConstraintLayout cl_location; +public class LocationAcivity extends BaseMvvmActivity implements CityAdapter.CityCallback, DistrictAdapter.DistrictCallback { private List popularCities = new ArrayList() {{ this.add(new AddressBean("北京")); @@ -73,16 +54,24 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location this.add(new AddressBean("厦门")); }}; - private LocationPresenter mPresenter; private CityAdapter mCityAdapter; private DistrictAdapter mDistrictAdapter; private List mDistrict; private AddressBean mAddressBean; + + @Override + protected int getLayoutId() { + return R.layout.activity_location; + } + @Override protected void initDataBinding() { - DataBindingUtil.setContentView(this, R.layout.activity_location); + mViewModel.setCtx(this); + mViewModel.setVDBinding(mViewDataBinding); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewDataBinding.setClick(new Click()); } /** @@ -90,32 +79,9 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location */ @Override public void initView() { - ButterKnife.bind(this); - mPresenter = new LocationPresenter(this); - mPresenter.attachView(this); - mPresenter.setLifecycle(getLifecycleSubject()); - bg.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }); - root.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - rv_area.setVisibility(View.GONE); - } - }); - cl_location.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - mAddressBean = new AddressBean(AmapManager.getInstance().getDistrict()); - setIntent(); - } - }); - edit_search.setImeOptions(EditorInfo.IME_ACTION_SEARCH); - edit_search.setInputType(EditorInfo.TYPE_CLASS_TEXT); - edit_search.setOnEditorActionListener(new TextView.OnEditorActionListener() { + mViewDataBinding.editSearch.setImeOptions(EditorInfo.IME_ACTION_SEARCH); + mViewDataBinding.editSearch.setInputType(EditorInfo.TYPE_CLASS_TEXT); + mViewDataBinding.editSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEND || @@ -128,7 +94,7 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(LocationAcivity.this.getCurrentFocus() .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); - String text = edit_search.getText().toString(); + String text = mViewDataBinding.editSearch.getText().toString(); checkContent(text); } return true; @@ -139,13 +105,36 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location return false; } }); + + HashMap stringIntegerHashMap = new HashMap<>(); + WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 4));//top间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 4));//底部间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 4));//左间距 + stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 4));//右间距 + mViewDataBinding.rvCity.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); + mCityAdapter = new CityAdapter(); + mCityAdapter.setCityList(popularCities); + mCityAdapter.setCityCallback(this::onCitySelected); + mViewDataBinding.rvCity.setLayoutManager(new GridLayoutManager(this, 3)); + mViewDataBinding.rvCity.setAdapter(mCityAdapter); + + mDistrictAdapter = new DistrictAdapter(); + mDistrictAdapter.setDistrictCallback(this::onDistrictSelected); + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); + linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + mViewDataBinding.rvArea.setLayoutManager(linearLayoutManager); + mViewDataBinding.rvArea.setAdapter(mDistrictAdapter); } private void checkContent(String text) { if (TextUtils.isEmpty(text)) { - rv_area.setVisibility(View.GONE); + mViewDataBinding.rvArea.setVisibility(View.GONE); } else { - rv_area.setVisibility(View.VISIBLE); + mViewDataBinding.rvArea.setVisibility(View.VISIBLE); List area = mDistrict.stream().filter(new Predicate() { @Override public boolean test(AddressBean addressBean) { @@ -161,42 +150,19 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location */ @Override public void initData() { - HashMap stringIntegerHashMap = new HashMap<>(); - WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics dm = new DisplayMetrics(); - wm.getDefaultDisplay().getRealMetrics(dm); - float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) - stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION, (int) (density * 4));//top间距 - stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION, (int) (density * 4));//底部间距 - stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION, (int) (density * 4));//左间距 - stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION, (int) (density * 4));//右间距 - rv_city.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap)); - mCityAdapter = new CityAdapter(); - mCityAdapter.setCityList(popularCities); - mCityAdapter.setCityCallback(this::onCitySelected); - rv_city.setLayoutManager(new GridLayoutManager(this, 3)); - rv_city.setAdapter(mCityAdapter); - - mDistrictAdapter = new DistrictAdapter(); - mDistrictAdapter.setDistrictCallback(this::onDistrictSelected); - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - rv_area.setLayoutManager(linearLayoutManager); - rv_area.setAdapter(mDistrictAdapter); - - mPresenter.initJsonData(); + mViewModel.getAddressBeanListData().observe(this, new Observer>() { + @Override + public void onChanged(List addressBeans) { + mDistrict = addressBeans; + mDistrictAdapter.setDistrict(addressBeans); + } + }); + mViewModel.initJsonData(); } @Override protected void onDestroy() { super.onDestroy(); - mPresenter.detachView(); - } - - @Override - public void setJsonData(List area) { - this.mDistrict = area; - mDistrictAdapter.setDistrict(area); } @Override @@ -222,4 +188,21 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location // 结束当前页面 finish(); } + + + public class Click { + public void exit(View view) { + finish(); + } + + public void hideArea(View view){ + mViewDataBinding.rvArea.setVisibility(View.GONE); + } + + public void setLocal(View view){ + mAddressBean = new AddressBean(AmapManager.getInstance().getDistrict()); + setIntent(); + } + } + } diff --git a/app/src/main/java/com/uiuios/aios/activity/location/LocationContact.java b/app/src/main/java/com/uiuios/aios/activity/location/LocationContact.java deleted file mode 100644 index 7c69e30..0000000 --- a/app/src/main/java/com/uiuios/aios/activity/location/LocationContact.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.uiuios.aios.activity.location; - -import com.uiuios.aios.base.mvp.BasePresenter; -import com.uiuios.aios.base.mvp.BaseView; -import com.uiuios.aios.bean.AddressBean; - -import java.util.List; - -public class LocationContact { - interface Presenter extends BasePresenter { - void initJsonData(); - } - - public interface LocationView extends BaseView { - void setJsonData(List area); - } -} diff --git a/app/src/main/java/com/uiuios/aios/activity/location/LocationPresenter.java b/app/src/main/java/com/uiuios/aios/activity/location/LocationViewModel.java similarity index 79% rename from app/src/main/java/com/uiuios/aios/activity/location/LocationPresenter.java rename to app/src/main/java/com/uiuios/aios/activity/location/LocationViewModel.java index 52e9820..13f26d4 100644 --- a/app/src/main/java/com/uiuios/aios/activity/location/LocationPresenter.java +++ b/app/src/main/java/com/uiuios/aios/activity/location/LocationViewModel.java @@ -1,12 +1,15 @@ package com.uiuios.aios.activity.location; -import android.content.Context; import android.util.Log; +import androidx.lifecycle.MutableLiveData; + import com.google.gson.Gson; import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiuios.aios.base.mvvm.BaseViewModel; import com.uiuios.aios.bean.AddressBean; import com.uiuios.aios.bean.JsonBean; +import com.uiuios.aios.databinding.ActivityLocationBinding; import com.uiuios.aios.gson.GetJsonDataUtil; import org.json.JSONArray; @@ -22,54 +25,40 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe; 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 LocationPresenter implements LocationContact.Presenter { - private Context mContext; +public class LocationViewModel extends BaseViewModel { - - LocationPresenter(Context context) { - this.mContext = context; - } - - private LocationContact.LocationView mView; - - private BehaviorSubject lifecycle; - - public void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; + @Override + public ActivityLocationBinding getVDBinding() { + return binding; } @Override - public void attachView(LocationContact.LocationView view) { - this.mView = view; + public void onDestroy() { + } - @Override - public void detachView() { - this.mView = null; + private MutableLiveData> mAddressBeanListData =new MutableLiveData<>(); + + public MutableLiveData> getAddressBeanListData() { + return mAddressBeanListData; } - - @Override public void initJsonData() { + if (getCtx() == null) return; long time = System.currentTimeMillis(); Observable.create(new ObservableOnSubscribe>() { @Override public void subscribe(@NonNull ObservableEmitter> emitter) throws Throwable { List areaList = new ArrayList<>(); - String JsonData = new GetJsonDataUtil().getJson(mContext, "province.json");//获取assets目录下的json文件数据 + String JsonData = new GetJsonDataUtil().getJson(getCtx(), "province.json");//获取assets目录下的json文件数据 ArrayList jsonBeanList = parseData(JsonData);//用Gson 转成实体 for (JsonBean jsonBean : jsonBeanList) {//遍历省份 String province = jsonBean.getName(); for (JsonBean.CityBean cityBean : jsonBean.getCityList()) {//遍历该省份的所有城市 String city = cityBean.getName(); for (String district : cityBean.getArea()) {//遍历该省份的所有城市 - areaList.add(new AddressBean(province , city , district)); + areaList.add(new AddressBean(province, city, district)); } } } @@ -87,7 +76,7 @@ public class LocationPresenter implements LocationContact.Presenter { public void onNext(List s) { Log.e("initJsonData", "onNext: "); Log.e("initJsonData", "initdatetime = " + (System.currentTimeMillis() - time) + "ms"); - mView.setJsonData(s); + mAddressBeanListData.setValue(s); } @Override 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 f2ad5fa..afee0ee 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 @@ -28,6 +28,7 @@ import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.Observer; import com.alarmclock.uiui.IAlarmAidlInterface; +import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.hjq.permissions.OnPermissionCallback; @@ -81,7 +82,7 @@ public class MainActivity extends BaseMvvmActivity(desktopIcons.subList(x, i))); mFragments.add(appListFragment); x = i; - } else if (i == desktopIcons.size()) { + } else if (i != 0 &&i == desktopIcons.size()) { AppListFragment appListFragment = new AppListFragment(); - mFragments.add(appListFragment); appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i))); + mFragments.add(appListFragment); } } @@ -217,10 +219,10 @@ public class MainActivity extends BaseMvvmActivity(desktopIcons.subList(x, i))); mFragments.add(appListFragment); x = i; - } else if (i == desktopIcons.size()) { + } else if (i != 0 &&i == desktopIcons.size()) { AppListFragment appListFragment = new AppListFragment(); - mFragments.add(appListFragment); appListFragment.setAppList(new ArrayList<>(desktopIcons.subList(x, i))); + mFragments.add(appListFragment); } } } @@ -310,7 +312,7 @@ public class MainActivity extends BaseMvvmActivity(applicationInfoList.subList(x, i))); fragmentList.add(appListFragment); x = i; - } else if (i == applicationInfoList.size()) { + } else if (i != 0 &&i == applicationInfoList.size()) { Log.e(TAG, "addData: i == size"); AppListFragment appListFragment = new AppListFragment(); appListFragment.setAppList(new ArrayList<>(applicationInfoList.subList(x, i))); diff --git a/app/src/main/java/com/uiuios/aios/activity/main/MainViewModel.java b/app/src/main/java/com/uiuios/aios/activity/main/MainViewModel.java index b685a4a..f0a6d3f 100644 --- a/app/src/main/java/com/uiuios/aios/activity/main/MainViewModel.java +++ b/app/src/main/java/com/uiuios/aios/activity/main/MainViewModel.java @@ -6,6 +6,7 @@ import android.util.Log; import androidx.lifecycle.MutableLiveData; import com.google.gson.JsonObject; +import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiuios.aios.BuildConfig; @@ -13,6 +14,8 @@ import com.uiuios.aios.base.mvvm.BaseViewModel; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.DesktopIcon; import com.uiuios.aios.bean.NetDesktopIcon; +import com.uiuios.aios.bean.SnInfo; +import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.databinding.PhoneActivityMainBinding; import com.uiuios.aios.manager.AppManager; import com.uiuios.aios.manager.RemoteManager; @@ -35,6 +38,8 @@ import io.reactivex.rxjava3.schedulers.Schedulers; public class MainViewModel extends BaseViewModel { private static final String TAG = MainViewModel.class.getSimpleName(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + @Override public PhoneActivityMainBinding getVDBinding() { return binding; @@ -45,6 +50,44 @@ public class MainViewModel extends BaseViewModel mSnInfoData = new MutableLiveData<>(); + + public MutableLiveData getSnInfoData() { + return mSnInfoData; + } + + public void getSnInfo() { + NetInterfaceManager.getInstance().getSnInfoControl() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getSnInfo", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse snInfoBaseResponse) { + Log.e("getSnInfo", "onNext: " + snInfoBaseResponse); + if (snInfoBaseResponse.code == 200) { + SnInfo snInfo = snInfoBaseResponse.data; + mMMKV.encode(CommonConfig.EMERGENCY_CONTACT_KEY, snInfo.getMobile()); + } + mSnInfoData.setValue(snInfoBaseResponse.data); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getSnInfo", "onError: "); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getSnInfo", "onComplete: "); + } + }); + } + private MutableLiveData> mDesktopIconData = new MutableLiveData<>(); public MutableLiveData> getDesktopIconData() { diff --git a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherActivity.java b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherActivity.java index f100819..2e99fdf 100644 --- a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherActivity.java @@ -32,6 +32,7 @@ import com.uiuios.aios.adapter.WeatherDayApdapterPort; import com.uiuios.aios.base.mvvm.BaseMvvmActivity; import com.uiuios.aios.bean.JsonBean; import com.uiuios.aios.bean.MapGeoResult; +import com.uiuios.aios.bean.QweatherLocation; import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.databinding.ActivityWeatherBinding; import com.uiuios.aios.manager.AmapManager; @@ -72,7 +73,7 @@ public class WeatherActivity extends BaseMvvmActivity() { +// mViewModel.getGeoResultData().observe(this, new Observer() { +// @Override +// public void onChanged(MapGeoResult mapGeoResult) { +// if (mapGeoResult != null) { +// mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_TUDE, mapGeoResult.getLocation().toString()); +// mViewModel.getWeather(mapGeoResult.getLocation().toString()); +// } else { +// Toaster.show("获取位置信息失败"); +// } +// } +// }); + mViewModel.getQweatherLocationData().observe(this, new Observer() { @Override - public void onChanged(MapGeoResult mapGeoResult) { - if (mapGeoResult != null) { - mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_TUDE, mapGeoResult.getLocation().toString()); - mViewModel.getWeather(mapGeoResult.getLocation().toString()); + public void onChanged(QweatherLocation qweatherLocation) { + if (qweatherLocation != null) { + String tude = qweatherLocation.getLon() + "," + qweatherLocation.getLat(); + mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_TUDE, tude); + mViewModel.getWeather(tude); } else { Toaster.show("获取位置信息失败"); } @@ -153,7 +166,7 @@ public class WeatherActivity extends BaseMvvmActivity() { diff --git a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherViewModel.java b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherViewModel.java index c3d9f45..c5ce470 100644 --- a/app/src/main/java/com/uiuios/aios/activity/weather/WeatherViewModel.java +++ b/app/src/main/java/com/uiuios/aios/activity/weather/WeatherViewModel.java @@ -16,31 +16,22 @@ import com.tencent.mmkv.MMKV; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiuios.aios.base.mvvm.BaseViewModel; -import com.uiuios.aios.bean.JsonBean; -import com.uiuios.aios.bean.MapGeoBean; +import com.uiuios.aios.bean.BaiduMapGeoBean; import com.uiuios.aios.bean.MapGeoResult; +import com.uiuios.aios.bean.QweatherLocation; +import com.uiuios.aios.bean.QweatherLookup; import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.databinding.ActivityWeatherBinding; -import com.uiuios.aios.gson.GetJsonDataUtil; import com.uiuios.aios.manager.AmapManager; -import com.uiuios.aios.manager.RemoteManager; import com.uiuios.aios.network.NetInterfaceManager; import com.uiuios.aios.utils.ActivationUtil; -import org.json.JSONArray; - import java.lang.reflect.Type; -import java.util.ArrayList; import java.util.List; -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; -import io.reactivex.rxjava3.core.Observable; -import io.reactivex.rxjava3.core.ObservableEmitter; -import io.reactivex.rxjava3.core.ObservableOnSubscribe; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.schedulers.Schedulers; public class WeatherViewModel extends BaseViewModel { private static final String TAG = WeatherViewModel.class.getSimpleName(); @@ -59,62 +50,87 @@ public class WeatherViewModel extends BaseViewModel mGeoResultData = new MutableLiveData<>(); - private MutableLiveData mLocationData = new MutableLiveData<>(); - private MutableLiveData mWeatherNowData = new MutableLiveData<>(); - private MutableLiveData mWeatherDailyData = new MutableLiveData<>(); - public MutableLiveData getGeoResultData() { return mGeoResultData; } - public MutableLiveData getLocationData() { - return mLocationData; - } - - public MutableLiveData getWeatherNowData() { - return mWeatherNowData; - } - - public MutableLiveData getWeatherDailyData() { - return mWeatherDailyData; - } - + @Deprecated public void decodeGeo(String address) { Log.e(TAG, "decodeGeo: " + address); - NetInterfaceManager.getInstance().getGeoObservable(address) +// NetInterfaceManager.getInstance().getGeoObservable(address) +// .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) +// .subscribe(new Observer() { +// @Override +// public void onSubscribe(@NonNull Disposable d) { +// Log.e("decodeGeo", "onSubscribe: "); +// } +// +// @Override +// public void onNext(@NonNull BaiduMapGeoBean baiduMapGeoBean) { +// Log.e("decodeGeo", "onNext: " + baiduMapGeoBean); +// if (baiduMapGeoBean.getStatus() == 0) { +// mGeoResultData.setValue(baiduMapGeoBean.getResult()); +// } else { +// mGeoResultData.setValue(null); +// } +// } +// +// @Override +// public void onError(@NonNull Throwable e) { +// Log.e("decodeGeo", "onError: " + e.getMessage()); +// mGeoResultData.setValue(null); +// onComplete(); +// } +// +// @Override +// public void onComplete() { +// Log.e("decodeGeo", "onComplete: "); +// } +// }); + + } + + private MutableLiveData mQweatherLocationData = new MutableLiveData<>(); + + public MutableLiveData getQweatherLocationData() { + return mQweatherLocationData; + } + + public void cityLookup(String city) { + NetInterfaceManager.getInstance().getLookupObservable(city) .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) - .subscribe(new Observer() { + .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { - Log.e("decodeGeo", "onSubscribe: "); + Log.e("cityLookup", "onSubscribe: "); } @Override - public void onNext(@NonNull MapGeoBean mapGeoBean) { - Log.e("decodeGeo", "onNext: " + mapGeoBean); - if (mapGeoBean.getStatus() == 0) { - mGeoResultData.setValue(mapGeoBean.getResult()); - } else { - mGeoResultData.setValue(null); + public void onNext(@NonNull QweatherLookup qweatherLookup) { + Log.e("cityLookup", "onNext: " + qweatherLookup); + if (qweatherLookup.getCode() == 200) { + List qweatherLocationList = qweatherLookup.getLocation(); + if (qweatherLocationList == null || qweatherLocationList.isEmpty()) { + mQweatherLocationData.setValue(null); + } else { + mQweatherLocationData.setValue(qweatherLocationList.get(0)); + } } } @Override public void onError(@NonNull Throwable e) { - Log.e("decodeGeo", "onError: " + e.getMessage()); - mGeoResultData.setValue(null); - onComplete(); + Log.e("cityLookup", "onError: " + e.getMessage()); } @Override public void onComplete() { - Log.e("decodeGeo", "onComplete: "); + Log.e("cityLookup", "onComplete: "); } }); } - public void getWeatherCache() { Log.e(TAG, "getWeatherCache: "); String nowJsonString = mMMKV.decodeString(CommonConfig.WEATHER_NOW_KEY, ""); @@ -127,7 +143,6 @@ public class WeatherViewModel extends BaseViewModel() { }.getType(); @@ -139,6 +154,12 @@ public class WeatherViewModel extends BaseViewModel mLocationData = new MutableLiveData<>(); + + public MutableLiveData getLocationData() { + return mLocationData; + } + public void getLocation() { String location = AmapManager.getInstance().getDistrict(); mLocationData.setValue(location); @@ -158,6 +179,12 @@ public class WeatherViewModel extends BaseViewModel mWeatherNowData = new MutableLiveData<>(); + + public MutableLiveData getWeatherNowData() { + return mWeatherNowData; + } + public void getWeatherNow(String locationTude) { Log.e(TAG, "getweather: " + locationTude); /** @@ -185,6 +212,12 @@ public class WeatherViewModel extends BaseViewModel mWeatherDailyData = new MutableLiveData<>(); + + public MutableLiveData getWeatherDailyData() { + return mWeatherDailyData; + } + public void getWeather7D(String locationTude) { QWeather.getWeather7D(getCtx(), locationTude, new QWeather.OnResultWeatherDailyListener() { @Override diff --git a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java index a77ef76..0e92664 100644 --- a/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java +++ b/app/src/main/java/com/uiuios/aios/adapter/ContactAdapter.java @@ -36,6 +36,16 @@ public class ContactAdapter extends RecyclerView.Adapter location; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getLocation() { + return location; + } + + public void setLocation(List location) { + this.location = location; + } + + + @NonNull + @Override + public String toString() { + return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); + } +} diff --git a/app/src/main/java/com/uiuios/aios/config/CommonConfig.java b/app/src/main/java/com/uiuios/aios/config/CommonConfig.java index fd0373f..f00867f 100644 --- a/app/src/main/java/com/uiuios/aios/config/CommonConfig.java +++ b/app/src/main/java/com/uiuios/aios/config/CommonConfig.java @@ -70,4 +70,8 @@ public class CommonConfig { public static final String SETTING_CALL_TYPE_KEY = "setting_call_type_key"; public static final String SETTING_AUTOMATIC_ANSWER_KEY = "setting_automatic_answer_key"; + + public static final String EMERGENCY_CONTACT_KEY = "emergency_contact_phone"; + public static final String FAMILY_ADDRESS_KEY = "Family_Address"; + } diff --git a/app/src/main/java/com/uiuios/aios/dialog/EditContactDialog.java b/app/src/main/java/com/uiuios/aios/dialog/EditContactDialog.java new file mode 100644 index 0000000..0f8b0c0 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/dialog/EditContactDialog.java @@ -0,0 +1,140 @@ +package com.uiuios.aios.dialog; + + +import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.appcompat.app.AlertDialog; +import androidx.constraintlayout.widget.ConstraintLayout; + +import com.uiuios.aios.R; + + +/** + * description:自定义dialog + */ + +public class EditContactDialog extends AlertDialog { + + private TextView tvPhoneNumber; + private ConstraintLayout clEdit, clDelete, clCancel; + + private String mPhoneNumber; + + private Context mContext; + + public EditContactDialog(Context context) { + super(context, R.style.CustomDialog); + this.mContext = context; + } + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_edit_contact); + //按空白处不能取消动画 + setCanceledOnTouchOutside(true); + //初始化界面控件 + initView(); + //初始化界面数据 + refreshView(); + //初始化界面控件的事件 + initEvent(); + } + + /** + * 初始化界面的确定和取消监听器 + */ + private void initEvent() { + //编辑按钮被点击后,向外界提供监听 + clEdit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onClickBottomListener != null) { + onClickBottomListener.onEditClick(); + } + } + }); + //删除按钮被点击后,向外界提供监听 + clDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onClickBottomListener != null) { + onClickBottomListener.onDeleteClick(); + } + } + }); + //取消按钮被点击后,向外界提供监听 + clCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onClickBottomListener != null) { + onClickBottomListener.onCancelClick(); + } + } + }); + } + + /** + * 初始化界面控件的显示数据 + */ + private void refreshView() { + //如果用户自定了title和message + if (!TextUtils.isEmpty(mPhoneNumber)) { + tvPhoneNumber.setText(mPhoneNumber); + } else { + + } + } + + @Override + public void show() { + super.show(); + refreshView(); + } + + /** + * 初始化界面控件 + */ + private void initView() { + tvPhoneNumber = findViewById(R.id.tv_phone_number); + clEdit = findViewById(R.id.cl_edit); + clDelete = findViewById(R.id.cl_delete); + clCancel = findViewById(R.id.cl_cancel); + } + + /** + * 设置确定取消按钮的回调 + */ + private OnClickBottomListener onClickBottomListener; + + public void setOnClickBottomListener(OnClickBottomListener onClickBottomListener) { + this.onClickBottomListener = onClickBottomListener; + } + + public interface OnClickBottomListener { + /** + * 点击编辑按钮事件 + */ + void onEditClick(); + + /** + * 点击删除按钮事件 + */ + void onDeleteClick(); + + /** + * 点击取消按钮事件 + */ + void onCancelClick(); + } + + public EditContactDialog setPhoneNumber(String phoneNumber) { + mPhoneNumber = phoneNumber; + return this; + } +} diff --git a/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java b/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java index 12608c5..14c8a66 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/contact/ContactFragment.java @@ -4,7 +4,9 @@ import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; +import android.view.Gravity; import android.view.View; +import android.view.Window; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; @@ -12,6 +14,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import com.hjq.toast.Toaster; import com.uiuios.aios.R; import com.uiuios.aios.activity.contact.AddWechatContactActivity; +import com.uiuios.aios.activity.contact.EditContactActivity; import com.uiuios.aios.adapter.WechatContactAdapter; import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment; import com.uiuios.aios.bean.BaseResponse; @@ -20,6 +23,7 @@ import com.uiuios.aios.bean.WechatInfo; import com.uiuios.aios.databinding.FragmentContactHomeBinding; import com.uiuios.aios.db.ContactManager; import com.uiuios.aios.dialog.DeleteContactDialog; +import com.uiuios.aios.dialog.EditContactDialog; import java.util.List; @@ -48,7 +52,7 @@ public class ContactFragment extends BaseMvvmFragment() { diff --git a/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java b/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java index 99cea07..8f4b20c 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/control/ControlFragment.java @@ -41,6 +41,7 @@ import com.jeremyliao.liveeventbus.LiveEventBus; import com.tencent.mmkv.MMKV; import com.uiuios.aios.R; import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment; +import com.uiuios.aios.bean.FamilyAddress; import com.uiuios.aios.bean.MapBean; import com.uiuios.aios.config.CommonConfig; import com.uiuios.aios.databinding.PhoneFragmentControlBinding; @@ -63,6 +64,8 @@ import java.util.Set; public class ControlFragment extends BaseMvvmFragment { private static final String TAG = ControlFragment.class.getSimpleName(); + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + private Context mContext; private ContentResolver mCRv; @@ -197,18 +200,32 @@ public class ControlFragment extends BaseMvvmFragment() { - @Override - public void onChanged(@Nullable MapBean mapBean) { - Toaster.showShort("刷新成功"); - mViewDataBinding.tvLocation.setText(mapBean.getAddress()); - } - }); + mViewModel.getFamilyAddressData().observe(this, new Observer() { + @Override + public void onChanged(FamilyAddress familyAddress) { + if (familyAddress == null || TextUtils.isEmpty(familyAddress.getAddress())) { + mViewDataBinding.tvLocation.setText("未设置地址"); + } else { + mViewDataBinding.tvLocation.setText(familyAddress.getAddress()); + } + } + }); +// LiveEventBus.get("MapBean", MapBean.class) +// .observe(this, new Observer() { +// @Override +// public void onChanged(@Nullable MapBean mapBean) { +// Toaster.showShort("刷新成功"); +// mViewDataBinding.tvLocation.setText(mapBean.getAddress()); +// } +// }); + + mViewModel.getFamilyAddress(); + } private void getWifi() { @@ -789,7 +806,7 @@ public class ControlFragment extends BaseMvvmFragment { + + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + @Override public PhoneFragmentControlBinding getVDBinding() { return binding; @@ -15,6 +33,40 @@ public class ControlViewModel extends BaseViewModel mFamilyAddressData = new MutableLiveData<>(); + public MutableLiveData getFamilyAddressData() { + return mFamilyAddressData; + } + + public void getFamilyAddress() { + NetInterfaceManager.getInstance().getFamilyAddressControl() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getFamilyAddress", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("getFamilyAddress", "onNext: " + baseResponse); + FamilyAddress familyAddress = baseResponse.data; + if (familyAddress != null) { + mMMKV.encode(CommonConfig.FAMILY_ADDRESS_KEY, familyAddress.getAddress()); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getFamilyAddress", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getFamilyAddress", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java b/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java index cf58b5d..26b94d4 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/home/HomeFragment.java @@ -17,6 +17,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.GridLayoutManager; +import com.blankj.utilcode.util.NetworkUtils; import com.hjq.toast.Toaster; import com.jeremyliao.liveeventbus.LiveEventBus; import com.qweather.sdk.bean.weather.WeatherDailyBean; @@ -61,7 +62,7 @@ import java.util.List; * Use the {@link HomeFragment#newInstance} factory method to * create an instance of this fragment. */ -public class HomeFragment extends BaseMvvmFragment { +public class HomeFragment extends BaseMvvmFragment implements NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = HomeFragment.class.getSimpleName(); @@ -115,8 +116,20 @@ public class HomeFragment extends BaseMvvmFragment>() { @Override public void onChanged(List contacts) { @@ -79,10 +96,18 @@ public class ContactFragment extends BaseMvvmFragment() { + @Override + public void onChanged(BaseResponse baseResponse) { + if (baseResponse.code == 200) { + Toaster.show("删除成功"); + } else { + Toaster.show("删除失败:" + baseResponse.msg); + } + mViewModel.getContact(); + } + }); mViewModel.getContact(); } @@ -123,6 +148,39 @@ public class ContactFragment extends BaseMvvmFragment mDeleteData =new MutableLiveData<>(); + + public MutableLiveData getDeleteData() { + return mDeleteData; + } + + public void deleteContact(String id) { + NetInterfaceManager.getInstance().getMailListDeleteObservable(id) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("deleteContact", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("deleteContact", "onNext: " + baseResponse); + mDeleteData.setValue(baseResponse); + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("deleteContact", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("deleteContact", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java index 3eaafa7..131da95 100644 --- a/app/src/main/java/com/uiuios/aios/manager/AmapManager.java +++ b/app/src/main/java/com/uiuios/aios/manager/AmapManager.java @@ -106,7 +106,7 @@ public class AmapManager { public void startLocation() { boolean activation = ActivationUtil.isActivation(mContext); if (!activation) { - Log.e(TAG, "startLocation: 未激活" ); + Log.e(TAG, "startLocation: 未激活"); return; } mAMapLocationClient.stopLocation(); @@ -121,6 +121,9 @@ public class AmapManager { //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明 if (aMapLocation.getErrorCode() == 0) { Log.e(TAG, "onLocationChanged: " + "定位成功"); + mMMKV.encode(CommonConfig.MAP_LONGITUDE_KEY, String.valueOf(aMapLocation.getLongitude())); + mMMKV.encode(CommonConfig.MAP_LATITUDE_KEY, String.valueOf(aMapLocation.getLatitude())); + mMMKV.encode(CommonConfig.MAP_ADDRESS_KEY, aMapLocation.getAddress()); updateAddress(aMapLocation); mMapBean = getMapBean(aMapLocation); saveMapResult(mMapBean); diff --git a/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java index 6156c25..82029e0 100644 --- a/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java +++ b/app/src/main/java/com/uiuios/aios/manager/RemoteManager.java @@ -11,9 +11,7 @@ import android.util.Log; import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mmkv.MMKV; -import com.uiuios.aios.BuildConfig; import com.uiuios.aios.config.CommonConfig; -import com.uiuios.aios.disklrucache.CacheHelper; import com.uiuios.sn.IGetInfoInterface; import java.util.Set; @@ -45,7 +43,7 @@ public class RemoteManager { mServiceConnected = true; for (ConnectedListener listener : mListeners) { if (listener != null) { - listener.onConnected(); + listener.onRemoteConnected(); } } try { @@ -88,7 +86,7 @@ public class RemoteManager { } public interface ConnectedListener { - void onConnected(); + void onRemoteConnected(); } private static Set mListeners = new CopyOnWriteArraySet<>(); @@ -96,7 +94,7 @@ public class RemoteManager { public static void setListener(ConnectedListener listener) { mListeners.add(listener); if (mServiceConnected) { - listener.onConnected(); + listener.onRemoteConnected(); } } diff --git a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java index c4cb936..321f041 100644 --- a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java @@ -19,18 +19,20 @@ import com.uiuios.aios.bean.ActivityBean; import com.uiuios.aios.bean.AddressInfo; import com.uiuios.aios.bean.AlarmClockId; import com.uiuios.aios.bean.ArticleList; +import com.uiuios.aios.bean.BaiduMapGeoBean; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.CategoryBean; import com.uiuios.aios.bean.Contact; import com.uiuios.aios.bean.DemandBean; import com.uiuios.aios.bean.ExpressData; +import com.uiuios.aios.bean.FamilyAddress; import com.uiuios.aios.bean.GoodsList; import com.uiuios.aios.bean.GoodsType; import com.uiuios.aios.bean.HealthCode; -import com.uiuios.aios.bean.MapGeoBean; import com.uiuios.aios.bean.NetDesktopIcon; import com.uiuios.aios.bean.OrderBean; import com.uiuios.aios.bean.OrderIndexData; +import com.uiuios.aios.bean.QweatherLookup; import com.uiuios.aios.bean.RegionInfo; import com.uiuios.aios.bean.ServeBean; import com.uiuios.aios.bean.SnInfo; @@ -44,50 +46,53 @@ import com.uiuios.aios.gson.GsonUtils; import com.uiuios.aios.manager.ConnectManager; import com.uiuios.aios.manager.ConnectMode; import com.uiuios.aios.manager.RemoteManager; -import com.uiuios.aios.network.api.ActivityListApi; -import com.uiuios.aios.network.api.AddressIndexApi; -import com.uiuios.aios.network.api.MailListDeleteApi; -import com.uiuios.aios.network.api.ServeApi; -import com.uiuios.aios.network.api.alarmclock.AlarmClockAddApi; -import com.uiuios.aios.network.api.alarmclock.AlarmClockApi; -import com.uiuios.aios.network.api.alarmclock.AlarmClockDeleteApi; -import com.uiuios.aios.network.api.alarmclock.AlarmClockEditApi; -import com.uiuios.aios.network.api.alarmclock.AlarmClockQueryApi; -import com.uiuios.aios.network.api.AppUsageRecordApi; -import com.uiuios.aios.network.api.ArticleCategorysListApi; -import com.uiuios.aios.network.api.ArticleListApi; -import com.uiuios.aios.network.api.CategorysApi; -import com.uiuios.aios.network.api.DemandListApi; -import com.uiuios.aios.network.api.GetAdminSnSettingApi; -import com.uiuios.aios.network.api.desktop.GetDesktopApi; -import com.uiuios.aios.network.api.GetMailList; -import com.uiuios.aios.network.api.GetUserIDApi; -import com.uiuios.aios.network.api.pay.GoodsBuyApi; -import com.uiuios.aios.network.api.GoodsListApi; -import com.uiuios.aios.network.api.GoodsTypeApi; -import com.uiuios.aios.network.api.GoodsTypeListApi; -import com.uiuios.aios.network.api.HealthCodeApi; -import com.uiuios.aios.network.api.KnowledgeVideoListApi; -import com.uiuios.aios.network.api.liven.LivenVideoListApi; -import com.uiuios.aios.network.api.MailListAddApi; -import com.uiuios.aios.network.api.pay.OrderPayApi; -import com.uiuios.aios.network.api.pay.OrderPayCheckApi; -import com.uiuios.aios.network.api.RegionListApi; -import com.uiuios.aios.network.api.RegionListCall; -import com.uiuios.aios.network.api.app.RunNewApp; -import com.uiuios.aios.network.api.sn.SnInfoApi; -import com.uiuios.aios.network.api.sn.SosRecordApi; -import com.uiuios.aios.network.api.sn.SendScreenshotApi; -import com.uiuios.aios.network.api.sn.SettingApi; -import com.uiuios.aios.network.api.sn.UpdateAddressApi; -import com.uiuios.aios.network.api.sn.UpdateAlarmClockApi; -import com.uiuios.aios.network.api.UpdateAppIconApi; -import com.uiuios.aios.network.api.desktop.UpdateDesktopApi; -import com.uiuios.aios.network.api.UserInfoControl; import com.uiuios.aios.network.api.amap.GeocodingApi; -import com.uiuios.aios.network.api.order.AllOrderApi; -import com.uiuios.aios.network.api.order.OrderExpressApi; -import com.uiuios.aios.network.api.order.OrderIndexApi; +import com.uiuios.aios.network.api.qweather.LookupApi; +import com.uiuios.aios.network.api.uiui.ActivityListApi; +import com.uiuios.aios.network.api.uiui.AddressIndexApi; +import com.uiuios.aios.network.api.uiui.AppUsageRecordApi; +import com.uiuios.aios.network.api.uiui.ArticleCategorysListApi; +import com.uiuios.aios.network.api.uiui.ArticleListApi; +import com.uiuios.aios.network.api.uiui.CategorysApi; +import com.uiuios.aios.network.api.uiui.DemandListApi; +import com.uiuios.aios.network.api.uiui.GetAdminSnSettingApi; +import com.uiuios.aios.network.api.uiui.GetMailList; +import com.uiuios.aios.network.api.uiui.GetUserIDApi; +import com.uiuios.aios.network.api.uiui.GoodsListApi; +import com.uiuios.aios.network.api.uiui.GoodsTypeApi; +import com.uiuios.aios.network.api.uiui.GoodsTypeListApi; +import com.uiuios.aios.network.api.uiui.HealthCodeApi; +import com.uiuios.aios.network.api.uiui.KnowledgeVideoListApi; +import com.uiuios.aios.network.api.uiui.contact.MailListAddApi; +import com.uiuios.aios.network.api.uiui.contact.MailListDeleteApi; +import com.uiuios.aios.network.api.uiui.RegionListApi; +import com.uiuios.aios.network.api.uiui.RegionListCall; +import com.uiuios.aios.network.api.uiui.ServeApi; +import com.uiuios.aios.network.api.uiui.UpdateAppIconApi; +import com.uiuios.aios.network.api.uiui.UserInfoControl; +import com.uiuios.aios.network.api.uiui.alarmclock.AlarmClockAddApi; +import com.uiuios.aios.network.api.uiui.alarmclock.AlarmClockApi; +import com.uiuios.aios.network.api.uiui.alarmclock.AlarmClockDeleteApi; +import com.uiuios.aios.network.api.uiui.alarmclock.AlarmClockEditApi; +import com.uiuios.aios.network.api.uiui.alarmclock.AlarmClockQueryApi; +import com.uiuios.aios.network.api.uiui.app.RunNewApp; +import com.uiuios.aios.network.api.uiui.contact.MailListEditApi; +import com.uiuios.aios.network.api.uiui.desktop.GetDesktopApi; +import com.uiuios.aios.network.api.uiui.desktop.UpdateDesktopApi; +import com.uiuios.aios.network.api.uiui.liven.LivenVideoListApi; +import com.uiuios.aios.network.api.uiui.order.AllOrderApi; +import com.uiuios.aios.network.api.uiui.order.OrderExpressApi; +import com.uiuios.aios.network.api.uiui.order.OrderIndexApi; +import com.uiuios.aios.network.api.uiui.pay.GoodsBuyApi; +import com.uiuios.aios.network.api.uiui.pay.OrderPayApi; +import com.uiuios.aios.network.api.uiui.pay.OrderPayCheckApi; +import com.uiuios.aios.network.api.uiui.sn.FamilyAddressApi; +import com.uiuios.aios.network.api.uiui.sn.SendScreenshotApi; +import com.uiuios.aios.network.api.uiui.sn.SettingApi; +import com.uiuios.aios.network.api.uiui.sn.SnInfoApi; +import com.uiuios.aios.network.api.uiui.sn.SosRecordApi; +import com.uiuios.aios.network.api.uiui.sn.UpdateAddressApi; +import com.uiuios.aios.network.api.uiui.sn.UpdateAlarmClockApi; import com.uiuios.aios.network.interceptor.RepeatRequestInterceptor; import java.io.File; @@ -122,18 +127,22 @@ public class NetInterfaceManager { private static NetInterfaceManager INSTANCE; private Context mContext; private CacheHelper mCacheHelper; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); private Retrofit mRetrofit; private OkHttpClient okHttpClient; + private Retrofit mAmapRetrofit; private OkHttpClient mAmapOkHttpClient; - private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + + private Retrofit mQweatherRetrofit; + private OkHttpClient mQweatherOkHttpClient; private final ConcurrentHashMap requestIdsMap = new ConcurrentHashMap<>(); //超时时间 - private static int timeOut = 30; + private static final int TIME_OUT = 8; // 缓存文件最大限制大小20M - private static long cacheSize = 1024 * 1024 * 64; + private static final long CACHE_SIZE = 1024 * 1024 * 64; public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI="; public static final String CUSTOM_REPEAT_REQ_PROTOCOL = "MY_CUSTOM_REPEAT_REQ_PROTOCOL"; @@ -142,18 +151,17 @@ public class NetInterfaceManager { this.mContext = context; this.mCacheHelper = new CacheHelper(context); if (okHttpClient == null) { - //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间 - builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间 - builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.connectTimeout(TIME_OUT, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置读取数据超时时间 builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 builder.addInterceptor(new RepeatRequestInterceptor()); // 设置缓存文件路径 String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; - Cache cache = new Cache(new File(cacheDirectory), cacheSize); + Cache cache = new Cache(new File(cacheDirectory), CACHE_SIZE); builder.cache(cache);// 设置缓存 okHttpClient = builder.build(); } @@ -170,15 +178,15 @@ public class NetInterfaceManager { if (mAmapOkHttpClient == null) { //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间 - builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间 - builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.connectTimeout(TIME_OUT, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置读取数据超时时间 builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 builder.addInterceptor(new RepeatRequestInterceptor()); // 设置缓存文件路径 String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; - Cache cache = new Cache(new File(cacheDirectory), cacheSize); + Cache cache = new Cache(new File(cacheDirectory), CACHE_SIZE); builder.cache(cache);// 设置缓存 mAmapOkHttpClient = builder.build(); } @@ -191,6 +199,31 @@ public class NetInterfaceManager { .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .build(); } + + if (mQweatherOkHttpClient == null) { + //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了 + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + builder.connectTimeout(TIME_OUT, TimeUnit.SECONDS); // 设置连接超时时间 + builder.writeTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置写入超时时间 + builder.readTimeout(TIME_OUT, TimeUnit.SECONDS);// 设置读取数据超时时间 + builder.retryOnConnectionFailure(true);// 设置进行连接失败重试 + builder.addInterceptor(new RepeatRequestInterceptor()); + + // 设置缓存文件路径 + String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; + Cache cache = new Cache(new File(cacheDirectory), CACHE_SIZE); + builder.cache(cache);// 设置缓存 + mQweatherOkHttpClient = builder.build(); + } + + if (mQweatherRetrofit == null) { + mQweatherRetrofit = new Retrofit.Builder() + .client(mQweatherOkHttpClient) + .baseUrl(UrlAddress.QWEATHER_ROOT_URL) + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) + .build(); + } } /** @@ -247,13 +280,22 @@ public class NetInterfaceManager { return okHttpClient; } - public Observable getGeoObservable(String address) { + @Deprecated + public Observable getGeoObservable(String address) { return mAmapRetrofit.create(GeocodingApi.class) .geocoding(address, "json", "RGAsG7hN9gbDxeruqF4Lsf0ro6pp362O") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } + public Observable getLookupObservable(String address) { + return mQweatherRetrofit.create(LookupApi.class) + .lookup(address, "c5928a6a274c4a1cb80957a293b27898") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + public static RequestBody convertToRequestBody(String param) { RequestBody requestBody = RequestBody.create(MediaType.parse("text/plain"), param); return requestBody; @@ -279,13 +321,20 @@ public class NetInterfaceManager { * * @return */ - public Observable> getsnInfoControl() { + public Observable> getSnInfoControl() { return mRetrofit.create(SnInfoApi.class) .getSninfo(RemoteManager.getInstance().getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } + public Observable> getFamilyAddressControl() { + return mRetrofit.create(FamilyAddressApi.class) + .getFamilyAddress(RemoteManager.getInstance().getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + public Observable> getUserAvatarInfoControl() { return mRetrofit.create(UserInfoControl.class) .getUserAvatarInfo(RemoteManager.getInstance().getSerial()) @@ -398,8 +447,14 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable getMailListEditObservable(Map params, MultipartBody.Part body) { + return mRetrofit.create(MailListEditApi.class) + .editContact(params, body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } - public Observable getMailListDeleteObservable(int id) { + public Observable getMailListDeleteObservable(String id) { return mRetrofit.create(MailListDeleteApi.class) .deleteMailList(RemoteManager.getInstance().getSerial(), id) .subscribeOn(Schedulers.io()) @@ -1086,7 +1141,7 @@ public class NetInterfaceManager { } public void getSnInfo(SnInfoCallback callback) { - getsnInfoControl() + getSnInfoControl() .subscribe(new Observer>() { @Override public void onSubscribe(@NonNull Disposable d) { diff --git a/app/src/main/java/com/uiuios/aios/network/UrlAddress.java b/app/src/main/java/com/uiuios/aios/network/UrlAddress.java index 2135c45..b40fed9 100644 --- a/app/src/main/java/com/uiuios/aios/network/UrlAddress.java +++ b/app/src/main/java/com/uiuios/aios/network/UrlAddress.java @@ -2,7 +2,12 @@ package com.uiuios.aios.network; public class UrlAddress { public static final String ROOT_URL = "https://led.zuoyepad.com/android/"; + /*百度地图*/ + @Deprecated public static final String AMAP_ROOT_URL = "https://api.map.baidu.com/"; + /*和风天气*/ + public static final String QWEATHER_ROOT_URL = "https://geoapi.qweather.com/"; + /** * 旧接口 @@ -26,6 +31,9 @@ public class UrlAddress { public static final String SOS_RECORD = "sosRecord"; /*上传地址信息*/ public static final String UPDATE_ADDRESS = "sn/update-address"; + /*获取设备家庭地址*/ + public static final String FAMILY_ADDRESS = "sn/family-address"; + /*获取抢购列表*/ public static final String GET_GOODS_LIST = "getGoodsList"; @@ -153,7 +161,15 @@ public class UrlAddress { + + /*逆地理编码*/ + @Deprecated public static final String GEOCODING = "geocoding/v3/"; + /*城市搜索*/ + public static final String CITY_LOOKUP = "v2/city/lookup"; + + + } diff --git a/app/src/main/java/com/uiuios/aios/network/api/amap/GeocodingApi.java b/app/src/main/java/com/uiuios/aios/network/api/amap/GeocodingApi.java index 2e5c87b..da39790 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/amap/GeocodingApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/amap/GeocodingApi.java @@ -1,6 +1,6 @@ package com.uiuios.aios.network.api.amap; -import com.uiuios.aios.bean.MapGeoBean; +import com.uiuios.aios.bean.BaiduMapGeoBean; import com.uiuios.aios.network.UrlAddress; import io.reactivex.rxjava3.core.Observable; @@ -9,7 +9,7 @@ import retrofit2.http.Query; public interface GeocodingApi { @GET(UrlAddress.GEOCODING) - Observable geocoding( + Observable geocoding( @Query("address") String address, @Query("output") String output, @Query("ak") String key diff --git a/app/src/main/java/com/uiuios/aios/network/api/qweather/LookupApi.java b/app/src/main/java/com/uiuios/aios/network/api/qweather/LookupApi.java new file mode 100644 index 0000000..ba60365 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/network/api/qweather/LookupApi.java @@ -0,0 +1,17 @@ +package com.uiuios.aios.network.api.qweather; + +import com.uiuios.aios.bean.BaiduMapGeoBean; +import com.uiuios.aios.bean.QweatherLookup; +import com.uiuios.aios.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface LookupApi { + @GET(UrlAddress.CITY_LOOKUP) + Observable lookup( + @Query("location") String location, + @Query("key") String key + ); +} diff --git a/app/src/main/java/com/uiuios/aios/network/api/ActivityListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/ActivityListApi.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/network/api/ActivityListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/ActivityListApi.java index 0799df4..7342917 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/ActivityListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/ActivityListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.ActivityBean; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/AddressIndexApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/AddressIndexApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/AddressIndexApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/AddressIndexApi.java index b2c312a..e89b840 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/AddressIndexApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/AddressIndexApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.AddressInfo; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/AppUsageRecordApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/AppUsageRecordApi.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/network/api/AppUsageRecordApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/AppUsageRecordApi.java index 1e24617..00165f3 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/AppUsageRecordApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/AppUsageRecordApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/ArticleCategorysListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleCategorysListApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/ArticleCategorysListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleCategorysListApi.java index 8711b08..0fb31f7 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/ArticleCategorysListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleCategorysListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.ArticleList; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/ArticleDetailsApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleDetailsApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/ArticleDetailsApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleDetailsApi.java index a7cc634..66283e2 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/ArticleDetailsApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleDetailsApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.ArticleDetails; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/ArticleListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleListApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/ArticleListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleListApi.java index 9a10059..e1bd03e 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/ArticleListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/ArticleListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.ArticleInfo; import com.uiuios.aios.bean.ArticleList; diff --git a/app/src/main/java/com/uiuios/aios/network/api/CategorysApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/CategorysApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/CategorysApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/CategorysApi.java index a80a5e6..22f5313 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/CategorysApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/CategorysApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.CategoryBean; diff --git a/app/src/main/java/com/uiuios/aios/network/api/DemandListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/DemandListApi.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/network/api/DemandListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/DemandListApi.java index 6c86f19..e253320 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/DemandListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/DemandListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.DemandBean; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GetAdminSnSettingApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetAdminSnSettingApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/GetAdminSnSettingApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GetAdminSnSettingApi.java index 9d8a90a..d483041 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GetAdminSnSettingApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetAdminSnSettingApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GetMailList.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetMailList.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/GetMailList.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GetMailList.java index bbbc3c6..62072d8 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GetMailList.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetMailList.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.Contact; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GetUserIDApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetUserIDApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/GetUserIDApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GetUserIDApi.java index d845005..22c19c8 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GetUserIDApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GetUserIDApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.UserId; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GoodsDetailsApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsDetailsApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/GoodsDetailsApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsDetailsApi.java index 3e8d241..19d296f 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GoodsDetailsApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsDetailsApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.GoodsDetails; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GoodsListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsListApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/GoodsListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsListApi.java index 7215be1..8309f90 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GoodsListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.GoodsList; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GoodsTypeApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/GoodsTypeApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeApi.java index b1461b4..7bb37f0 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GoodsTypeApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.GoodsType; diff --git a/app/src/main/java/com/uiuios/aios/network/api/GoodsTypeListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeListApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/GoodsTypeListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeListApi.java index eaddbb9..beebe2d 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/GoodsTypeListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/GoodsTypeListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.GoodsList; diff --git a/app/src/main/java/com/uiuios/aios/network/api/HealthCodeApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/HealthCodeApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/HealthCodeApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/HealthCodeApi.java index a6ccaf1..be7c675 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/HealthCodeApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/HealthCodeApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.HealthCode; diff --git a/app/src/main/java/com/uiuios/aios/network/api/KnowledgeVideoListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/KnowledgeVideoListApi.java similarity index 92% rename from app/src/main/java/com/uiuios/aios/network/api/KnowledgeVideoListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/KnowledgeVideoListApi.java index c49450c..5d53d64 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/KnowledgeVideoListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/KnowledgeVideoListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiui.video.bean.VideoInfo; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/RegionListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/RegionListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListApi.java index 3ca5a88..b6d8a73 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/RegionListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.RegionInfo; diff --git a/app/src/main/java/com/uiuios/aios/network/api/RegionListCall.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListCall.java similarity index 92% rename from app/src/main/java/com/uiuios/aios/network/api/RegionListCall.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListCall.java index 158567b..fa09b99 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/RegionListCall.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/RegionListCall.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.RegionInfo; diff --git a/app/src/main/java/com/uiuios/aios/network/api/ServeApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/ServeApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/ServeApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/ServeApi.java index 177af68..abce02e 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/ServeApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/ServeApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.RegionInfo; diff --git a/app/src/main/java/com/uiuios/aios/network/api/UpdateAppIconApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/UpdateAppIconApi.java similarity index 93% rename from app/src/main/java/com/uiuios/aios/network/api/UpdateAppIconApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/UpdateAppIconApi.java index 3257b45..1f23027 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/UpdateAppIconApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/UpdateAppIconApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/UserInfoControl.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/UserInfoControl.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/UserInfoControl.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/UserInfoControl.java index 77c0e3d..9bc7e25 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/UserInfoControl.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/UserInfoControl.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockAddApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockAddApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockAddApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockAddApi.java index fef5c3b..5916dec 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockAddApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockAddApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.alarmclock; +package com.uiuios.aios.network.api.uiui.alarmclock; import com.uiuios.aios.bean.AlarmClockId; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockApi.java index 1cfd02c..1b22389 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.alarmclock; +package com.uiuios.aios.network.api.uiui.alarmclock; import com.uiuios.aios.alarm.AlarmClockData; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockDeleteApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockDeleteApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockDeleteApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockDeleteApi.java index 6aca5de..6604427 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockDeleteApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockDeleteApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.alarmclock; +package com.uiuios.aios.network.api.uiui.alarmclock; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockEditApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockEditApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockEditApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockEditApi.java index c051d50..8ffa137 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockEditApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockEditApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.alarmclock; +package com.uiuios.aios.network.api.uiui.alarmclock; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockQueryApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockQueryApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockQueryApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockQueryApi.java index 81155a4..df0851f 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/alarmclock/AlarmClockQueryApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/alarmclock/AlarmClockQueryApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.alarmclock; +package com.uiuios.aios.network.api.uiui.alarmclock; import com.uiuios.aios.alarm.AlarmClockData; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/app/RunNewApp.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/app/RunNewApp.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/app/RunNewApp.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/app/RunNewApp.java index 929952a..949ca5a 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/app/RunNewApp.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/app/RunNewApp.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.app; +package com.uiuios.aios.network.api.uiui.app; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/MailListAddApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListAddApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/MailListAddApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListAddApi.java index 10bade2..89319a2 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/MailListAddApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListAddApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui.contact; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListDeleteApi.java similarity index 82% rename from app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListDeleteApi.java index 7dd6da1..f694c40 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/MailListDeleteApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListDeleteApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api; +package com.uiuios.aios.network.api.uiui.contact; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; @@ -13,6 +13,6 @@ public interface MailListDeleteApi { @POST(UrlAddress.MAIL_LIST_DELETE) Observable deleteMailList( @Field("sn") String sn, - @Field("id") int id + @Field("id") String id ); } diff --git a/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListEditApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListEditApi.java new file mode 100644 index 0000000..11cfb6f --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/contact/MailListEditApi.java @@ -0,0 +1,24 @@ +package com.uiuios.aios.network.api.uiui.contact; + +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.network.UrlAddress; + +import java.util.Map; + +import io.reactivex.rxjava3.core.Observable; +import okhttp3.MultipartBody; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.Multipart; +import retrofit2.http.POST; +import retrofit2.http.Part; +import retrofit2.http.QueryMap; + +public interface MailListEditApi { + @Multipart + @POST(UrlAddress.MAIL_LIST_EDIT) + Observable editContact( + @QueryMap Map params, + @Part MultipartBody.Part body + ); +} diff --git a/app/src/main/java/com/uiuios/aios/network/api/desktop/GetDesktopApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/GetDesktopApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/desktop/GetDesktopApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/GetDesktopApi.java index 2d8e175..a77c202 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/desktop/GetDesktopApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/GetDesktopApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.desktop; +package com.uiuios.aios.network.api.uiui.desktop; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.NetDesktopIcon; diff --git a/app/src/main/java/com/uiuios/aios/network/api/desktop/UpdateDesktopApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/UpdateDesktopApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/desktop/UpdateDesktopApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/UpdateDesktopApi.java index 922e27e..d3153d5 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/desktop/UpdateDesktopApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/desktop/UpdateDesktopApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.desktop; +package com.uiuios.aios.network.api.uiui.desktop; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/liven/LivenVideoListApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/liven/LivenVideoListApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/liven/LivenVideoListApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/liven/LivenVideoListApi.java index 96c9f7c..724ef32 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/liven/LivenVideoListApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/liven/LivenVideoListApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.liven; +package com.uiuios.aios.network.api.uiui.liven; import com.uiui.video.bean.VideoInfo; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/order/AllOrderApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/AllOrderApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/order/AllOrderApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/order/AllOrderApi.java index f7643a2..c2811f3 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/order/AllOrderApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/AllOrderApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.order; +package com.uiuios.aios.network.api.uiui.order; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.OrderIndexData; diff --git a/app/src/main/java/com/uiuios/aios/network/api/order/OrderExpressApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderExpressApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/order/OrderExpressApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderExpressApi.java index 4f16e12..2e51dbb 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/order/OrderExpressApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderExpressApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.order; +package com.uiuios.aios.network.api.uiui.order; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.ExpressData; diff --git a/app/src/main/java/com/uiuios/aios/network/api/order/OrderIndexApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderIndexApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/order/OrderIndexApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderIndexApi.java index 287ceb8..7d9d2d0 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/order/OrderIndexApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/order/OrderIndexApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.order; +package com.uiuios.aios.network.api.uiui.order; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.OrderIndexData; diff --git a/app/src/main/java/com/uiuios/aios/network/api/pay/GoodsBuyApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/GoodsBuyApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/pay/GoodsBuyApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/pay/GoodsBuyApi.java index 66d1a53..8047e19 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/pay/GoodsBuyApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/GoodsBuyApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.pay; +package com.uiuios.aios.network.api.uiui.pay; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.OrderBean; diff --git a/app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayApi.java similarity index 92% rename from app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayApi.java index 9fe910b..4f32505 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.pay; +package com.uiuios.aios.network.api.uiui.pay; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.WxpayBean; diff --git a/app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayCheckApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayCheckApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayCheckApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayCheckApi.java index 150ba77..c79c4a5 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/pay/OrderPayCheckApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/pay/OrderPayCheckApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.pay; +package com.uiuios.aios.network.api.uiui.pay; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/FamilyAddressApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/FamilyAddressApi.java new file mode 100644 index 0000000..bd35ed4 --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/FamilyAddressApi.java @@ -0,0 +1,16 @@ +package com.uiuios.aios.network.api.uiui.sn; + +import com.uiuios.aios.bean.BaseResponse; +import com.uiuios.aios.bean.FamilyAddress; +import com.uiuios.aios.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface FamilyAddressApi { + @GET(UrlAddress.FAMILY_ADDRESS) + Observable> getFamilyAddress( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/SendScreenshotApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SendScreenshotApi.java similarity index 91% rename from app/src/main/java/com/uiuios/aios/network/api/sn/SendScreenshotApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SendScreenshotApi.java index 887fe12..03804d0 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/SendScreenshotApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SendScreenshotApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/SettingApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SettingApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/sn/SettingApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SettingApi.java index 78e3975..d070835 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/SettingApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SettingApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.SystemSettings; diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/SnInfoApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SnInfoApi.java similarity index 89% rename from app/src/main/java/com/uiuios/aios/network/api/sn/SnInfoApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SnInfoApi.java index 7d3c8cf..e29f080 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/SnInfoApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SnInfoApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.bean.SnInfo; diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/SosRecordApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SosRecordApi.java similarity index 92% rename from app/src/main/java/com/uiuios/aios/network/api/sn/SosRecordApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SosRecordApi.java index ade844c..5f74d05 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/SosRecordApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/SosRecordApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAddressApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAddressApi.java similarity index 92% rename from app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAddressApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAddressApi.java index 5a1f6d9..a06a9c1 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAddressApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAddressApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; diff --git a/app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAlarmClockApi.java b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAlarmClockApi.java similarity index 90% rename from app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAlarmClockApi.java rename to app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAlarmClockApi.java index 139fb20..a9c7c0f 100644 --- a/app/src/main/java/com/uiuios/aios/network/api/sn/UpdateAlarmClockApi.java +++ b/app/src/main/java/com/uiuios/aios/network/api/uiui/sn/UpdateAlarmClockApi.java @@ -1,4 +1,4 @@ -package com.uiuios.aios.network.api.sn; +package com.uiuios.aios.network.api.uiui.sn; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.UrlAddress; 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 25a644b..c16d0e8 100644 --- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java @@ -165,6 +165,10 @@ public class ApkUtils { private static List hideApp = new ArrayList() {{ this.add("com.uiuios.aios"); this.add("com.uiuios.appstore"); + this.add("com.android.quicksearchbox"); + this.add("com.android.stk"); + this.add("com.debug.loggerui"); + this.add("com.mediatek.gnss.nonframeworklbs"); }}; /** @@ -359,6 +363,10 @@ public class ApkUtils { Log.e(TAG, "getAppstoreAppInfo: hided = " + pkg); continue; } + if (hideApp.contains(pkg)) { + Log.e(TAG, "getAppstoreAppInfo: hideApp = " + pkg); + continue; + } if (frist == 0) { if (pkgSet.contains(pkg)) { if (allPackages.contains(pkg) && !excludePackageName.contains(pkg)) { diff --git a/app/src/main/java/com/uiuios/aios/utils/FileUtil.java b/app/src/main/java/com/uiuios/aios/utils/FileUtil.java index a01f4f1..0ed838f 100644 --- a/app/src/main/java/com/uiuios/aios/utils/FileUtil.java +++ b/app/src/main/java/com/uiuios/aios/utils/FileUtil.java @@ -56,4 +56,5 @@ public class FileUtil { } } + } diff --git a/app/src/main/res/drawable-hdpi/control_background.png b/app/src/main/res/drawable-hdpi/control_background.png index 3d58cdf..cff3206 100644 Binary files a/app/src/main/res/drawable-hdpi/control_background.png and b/app/src/main/res/drawable-hdpi/control_background.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_delete_contact.png b/app/src/main/res/drawable-hdpi/icon_delete_contact.png new file mode 100644 index 0000000..22f1528 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_delete_contact.png differ diff --git a/app/src/main/res/drawable-hdpi/icon_edit_contact.png b/app/src/main/res/drawable-hdpi/icon_edit_contact.png new file mode 100644 index 0000000..13c3c76 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_edit_contact.png differ diff --git a/app/src/main/res/drawable/control_background_item_dis.xml b/app/src/main/res/drawable/control_background_item_dis.xml index 824f480..34a33ee 100644 --- a/app/src/main/res/drawable/control_background_item_dis.xml +++ b/app/src/main/res/drawable/control_background_item_dis.xml @@ -2,7 +2,7 @@ - + - + + + + + + android:layout_height="match_parent"> + + + + + + + + + + + + + + - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_phone.xml b/app/src/main/res/layout-land/activity_phone.xml index 44e9815..5c0dd45 100644 --- a/app/src/main/res/layout-land/activity_phone.xml +++ b/app/src/main/res/layout-land/activity_phone.xml @@ -27,10 +27,10 @@ app:tl_indicator_color="#FFFFFF" app:tl_indicator_style="TRIANGLE" app:tl_indicator_width_equal_title="true" - app:tl_selectTextSize="@dimen/sp_18" + app:tl_selectTextSize="@dimen/sp_22" app:tl_tab_space_equal="true" app:tl_textBold="SELECT" - app:tl_textsize="@dimen/sp_16" /> + app:tl_textsize="@dimen/sp_20" /> - + + + + + + android:layout_height="match_parent"> + + + + + + + + + + + + + + - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_phone.xml b/app/src/main/res/layout-port/activity_phone.xml index 2f902ab..40d0a33 100644 --- a/app/src/main/res/layout-port/activity_phone.xml +++ b/app/src/main/res/layout-port/activity_phone.xml @@ -27,10 +27,10 @@ app:tl_indicator_color="#FFFFFF" app:tl_indicator_style="TRIANGLE" app:tl_indicator_width_equal_title="true" - app:tl_selectTextSize="@dimen/sp_18" + app:tl_selectTextSize="@dimen/sp_22" app:tl_tab_space_equal="true" app:tl_textBold="SELECT" - app:tl_textsize="@dimen/sp_16" /> + app:tl_textsize="@dimen/sp_20" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_information.xml b/app/src/main/res/layout/activity_information.xml index c823f82..063154e 100644 --- a/app/src/main/res/layout/activity_information.xml +++ b/app/src/main/res/layout/activity_information.xml @@ -2,10 +2,12 @@ + tools:context=".activity.information.InformationActivity"> - + - + tools:context=".activity.location.LocationAcivity"> + + + + - - + android:id="@+id/bg" + android:onClick="@{click::exit}" + android:layout_width="match_parent" + android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_weather.xml b/app/src/main/res/layout/activity_weather.xml index 7d4820b..29ea4f6 100644 --- a/app/src/main/res/layout/activity_weather.xml +++ b/app/src/main/res/layout/activity_weather.xml @@ -76,7 +76,7 @@ android:scaleType="centerCrop" android:text="刷新" android:textColor="@color/white" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/dialog_edit_contact.xml b/app/src/main/res/layout/dialog_edit_contact.xml new file mode 100644 index 0000000..5de1a90 --- /dev/null +++ b/app/src/main/res/layout/dialog_edit_contact.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_weather_port.xml b/app/src/main/res/layout/item_weather_port.xml index 7930c90..5cae6df 100644 --- a/app/src/main/res/layout/item_weather_port.xml +++ b/app/src/main/res/layout/item_weather_port.xml @@ -61,7 +61,8 @@ 0.85--> 1.0 1.15 - 1.30 + 1.3 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 33ebe22..cf208b4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,6 +7,7 @@ @color/colorPrimaryDark @color/colorAccent @color/colorPrimary + ?attr/colorPrimary true