version:2.0.0
fix: update:修改样式,设置页面开关修改,联系人页面修改
This commit is contained in:
@@ -31,9 +31,9 @@ public class FlashlightActivity extends BaseDataBindingActivity {
|
||||
super.onChange(selfChange);
|
||||
Log.e("mFlashLightObserver", "onChange: " + Settings.System.getInt(getContentResolver(), Settings.Secure.FLASHLIGHT_ENABLED, 0));
|
||||
if (isFlashlightEnabled()) {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_open));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_on));
|
||||
} else {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_close));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_off));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -60,12 +60,12 @@ public class FlashlightActivity extends BaseDataBindingActivity {
|
||||
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
|
||||
if (isFlashlightAvailable()) {
|
||||
if (isFlashlightEnabled()) {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_open));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_on));
|
||||
} else {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_close));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_off));
|
||||
}
|
||||
} else {
|
||||
mBinding.tvFlashlightStatu.setText("手电筒不可用");
|
||||
// mBinding.tvFlashlightStatu.setText("手电筒不可用");
|
||||
}
|
||||
mBinding.clTrun.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -78,7 +78,7 @@ public class FlashlightActivity extends BaseDataBindingActivity {
|
||||
} catch (CameraAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_close));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_off));
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.FLASHLIGHT_ENABLED, 0);
|
||||
} else {
|
||||
try {
|
||||
@@ -87,7 +87,7 @@ public class FlashlightActivity extends BaseDataBindingActivity {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_open));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_on));
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.FLASHLIGHT_ENABLED, 1);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -76,9 +76,9 @@ public class NetworkActivity extends BaseDataBindingActivity implements NetworkU
|
||||
|
||||
private void setDataStatus() {
|
||||
if (getDataEnabled()) {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_open));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_on));
|
||||
} else {
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_flash_light_close));
|
||||
mBinding.ivStatu.setImageDrawable(getDrawable(R.drawable.icon_turn_off));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package com.vscool.os.activity.alarm.add;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bigkoo.pickerview.builder.TimePickerBuilder;
|
||||
import com.bigkoo.pickerview.listener.CustomListener;
|
||||
@@ -79,35 +82,6 @@ public class AlarmAddActivity extends BaseMvvmActivity<AlarmAddViewModel, Activi
|
||||
@Override
|
||||
public void initView() {
|
||||
initTimePicker();
|
||||
|
||||
mViewDataBinding.rb1.setChecked(true);
|
||||
mViewDataBinding.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
|
||||
if (isChecked) {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
|
||||
mViewDataBinding.rb1.setTextColor(colorStateList);
|
||||
mDayType = 1;
|
||||
} else {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
|
||||
mViewDataBinding.rb1.setTextColor(colorStateList);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
|
||||
if (isChecked) {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
|
||||
mViewDataBinding.rb2.setTextColor(colorStateList);
|
||||
mDayType = 2;
|
||||
} else {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
|
||||
mViewDataBinding.rb2.setTextColor(colorStateList);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,7 +89,6 @@ public class AlarmAddActivity extends BaseMvvmActivity<AlarmAddViewModel, Activi
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void checkContent() {
|
||||
pvTime.returnData();
|
||||
// if (TextUtils.isEmpty(mViewDataBinding.etActivation.getText())) {
|
||||
@@ -240,7 +213,11 @@ public class AlarmAddActivity extends BaseMvvmActivity<AlarmAddViewModel, Activi
|
||||
.setDate(selectedDate)
|
||||
.setRangDate(startDate, selectedDate)
|
||||
.setDecorView(mViewDataBinding.clContent)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
|
||||
.setOutSideColor(0x00000000)
|
||||
// .setOutSideColor(getResources().getColor(R.color.default_color))
|
||||
.setBgColor(getResources().getColor(R.color.default_color))
|
||||
.setTextColorOut(getResources().getColor(R.color.black))
|
||||
.setTextColorCenter(getResources().getColor(R.color.black))
|
||||
.setDividerColor(getResources().getColor(R.color.black))
|
||||
.setOutSideCancelable(false)
|
||||
.build();
|
||||
pvTime.setKeyBackCancelable(false);//系统返回键监听屏蔽掉
|
||||
@@ -258,6 +235,7 @@ public class AlarmAddActivity extends BaseMvvmActivity<AlarmAddViewModel, Activi
|
||||
return format.format(date);
|
||||
}
|
||||
|
||||
private PopupWindow mTypePopupWindow;
|
||||
|
||||
public class Click {
|
||||
public void exit(View view) {
|
||||
@@ -271,5 +249,57 @@ public class AlarmAddActivity extends BaseMvvmActivity<AlarmAddViewModel, Activi
|
||||
public void submit(View view) {
|
||||
checkContent();
|
||||
}
|
||||
|
||||
public void setType(View view) {
|
||||
if (mTypePopupWindow == null) {
|
||||
mTypePopupWindow = new PopupWindow();
|
||||
View inflate = LayoutInflater.from(AlarmAddActivity.this).inflate(R.layout.popup_type, null);
|
||||
TextView tv_once = inflate.findViewById(R.id.tv_once);
|
||||
tv_once.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mDayType = 1;
|
||||
mTypePopupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
TextView tv_loop = inflate.findViewById(R.id.tv_loop);
|
||||
tv_loop.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mDayType = 2;
|
||||
mTypePopupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
//设置view布局
|
||||
mTypePopupWindow.setContentView(inflate);
|
||||
mTypePopupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
mTypePopupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
//设置动画的方法
|
||||
// mTypePopupWindow.setAnimationStyle(R.style.BottomDialog);
|
||||
//设置PopUpWindow的焦点,设置为true之后,PopupWindow内容区域,才可以响应点击事件
|
||||
mTypePopupWindow.setTouchable(true);
|
||||
//设置背景透明
|
||||
mTypePopupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
|
||||
//点击空白处的时候让PopupWindow消失
|
||||
mTypePopupWindow.setOutsideTouchable(true);
|
||||
// true时,点击返回键先消失 mTypePopupWindow
|
||||
// 但是设置为true时setOutsideTouchable,setTouchable方法就失效了(点击外部不消失,内容区域也不响应事件)
|
||||
// false时PopupWindow不处理返回键,默认是false
|
||||
mTypePopupWindow.setFocusable(false);
|
||||
|
||||
//设置dismiss事件
|
||||
mTypePopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
boolean showing = mTypePopupWindow.isShowing();
|
||||
if (!showing) {
|
||||
//show,并且可以设置位置
|
||||
mTypePopupWindow.showAsDropDown(mViewDataBinding.tvType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
package com.vscool.os.activity.alarm.edit;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.PopupWindow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.bigkoo.pickerview.builder.TimePickerBuilder;
|
||||
import com.bigkoo.pickerview.listener.CustomListener;
|
||||
@@ -92,33 +95,6 @@ public class AlarmEditActivity extends BaseMvvmActivity<AlarmEditViewModel, Acti
|
||||
@Override
|
||||
public void initView() {
|
||||
initTimePicker();
|
||||
|
||||
mViewDataBinding.rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
|
||||
mViewDataBinding.rb1.setTextColor(colorStateList);
|
||||
mDayType = 1;
|
||||
} else {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
|
||||
mViewDataBinding.rb1.setTextColor(colorStateList);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
|
||||
if (b) {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.white);
|
||||
mViewDataBinding.rb2.setTextColor(colorStateList);
|
||||
mDayType = 2;
|
||||
} else {
|
||||
ColorStateList colorStateList = getResources().getColorStateList(R.color.radio_botton_gray);
|
||||
mViewDataBinding.rb2.setTextColor(colorStateList);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -145,21 +121,12 @@ public class AlarmEditActivity extends BaseMvvmActivity<AlarmEditViewModel, Acti
|
||||
switch (mDayType) {
|
||||
default:
|
||||
case AlarmUtils.ONCE:
|
||||
mViewDataBinding.rb1.setChecked(true);
|
||||
// tvType.setText("只响一次");
|
||||
mViewDataBinding.tvType.setText("一次");
|
||||
break;
|
||||
case AlarmUtils.LOOP:
|
||||
mViewDataBinding.rb2.setChecked(true);
|
||||
// tvType.setText("每天");
|
||||
mViewDataBinding.tvType.setText("每天");
|
||||
break;
|
||||
// case AlarmUtils.WORKING_DAY:
|
||||
// rb3.setChecked(true);
|
||||
// tvType.setText("周一至周五");
|
||||
// break;
|
||||
// case AlarmUtils.OFF_DAY:
|
||||
// rb4.setChecked(true);
|
||||
// tvType.setText("周六至周日");
|
||||
// break;
|
||||
|
||||
}
|
||||
String time = mAlarmClockData.getTime();
|
||||
Calendar date = getTime(time);
|
||||
@@ -373,7 +340,11 @@ public class AlarmEditActivity extends BaseMvvmActivity<AlarmEditViewModel, Acti
|
||||
.setDate(selectedDate)
|
||||
.setRangDate(startDate, selectedDate)
|
||||
.setDecorView(mViewDataBinding.clContent)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中
|
||||
.setOutSideColor(0x00000000)
|
||||
// .setOutSideColor(0x00000000)
|
||||
.setBgColor(getResources().getColor(R.color.default_color))
|
||||
.setTextColorOut(getResources().getColor(R.color.black))
|
||||
.setTextColorCenter(getResources().getColor(R.color.black))
|
||||
.setDividerColor(getResources().getColor(R.color.black))
|
||||
.setOutSideCancelable(false)
|
||||
.build();
|
||||
pvTime.setKeyBackCancelable(false);//系统返回键监听屏蔽掉
|
||||
@@ -410,6 +381,8 @@ public class AlarmEditActivity extends BaseMvvmActivity<AlarmEditViewModel, Acti
|
||||
}
|
||||
}
|
||||
|
||||
private PopupWindow mTypePopupWindow;
|
||||
|
||||
public class Click {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
@@ -422,6 +395,58 @@ public class AlarmEditActivity extends BaseMvvmActivity<AlarmEditViewModel, Acti
|
||||
public void submit(View view) {
|
||||
checkContent();
|
||||
}
|
||||
|
||||
public void setType(View view) {
|
||||
if (mTypePopupWindow == null) {
|
||||
mTypePopupWindow = new PopupWindow();
|
||||
View inflate = LayoutInflater.from(AlarmEditActivity.this).inflate(R.layout.popup_type, null);
|
||||
TextView tv_once = inflate.findViewById(R.id.tv_once);
|
||||
tv_once.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mDayType = 1;
|
||||
mTypePopupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
TextView tv_loop = inflate.findViewById(R.id.tv_loop);
|
||||
tv_loop.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mDayType = 2;
|
||||
mTypePopupWindow.dismiss();
|
||||
}
|
||||
});
|
||||
//设置view布局
|
||||
mTypePopupWindow.setContentView(inflate);
|
||||
mTypePopupWindow.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
mTypePopupWindow.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
//设置动画的方法
|
||||
// mTypePopupWindow.setAnimationStyle(R.style.BottomDialog);
|
||||
//设置PopUpWindow的焦点,设置为true之后,PopupWindow内容区域,才可以响应点击事件
|
||||
mTypePopupWindow.setTouchable(true);
|
||||
//设置背景透明
|
||||
mTypePopupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));
|
||||
//点击空白处的时候让PopupWindow消失
|
||||
mTypePopupWindow.setOutsideTouchable(true);
|
||||
// true时,点击返回键先消失 mTypePopupWindow
|
||||
// 但是设置为true时setOutsideTouchable,setTouchable方法就失效了(点击外部不消失,内容区域也不响应事件)
|
||||
// false时PopupWindow不处理返回键,默认是false
|
||||
mTypePopupWindow.setFocusable(false);
|
||||
|
||||
//设置dismiss事件
|
||||
mTypePopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
boolean showing = mTypePopupWindow.isShowing();
|
||||
if (!showing) {
|
||||
//show,并且可以设置位置
|
||||
mTypePopupWindow.showAsDropDown(mViewDataBinding.tvType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class CallWechatActivity extends BaseMvvmActivity<CallWechatViewModel, Ac
|
||||
private boolean checkSettings() {
|
||||
boolean accessibility = AccessibilityUtils.isAccessibilitySettingsOn(this);
|
||||
if (!accessibility) {
|
||||
Toast.makeText(this, "请在无障碍服务中打开 - 关爱守护快捷服务", Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(this, "请在无障碍服务中打开 - 亲情桌面快捷服务", Toast.LENGTH_LONG).show();
|
||||
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
|
||||
}
|
||||
return accessibility;
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.vscool.os.base.mvvm.BaseMvvmActivity;
|
||||
import com.vscool.os.bean.Contact;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
import com.vscool.os.custom.GlideEngine;
|
||||
import com.vscool.os.databinding.ActivityAddContactBinding;
|
||||
import com.vscool.os.databinding.ActivityContactAddBinding;
|
||||
import com.vscool.os.db.ContactCacheUtils;
|
||||
import com.vscool.os.utils.ContactsUtils;
|
||||
import com.vscool.os.utils.LocalContactUtils;
|
||||
@@ -45,7 +45,7 @@ import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
public class AddContactActivity extends BaseMvvmActivity<AddContactViewModel, ActivityAddContactBinding> {
|
||||
public class AddContactActivity extends BaseMvvmActivity<AddContactViewModel, ActivityContactAddBinding> {
|
||||
private static final String TAG = "AddContactActivity";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
@@ -64,7 +64,7 @@ public class AddContactActivity extends BaseMvvmActivity<AddContactViewModel, Ac
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_add_contact;
|
||||
return R.layout.activity_contact_add;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,7 +13,7 @@ import com.vscool.os.R;
|
||||
import com.vscool.os.base.mvvm.BaseViewModel;
|
||||
import com.vscool.os.bean.BaseResponse;
|
||||
import com.vscool.os.bean.Contact;
|
||||
import com.vscool.os.databinding.ActivityAddContactBinding;
|
||||
import com.vscool.os.databinding.ActivityContactAddBinding;
|
||||
import com.vscool.os.network.NetInterfaceManager;
|
||||
import com.vscool.os.utils.FileUtil;
|
||||
import com.vscool.os.utils.Utils;
|
||||
@@ -30,11 +30,11 @@ import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class AddContactViewModel extends BaseViewModel<ActivityAddContactBinding, ActivityEvent> {
|
||||
public class AddContactViewModel extends BaseViewModel<ActivityContactAddBinding, ActivityEvent> {
|
||||
private static final String TAG = "AddContactViewModel";
|
||||
|
||||
@Override
|
||||
public ActivityAddContactBinding getVDBinding() {
|
||||
public ActivityContactAddBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.vscool.os.base.mvvm.BaseMvvmActivity;
|
||||
import com.vscool.os.bean.BaseResponse;
|
||||
import com.vscool.os.bean.Contact;
|
||||
import com.vscool.os.custom.GlideEngine;
|
||||
import com.vscool.os.databinding.ActivityEditContactBinding;
|
||||
import com.vscool.os.databinding.ActivityContactEditBinding;
|
||||
import com.vscool.os.utils.FileUtil;
|
||||
import com.vscool.os.utils.ScreenUtil;
|
||||
import com.vscool.os.utils.Utils;
|
||||
@@ -41,7 +41,7 @@ import okhttp3.MediaType;
|
||||
import okhttp3.MultipartBody;
|
||||
import okhttp3.RequestBody;
|
||||
|
||||
public class EditContactActivity extends BaseMvvmActivity<EditContactViewModel, ActivityEditContactBinding> {
|
||||
public class EditContactActivity extends BaseMvvmActivity<EditContactViewModel, ActivityContactEditBinding> {
|
||||
private static final String TAG = "EditContactActivity";
|
||||
|
||||
private LoadingDialog mLoadingDialog;
|
||||
@@ -55,7 +55,7 @@ public class EditContactActivity extends BaseMvvmActivity<EditContactViewModel,
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_edit_contact;
|
||||
return R.layout.activity_contact_edit;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.vscool.os.base.mvvm.BaseViewModel;
|
||||
import com.vscool.os.bean.BaseResponse;
|
||||
import com.vscool.os.databinding.ActivityEditContactBinding;
|
||||
import com.vscool.os.databinding.ActivityContactEditBinding;
|
||||
import com.vscool.os.network.NetInterfaceManager;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -18,10 +18,10 @@ import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import okhttp3.MultipartBody;
|
||||
|
||||
public class EditContactViewModel extends BaseViewModel<ActivityEditContactBinding, ActivityEvent> {
|
||||
public class EditContactViewModel extends BaseViewModel<ActivityContactEditBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityEditContactBinding getVDBinding() {
|
||||
public ActivityContactEditBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.vscool.os.view.GridSpaceItemDecoration;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DailyAppActivity extends BaseMvvmActivity<DailyAppViewModel, ActivityDailyappBinding> implements NotificationService.NotificationListener{
|
||||
public class DailyAppActivity extends BaseMvvmActivity<DailyAppViewModel, ActivityDailyappBinding> implements NotificationService.NotificationListener {
|
||||
private static final String TAG = "DailyAppActivity";
|
||||
|
||||
private DailyAppAdapter mDailyAppAdapter;
|
||||
@@ -27,8 +27,8 @@ public class DailyAppActivity extends BaseMvvmActivity<DailyAppViewModel, Activi
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setfitWindow() {
|
||||
return false;
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -32,11 +32,16 @@ public class DockActivity extends BaseMvvmActivity<DockViewModel, ActivityDockBi
|
||||
|
||||
private DockAppSelectedAdapter mDockAppSelectedAdapter;
|
||||
|
||||
public static final List<String> INCLUDE_SYSTEM_APP =new ArrayList<String>(){{
|
||||
public static final List<String> INCLUDE_SYSTEM_APP = new ArrayList<String>() {{
|
||||
this.add("com.android.mms");//信息
|
||||
this.add("com.mediatek.camera");
|
||||
}};
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
|
||||
@@ -32,6 +32,11 @@ public class PhoneActivity extends BaseMvvmActivity<PhoneViewModel, ActivityPhon
|
||||
private RecordFragment mRecordFragment;
|
||||
private ContactFragment mContactFragment;
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setfitWindow() {
|
||||
return true;
|
||||
|
||||
@@ -34,6 +34,7 @@ import com.vscool.os.service.WeAccessibilityService;
|
||||
import com.vscool.os.service.main.MainService;
|
||||
import com.vscool.os.utils.AccessibilityUtils;
|
||||
import com.vscool.os.utils.ApkUtils;
|
||||
import com.vscool.os.view.ToggleButton;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
@@ -50,6 +51,11 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
Manifest.permission.RECEIVE_SMS,
|
||||
};
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setfitWindow() {
|
||||
return true;
|
||||
@@ -70,7 +76,80 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
mViewDataBinding.setVersionName(BuildConfig.VERSION_NAME);
|
||||
mViewDataBinding.tbFloat.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
if (on) {
|
||||
showFloatingWindow();
|
||||
} else {
|
||||
hideFloatingWindow();
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbSms.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
setVoiceBroadcast(on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbAuto.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
setAutoAccept(on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbDialer.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Log.e(TAG, "setDialTone: dialTone = " + on);
|
||||
mMMKV.encode(CommonConfig.DISABLE_DIAL_TONE_MODIFY, on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbStatu.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
String statusbarStatus;
|
||||
if (on) {
|
||||
statusbarStatus = CommonConfig.ACTION_SHOW_STATUS_BAR;
|
||||
} else {
|
||||
statusbarStatus = CommonConfig.ACTION_HIDE_STATUS_BAR;
|
||||
}
|
||||
Intent statusIntent = new Intent(statusbarStatus);
|
||||
// statusIntent.setPackage("com.android.settings");
|
||||
sendBroadcast(statusIntent);
|
||||
|
||||
Log.e(TAG, "setStatusBar: statusBar = " + on);
|
||||
Settings.System.putInt(getContentResolver(), CommonConfig.ACTION_STATUS_BAR_STATE, on ? 1 : 0);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbHourly.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Log.e(TAG, "setHourlyTimeSignal: hourly_time = " + on);
|
||||
mMMKV.encode(CommonConfig.HOURLY_TIME_SIGNAL_KEY, on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbVolume.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Log.e(TAG, "disableVolumeKey: disableKey = " + on);
|
||||
mMMKV.encode(CommonConfig.DISABLE_VOLUME_KEY, !on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbContact.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Log.e(TAG, "disableVolumeKey: contactModify = " + on);
|
||||
mMMKV.encode(CommonConfig.DISABLE_CONTACT_MODIFY, !on);
|
||||
}
|
||||
});
|
||||
mViewDataBinding.tbClock.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Log.e(TAG, "disableVolumeKey: clockModify = " + on);
|
||||
mMMKV.encode(CommonConfig.DISABLE_CLOCK_MODIFY, !on);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,28 +191,40 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
private void setStatus() {
|
||||
boolean showFloatWindow = Settings.Global.getInt(getContentResolver(), CommonConfig.HOVER_HOME, CommonConfig.HOVER_HOME_STATUS) == 1;
|
||||
Log.e(TAG, "initView: showFloatWindow = " + showFloatWindow);
|
||||
mViewDataBinding.setFloatWindowEnable(showFloatWindow);
|
||||
mViewDataBinding.tbFloat.setToggleStatu(showFloatWindow);
|
||||
|
||||
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
|
||||
Log.e(TAG, "initView: voiceBroadcast = " + voiceBroadcast);
|
||||
mViewDataBinding.setVoiceBroadcast(voiceBroadcast);
|
||||
mViewDataBinding.tbSms.setToggleStatu(voiceBroadcast);
|
||||
|
||||
boolean autoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, false);
|
||||
Log.e(TAG, "initView: autoAccept = " + autoAccept);
|
||||
mViewDataBinding.setAutoAccept(autoAccept);
|
||||
mViewDataBinding.tbAuto.setToggleStatu(autoAccept);
|
||||
|
||||
boolean dialTone = mMMKV.decodeBool(CommonConfig.DISABLE_DIAL_TONE_MODIFY, true);
|
||||
Log.e(TAG, "initView: dialTone = " + dialTone);
|
||||
mViewDataBinding.setDialTone(dialTone);
|
||||
mViewDataBinding.tbDialer.setToggleStatu(dialTone);
|
||||
|
||||
int code = Settings.System.getInt(getContentResolver(), CommonConfig.ACTION_STATUS_BAR_STATE, 0);
|
||||
boolean statusBar = code == 1;
|
||||
Log.e(TAG, "setStatusBar: statusBar = " + statusBar);
|
||||
mViewDataBinding.setStatusBar(statusBar);
|
||||
Log.e(TAG, "initView: statusBar = " + statusBar);
|
||||
mViewDataBinding.tbStatu.setToggleStatu(statusBar);
|
||||
|
||||
boolean hourly_time = mMMKV.decodeBool(CommonConfig.HOURLY_TIME_SIGNAL_KEY, false);
|
||||
Log.e(TAG, "setHourlyTimeSignal: hourly_time = " + hourly_time);
|
||||
mViewDataBinding.setHourlyTime(hourly_time);
|
||||
boolean hourlyTime = mMMKV.decodeBool(CommonConfig.HOURLY_TIME_SIGNAL_KEY, false);
|
||||
Log.e(TAG, "initView: hourlyTime = " + hourlyTime);
|
||||
mViewDataBinding.tbHourly.setToggleStatu(hourlyTime);
|
||||
|
||||
boolean disableKey = mMMKV.decodeBool(CommonConfig.DISABLE_VOLUME_KEY, false);
|
||||
Log.e(TAG, "initView: disableKey = " + disableKey);
|
||||
mViewDataBinding.tbVolume.setToggleStatu(!disableKey);
|
||||
|
||||
boolean contactModify = mMMKV.decodeBool(CommonConfig.DISABLE_CONTACT_MODIFY, false);
|
||||
Log.e(TAG, "initView: contactModify = " + contactModify);
|
||||
mViewDataBinding.tbContact.setToggleStatu(!contactModify);
|
||||
|
||||
boolean clockModify = mMMKV.decodeBool(CommonConfig.DISABLE_CLOCK_MODIFY, false);
|
||||
Log.e(TAG, "initView: clockModify = " + clockModify);
|
||||
mViewDataBinding.tbClock.setToggleStatu(!clockModify);
|
||||
}
|
||||
|
||||
private static final int REQUEST_CODE_DRAW_OVER_OTHER_APPS_PERMISSION = 200;
|
||||
@@ -162,15 +253,14 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
}
|
||||
|
||||
private void showFloatingWindow() {
|
||||
mViewDataBinding.setFloatWindowEnable(true);
|
||||
mViewDataBinding.tbFloat.setToggleStatu(true);
|
||||
Settings.Global.putInt(getContentResolver(), CommonConfig.HOVER_HOME, 1);
|
||||
startService(new Intent(SettingActivity.this, MainService.class));
|
||||
sendBroadcast(new Intent(MainService.ACTION_FLOAT_WINDOW_ON));
|
||||
}
|
||||
|
||||
|
||||
private void hideFloatingWindow() {
|
||||
mViewDataBinding.setFloatWindowEnable(false);
|
||||
mViewDataBinding.tbFloat.setToggleStatu(false);
|
||||
Settings.Global.putInt(getContentResolver(), CommonConfig.HOVER_HOME, 0);
|
||||
startService(new Intent(SettingActivity.this, MainService.class));
|
||||
sendBroadcast(new Intent(MainService.ACTION_FLOAT_WINDOW_OFF));
|
||||
@@ -218,6 +308,41 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
}
|
||||
}
|
||||
|
||||
private void setVoiceBroadcast(boolean on) {
|
||||
if (on) {
|
||||
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.READ_SMS)) {
|
||||
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
|
||||
Toast.makeText(SettingActivity.this, "请授予读取短信权限", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.RECEIVE_SMS)) {
|
||||
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
|
||||
Toast.makeText(SettingActivity.this, "请授予接收短信权限", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
mMMKV.encode(CommonConfig.VOICE_BROADCAST, on);
|
||||
mViewDataBinding.tbSms.setToggleStatu(on);
|
||||
}
|
||||
|
||||
public void setAutoAccept(boolean on) {
|
||||
if (AccessibilityUtils.isAccessibilitySettingsOn(SettingActivity.this)) {
|
||||
mMMKV.encode(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, on);
|
||||
Intent intent = new Intent(WeAccessibilityService.SETTING_AUTOMATIC_ANSWER_ACTION);
|
||||
intent.putExtra("auto_answer", on);
|
||||
sendBroadcast(intent);
|
||||
} else {
|
||||
boolean floatWindowEnable = Settings.Global.getInt(getContentResolver(), CommonConfig.HOVER_HOME, CommonConfig.HOVER_HOME_STATUS) == 1;
|
||||
if (floatWindowEnable) {
|
||||
Toaster.showLong("因为系统限制,请先关闭 主页按钮 功能,开启自动接听后再打开");
|
||||
mViewDataBinding.tbAuto.setToggleOff();
|
||||
} else {
|
||||
Toast.makeText(SettingActivity.this, "请在无障碍服务中打开 - 亲情桌面快捷服务", Toast.LENGTH_LONG).show();
|
||||
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void openFloat(View view) {
|
||||
boolean floatWindowEnable = Settings.Global.getInt(getContentResolver(), CommonConfig.HOVER_HOME, CommonConfig.HOVER_HOME_STATUS) == 1;
|
||||
@@ -241,22 +366,10 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void voiceBroadcast(View view) {
|
||||
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.READ_SMS)) {
|
||||
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
|
||||
Toast.makeText(SettingActivity.this, "请授予读取短信权限", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(SettingActivity.this, Manifest.permission.RECEIVE_SMS)) {
|
||||
ActivityCompat.requestPermissions(SettingActivity.this, PERMISSIONS_SMS, REQUEST_PERMISSION_CODE);
|
||||
Toast.makeText(SettingActivity.this, "请授予接收短信权限", Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
boolean voiceBroadcast = mMMKV.decodeBool(CommonConfig.VOICE_BROADCAST, false);
|
||||
Log.e(TAG, "voiceBroadcast: voiceBroadcast = " + voiceBroadcast);
|
||||
mViewDataBinding.setVoiceBroadcast(!voiceBroadcast);
|
||||
mMMKV.encode(CommonConfig.VOICE_BROADCAST, !voiceBroadcast);
|
||||
setVoiceBroadcast(!voiceBroadcast);
|
||||
}
|
||||
|
||||
private String testText = "TTS(从文本到语音,Text To Speech),是将文本转化为语音,人机对话的一部分,让机器能够说话。\n" +
|
||||
@@ -272,29 +385,14 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
}
|
||||
|
||||
public void autoAccept(View view) {
|
||||
if (AccessibilityUtils.isAccessibilitySettingsOn(SettingActivity.this)) {
|
||||
boolean autoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, false);
|
||||
Log.e(TAG, "autoAccept: autoAccept = " + autoAccept);
|
||||
mViewDataBinding.setAutoAccept(!autoAccept);
|
||||
mMMKV.encode(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, !autoAccept);
|
||||
Intent intent = new Intent(WeAccessibilityService.SETTING_AUTOMATIC_ANSWER_ACTION);
|
||||
intent.putExtra("auto_answer", !autoAccept);
|
||||
sendBroadcast(intent);
|
||||
} else {
|
||||
boolean floatWindowEnable = Settings.Global.getInt(getContentResolver(), CommonConfig.HOVER_HOME, CommonConfig.HOVER_HOME_STATUS) == 1;
|
||||
if (floatWindowEnable) {
|
||||
Toaster.showLong("因为系统限制,请先关闭悬浮窗功能,开启自动接听后再打开悬浮窗");
|
||||
} else {
|
||||
Toast.makeText(SettingActivity.this, "请在无障碍服务中打开 - 关爱守护快捷服务", Toast.LENGTH_LONG).show();
|
||||
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
|
||||
}
|
||||
}
|
||||
boolean autoAccept = mMMKV.decodeBool(CommonConfig.WECHAT_CALL_AUTO_ACCEPT, false);
|
||||
Log.e(TAG, "autoAccept: autoAccept = " + autoAccept);
|
||||
setAutoAccept(!autoAccept);
|
||||
}
|
||||
|
||||
public void setDialTone(View view) {
|
||||
boolean dialTone = mMMKV.decodeBool(CommonConfig.DISABLE_DIAL_TONE_MODIFY, true);
|
||||
Log.e(TAG, "setDialTone: dialTone = " + dialTone);
|
||||
mViewDataBinding.setDialTone(!dialTone);
|
||||
mMMKV.encode(CommonConfig.DISABLE_DIAL_TONE_MODIFY, !dialTone);
|
||||
}
|
||||
|
||||
@@ -302,9 +400,27 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
boolean hourly_time = mMMKV.decodeBool(CommonConfig.HOURLY_TIME_SIGNAL_KEY, false);
|
||||
Log.e(TAG, "setHourlyTimeSignal: hourly_time = " + hourly_time);
|
||||
mMMKV.encode(CommonConfig.HOURLY_TIME_SIGNAL_KEY, !hourly_time);
|
||||
mViewDataBinding.setHourlyTime(!hourly_time);
|
||||
}
|
||||
|
||||
public void disableVolumeKey(View view) {
|
||||
boolean disableKey = mMMKV.decodeBool(CommonConfig.DISABLE_VOLUME_KEY, false);
|
||||
Log.e(TAG, "disableVolumeKey: disableKey = " + disableKey);
|
||||
mMMKV.encode(CommonConfig.DISABLE_VOLUME_KEY, !disableKey);
|
||||
}
|
||||
|
||||
public void disableContactModify(View view) {
|
||||
boolean contactModify = mMMKV.decodeBool(CommonConfig.DISABLE_CONTACT_MODIFY, false);
|
||||
Log.e(TAG, "disableVolumeKey: contactModify = " + contactModify);
|
||||
mMMKV.encode(CommonConfig.DISABLE_CONTACT_MODIFY, !contactModify);
|
||||
}
|
||||
|
||||
public void disableClockModify(View view) {
|
||||
boolean clockModify = mMMKV.decodeBool(CommonConfig.DISABLE_CLOCK_MODIFY, false);
|
||||
Log.e(TAG, "disableVolumeKey: clockModify = " + clockModify);
|
||||
mMMKV.encode(CommonConfig.DISABLE_CLOCK_MODIFY, !clockModify);
|
||||
}
|
||||
|
||||
|
||||
public void setStatusBar(View view) {
|
||||
int code = Settings.System.getInt(getContentResolver(), CommonConfig.ACTION_STATUS_BAR_STATE, 0);
|
||||
boolean statusBar = code == 1;
|
||||
@@ -319,7 +435,6 @@ public class SettingActivity extends BaseMvvmActivity<SettingViewModel, Activity
|
||||
sendBroadcast(statusIntent);
|
||||
|
||||
Log.e(TAG, "setStatusBar: old statusBar = " + statusBar);
|
||||
mViewDataBinding.setStatusBar(!statusBar);
|
||||
Settings.System.putInt(getContentResolver(), CommonConfig.ACTION_STATUS_BAR_STATE, code == 1 ? 0 : 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -125,13 +125,13 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
|
||||
contactHolder.tv_name.setText(contact.getName());
|
||||
if (DIALER_PACKAGE.equals(contact.getMobile())) {
|
||||
contactHolder.cl_contact.setVisibility(View.GONE);
|
||||
contactHolder.iv_head2.setVisibility(View.VISIBLE);
|
||||
// contactHolder.iv_head2.setVisibility(View.VISIBLE);
|
||||
contactHolder.tv_phone.setText("");
|
||||
} else if (DIALER_ADD_CONTACT.equals(contact.getMobile())) {
|
||||
Glide.with(contactHolder.iv_head).load(R.drawable.icon_contact_add).error(R.drawable.icon_contact_add).into(contactHolder.iv_head);
|
||||
} else {
|
||||
contactHolder.cl_contact.setVisibility(View.VISIBLE);
|
||||
contactHolder.iv_head2.setVisibility(View.GONE);
|
||||
// contactHolder.iv_head2.setVisibility(View.GONE);
|
||||
contactHolder.tv_phone.setText(contact.getMobile());
|
||||
GlideLoadUtils.getInstance().glideLoad(mContext, contact.getAvatar(), contactHolder.iv_head, R.drawable.default_avatar);
|
||||
// Glide.with(contactHolder.iv_head).load(contact.getAvatar()).error(R.drawable.default_avatar).into(contactHolder.iv_head);
|
||||
@@ -161,7 +161,6 @@ public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactH
|
||||
ConstraintLayout root;
|
||||
ConstraintLayout cl_contact;
|
||||
NiceImageView iv_head;
|
||||
NiceImageView iv_head2;
|
||||
TextView tv_name;
|
||||
TextView tv_phone;
|
||||
ImageView iv_sim, iv_clear;
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.vscool.os.R;
|
||||
import com.vscool.os.activity.contact.ContactListActivity;
|
||||
import com.vscool.os.activity.phone.PhoneActivity;
|
||||
import com.vscool.os.activity.service.ServiceActivity;
|
||||
import com.vscool.os.bean.DailyAppBean;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
@@ -50,7 +51,15 @@ public class DailyAppAdapter extends RecyclerView.Adapter<DailyAppAdapter.Holder
|
||||
public void onBindViewHolder(@NonNull Holder holder, int position) {
|
||||
DailyAppBean dailyAppBean = mDailyAppBeans.get(position);
|
||||
String packageName = dailyAppBean.getPackageName();
|
||||
holder.iv_icon.setImageDrawable(dailyAppBean.getIcon(mContext));
|
||||
switch (packageName) {
|
||||
default:
|
||||
holder.iv_icon.setImageDrawable(dailyAppBean.getIcon(mContext));
|
||||
break;
|
||||
case PackagesName.VSCOOL_DIALER:
|
||||
holder.iv_icon.setImageDrawable(mContext.getDrawable(R.drawable.home_icon_dialer));
|
||||
break;
|
||||
}
|
||||
|
||||
holder.tv_name.setText(dailyAppBean.getAppName());
|
||||
holder.root.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
@@ -69,6 +78,9 @@ public class DailyAppAdapter extends RecyclerView.Adapter<DailyAppAdapter.Holder
|
||||
case PackagesName.VSCOOL_CONTACTS:
|
||||
mContext.startActivity(new Intent(mContext, ContactListActivity.class));
|
||||
break;
|
||||
case PackagesName.VSCOOL_DIALER:
|
||||
mContext.startActivity(new Intent(mContext, PhoneActivity.class));
|
||||
break;
|
||||
default:
|
||||
ApkUtils.openPackage(mContext, packageName, dailyAppBean.getClassName());
|
||||
AppUsedTimeUtils.getInstance().setAppPackageName(packageName);
|
||||
@@ -90,7 +102,7 @@ public class DailyAppAdapter extends RecyclerView.Adapter<DailyAppAdapter.Holder
|
||||
|
||||
|
||||
private void showDialog(DailyAppBean dailyAppBean) {
|
||||
int appLockCtrl = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.APP_LOCK_CTRL, 0);
|
||||
int appLockCtrl = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.APP_LOCK_CTRL, 1);
|
||||
if (appLockCtrl == 0) {
|
||||
Toaster.showLong("已禁止桌面编辑");
|
||||
return;
|
||||
|
||||
@@ -71,10 +71,10 @@ public class DockAppSelectedAdapter extends RecyclerView.Adapter<DockAppSelected
|
||||
holder.tv_name.setText(dockApp.getAppName());
|
||||
if (mSelectedPkgList.contains(dockApp)) {
|
||||
holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
|
||||
holder.root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
|
||||
// holder.root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
|
||||
} else {
|
||||
holder.iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
|
||||
holder.root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
|
||||
// holder.root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
|
||||
}
|
||||
|
||||
holder.iv_select.setOnClickListener(new View.OnClickListener() {
|
||||
@@ -119,12 +119,12 @@ public class DockAppSelectedAdapter extends RecyclerView.Adapter<DockAppSelected
|
||||
} else {
|
||||
mSelectedPkgList.add(dockApp);
|
||||
iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_selected));
|
||||
root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
|
||||
// root.setBackground(mContext.getDrawable(R.drawable.app_select_background));
|
||||
}
|
||||
} else {
|
||||
mSelectedPkgList.remove(dockApp);
|
||||
iv_select.setImageDrawable(mContext.getDrawable(R.drawable.icon_unselected));
|
||||
root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
|
||||
// root.setBackground(mContext.getDrawable(R.drawable.app_unselect_background));
|
||||
}
|
||||
if (mSelectedPkgList.size() == 0) {
|
||||
mMMKV.encode(DockActivity.DOCK_APP_KEY, "");
|
||||
|
||||
@@ -113,7 +113,7 @@ public class WechatContactAdapter extends RecyclerView.Adapter<WechatContactAdap
|
||||
|
||||
private void checkAccessibility() {
|
||||
if (!AccessibilityUtils.isAccessibilitySettingsOn(mContext)) {
|
||||
Toast.makeText(mContext, "请在无障碍服务中打开 - 关爱守护快捷服务", Toast.LENGTH_LONG).show();
|
||||
Toast.makeText(mContext, "请在无障碍服务中打开 - 亲情桌面快捷服务", Toast.LENGTH_LONG).show();
|
||||
mContext.startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
|
||||
} else {
|
||||
Log.e(TAG, "checkAccessibility: 无障碍服务已打开");
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
package com.vscool.os.alarm;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.MediaPlayer;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -17,28 +12,15 @@ import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.bumptech.glide.request.RequestOptions;
|
||||
import com.vscool.os.R;
|
||||
import com.vscool.os.activity.alarm.edit.AlarmEditActivity;
|
||||
import com.vscool.os.utils.FFmpegUtils;
|
||||
import com.vscool.os.utils.ScreenUtils;
|
||||
import com.vscool.os.utils.Utils;
|
||||
import com.vscool.os.view.JzvdStdRound;
|
||||
import com.vscool.os.view.ToggleButton;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
|
||||
|
||||
private FragmentActivity mContext;
|
||||
@@ -62,7 +44,7 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
|
||||
@Override
|
||||
public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
mContext = (FragmentActivity) parent.getContext();
|
||||
return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_port, parent, false));
|
||||
return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_clock, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,12 +62,12 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
|
||||
e.printStackTrace();
|
||||
}
|
||||
holder.tv_remind_type.setText("一次");
|
||||
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_once);
|
||||
// holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_once);
|
||||
break;
|
||||
case AlarmUtils.LOOP:
|
||||
holder.tv_time.setText(alarmClockData.getTime());
|
||||
holder.tv_remind_type.setText("每天");
|
||||
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_loop);
|
||||
// holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_loop);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
@@ -96,118 +78,119 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
|
||||
holder.tv_title.setText(title);
|
||||
}
|
||||
int is_onoff = alarmClockData.getIs_onoff();
|
||||
holder.toggleButton2.setDisable(true);
|
||||
if (is_onoff == 1) {
|
||||
holder.tv_status.setText("已开启");
|
||||
holder.toggleButton2.setToggleOn(false);
|
||||
} else {
|
||||
holder.tv_status.setText("已关闭");
|
||||
holder.toggleButton2.setToggleOff(false);
|
||||
}
|
||||
String voice = alarmClockData.getVoice();
|
||||
if (TextUtils.isEmpty(voice)) {
|
||||
holder.cl_voice.setVisibility(View.GONE);
|
||||
} else {
|
||||
holder.cl_voice.setVisibility(View.VISIBLE);
|
||||
MediaPlayer mMediaPlayer = new MediaPlayer();
|
||||
mMediaPlayer.setAudioAttributes(
|
||||
new AudioAttributes.Builder()
|
||||
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
|
||||
.build()
|
||||
);
|
||||
mMediaPlayer.setOnCompletionListener(mp -> Log.e("setOnCompletionListener", "onCompletion: "));
|
||||
mMediaPlayer.setOnPreparedListener(mp -> Log.e("setOnPreparedListener", "onPrepared: "));
|
||||
mMediaPlayer.setOnErrorListener((mp, what, extra) -> false);
|
||||
//设置音频文件到MediaPlayer对象中
|
||||
try {
|
||||
mMediaPlayer.setDataSource(voice);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//让MediaPlayer对象准备,用这个方法防止加载时耗时导致anr
|
||||
mMediaPlayer.prepareAsync();
|
||||
FFmpegUtils.getDurationInMilliseconds(voice, new Observer<Integer>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
// holder.toggleButton2.setDisable(true);
|
||||
// if (is_onoff == 1) {
|
||||
// holder.tv_status.setText("已开启");
|
||||
// holder.toggleButton2.setToggleOn(false);
|
||||
// } else {
|
||||
// holder.tv_status.setText("已关闭");
|
||||
// holder.toggleButton2.setToggleOff(false);
|
||||
// }
|
||||
// String voice = alarmClockData.getVoice();
|
||||
// if (TextUtils.isEmpty(voice)) {
|
||||
// holder.cl_voice.setVisibility(View.GONE);
|
||||
// } else {
|
||||
// holder.cl_voice.setVisibility(View.VISIBLE);
|
||||
// MediaPlayer mMediaPlayer = new MediaPlayer();
|
||||
// mMediaPlayer.setAudioAttributes(
|
||||
// new AudioAttributes.Builder()
|
||||
// .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
|
||||
// .build()
|
||||
// );
|
||||
// mMediaPlayer.setOnCompletionListener(mp -> Log.e("setOnCompletionListener", "onCompletion: "));
|
||||
// mMediaPlayer.setOnPreparedListener(mp -> Log.e("setOnPreparedListener", "onPrepared: "));
|
||||
// mMediaPlayer.setOnErrorListener((mp, what, extra) -> false);
|
||||
// //设置音频文件到MediaPlayer对象中
|
||||
// try {
|
||||
// mMediaPlayer.setDataSource(voice);
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// //让MediaPlayer对象准备,用这个方法防止加载时耗时导致anr
|
||||
// mMediaPlayer.prepareAsync();
|
||||
// FFmpegUtils.getDurationInMilliseconds(voice, new Observer<Integer>() {
|
||||
// @Override
|
||||
// public void onSubscribe(@NonNull Disposable d) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onNext(@NonNull Integer integer) {
|
||||
// holder.tv_voice.setText(integer + "秒");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(@NonNull Throwable e) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onComplete() {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// holder.cl_voice.setOnClickListener(new View.OnClickListener() {
|
||||
// @Override
|
||||
// public void onClick(View v) {
|
||||
// mMediaPlayer.start();
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// String fileUrl = alarmClockData.getFile();
|
||||
// if (TextUtils.isEmpty(fileUrl)) {
|
||||
// holder.cl_vp.setVisibility(View.GONE);
|
||||
// } else {
|
||||
// holder.cl_vp.setVisibility(View.VISIBLE);
|
||||
// if (isImgUrl(fileUrl)) {
|
||||
// holder.imageView.setVisibility(View.VISIBLE);
|
||||
// holder.jz_video.setVisibility(View.GONE);
|
||||
// if (!mContext.isDestroyed()) {
|
||||
// RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
|
||||
// Glide.with(mContext).load(fileUrl).apply(options).into(holder.imageView);
|
||||
// }
|
||||
// } else {
|
||||
// holder.imageView.setVisibility(View.GONE);
|
||||
// holder.jz_video.setVisibility(View.VISIBLE);
|
||||
// String fileName = Utils.getFileNamefromURL(fileUrl);
|
||||
// File file = new File(Utils.getDownLoadPath(mContext) + fileName);
|
||||
// String path;
|
||||
// if (file.exists() && !file.isDirectory()) {
|
||||
// path = file.getAbsolutePath();
|
||||
// } else {
|
||||
// path = fileUrl;
|
||||
// }
|
||||
// holder.jz_video.setUp(path, "");
|
||||
// holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
|
||||
// FFmpegUtils.loadVideoScreenshot(path, new Observer<Bitmap>() {
|
||||
// @Override
|
||||
// public void onSubscribe(@NonNull Disposable d) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onNext(@NonNull Bitmap bitmap) {
|
||||
// if (!mContext.isDestroyed()) {
|
||||
// RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
|
||||
// Glide.with(mContext).load(bitmap).apply(options).into(holder.jz_video.posterImageView);
|
||||
//// Glide.with(mContext).load(bitmap).into(holder.imageView);
|
||||
// }
|
||||
// holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(@NonNull Throwable e) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onComplete() {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull Integer integer) {
|
||||
holder.tv_voice.setText(integer + "秒");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
holder.cl_voice.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mMediaPlayer.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
String fileUrl = alarmClockData.getFile();
|
||||
if (TextUtils.isEmpty(fileUrl)) {
|
||||
holder.cl_vp.setVisibility(View.GONE);
|
||||
} else {
|
||||
holder.cl_vp.setVisibility(View.VISIBLE);
|
||||
if (isImgUrl(fileUrl)) {
|
||||
holder.imageView.setVisibility(View.VISIBLE);
|
||||
holder.jz_video.setVisibility(View.GONE);
|
||||
if (!mContext.isDestroyed()) {
|
||||
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
|
||||
Glide.with(mContext).load(fileUrl).apply(options).into(holder.imageView);
|
||||
}
|
||||
} else {
|
||||
holder.imageView.setVisibility(View.GONE);
|
||||
holder.jz_video.setVisibility(View.VISIBLE);
|
||||
String fileName = Utils.getFileNamefromURL(fileUrl);
|
||||
File file = new File(Utils.getDownLoadPath(mContext) + fileName);
|
||||
String path;
|
||||
if (file.exists() && !file.isDirectory()) {
|
||||
path = file.getAbsolutePath();
|
||||
} else {
|
||||
path = fileUrl;
|
||||
}
|
||||
holder.jz_video.setUp(path, "");
|
||||
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
|
||||
FFmpegUtils.loadVideoScreenshot(path, new Observer<Bitmap>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull Bitmap bitmap) {
|
||||
if (!mContext.isDestroyed()) {
|
||||
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
|
||||
Glide.with(mContext).load(bitmap).apply(options).into(holder.jz_video.posterImageView);
|
||||
// Glide.with(mContext).load(bitmap).into(holder.imageView);
|
||||
}
|
||||
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
holder.root.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View view) {
|
||||
@@ -241,26 +224,15 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
|
||||
}
|
||||
|
||||
class holder extends RecyclerView.ViewHolder {
|
||||
TextView tv_time, tv_remind_type, tv_title, tv_voice, tv_status;
|
||||
ConstraintLayout cl_voice, cl_vp, root;
|
||||
JzvdStdRound jz_video;
|
||||
ImageView imageView,iv_type;
|
||||
ToggleButton toggleButton2;
|
||||
ConstraintLayout root;
|
||||
TextView tv_time, tv_remind_type, tv_title;
|
||||
|
||||
public holder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
root = itemView.findViewById(R.id.root);
|
||||
tv_time = itemView.findViewById(R.id.tv_time);
|
||||
tv_remind_type = itemView.findViewById(R.id.tv_remind_type);
|
||||
tv_title = itemView.findViewById(R.id.tv_title);
|
||||
tv_voice = itemView.findViewById(R.id.tv_voice);
|
||||
cl_voice = itemView.findViewById(R.id.cl_voice);
|
||||
cl_vp = itemView.findViewById(R.id.cl_vp);
|
||||
root = itemView.findViewById(R.id.root);
|
||||
jz_video = itemView.findViewById(R.id.jz_video);
|
||||
imageView = itemView.findViewById(R.id.imageView);
|
||||
iv_type = itemView.findViewById(R.id.iv_type);
|
||||
tv_status = itemView.findViewById(R.id.tv_status);
|
||||
toggleButton2 = itemView.findViewById(R.id.toggleButton2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -525,8 +525,12 @@ public class AlarmUtils {
|
||||
*/
|
||||
public boolean updateAlarmFinished(int mId) {
|
||||
AlarmClockData alarmClockData = getDatabaseSingleAlarm(mId);
|
||||
alarmClockData.setFinished(true);
|
||||
return updateAlarmFinished(alarmClockData);
|
||||
if (alarmClockData != null) {
|
||||
alarmClockData.setFinished(true);
|
||||
return updateAlarmFinished(alarmClockData);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -67,7 +67,7 @@ public class BaseApplication extends Application {
|
||||
ShortcutUtils.init(this);
|
||||
|
||||
AmapManager.init(this);
|
||||
HeConfig.init("HE2407111551551292", "28301b41b0ae42c2b6cecf12862ade1f");
|
||||
HeConfig.init("K8GYNVKK7B", "bc49ebd378d1438e8c1eb9e1fd1573c4");
|
||||
//切换至开发版服务
|
||||
HeConfig.switchToDevService();
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@ public class AppListFragment extends BaseFragment {
|
||||
}
|
||||
|
||||
private void showHideDialog(DesktopIcon desktopIcon) {
|
||||
int appLockCtrl = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.APP_LOCK_CTRL, 0);
|
||||
int appLockCtrl = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.APP_LOCK_CTRL, 1);
|
||||
if (appLockCtrl == 0) {
|
||||
Toaster.showLong("已禁止桌面编辑");
|
||||
return;
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.vscool.os.activity.contact.AddContactActivity;
|
||||
import com.vscool.os.activity.selectnumber.SelectNumberActivity;
|
||||
import com.vscool.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
import com.vscool.os.databinding.FragmentDialerNewBinding;
|
||||
import com.vscool.os.databinding.FragmentDialerBinding;
|
||||
import com.vscool.os.utils.ApkUtils;
|
||||
import com.vscool.os.utils.Utils;
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.HashMap;
|
||||
* Use the {@link DialerFragment#newInstance} factory method to
|
||||
* create an instance of this fragment.
|
||||
*/
|
||||
public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDialerNewBinding> {
|
||||
public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDialerBinding> {
|
||||
private static final String TAG = "DialerFragment";
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
@@ -51,7 +51,7 @@ public class DialerFragment extends BaseMvvmFragment<DialerViewModel, FragmentDi
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.fragment_dialer_new;
|
||||
return R.layout.fragment_dialer;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,11 +2,12 @@ package com.vscool.os.fragment.phone.dialer;
|
||||
|
||||
import com.trello.rxlifecycle4.android.FragmentEvent;
|
||||
import com.vscool.os.base.mvvm.BaseViewModel;
|
||||
import com.vscool.os.databinding.FragmentDialerNewBinding;
|
||||
import com.vscool.os.databinding.FragmentDialerBinding;
|
||||
|
||||
public class DialerViewModel extends BaseViewModel<FragmentDialerBinding, FragmentEvent> {
|
||||
|
||||
public class DialerViewModel extends BaseViewModel<FragmentDialerNewBinding, FragmentEvent> {
|
||||
@Override
|
||||
public FragmentDialerNewBinding getVDBinding() {
|
||||
public FragmentDialerBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,17 +11,12 @@ import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.blankj.utilcode.util.NetworkUtils;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.jeremyliao.liveeventbus.LiveEventBus;
|
||||
import com.qweather.sdk.bean.weather.WeatherDailyBean;
|
||||
import com.qweather.sdk.bean.weather.WeatherHourlyBean;
|
||||
import com.qweather.sdk.bean.weather.WeatherNowBean;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.vscool.os.R;
|
||||
import com.vscool.os.activity.alarm.list.AlarmListActivity;
|
||||
@@ -31,13 +26,12 @@ import com.vscool.os.activity.emergency.EmergencyActivity;
|
||||
import com.vscool.os.activity.setting.SettingActivity;
|
||||
import com.vscool.os.activity.weather.WeatherActivity;
|
||||
import com.vscool.os.base.mvvm.fragment.BaseMvvmFragment;
|
||||
import com.vscool.os.bean.MapBean;
|
||||
import com.vscool.os.bean.SystemSettings;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
import com.vscool.os.databinding.FragmentSettingsBinding;
|
||||
import com.vscool.os.manager.AmapManager;
|
||||
import com.vscool.os.manager.DesktopIconManager;
|
||||
import com.vscool.os.utils.ApkUtils;
|
||||
import com.vscool.os.utils.DayUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -116,70 +110,6 @@ public class SettingsFragment extends BaseMvvmFragment<SettingsViewModel, Fragme
|
||||
|
||||
@Override
|
||||
protected void initData(Bundle savedInstanceState) {
|
||||
LiveEventBus
|
||||
.get("getWeatherNowKey", WeatherNowBean.NowBaseBean.class)
|
||||
.observe(this, new Observer<WeatherNowBean.NowBaseBean>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable WeatherNowBean.NowBaseBean nowBaseBean) {
|
||||
mViewDataBinding.tvTemp.setText(nowBaseBean.getTemp() + "℃");
|
||||
if (DayUtils.isNight()) {
|
||||
// mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_night));
|
||||
} else {
|
||||
switch (nowBaseBean.getIcon()) {
|
||||
default:
|
||||
case "100":
|
||||
case "150":
|
||||
//晴
|
||||
// mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather));
|
||||
break;
|
||||
case "102":
|
||||
case "152":
|
||||
//少云
|
||||
// mViewDataBinding.clWeather.setBackground(mContext.getDrawable(R.drawable.custom_bg_weather_rain));
|
||||
break;
|
||||
}
|
||||
}
|
||||
// mViewDataBinding.tvWeather.setText(nowBaseBean.getText());
|
||||
}
|
||||
});
|
||||
|
||||
LiveEventBus
|
||||
.get("getWeather24HourlyKey", WeatherHourlyBean.HourlyBean.class)
|
||||
.observe(this, new Observer<WeatherHourlyBean.HourlyBean>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable WeatherHourlyBean.HourlyBean hourlyBean) {
|
||||
String imageName = "he" + hourlyBean.getIcon();
|
||||
Log.e(TAG, "onSuccess: " + imageName);
|
||||
if (isAdded()) {
|
||||
int resId = getResources().getIdentifier(imageName, "drawable", mContext.getPackageName());
|
||||
// Log.e(TAG, "onSuccess: " + resId);
|
||||
// if (resId == 0) {
|
||||
// mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(R.drawable.he100));
|
||||
// } else {
|
||||
// mViewDataBinding.ivPic.setImageDrawable(mContext.getDrawable(resId));
|
||||
// }
|
||||
mViewDataBinding.tvTemp.setText(hourlyBean.getTemp() + "℃");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
LiveEventBus
|
||||
.get("getWeather7DKey", WeatherDailyBean.DailyBean.class)
|
||||
.observe(this, new Observer<WeatherDailyBean.DailyBean>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable WeatherDailyBean.DailyBean dailyBean) {
|
||||
mViewDataBinding.tvWeather.setText(dailyBean.getTempMin() + "℃ - " + dailyBean.getTempMax() + "℃");
|
||||
}
|
||||
});
|
||||
|
||||
LiveEventBus.get(CommonConfig.AMAP_LOCATION_MAP_BEAN, MapBean.class)
|
||||
.observe(this, new Observer<MapBean>() {
|
||||
@Override
|
||||
public void onChanged(@Nullable MapBean mapBean) {
|
||||
mViewDataBinding.tvLocation2.setText(mapBean.getAddress());
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mSystemSettingsData.observe(this, new Observer<SystemSettings>() {
|
||||
@Override
|
||||
public void onChanged(SystemSettings systemSettings) {
|
||||
@@ -267,7 +197,8 @@ public class SettingsFragment extends BaseMvvmFragment<SettingsViewModel, Fragme
|
||||
}
|
||||
|
||||
public void toVideoplayer(View view) {
|
||||
ApkUtils.openPackage(mContext, "com.vscool.hvideo", "com.vscool.hvideo.activity.main.MainActivity");
|
||||
// ApkUtils.openPackage(mContext, "com.vscool.hvideo", "com.vscool.hvideo.activity.main.MainActivity");
|
||||
DesktopIconManager.getInstance().openGallery();
|
||||
}
|
||||
|
||||
public void openAlarmClock(View view) {
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.tencent.mmkv.MMKV;
|
||||
import com.vscool.os.activity.main.MainActivity;
|
||||
import com.vscool.os.bean.DailyAppBean;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
import com.vscool.os.config.PackagesName;
|
||||
import com.vscool.os.utils.ApkUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -134,6 +135,7 @@ public class AppStatusManager {
|
||||
dailyAppBeanList.add(appSelectBean);
|
||||
}
|
||||
}
|
||||
|
||||
// if (hidedAppSet.contains(PackagesName.VSCOOL_CONTACTS)) {
|
||||
// DailyAppBean contactIcon = new DailyAppBean("联系人", PackagesName.VSCOOL_CONTACTS);
|
||||
// dailyAppBeanList.add(0, contactIcon);
|
||||
@@ -144,6 +146,11 @@ public class AppStatusManager {
|
||||
// dailyAppBeanList.add(0, serviceIcon);
|
||||
// }
|
||||
|
||||
// if (hidedAppSet.contains(PackagesName.VSCOOL_DIALER)) {
|
||||
DailyAppBean contactIcon = new DailyAppBean("拨号", PackagesName.VSCOOL_DIALER);
|
||||
dailyAppBeanList.add(0, contactIcon);
|
||||
// }
|
||||
|
||||
return dailyAppBeanList;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,10 +16,12 @@ import com.vscool.os.R;
|
||||
import com.vscool.os.bean.DockApp;
|
||||
import com.vscool.os.config.CommonConfig;
|
||||
import com.vscool.os.config.PackagesName;
|
||||
import com.vscool.os.utils.ApkUtils;
|
||||
import com.vscool.os.utils.IconUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class DesktopIconManager {
|
||||
private static final String TAG = "DesktopIconManager";
|
||||
@@ -101,4 +103,24 @@ public class DesktopIconManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void openGallery() {
|
||||
Intent intent = new Intent(Intent.ACTION_MAIN);
|
||||
intent.addCategory(Intent.CATEGORY_APP_GALLERY);
|
||||
// activity.startActivity(new Intent(mContext, GalleryActivity.class));
|
||||
PackageManager pm = mContext.getPackageManager();
|
||||
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
resolveIntent.addCategory(Intent.CATEGORY_APP_GALLERY);
|
||||
List<ResolveInfo> resolveinfoList = pm.queryIntentActivities(resolveIntent, 0);
|
||||
if (resolveinfoList.stream().noneMatch(new Predicate<ResolveInfo>() {
|
||||
@Override
|
||||
public boolean test(ResolveInfo resolveInfo) {
|
||||
return "com.android.gallery3d".equals(resolveInfo.getComponentInfo().getComponentName().getPackageName());
|
||||
}
|
||||
})) {
|
||||
mContext.startActivity(new Intent().setComponent(resolveinfoList.get(0).getComponentInfo().getComponentName()));
|
||||
} else {
|
||||
ApkUtils.openApp(mContext, "com.android.gallery3d");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,11 +30,11 @@ public class ToggleButton extends View {
|
||||
/**
|
||||
* 开启颜色
|
||||
*/
|
||||
private int onColor = Color.parseColor("#32CD32");
|
||||
private int onColor = Color.parseColor("#FFB70D");
|
||||
/**
|
||||
* 关闭颜色
|
||||
*/
|
||||
private int offBorderColor = Color.parseColor("#f62626");
|
||||
private int offBorderColor = Color.parseColor("#e0dede");
|
||||
/**
|
||||
* 灰色带颜色
|
||||
*/
|
||||
@@ -191,6 +191,14 @@ public class ToggleButton extends View {
|
||||
}
|
||||
}
|
||||
|
||||
public void setToggleStatu(boolean on) {
|
||||
if (on) {
|
||||
setToggleOn();
|
||||
} else {
|
||||
setToggleOff();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置显示成打开样式,不会触发toggle事件
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user