version:6.1
fix: update:修改联系人,修复联系人上传失败
This commit is contained in:
@@ -7,6 +7,7 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
@@ -28,6 +29,7 @@ import com.uiuios.aios.receiver.BootReceiver;
|
||||
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -42,23 +44,29 @@ import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class EmergencyActivity extends AppCompatActivity {
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
|
||||
@BindView(R.id.tv_countdown)
|
||||
TextView tv_countdown;
|
||||
@BindView(R.id.iv_finish)
|
||||
ImageView iv_finish;
|
||||
|
||||
|
||||
private Disposable subscribe;
|
||||
private String TAG = EmergencyActivity.class.getSimpleName();
|
||||
private boolean needDial = false;
|
||||
private boolean isCalling = false;
|
||||
private List<Contact> phoneListSet;
|
||||
private CacheHelper mCacheHelper;
|
||||
// private List<Contact> 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<List<Contact>>() {
|
||||
}.getType();
|
||||
List<Contact> 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<List<Contact>>() {
|
||||
// }.getType();
|
||||
// List<Contact> contactList = gson.fromJson(jsonString, type);
|
||||
// if (contactList == null || contactList.size() == 0) {
|
||||
// return;
|
||||
// }
|
||||
String phone = mMMKV.decodeString(CommonConfig.EMERGENCY_CONTACT_KEY, "");
|
||||
|
||||
// phoneListSet = new ArrayList<String>();
|
||||
// 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<BaseResponse>() {
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<String, CategoryBean> 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<BaseResponse<List<CategoryBean>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getCategorys", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<CategoryBean>> listBaseResponse) {
|
||||
Log.e("getCategorys", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
mBinding.tabLayout.setVisibility(View.VISIBLE);
|
||||
List<CategoryBean> categoryList = listBaseResponse.data;
|
||||
List<String> 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<BaseResponse<ArticleList>> getArticleListObserver() {
|
||||
return new Observer<BaseResponse<ArticleList>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getArticle", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<ArticleList> listBaseResponse) {
|
||||
Log.e("getArticle", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
ArticleList articleList = listBaseResponse.data;
|
||||
List<ArticleInfo> 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: ");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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<FamilySpaceViewModel, ActivityFamilySpaceBinding> {
|
||||
|
||||
@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<List<HealthCode>>() {
|
||||
@Override
|
||||
public void onChanged(List<HealthCode> 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<HealthCode> 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<ImageView> 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<HealthCode> 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("连接服务器失败,请检查网络连接");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<CodeView> {
|
||||
void getHealthCode();
|
||||
}
|
||||
|
||||
public interface CodeView extends BaseView {
|
||||
void setHealthCode(List<HealthCode> codeList);
|
||||
void setHealthCodeNodata();
|
||||
void onError();
|
||||
}
|
||||
}
|
||||
@@ -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<ActivityEvent> lifecycle;
|
||||
|
||||
void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
|
||||
this.lifecycle = lifecycle;
|
||||
}
|
||||
|
||||
public BehaviorSubject<ActivityEvent> 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> healthCode) {
|
||||
mView.setHealthCode(healthCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noData() {
|
||||
mView.setHealthCodeNodata();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
mView.onError();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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<ActivityFamilySpaceBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityFamilySpaceBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<List<HealthCode>> mHealthCodeListData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<List<HealthCode>> getHealthCodeListData() {
|
||||
return mHealthCodeListData;
|
||||
}
|
||||
|
||||
public void getHealthCode() {
|
||||
NetInterfaceManager.getInstance().getHealthCode(true, getLifecycle(), new NetInterfaceManager.HealthCodeCallback() {
|
||||
@Override
|
||||
public void setHealthCode(List<HealthCode> healthCode) {
|
||||
mHealthCodeListData.setValue(healthCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void noData() {
|
||||
mHealthCodeListData.setValue(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
Toaster.show("连接服务器失败,请检查网络连接");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -181,7 +181,7 @@ public class AddWechatContactActivity extends BaseMvvmActivity<AddWechatContactV
|
||||
try {
|
||||
file.createNewFile();
|
||||
FileOutputStream fOut = new FileOutputStream(file);
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 20, fOut);
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
|
||||
// is.close();
|
||||
fOut.flush();
|
||||
fOut.close();
|
||||
@@ -231,7 +231,8 @@ public class AddWechatContactActivity extends BaseMvvmActivity<AddWechatContactV
|
||||
|
||||
return new File(path);
|
||||
} else {
|
||||
//Log.i(TAG, "Uri Scheme:" + uri.getScheme());
|
||||
Log.e(TAG, "uriToFile uriString:" + uri.toString());
|
||||
return new File(uri.toString());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,10 @@ public class AddWechatContactViewModel extends BaseViewModel<ActivityAddWechatCo
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("addContact", "onError: " + e.getMessage());
|
||||
BaseResponse baseResponse = new BaseResponse();
|
||||
baseResponse.code = 404;
|
||||
baseResponse.msg = "网络连接失败";
|
||||
mBaseResponseMutableLiveData.setValue(baseResponse);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
package com.uiuios.aios.activity.contact;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.provider.MediaStore;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.bumptech.glide.request.target.SimpleTarget;
|
||||
import com.bumptech.glide.request.transition.Transition;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.luck.picture.lib.basic.PictureSelector;
|
||||
import com.luck.picture.lib.config.SelectMimeType;
|
||||
import com.luck.picture.lib.entity.LocalMedia;
|
||||
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
|
||||
import com.uiuios.aios.R;
|
||||
import com.uiuios.aios.base.GlideEngine;
|
||||
import com.uiuios.aios.base.mvvm.BaseMvvmActivity;
|
||||
import com.uiuios.aios.bean.BaseResponse;
|
||||
import com.uiuios.aios.bean.Contact;
|
||||
import com.uiuios.aios.databinding.ActivityEditContactBinding;
|
||||
import com.uiuios.aios.manager.RemoteManager;
|
||||
import com.uiuios.aios.utils.ScreenUtil;
|
||||
import com.xiasuhuei321.loadingdialog.view.LoadingDialog;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class EditContactActivity extends BaseMvvmActivity<EditContactViewModel, ActivityEditContactBinding> {
|
||||
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<BaseResponse>() {
|
||||
@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<Bitmap>() {
|
||||
@Override
|
||||
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> 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<LocalMedia>() {
|
||||
@Override
|
||||
public void onResult(ArrayList<LocalMedia> 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<String, String> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<ActivityEditContactBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityEditContactBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<BaseResponse> mBaseResponseMutableLiveData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<BaseResponse> getBaseResponseMutableLiveData() {
|
||||
return mBaseResponseMutableLiveData;
|
||||
}
|
||||
|
||||
public void editContact(Map<String, String> params, MultipartBody.Part body) {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getMailListEditObservable(params, body)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@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: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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<InformationViewModel, ActivityInformationBinding> {
|
||||
private static final String TAG = InformationActivity.class.getSimpleName();
|
||||
|
||||
|
||||
private InformationAdapter mInformationAdapter;
|
||||
|
||||
private HashMap<String, CategoryBean> 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<List<CategoryBean>>() {
|
||||
@Override
|
||||
public void onChanged(List<CategoryBean> categoryBeans) {
|
||||
if (categoryBeans != null && !categoryBeans.isEmpty()) {
|
||||
mViewDataBinding.tabLayout.setVisibility(View.VISIBLE);
|
||||
List<String> 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<ArticleList>() {
|
||||
@Override
|
||||
public void onChanged(ArticleList articleList) {
|
||||
if (articleList!=null) {
|
||||
List<ArticleInfo> 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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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<ActivityInformationBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityInformationBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<List<CategoryBean>> mCategoryBeanListData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<List<CategoryBean>> getCategoryBeanListData() {
|
||||
return mCategoryBeanListData;
|
||||
}
|
||||
|
||||
public void getCategorys() {
|
||||
NetInterfaceManager.getInstance().getCategorysObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<List<CategoryBean>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getCategorys", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<CategoryBean>> listBaseResponse) {
|
||||
Log.e("getCategorys", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
List<CategoryBean> 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<ArticleList> mArticleListData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<ArticleList> getArticleListData() {
|
||||
return mArticleListData;
|
||||
}
|
||||
|
||||
private Observer<BaseResponse<ArticleList>> getArticleListObserver() {
|
||||
return new Observer<BaseResponse<ArticleList>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getArticleListObserver", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<ArticleList> 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: ");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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<LocationViewModel, ActivityLocationBinding> implements CityAdapter.CityCallback, DistrictAdapter.DistrictCallback {
|
||||
|
||||
private List<AddressBean> popularCities = new ArrayList<AddressBean>() {{
|
||||
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<AddressBean> 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<String, Integer> 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<AddressBean> area = mDistrict.stream().filter(new Predicate<AddressBean>() {
|
||||
@Override
|
||||
public boolean test(AddressBean addressBean) {
|
||||
@@ -161,42 +150,19 @@ public class LocationAcivity extends BaseDataBindingActivity implements Location
|
||||
*/
|
||||
@Override
|
||||
public void initData() {
|
||||
HashMap<String, Integer> 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<List<AddressBean>>() {
|
||||
@Override
|
||||
public void onChanged(List<AddressBean> addressBeans) {
|
||||
mDistrict = addressBeans;
|
||||
mDistrictAdapter.setDistrict(addressBeans);
|
||||
}
|
||||
});
|
||||
mViewModel.initJsonData();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
mPresenter.detachView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setJsonData(List<AddressBean> 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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<LocationView> {
|
||||
void initJsonData();
|
||||
}
|
||||
|
||||
public interface LocationView extends BaseView {
|
||||
void setJsonData(List<AddressBean> area);
|
||||
}
|
||||
}
|
||||
@@ -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<ActivityLocationBinding, ActivityEvent> {
|
||||
|
||||
|
||||
LocationPresenter(Context context) {
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
private LocationContact.LocationView mView;
|
||||
|
||||
private BehaviorSubject<ActivityEvent> lifecycle;
|
||||
|
||||
public void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
|
||||
this.lifecycle = lifecycle;
|
||||
}
|
||||
|
||||
public BehaviorSubject<ActivityEvent> 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<List<AddressBean>> mAddressBeanListData =new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<List<AddressBean>> getAddressBeanListData() {
|
||||
return mAddressBeanListData;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initJsonData() {
|
||||
if (getCtx() == null) return;
|
||||
long time = System.currentTimeMillis();
|
||||
Observable.create(new ObservableOnSubscribe<List<AddressBean>>() {
|
||||
@Override
|
||||
public void subscribe(@NonNull ObservableEmitter<List<AddressBean>> emitter) throws Throwable {
|
||||
List<AddressBean> areaList = new ArrayList<>();
|
||||
String JsonData = new GetJsonDataUtil().getJson(mContext, "province.json");//获取assets目录下的json文件数据
|
||||
String JsonData = new GetJsonDataUtil().getJson(getCtx(), "province.json");//获取assets目录下的json文件数据
|
||||
ArrayList<JsonBean> 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<AddressBean> s) {
|
||||
Log.e("initJsonData", "onNext: ");
|
||||
Log.e("initJsonData", "initdatetime = " + (System.currentTimeMillis() - time) + "ms");
|
||||
mView.setJsonData(s);
|
||||
mAddressBeanListData.setValue(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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<MainViewModel, PhoneActivityM
|
||||
private int defaultCurrent = 2;
|
||||
|
||||
@Override
|
||||
public void onConnected() {
|
||||
public void onRemoteConnected() {
|
||||
setDefaultDesktop();
|
||||
}
|
||||
|
||||
@@ -101,6 +102,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
mViewModel.getSnInfo();
|
||||
}
|
||||
|
||||
|
||||
@@ -149,10 +151,10 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, PhoneActivityM
|
||||
appListFragment.setAppList(new ArrayList<>(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<MainViewModel, PhoneActivityM
|
||||
appListFragment.setAppList(new ArrayList<>(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<MainViewModel, PhoneActivityM
|
||||
appListFragment.setAppList(new ArrayList<>(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)));
|
||||
|
||||
@@ -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<PhoneActivityMainBinding, ActivityEvent> {
|
||||
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<PhoneActivityMainBinding, Activ
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<SnInfo> mSnInfoData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<SnInfo> getSnInfoData() {
|
||||
return mSnInfoData;
|
||||
}
|
||||
|
||||
public void getSnInfo() {
|
||||
NetInterfaceManager.getInstance().getSnInfoControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getSnInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<SnInfo> 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<ArrayList<DesktopIcon>> mDesktopIconData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<ArrayList<DesktopIcon>> getDesktopIconData() {
|
||||
|
||||
@@ -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<WeatherViewModel, Activity
|
||||
String district = bundle.getString("district");
|
||||
mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_ADDRESS, address);
|
||||
mMMKV.encode(CommonConfig.MANUALLY_SELECT_LOCATION_DISTRICT, district);
|
||||
mViewModel.decodeGeo(address);
|
||||
mViewModel.cityLookup(address);
|
||||
mViewDataBinding.tvLocation.setText(district);
|
||||
}
|
||||
}
|
||||
@@ -137,12 +138,24 @@ public class WeatherActivity extends BaseMvvmActivity<WeatherViewModel, Activity
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
mViewModel.getGeoResultData().observe(this, new Observer<MapGeoResult>() {
|
||||
// mViewModel.getGeoResultData().observe(this, new Observer<MapGeoResult>() {
|
||||
// @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<QweatherLocation>() {
|
||||
@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<WeatherViewModel, Activity
|
||||
public void onChanged(String s) {
|
||||
mViewDataBinding.tvLocation.setText(s);
|
||||
Toaster.show("刷新成功");
|
||||
mViewModel.decodeGeo(s);
|
||||
mViewModel.cityLookup(s);
|
||||
}
|
||||
});
|
||||
mViewModel.getWeatherNowData().observe(this, new Observer<WeatherNowBean>() {
|
||||
|
||||
@@ -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<ActivityWeatherBinding, ActivityEvent> {
|
||||
private static final String TAG = WeatherViewModel.class.getSimpleName();
|
||||
@@ -59,62 +50,87 @@ public class WeatherViewModel extends BaseViewModel<ActivityWeatherBinding, Acti
|
||||
}
|
||||
|
||||
private MutableLiveData<MapGeoResult> mGeoResultData = new MutableLiveData<>();
|
||||
private MutableLiveData<String> mLocationData = new MutableLiveData<>();
|
||||
private MutableLiveData<WeatherNowBean> mWeatherNowData = new MutableLiveData<>();
|
||||
private MutableLiveData<WeatherDailyBean> mWeatherDailyData = new MutableLiveData<>();
|
||||
|
||||
|
||||
public MutableLiveData<MapGeoResult> getGeoResultData() {
|
||||
return mGeoResultData;
|
||||
}
|
||||
|
||||
public MutableLiveData<String> getLocationData() {
|
||||
return mLocationData;
|
||||
}
|
||||
|
||||
public MutableLiveData<WeatherNowBean> getWeatherNowData() {
|
||||
return mWeatherNowData;
|
||||
}
|
||||
|
||||
public MutableLiveData<WeatherDailyBean> 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<BaiduMapGeoBean>() {
|
||||
// @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<QweatherLocation> mQweatherLocationData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<QweatherLocation> getQweatherLocationData() {
|
||||
return mQweatherLocationData;
|
||||
}
|
||||
|
||||
public void cityLookup(String city) {
|
||||
NetInterfaceManager.getInstance().getLookupObservable(city)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<MapGeoBean>() {
|
||||
.subscribe(new Observer<QweatherLookup>() {
|
||||
@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<QweatherLocation> 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<ActivityWeatherBinding, Acti
|
||||
Log.e(TAG, "getWeatherCache: now = " + e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
String jsonString = mMMKV.decodeString(CommonConfig.WEATHER_DAILY_KEY, "");
|
||||
Type type = new TypeToken<WeatherDailyBean>() {
|
||||
}.getType();
|
||||
@@ -139,6 +154,12 @@ public class WeatherViewModel extends BaseViewModel<ActivityWeatherBinding, Acti
|
||||
}
|
||||
}
|
||||
|
||||
private MutableLiveData<String> mLocationData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<String> getLocationData() {
|
||||
return mLocationData;
|
||||
}
|
||||
|
||||
public void getLocation() {
|
||||
String location = AmapManager.getInstance().getDistrict();
|
||||
mLocationData.setValue(location);
|
||||
@@ -158,6 +179,12 @@ public class WeatherViewModel extends BaseViewModel<ActivityWeatherBinding, Acti
|
||||
getWeather7D(location);
|
||||
}
|
||||
|
||||
private MutableLiveData<WeatherNowBean> mWeatherNowData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<WeatherNowBean> getWeatherNowData() {
|
||||
return mWeatherNowData;
|
||||
}
|
||||
|
||||
public void getWeatherNow(String locationTude) {
|
||||
Log.e(TAG, "getweather: " + locationTude);
|
||||
/**
|
||||
@@ -185,6 +212,12 @@ public class WeatherViewModel extends BaseViewModel<ActivityWeatherBinding, Acti
|
||||
});
|
||||
}
|
||||
|
||||
private MutableLiveData<WeatherDailyBean> mWeatherDailyData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<WeatherDailyBean> getWeatherDailyData() {
|
||||
return mWeatherDailyData;
|
||||
}
|
||||
|
||||
public void getWeather7D(String locationTude) {
|
||||
QWeather.getWeather7D(getCtx(), locationTude, new QWeather.OnResultWeatherDailyListener() {
|
||||
@Override
|
||||
|
||||
@@ -36,6 +36,16 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private WechatContactAdapter.OnLongClick mOnLongClick;
|
||||
|
||||
public void setOnLongClick(WechatContactAdapter.OnLongClick onLongClick) {
|
||||
mOnLongClick = onLongClick;
|
||||
}
|
||||
|
||||
public interface OnLongClick {
|
||||
void setOnLongClickListener(Contact contact);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ContactHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
@@ -79,6 +89,15 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
|
||||
}
|
||||
}
|
||||
});
|
||||
contactHolder.root.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
if (mOnLongClick != null) {
|
||||
mOnLongClick.setOnLongClickListener(contact);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
contactHolder.tv_name.setText(contact.getName());
|
||||
if (DIALER_PACKAGE.equals(contact.getMobile())) {
|
||||
contactHolder.cl_contact.setVisibility(View.GONE);
|
||||
|
||||
@@ -14,8 +14,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.shehuan.niv.NiceImageView;
|
||||
import com.uiuios.aios.R;
|
||||
import com.uiuios.aios.activity.ArticleActivity;
|
||||
import com.uiuios.aios.activity.InformationActivity;
|
||||
import com.uiuios.aios.activity.information.InformationActivity;
|
||||
import com.uiuios.aios.bean.ArticleInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class MapGeoBean implements Serializable {
|
||||
public class BaiduMapGeoBean implements Serializable {
|
||||
private static final long serialVersionUID = 3502542257994267517L;
|
||||
|
||||
int status;
|
||||
@@ -10,7 +10,7 @@ import java.io.Serializable;
|
||||
public class Contact implements Serializable {
|
||||
private static final long serialVersionUID = 8814155739557674021L;
|
||||
|
||||
int id;
|
||||
String id;
|
||||
String name;//名称
|
||||
int is_urgent;//是否紧急联系人 0否1是
|
||||
String mobile;//手机号
|
||||
@@ -28,11 +28,11 @@ public class Contact implements Serializable {
|
||||
this.simContact = sim;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
||||
16
app/src/main/java/com/uiuios/aios/bean/FamilyAddress.java
Normal file
16
app/src/main/java/com/uiuios/aios/bean/FamilyAddress.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.uiuios.aios.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class FamilyAddress implements Serializable {
|
||||
private static final long serialVersionUID = 6029825322662748631L;
|
||||
String address;
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
}
|
||||
137
app/src/main/java/com/uiuios/aios/bean/QweatherLocation.java
Normal file
137
app/src/main/java/com/uiuios/aios/bean/QweatherLocation.java
Normal file
@@ -0,0 +1,137 @@
|
||||
package com.uiuios.aios.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class QweatherLocation implements Serializable {
|
||||
private static final long serialVersionUID = -3782071476006017055L;
|
||||
|
||||
String name;
|
||||
String id;
|
||||
String lat;
|
||||
String lon;
|
||||
String adm2;
|
||||
String adm1;
|
||||
String country;
|
||||
String tz;
|
||||
String utcOffset;
|
||||
int isDst;
|
||||
String type;
|
||||
long rank;
|
||||
String fxLink;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getLat() {
|
||||
return lat;
|
||||
}
|
||||
|
||||
public void setLat(String lat) {
|
||||
this.lat = lat;
|
||||
}
|
||||
|
||||
public String getLon() {
|
||||
return lon;
|
||||
}
|
||||
|
||||
public void setLon(String lon) {
|
||||
this.lon = lon;
|
||||
}
|
||||
|
||||
public String getAdm2() {
|
||||
return adm2;
|
||||
}
|
||||
|
||||
public void setAdm2(String adm2) {
|
||||
this.adm2 = adm2;
|
||||
}
|
||||
|
||||
public String getAdm1() {
|
||||
return adm1;
|
||||
}
|
||||
|
||||
public void setAdm1(String adm1) {
|
||||
this.adm1 = adm1;
|
||||
}
|
||||
|
||||
public String getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setCountry(String country) {
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
public String getTz() {
|
||||
return tz;
|
||||
}
|
||||
|
||||
public void setTz(String tz) {
|
||||
this.tz = tz;
|
||||
}
|
||||
|
||||
public String getUtcOffset() {
|
||||
return utcOffset;
|
||||
}
|
||||
|
||||
public void setUtcOffset(String utcOffset) {
|
||||
this.utcOffset = utcOffset;
|
||||
}
|
||||
|
||||
public int getIsDst() {
|
||||
return isDst;
|
||||
}
|
||||
|
||||
public void setIsDst(int isDst) {
|
||||
this.isDst = isDst;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public long getRank() {
|
||||
return rank;
|
||||
}
|
||||
|
||||
public void setRank(long rank) {
|
||||
this.rank = rank;
|
||||
}
|
||||
|
||||
public String getFxLink() {
|
||||
return fxLink;
|
||||
}
|
||||
|
||||
public void setFxLink(String fxLink) {
|
||||
this.fxLink = fxLink;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
39
app/src/main/java/com/uiuios/aios/bean/QweatherLookup.java
Normal file
39
app/src/main/java/com/uiuios/aios/bean/QweatherLookup.java
Normal file
@@ -0,0 +1,39 @@
|
||||
package com.uiuios.aios.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class QweatherLookup implements Serializable {
|
||||
private static final long serialVersionUID = -150539309924701702L;
|
||||
|
||||
int code;
|
||||
List<QweatherLocation> location;
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public List<QweatherLocation> getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public void setLocation(List<QweatherLocation> location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
}
|
||||
|
||||
140
app/src/main/java/com/uiuios/aios/dialog/EditContactDialog.java
Normal file
140
app/src/main/java/com/uiuios/aios/dialog/EditContactDialog.java
Normal file
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<ContactViewModel, Fragment
|
||||
mContactAdapter.setOnLongClick(new WechatContactAdapter.OnLongClick() {
|
||||
@Override
|
||||
public void setOnLongClickListener(Contact contact) {
|
||||
showDialog(contact);
|
||||
// showDialog(contact);
|
||||
}
|
||||
});
|
||||
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
@@ -99,25 +103,37 @@ public class ContactFragment extends BaseMvvmFragment<ContactViewModel, Fragment
|
||||
mViewModel.getContact();
|
||||
}
|
||||
|
||||
private EditContactDialog mEditContactDialog;
|
||||
|
||||
private void showDialog(Contact contact) {
|
||||
DeleteContactDialog dialog = new DeleteContactDialog(getContext());
|
||||
dialog.setTitle("提醒")
|
||||
.setMessage("是否要删除联系人")
|
||||
.setPositive("确定")
|
||||
.setNegtive("取消")
|
||||
.setOnClickBottomListener(new DeleteContactDialog.OnClickBottomListener() {
|
||||
if (mEditContactDialog == null) {
|
||||
mEditContactDialog = new EditContactDialog(getContext());
|
||||
}
|
||||
mEditContactDialog
|
||||
.setPhoneNumber(contact.getMobile())
|
||||
.setOnClickBottomListener(new EditContactDialog.OnClickBottomListener() {
|
||||
@Override
|
||||
public void onPositiveClick() {
|
||||
mViewModel.deleteContact(contact.getId());
|
||||
dialog.dismiss();
|
||||
public void onEditClick() {
|
||||
Intent intent =new Intent(getContext(), EditContactActivity.class);
|
||||
intent.putExtra("Contact",contact);
|
||||
startActivity(intent);
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNegtiveClick() {
|
||||
dialog.dismiss();
|
||||
public void onDeleteClick() {
|
||||
mViewModel.deleteContact(contact.getId());
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelClick() {
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
});
|
||||
dialog.show();
|
||||
Window window = mEditContactDialog.getWindow();
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
mEditContactDialog.show();
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
|
||||
@@ -137,7 +137,7 @@ public class ContactViewModel extends BaseViewModel<FragmentContactHomeBinding,
|
||||
return mDeleteData;
|
||||
}
|
||||
|
||||
public void deleteContact(int id) {
|
||||
public void deleteContact(String id) {
|
||||
NetInterfaceManager.getInstance().getMailListDeleteObservable(id)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
|
||||
@@ -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<ControlViewModel, PhoneFragmentControlBinding> {
|
||||
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<ControlViewModel, PhoneFra
|
||||
public void onChange(boolean selfChange) {
|
||||
super.onChange(selfChange);
|
||||
Log.e("mBrightnessObserver", "onChange: " + Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 1));
|
||||
getBrightness();
|
||||
}
|
||||
};
|
||||
|
||||
private void initData() {
|
||||
LiveEventBus.get("MapBean", MapBean.class)
|
||||
.observe(this, new Observer<MapBean>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable MapBean mapBean) {
|
||||
Toaster.showShort("刷新成功");
|
||||
mViewDataBinding.tvLocation.setText(mapBean.getAddress());
|
||||
}
|
||||
});
|
||||
mViewModel.getFamilyAddressData().observe(this, new Observer<FamilyAddress>() {
|
||||
@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<MapBean>() {
|
||||
// @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<ControlViewModel, PhoneFra
|
||||
// }
|
||||
|
||||
private void getFontSize() {
|
||||
float fontScale = Settings.System.getFloat(mCRv, Settings.System.FONT_SCALE, 0.0f);
|
||||
float fontScale = Settings.System.getFloat(mCRv, Settings.System.FONT_SCALE, 1.0f);
|
||||
Log.e(TAG, "getHardware: fontScale = " + fontScale);
|
||||
List<String> mEntries = Arrays.asList(getResources().getStringArray(R.array.entries_font_size));
|
||||
List<String> strEntryValues = Arrays.asList(getResources().getStringArray(R.array.entryvalues_font_size));
|
||||
@@ -822,10 +839,10 @@ public class ControlFragment extends BaseMvvmFragment<ControlViewModel, PhoneFra
|
||||
}
|
||||
|
||||
private void getLocation() {
|
||||
String addr = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).decodeString(CommonConfig.MAP_ADDRESS_KEY);
|
||||
String addr = mMMKV.decodeString(CommonConfig.FAMILY_ADDRESS_KEY);
|
||||
|
||||
if (TextUtils.isEmpty(addr) || "nullnull".equals(addr) || "null".equals(addr)) {
|
||||
mViewDataBinding.tvLocation.setText("未能获取到位置信息");
|
||||
mViewDataBinding.tvLocation.setText("未设置地址");
|
||||
} else {
|
||||
mViewDataBinding.tvLocation.setText(addr);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
package com.uiuios.aios.fragment.control;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.uiuios.aios.base.mvvm.BaseViewModel;
|
||||
import com.uiuios.aios.bean.BaseResponse;
|
||||
import com.uiuios.aios.bean.FamilyAddress;
|
||||
import com.uiuios.aios.config.CommonConfig;
|
||||
import com.uiuios.aios.databinding.PhoneFragmentControlBinding;
|
||||
import com.uiuios.aios.network.NetInterfaceManager;
|
||||
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class ControlViewModel extends BaseViewModel<PhoneFragmentControlBinding, FragmentEvent> {
|
||||
|
||||
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<PhoneFragmentControlBinding,
|
||||
|
||||
}
|
||||
|
||||
public MutableLiveData<FamilyAddress> mFamilyAddressData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<FamilyAddress> getFamilyAddressData() {
|
||||
return mFamilyAddressData;
|
||||
}
|
||||
|
||||
public void getFamilyAddress() {
|
||||
NetInterfaceManager.getInstance().getFamilyAddressControl()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<FamilyAddress>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getFamilyAddress", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<FamilyAddress> 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: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<HomeViewModel, FragmentHomeBinding> {
|
||||
public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBinding> implements NetworkUtils.OnNetworkStatusChangedListener {
|
||||
private static final String TAG = HomeFragment.class.getSimpleName();
|
||||
|
||||
|
||||
@@ -115,8 +116,20 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
public void onDisconnected() {
|
||||
Log.e(TAG, "onDisconnected: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||
Log.e(TAG, "onConnected: " + networkType);
|
||||
initAmap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchData() {
|
||||
Log.e(TAG, "fetchData: " );
|
||||
// initAmap();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -135,6 +148,7 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
|
||||
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
NetworkUtils.registerNetworkStatusChangedListener(this);
|
||||
initView();
|
||||
}
|
||||
|
||||
@@ -298,6 +312,12 @@ public class HomeFragment extends BaseMvvmFragment<HomeViewModel, FragmentHomeBi
|
||||
unregisterReceivers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
NetworkUtils.unregisterNetworkStatusChangedListener(this);
|
||||
}
|
||||
|
||||
private void registerReceivers() {
|
||||
registerTimeReceiver();
|
||||
registerAlarmClockReceiver();
|
||||
|
||||
@@ -62,7 +62,7 @@ public class HomeViewModel extends BaseViewModel<FragmentHomeBinding, FragmentEv
|
||||
// updateDesktopIcon.setIcon(mContext.getDrawable(R.drawable.icon_update));
|
||||
// desktopIcons.add(desktopIcons.size(), updateDesktopIcon);
|
||||
|
||||
if (desktopIcons.size()!=6){
|
||||
if (desktopIcons.size() != 6) {
|
||||
DesktopIcon desktopIcon = new DesktopIcon();
|
||||
desktopIcon.setTitle("添加应用");
|
||||
desktopIcon.setPackage(AppManager.ADD_NAME);
|
||||
|
||||
@@ -7,17 +7,24 @@ import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
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.LinearLayoutManager;
|
||||
|
||||
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.ContactAdapter;
|
||||
import com.uiuios.aios.adapter.WechatContactAdapter;
|
||||
import com.uiuios.aios.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.uiuios.aios.bean.BaseResponse;
|
||||
import com.uiuios.aios.bean.Contact;
|
||||
import com.uiuios.aios.databinding.FragmentContactBinding;
|
||||
import com.uiuios.aios.dialog.EditContactDialog;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -59,6 +66,12 @@ public class ContactFragment extends BaseMvvmFragment<ContactViewModel, Fragment
|
||||
@Override
|
||||
protected void initView(Bundle bundle) {
|
||||
mContactAdapter = new ContactAdapter();
|
||||
mContactAdapter.setOnLongClick(new WechatContactAdapter.OnLongClick() {
|
||||
@Override
|
||||
public void setOnLongClickListener(Contact contact) {
|
||||
showDialog(contact);
|
||||
}
|
||||
});
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
|
||||
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
|
||||
mViewDataBinding.rvContact.setLayoutManager(linearLayoutManager);
|
||||
@@ -68,6 +81,10 @@ public class ContactFragment extends BaseMvvmFragment<ContactViewModel, Fragment
|
||||
// mViewDataBinding.rvContact.setLayoutManager(new GridLayoutManager(mContext, 2));
|
||||
// }
|
||||
mViewDataBinding.rvContact.setAdapter(mContactAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.getContactListData().observe(this, new Observer<List<Contact>>() {
|
||||
@Override
|
||||
public void onChanged(List<Contact> contacts) {
|
||||
@@ -79,10 +96,18 @@ public class ContactFragment extends BaseMvvmFragment<ContactViewModel, Fragment
|
||||
mContactAdapter.setContactList(contacts);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
mViewModel.getDeleteData().observe(this, new Observer<BaseResponse>() {
|
||||
@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<ContactViewModel, Fragment
|
||||
return contactList;
|
||||
}
|
||||
|
||||
private EditContactDialog mEditContactDialog;
|
||||
|
||||
private void showDialog(Contact contact) {
|
||||
if (mEditContactDialog == null) {
|
||||
mEditContactDialog = new EditContactDialog(getContext());
|
||||
}
|
||||
mEditContactDialog
|
||||
.setPhoneNumber(contact.getMobile())
|
||||
.setOnClickBottomListener(new EditContactDialog.OnClickBottomListener() {
|
||||
@Override
|
||||
public void onEditClick() {
|
||||
Intent intent =new Intent(getContext(), EditContactActivity.class);
|
||||
intent.putExtra("Contact",contact);
|
||||
startActivity(intent);
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeleteClick() {
|
||||
mViewModel.deleteContact(contact.getId());
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancelClick() {
|
||||
mEditContactDialog.dismiss();
|
||||
}
|
||||
});
|
||||
Window window = mEditContactDialog.getWindow();
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
mEditContactDialog.show();
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void add(View view) {
|
||||
|
||||
@@ -89,4 +89,36 @@ public class ContactViewModel extends BaseViewModel<FragmentContactBinding, Frag
|
||||
});
|
||||
}
|
||||
|
||||
private MutableLiveData<BaseResponse> mDeleteData =new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<BaseResponse> getDeleteData() {
|
||||
return mDeleteData;
|
||||
}
|
||||
|
||||
public void deleteContact(String id) {
|
||||
NetInterfaceManager.getInstance().getMailListDeleteObservable(id)
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@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: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<ConnectedListener> 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<String, Long> 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<MapGeoBean> getGeoObservable(String address) {
|
||||
@Deprecated
|
||||
public Observable<BaiduMapGeoBean> getGeoObservable(String address) {
|
||||
return mAmapRetrofit.create(GeocodingApi.class)
|
||||
.geocoding(address, "json", "RGAsG7hN9gbDxeruqF4Lsf0ro6pp362O")
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<QweatherLookup> 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<BaseResponse<SnInfo>> getsnInfoControl() {
|
||||
public Observable<BaseResponse<SnInfo>> getSnInfoControl() {
|
||||
return mRetrofit.create(SnInfoApi.class)
|
||||
.getSninfo(RemoteManager.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<FamilyAddress>> getFamilyAddressControl() {
|
||||
return mRetrofit.create(FamilyAddressApi.class)
|
||||
.getFamilyAddress(RemoteManager.getInstance().getSerial())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse<UserAvatarInfo>> getUserAvatarInfoControl() {
|
||||
return mRetrofit.create(UserInfoControl.class)
|
||||
.getUserAvatarInfo(RemoteManager.getInstance().getSerial())
|
||||
@@ -398,8 +447,14 @@ public class NetInterfaceManager {
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getMailListEditObservable(Map<String, String> params, MultipartBody.Part body) {
|
||||
return mRetrofit.create(MailListEditApi.class)
|
||||
.editContact(params, body)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread());
|
||||
}
|
||||
|
||||
public Observable<BaseResponse> getMailListDeleteObservable(int id) {
|
||||
public Observable<BaseResponse> 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<BaseResponse<SnInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<MapGeoBean> geocoding(
|
||||
Observable<BaiduMapGeoBean> geocoding(
|
||||
@Query("address") String address,
|
||||
@Query("output") String output,
|
||||
@Query("ak") String key
|
||||
|
||||
@@ -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<QweatherLookup> lookup(
|
||||
@Query("location") String location,
|
||||
@Query("key") String key
|
||||
);
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.uiuios.aios.network.api;
|
||||
package com.uiuios.aios.network.api.uiui;
|
||||
|
||||
|
||||
import com.uiuios.aios.bean.BaseResponse;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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<BaseResponse> deleteMailList(
|
||||
@Field("sn") String sn,
|
||||
@Field("id") int id
|
||||
@Field("id") String id
|
||||
);
|
||||
}
|
||||
@@ -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<BaseResponse> editContact(
|
||||
@QueryMap Map<String, String> params,
|
||||
@Part MultipartBody.Part body
|
||||
);
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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<BaseResponse<FamilyAddress>> getFamilyAddress(
|
||||
@Query("sn") String sn
|
||||
);
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -165,6 +165,10 @@ public class ApkUtils {
|
||||
private static List<String> hideApp = new ArrayList<String>() {{
|
||||
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)) {
|
||||
|
||||
@@ -56,4 +56,5 @@ public class FileUtil {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user