version:2.0.0

fix:
update:修改样式,设置页面开关修改,联系人页面修改
This commit is contained in:
2025-01-07 09:15:04 +08:00
parent 2a232e34d0
commit 8eb83634d0
95 changed files with 1152 additions and 4268 deletions

View File

@@ -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 {

View File

@@ -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));
}
}

View File

@@ -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时setOutsideTouchablesetTouchable方法就失效了点击外部不消失内容区域也不响应事件
// 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);
}
}
}
}

View File

@@ -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时setOutsideTouchablesetTouchable方法就失效了点击外部不消失内容区域也不响应事件
// 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);
}
}
}
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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, "");

View File

@@ -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: 无障碍服务已打开");

View File

@@ -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);
}
}
}

View File

@@ -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;
}
}
/**

View File

@@ -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();

View File

@@ -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;

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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;
}

View File

@@ -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");
}
}
}

View File

@@ -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事件
*/