--- /dev/null
+package com.enqualcomm.support.bean;
+
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class Contact implements Parcelable {
+ public static final int CATEGORY_ADMIN = 1;
+
+ public static final int CATEGORY_CALL = 3;
+
+ public static final int CATEGORY_CARE = 2;
+
+ public static final int CATEGORY_GROUP = 0;
+
+ public static final int CATEGORY_PARTNER = 4;
+
+ public static final int CATEGORY_VIDEO = 5;
+
+ public static final int CATEGORY_VOLTE = 6;
+
+ public static final int CATEGORY_SOS = 7;
+
+ public static final Creator<Contact> CREATOR = new Creator<Contact>() {
+ public Contact createFromParcel(Parcel param1Parcel) { return new Contact(param1Parcel); }
+
+ public Contact[] newArray(int param1Int) { return new Contact[param1Int]; }
+ };
+
+ public static final String GROUP_FAMILY = "1@-1";
+
+ public static final String GROUP_ALL = "1@-3";
+
+ String GROUP_PARTNER = "1@-2";
+
+ public int category;
+
+ public String extra;
+
+ public String icon_index;
+ public Uri icon;
+ public String name;
+
+ public String number;
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String type;
+
+ /**
+ * Contact
+ * @param _category
+ * @param _name
+ * @param _number
+ */
+ public Contact(int _category, String _name, String _number) {
+ this.category = _category;
+ this.name = _name;
+ this.number = _number;
+ }
+
+ /**
+ * Contact
+ * @param _category
+ * @param _name
+ * @param _number
+ * @param _extra
+ */
+ public Contact(int _category, String _name, String _number, String _extra) {
+ this.category = _category;
+ this.name = _name;
+ this.number = _number;
+ this.extra = _extra;
+ }
+ public Contact(int category, String name, String number, Uri icon, String extra) {
+ this.category = category;
+ this.name = name;
+ this.number = number;
+ this.icon = icon;
+ this.extra = extra;
+ }
+
+ /**
+ * Contact
+ * @param _category
+ * @param _name
+ * @param _number
+ * @param _icon_index
+ * @param _extra
+ */
+ public Contact(int _category, String _name, String _number, String _icon_index, String _extra) {
+ this.category = _category;
+ this.name = _name;
+ this.number = _number;
+ this.icon_index = _icon_index;
+ this.extra = _extra;
+ }
+
+ protected Contact(Parcel paramParcel) {
+ this.category = paramParcel.readInt();
+ this.name = paramParcel.readString();
+ this.number = paramParcel.readString();
+ this.icon_index = paramParcel.readString();
+ this.extra = paramParcel.readString();
+ icon = paramParcel.readParcelable(Uri.class.getClassLoader());
+ }
+
+ public int describeContents() { return 0; }
+
+ public String toString() {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append("Contact{category=");
+ stringBuilder.append(this.category);
+ stringBuilder.append(", name='");
+ stringBuilder.append(this.name);
+ stringBuilder.append('\'');
+ stringBuilder.append(", number='");
+ stringBuilder.append(this.number);
+ stringBuilder.append('\'');
+ stringBuilder.append(", icon_index='");
+ stringBuilder.append(this.icon_index);
+ stringBuilder.append('\'');
+ stringBuilder.append(", extra='");
+ stringBuilder.append(this.extra);
+ stringBuilder.append('\'');
+ stringBuilder.append('}');
+ return stringBuilder.toString();
+ }
+
+ public void writeToParcel(Parcel paramParcel, int paramInt) {
+ paramParcel.writeInt(this.category);
+ paramParcel.writeString(this.name);
+ paramParcel.writeString(this.number);
+ paramParcel.writeString(this.icon_index);
+ paramParcel.writeString(this.extra);
+ }
+}
+
import com.ic.launcher.presenter.AppListPresenter;
import com.ic.launcher.presenter.BatteryPresenter;
+import com.ic.launcher.presenter.HardwarePresenter;
import com.ic.launcher.presenter.PhoneStatePresenter;
import com.ic.launcher.presenter.TimeDatePresenter;
import com.ic.launcher.util.CrashHandler;
private BatteryPresenter mBatteryPresenter;
private TimeDatePresenter timeDatePresenter;
private AppListPresenter appListPresenter;
+ private HardwarePresenter mHardwarePresenter;
@Override
public void onCreate() {
mBatteryPresenter = new BatteryPresenter(this);
timeDatePresenter = new TimeDatePresenter(this);
appListPresenter = new AppListPresenter(this);
+ mHardwarePresenter = new HardwarePresenter(this);
- CrashHandler crashHandler = CrashHandler.getInstance();
- crashHandler.init(getApplicationContext());
+ //CrashHandler crashHandler = CrashHandler.getInstance();
+ //crashHandler.init(getApplicationContext());
}
public PhoneStatePresenter getPhoneStatePresenter() {
public AppListPresenter getAppListPresenter() {
return appListPresenter;
}
+ public HardwarePresenter getHardwarePresenter() {
+ return mHardwarePresenter;
+ }
}
import android.content.Intent;
import android.os.Bundle;
+import android.util.SparseArray;
+import android.view.KeyEvent;
import com.ic.launcher.fragment.AppListFragment;
import com.ic.launcher.fragment.L02MainFragment;
import com.ic.launcher.listener.IChangeMainFragmentListener;
import com.ic.launcher.listener.MainClockGestureDetectorImpl;
import com.ic.launcher.util.ServiceUtil;
-
-import java.util.ArrayList;
-import java.util.List;
+import com.ic.launcher.util.SystemUtils;
public class MainActivity extends AppCompatActivity implements
MainClockGestureDetectorImpl.OnClockGestureFlingListener,
IChangeMainFragmentListener {
- private static final String PACKAGE_NAME_LAUNCHER = "mobile.miki";
+ private static final String SERVICE_PKG_NAME = "com.enqualcomm.support";
+
private FragmentManager fragmentManager;
- private List<Fragment> mAddFt;
+ private SparseArray<Fragment> mAddFt;
private L02MainFragment l02MainFt;
private AppListFragment appListFt;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- mAddFt = new ArrayList<>();
+ mAddFt = new SparseArray<>();
fragmentManager = getSupportFragmentManager();
l02MainFt = L02MainFragment.newInstance();
@Override
public void onDouble() {
try {
- // 启动工厂测试
- Intent intent = getPackageManager().getLaunchIntentForPackage(PACKAGE_NAME_LAUNCHER);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
+ String cid = SystemUtils.GetCidFromSystem();
+ if (cid.startsWith("TESTPROTOCOL")) {
+ try {
+ // 协议测试
+ Intent intent = getPackageManager().getLaunchIntentForPackage(SERVICE_PKG_NAME);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ } catch (Exception ignored) {
+ }
+ }
} catch (Exception ignored) {
}
}
fragmentTransaction.hide(mAddFt.get(i));
}
+ fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
+
if (fragment.isAdded()) {
fragmentTransaction.show(fragment);
} else {
- mAddFt.add(fragment);
+ putFragmentToArray(fragment);
fragmentTransaction.add(R.id.main_content_fl, fragment);
}
- fragmentTransaction.commit();
+ fragmentTransaction.commitAllowingStateLoss();
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ // 禁用 KEYCODE_BACK 退出功能
+ if (mAddFt.get(0).isVisible()) {
+ return true;
+ }
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private void putFragmentToArray(Fragment fragment) {
+ int flag = 0;
+ if (fragment instanceof AppListFragment) {
+ flag = 1;
+ }
+ mAddFt.put(flag, fragment);
}
}
"com.ic.hardware", "com.ic.hardware.PedometerActivity"));
//微聊
add(new AppInfoEntity(BACK_COLOUR, R.mipmap.icon_talk_l02, R.string.app_name_talk,
- "", ""));
+ "com.enqualcomm.imessage", "com.enqualcomm.imessage.ui.MicroChatActivity"));
//天气
add(new AppInfoEntity(BACK_COLOUR, R.mipmap.icon_weather_l02, R.string.app_name_weather,
"com.ic.weather", "com.ic.weather.WeatherActivity"));
import androidx.core.view.GestureDetectorCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
+import androidx.lifecycle.ViewModelProvider;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import com.ic.launcher.IcLauncherApplication;
import com.ic.launcher.R;
import com.ic.launcher.fragment.l02.L02WatchFragment;
import com.ic.launcher.fragment.l02.L02StatusBarFragment;
import com.ic.launcher.listener.MainClockGestureDetectorImpl;
+import com.ic.launcher.mode.L02MainModel;
import com.ic.launcher.util.IcLog;
private static final String TAG = "L02MainFragment";
private Context mContext;
+ private IcLauncherApplication mApp;
+
+ private L02MainModel watchMainModel;
private L02StatusBarFragment statusBarFt;
private L02WatchFragment watchFt;
return new L02MainFragment();
}
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ this.mContext = context;
+
+ if (context instanceof MainClockGestureDetectorImpl.OnClockGestureFlingListener) {
+ flingListener = (MainClockGestureDetectorImpl.OnClockGestureFlingListener) context;
+ } else {
+ throw new RuntimeException(context.toString()
+ + " must implement MainClockGestureDetectorImpl.OnClockGestureFlingListener");
+ }
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mApp = (IcLauncherApplication) mContext.getApplicationContext();
}
@Override
View view = inflater.inflate(R.layout.fragment_l02_main, container, false);
statusBarFt = (L02StatusBarFragment) getChildFragmentManager().findFragmentById(R.id.l02_status_fl);
watchFt = (L02WatchFragment) getChildFragmentManager().findFragmentById(R.id.l02_watch_fl);
+ initL02MainModel();
//监听事件
initOnTouchListener(view);
return view;
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
- IcLog.i(TAG, "onHiddenChanged hidden" + hidden);
+ if(hidden){
+ IcLog.i(TAG, "Fragment hidden");
+ }else{
+ IcLog.i(TAG, "Fragment show");
+ }
}
@Override
public void onResume() {
super.onResume();
- controlStatusBar(true);
+ if(watchMainModel != null){
+ watchMainModel.onFragmentResume();
+ }
IcLog.i(TAG, "onResume");
}
@Override
public void onPause() {
super.onPause();
- controlStatusBar(false);
+ if(watchMainModel != null){
+ watchMainModel.onFragmentPause();
+ }
+
IcLog.i(TAG, "onPause");
}
@Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- this.mContext = context;
- if (context instanceof MainClockGestureDetectorImpl.OnClockGestureFlingListener) {
- flingListener = (MainClockGestureDetectorImpl.OnClockGestureFlingListener) context;
- } else {
- throw new RuntimeException(context.toString()
- + " must implement MainClockGestureDetectorImpl.OnClockGestureFlingListener");
+ public void onDestroy() {
+ super.onDestroy();
+ if(watchMainModel != null){
+ watchMainModel.onFragmentDestroy();
}
+
+ IcLog.i(TAG, "onDestroy");
}
- @Override
- public void onDetach() {
- super.onDetach();
+ private void initL02MainModel() {
+ L02MainModel.Factory factory = new L02MainModel.Factory(mApp,
+ mApp.getPhoneStatePresenter(),
+ mApp.getBatterPresenter(),
+ mApp.getTimeDatePresenter(),
+ mApp.getHardwarePresenter());
+
+ watchMainModel = new ViewModelProvider(this, factory).get(L02MainModel.class);
+ observeStateBarValue(watchMainModel);
+ observeWatchValue(watchMainModel);
+ watchMainModel.onFragmentCreate();
+ }
+
+ private void observeStateBarValue(L02MainModel model) {
+ model.getObsPhoneSignalID().observe(getViewLifecycleOwner(), resID -> statusBarFt.updatePhoneSignal(resID));
+
+ model.getObsPhoneTransportID().observe(getViewLifecycleOwner(), resID -> statusBarFt.updateTransportValue(resID));
+
+ model.getObsPhoneTypeID().observe(getViewLifecycleOwner(), resID -> statusBarFt.updateNetTypeValue(resID));
+
+ model.getObsBatteryCharging().observe(getViewLifecycleOwner(), charging -> statusBarFt.updateBatteryChargeValue(charging));
+
+ model.getObsBatteryResID().observe(getViewLifecycleOwner(), resID -> statusBarFt.updateBatteryDrawable(resID));
+
+ model.getObsBatteryValue().observe(getViewLifecycleOwner(), value -> statusBarFt.updateBatteryValue(value));
+ }
+
+ private void observeWatchValue(L02MainModel model) {
+ model.getObsTime().observe(getViewLifecycleOwner(), timeList -> watchFt.updateTimeValue(timeList));
+
+ model.getObsWeek().observe(getViewLifecycleOwner(), week -> watchFt.updateWeekValue(week));
+
+ model.getObsYear().observe(getViewLifecycleOwner(), year -> watchFt.updateDateValue(year));
+
+ model.getObsHardwareHeart().observe(getViewLifecycleOwner(), heart -> watchFt.updateHeartValue(heart));
+
+ model.getObsHardwarePed().observe(getViewLifecycleOwner(), ped -> watchFt.updatePedValue(ped));
}
- /**
- * 状态显示与隐藏
- *
- * @param isShow true 显示 false 隐藏 在 onResume 与 onPause 控制
- */
private void controlStatusBar(boolean isShow) {
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
if (isShow && !statusBarFt.isVisible()) {
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.ic.launcher.IcLauncherApplication;
import com.ic.launcher.databinding.FragmentL02StatusBarBinding;
-import com.ic.launcher.mode.StateBarModel;
-import com.ic.launcher.util.IcLog;
public class L02StatusBarFragment extends Fragment {
private static final String TAG = "L02StatusBarFt";
private Context mContext;
- private IcLauncherApplication mApp;
private FragmentL02StatusBarBinding mStateBarBinding;
- private StateBarModel phoneModel;
@Override
public void onAttach(@NonNull Context context) {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mApp = (IcLauncherApplication) mContext.getApplicationContext();
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mStateBarBinding = FragmentL02StatusBarBinding.inflate(inflater, container, false);
- initStateBarModel();
- phoneModel.registerBatteryReceiver();
- IcLog.i(TAG,"onCreateView");
return mStateBarBinding.getRoot();
}
@Override
public void onResume() {
super.onResume();
- IcLog.i(TAG,"onResume");
- phoneModel.onResumeView();
}
@Override
public void onPause() {
super.onPause();
- IcLog.i(TAG,"onPause");
- phoneModel.onPauseView();
}
@Override
public void onDestroy() {
super.onDestroy();
- phoneModel.onDestroyView();
- phoneModel.unregisterBatteryReceiver();
}
- private void initStateBarModel() {
-
- StateBarModel.Factory factory = new StateBarModel.Factory(mApp, mApp.getPhoneStatePresenter(), mApp.getBatterPresenter());
- phoneModel = new ViewModelProvider(this, factory).get(StateBarModel.class);
- phoneModel.getObsPhoneSignalID().observe(getViewLifecycleOwner(), resID -> {
- mStateBarBinding.setPhoneSignal(resID);
- });
-
- phoneModel.getObsPhoneTransportID().observe(getViewLifecycleOwner(), resID -> {
- mStateBarBinding.setPhoneTransport(resID);
- });
+ public void updateBatteryValue(String value) {
+ mStateBarBinding.setBatteryValue(value);
+ }
- phoneModel.getObsPhoneTypeID().observe(getViewLifecycleOwner(), resID -> {
- mStateBarBinding.setPhoneNetType(resID);
- });
+ public void updateBatteryDrawable(int drawableRes) {
+ mStateBarBinding.setBatteryDrawable(drawableRes);
+ }
- phoneModel.getObsBatteryCharging().observe(getViewLifecycleOwner(), charging -> {
- mStateBarBinding.setBatteryCharge(charging);
- });
+ public void updateBatteryChargeValue(boolean state) {
+ mStateBarBinding.setBatteryCharge(state);
+ }
- phoneModel.getObsBatteryResID().observe(getViewLifecycleOwner(),resID ->{
- mStateBarBinding.setBatteryDrawable(resID);
- });
+ public void updatePhoneSignal(int value) {
+ mStateBarBinding.setPhoneSignal(value);
+ }
- phoneModel.getObsBatteryValue().observe(getViewLifecycleOwner(),value ->{
- mStateBarBinding.setBatteryValue(value);
- });
+ public void updateTransportValue(int value) {
+ mStateBarBinding.setPhoneTransport(value);
+ }
- phoneModel.onStartQuery();
+ public void updateNetTypeValue(int value) {
+ mStateBarBinding.setPhoneNetType(value);
}
}
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.ic.launcher.IcLauncherApplication;
import com.ic.launcher.databinding.FragmentL02WatchBinding;
-import com.ic.launcher.mode.WatchFaceModel;
-import com.ic.launcher.util.IcLog;
+import com.ic.launcher.util.SPUtils;
+
+import java.util.ArrayList;
+import java.util.List;
public class L02WatchFragment extends Fragment {
private static final String TAG = "L02WatchFragment";
private Context mContext;
- private IcLauncherApplication mApp;
-
- private WatchFaceModel watchFaceModel;
-
private FragmentL02WatchBinding watchBinding;
@Override
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mApp = (IcLauncherApplication) mContext.getApplicationContext();
}
@Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ public View onCreateView(LayoutInflater inflater,
+ ViewGroup container,
Bundle savedInstanceState) {
watchBinding = FragmentL02WatchBinding.inflate(inflater, container, false);
- initWatchFaceModel();
+ updateHeartValue(String.valueOf(SPUtils.getBloodHeartSP(mContext)));
+ updatePedValue("0");
return watchBinding.getRoot();
}
@Override
public void onResume() {
super.onResume();
- watchFaceModel.onResumeView();
- IcLog.i(TAG, "onResume");
}
@Override
public void onPause() {
super.onPause();
- watchFaceModel.onPauseView();
- IcLog.i(TAG, "onPause");
}
@Override
public void onDestroy() {
super.onDestroy();
- watchFaceModel.onDestroyView();
}
+ public void updateHeartValue(String value){
+ watchBinding.setHeartValue(value);
+ }
- private void initWatchFaceModel() {
- WatchFaceModel.Factory factory = new WatchFaceModel.Factory(mApp, mApp.getTimeDatePresenter());
- watchFaceModel = new ViewModelProvider(this, factory).get(WatchFaceModel.class);
-
- watchFaceModel.getObsTime().observe(getViewLifecycleOwner(), timeList -> {
- watchBinding.setTimeText(timeList);
- });
-
- watchFaceModel.getObsWeek().observe(getViewLifecycleOwner(), week -> {
- watchBinding.setWatchWeek(week);
- });
-
- watchFaceModel.getObsYear().observe(getViewLifecycleOwner(), year -> {
- watchBinding.setWatchDate(year);
- });
+ public void updatePedValue(String value){
+ watchBinding.setStepValue(value);
+ }
- watchFaceModel.getObsHardwareHeart().observe(getViewLifecycleOwner(), heart -> {
- watchBinding.setHeartValue(heart);
- });
+ public void updateWeekValue(String value){
+ watchBinding.setWatchWeek(value);
+ }
- watchFaceModel.getObsHardwarePed().observe(getViewLifecycleOwner(), ped -> {
- watchBinding.setStepValue(ped);
- });
+ public void updateDateValue(String value){
+ watchBinding.setWatchDate(value);
+ }
- watchBinding.setHeartValue("0");
- watchBinding.setStepValue("0");
- watchFaceModel.onCreateView();
+ public void updateTimeValue(ArrayList<Integer> value){
+ watchBinding.setTimeText(value);
}
}
private static final String TAG = "MainClockGesture";
private final int COUNTS = 2;//点击次数
- private final long DURATION = 3 * 1000;//规定有效时间
+ private final long DURATION = 500;//规定有效时间
private long[] mHits = new long[COUNTS];
public interface OnClockGestureFlingListener {
--- /dev/null
+package com.ic.launcher.mode;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.ic.launcher.presenter.BatteryPresenter;
+import com.ic.launcher.presenter.HardwarePresenter;
+import com.ic.launcher.presenter.PhoneStatePresenter;
+import com.ic.launcher.presenter.TimeDatePresenter;
+import com.ic.launcher.util.IcLog;
+
+import java.util.ArrayList;
+
+public class L02MainModel extends AndroidViewModel {
+
+ private static final String TAG = "L02MainModel";
+
+ private final Application application;
+ private final PhoneStatePresenter phonePresenter;
+ private final BatteryPresenter batteryPresenter;
+ private final TimeDatePresenter timeDatePresenter;
+ private final HardwarePresenter hardwarePresenter;
+
+ private final LiveData<Integer> mObsPhoneTypeID;
+ private final LiveData<Integer> mObsPhoneSignalID;
+ private final LiveData<Integer> mObsPhoneTransportID;
+
+ private final LiveData<String> mObsBatteryValue;
+ private final LiveData<Boolean> mObsBatteryCharging;
+ private final LiveData<Integer> mObsBatteryResID;
+
+ private final LiveData<ArrayList<Integer>> mObsTime;
+ private final LiveData<String> mObsYear;
+ private final LiveData<String> mObsWeek;
+
+ private final LiveData<String> mObsHardwareHeart;
+ private final LiveData<String> mObsHardwarePed;
+
+ public L02MainModel(@NonNull Application application,
+ @NonNull PhoneStatePresenter phonePresenter,
+ @NonNull BatteryPresenter batteryPresenter,
+ @NonNull TimeDatePresenter timeDatePresenter,
+ @NonNull HardwarePresenter hardwarePresenter) {
+ super(application);
+ this.application = application;
+ this.phonePresenter = phonePresenter;
+ this.batteryPresenter = batteryPresenter;
+ this.timeDatePresenter = timeDatePresenter;
+ this.hardwarePresenter = hardwarePresenter;
+
+ mObsPhoneSignalID = phonePresenter.getPhoneSignalObservable();
+ mObsPhoneTypeID = phonePresenter.getPhoneTypeObservable();
+ mObsPhoneTransportID = phonePresenter.getPhoneTransportObservable();
+
+ mObsBatteryCharging = batteryPresenter.getObsBatteryCharging();
+ mObsBatteryResID = batteryPresenter.getObsBatteryResID();
+ mObsBatteryValue = batteryPresenter.getObsBatteryValue();
+
+ mObsTime = timeDatePresenter.getObsTime();
+ mObsYear = timeDatePresenter.getObsYear();
+ mObsWeek = timeDatePresenter.getmObsWeek();
+
+ mObsHardwareHeart = hardwarePresenter.getObsHardwareHeart();
+ mObsHardwarePed = hardwarePresenter.getObsHardwarePed();
+ }
+
+ public void onFragmentCreate(){
+ IcLog.i(TAG,"onFragmentCreate");
+ hardwarePresenter.registerHardwareBroadcast();
+ phonePresenter.onStartQuery();
+ timeDatePresenter.registerTimeDateReceiver();
+ }
+
+ public void onFragmentResume(){
+ IcLog.i(TAG,"onFragmentResume");
+ hardwarePresenter.sendGetPedBroadcast();
+ timeDatePresenter.onResumePresenter();
+ phonePresenter.onResumePresenter();
+ }
+
+ public void onFragmentPause(){
+ IcLog.i(TAG,"onFragmentPause");
+ timeDatePresenter.onPausePresenter();
+ phonePresenter.onPausePresenter();
+ }
+
+ public void onFragmentDestroy(){
+ IcLog.i(TAG,"onFragmentDestroy");
+ batteryPresenter.unRegisterBatteryReceiver();
+ hardwarePresenter.unRegisterHardwareReceiver();
+ phonePresenter.onDestroyPresenter();
+ timeDatePresenter.unRegisterTimeDateReceiver();
+ }
+
+ public static class Factory extends ViewModelProvider.NewInstanceFactory {
+
+ @NonNull
+ private final Application mApplication;
+
+ @NonNull
+ private final PhoneStatePresenter phonePresenter;
+
+ @NonNull
+ private final BatteryPresenter batteryPresenter;
+
+ @NonNull
+ private final TimeDatePresenter timeDatePresenter;
+
+ @NonNull
+ private final HardwarePresenter hardwarePresenter;
+
+ public Factory(@NonNull Application application,
+ @NonNull PhoneStatePresenter phonePresenter,
+ @NonNull BatteryPresenter batteryPresenter,
+ @NonNull TimeDatePresenter timeDatePresenter,
+ @NonNull HardwarePresenter hardwarePresenter) {
+ mApplication = application;
+ this.phonePresenter = phonePresenter;
+ this.batteryPresenter = batteryPresenter;
+ this.timeDatePresenter = timeDatePresenter;
+ this.hardwarePresenter = hardwarePresenter;
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ @NonNull
+ public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
+ return (T) new L02MainModel(mApplication,
+ phonePresenter,
+ batteryPresenter,
+ timeDatePresenter,
+ hardwarePresenter);
+ }
+ }
+
+ public LiveData<Integer> getObsPhoneTypeID() {
+ return mObsPhoneTypeID;
+ }
+
+ public LiveData<Integer> getObsPhoneSignalID() {
+ return mObsPhoneSignalID;
+ }
+
+ public LiveData<Integer> getObsPhoneTransportID() {
+ return mObsPhoneTransportID;
+ }
+
+ public LiveData<String> getObsBatteryValue() {
+ return mObsBatteryValue;
+ }
+
+ public LiveData<Boolean> getObsBatteryCharging() {
+ return mObsBatteryCharging;
+ }
+
+ public LiveData<Integer> getObsBatteryResID() {
+ return mObsBatteryResID;
+ }
+
+ public LiveData<ArrayList<Integer>> getObsTime() {
+ return mObsTime;
+ }
+
+ public LiveData<String> getObsYear() {
+ return mObsYear;
+ }
+
+ public LiveData<String> getObsWeek() {
+ return mObsWeek;
+ }
+
+ public LiveData<String> getObsHardwareHeart() {
+ return mObsHardwareHeart;
+ }
+
+ public LiveData<String> getObsHardwarePed() {
+ return mObsHardwarePed;
+ }
+}
+++ /dev/null
-package com.ic.launcher.mode;
-
-import android.app.Application;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.AndroidViewModel;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.ViewModel;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.ic.launcher.presenter.BatteryPresenter;
-import com.ic.launcher.presenter.PhoneStatePresenter;
-import com.ic.launcher.util.IcLog;
-
-public class StateBarModel extends AndroidViewModel {
-
- private final LiveData<Integer> mObsPhoneTypeID;
- private final LiveData<Integer> mObsPhoneSignalID;
- private final LiveData<Integer> mObsPhoneTransportID;
-
- private final LiveData<String> mObsBatteryValue;
- private final LiveData<Boolean> mObsBatteryCharging;
- private final LiveData<Integer> mObsBatteryResID;
-
- private PhoneStatePresenter mPhonePresenter;
- private BatteryPresenter mBatteryPresenter;
-
- public StateBarModel(@NonNull Application application,
- @NonNull PhoneStatePresenter phonePresenter,
- @NonNull BatteryPresenter batteryPresenter) {
- super(application);
- mPhonePresenter = phonePresenter;
- mBatteryPresenter = batteryPresenter;
-
- mObsPhoneSignalID = mPhonePresenter.getPhoneSignalObservable();
- mObsPhoneTypeID = mPhonePresenter.getPhoneTypeObservable();
- mObsPhoneTransportID = mPhonePresenter.getPhoneTransportObservable();
-
- mObsBatteryCharging = mBatteryPresenter.getObsBatteryCharging();
- mObsBatteryResID = mBatteryPresenter.getObsBatteryResID();
- mObsBatteryValue = mBatteryPresenter.getObsBatteryValue();
- }
-
- public LiveData<Integer> getObsPhoneTypeID() {
- return mObsPhoneTypeID;
- }
-
- public LiveData<Integer> getObsPhoneSignalID() {
- return mObsPhoneSignalID;
- }
-
- public LiveData<Integer> getObsPhoneTransportID() {
- return mObsPhoneTransportID;
- }
-
- public LiveData<String> getObsBatteryValue() {
- return mObsBatteryValue;
- }
-
- public LiveData<Boolean> getObsBatteryCharging() {
- return mObsBatteryCharging;
- }
-
- public LiveData<Integer> getObsBatteryResID() {
- return mObsBatteryResID;
- }
-
-
- public void onStartQuery(){
- mPhonePresenter.onStartQuery();
- }
-
- public void onResumeView(){
- mPhonePresenter.onResumePresenter();
- }
-
- public void registerBatteryReceiver(){
- mBatteryPresenter.registerBatteryReceiver();
- }
-
- public void unregisterBatteryReceiver(){
- mBatteryPresenter.unRegisterBatteryReceiver();
- }
-
- public void onPauseView(){
- mPhonePresenter.onPausePresenter();
- }
-
- public void onDestroyView(){
- mPhonePresenter.onDestroyPresenter();
- }
-
- public static class Factory extends ViewModelProvider.NewInstanceFactory {
-
- @NonNull
- private final Application mApplication;
-
- @NonNull
- private final PhoneStatePresenter phonePresenter;
-
- @NonNull
- private final BatteryPresenter batteryPresenter;
-
- public Factory(@NonNull Application application,
- @NonNull PhoneStatePresenter phonePresenter,
- @NonNull BatteryPresenter batteryPresenter) {
- mApplication = application;
- this.phonePresenter = phonePresenter;
- this.batteryPresenter = batteryPresenter;
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- @NonNull
- public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
- return (T) new StateBarModel(mApplication, phonePresenter,batteryPresenter);
- }
- }
-
-}
+++ /dev/null
-package com.ic.launcher.mode;
-
-import android.app.Application;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.AndroidViewModel;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.ViewModel;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.ic.launcher.presenter.HardwarePresenter;
-import com.ic.launcher.presenter.TimeDatePresenter;
-
-import java.util.ArrayList;
-
-
-public class WatchFaceModel extends AndroidViewModel {
-
- private final TimeDatePresenter timeDatePresenter;
- private final HardwarePresenter hardwarePresenter;
-
- private final LiveData<ArrayList<Integer>> mObsTime;
- private final LiveData<String> mObsYear;
- private final LiveData<String> mObsWeek;
-
- private final LiveData<String> mObsHardwareHeart;
- private final LiveData<String> mObsHardwarePed;
-
- public WatchFaceModel(@NonNull Application application,
- @NonNull TimeDatePresenter timeDatePresenter) {
- super(application);
-
- this.timeDatePresenter = timeDatePresenter;
- hardwarePresenter = new HardwarePresenter(application);
-
- mObsTime = timeDatePresenter.getObsTime();
- mObsYear = timeDatePresenter.getObsYear();
- mObsWeek = timeDatePresenter.getmObsWeek();
-
- mObsHardwareHeart = hardwarePresenter.getObsHardwareHeart();
- mObsHardwarePed = hardwarePresenter.getObsHardwarePed();
- }
-
- public LiveData<ArrayList<Integer>> getObsTime() {
- return mObsTime;
- }
-
- public LiveData<String> getObsYear() {
- return mObsYear;
- }
-
- public LiveData<String> getObsWeek() {
- return mObsWeek;
- }
-
- public LiveData<String> getObsHardwareHeart() {
- return mObsHardwareHeart;
- }
-
- public LiveData<String> getObsHardwarePed() {
- return mObsHardwarePed;
- }
-
- public void onCreateView(){
- hardwarePresenter.registerHardwareBroadcast();
- }
-
- public void onResumeView() {
- timeDatePresenter.onResumePresenter();
- hardwarePresenter.sendGetPedBroadcast();
- }
-
- public void onPauseView() {
- timeDatePresenter.onPausePresenter();
- }
-
- public void onDestroyView() {
- timeDatePresenter.unRegisterTimeDateReceiver();
- hardwarePresenter.unRegisterHardwareReceiver();
- }
-
- public static class Factory extends ViewModelProvider.NewInstanceFactory {
-
- @NonNull
- private final Application mApplication;
-
- @NonNull
- private final TimeDatePresenter timeDatePresenter;
-
-
- public Factory(@NonNull Application application,
- @NonNull TimeDatePresenter timeDatePresenter) {
- mApplication = application;
- this.timeDatePresenter = timeDatePresenter;
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- @NonNull
- public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
- return (T) new WatchFaceModel(mApplication, timeDatePresenter);
- }
- }
-}
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.os.Parcelable;
import android.text.TextUtils;
import androidx.lifecycle.MutableLiveData;
+import com.enqualcomm.support.bean.Contact;
import com.ic.launcher.R;
import com.ic.launcher.configure.l02.L02AppInfo;
import com.ic.launcher.entity.AppInfoEntity;
}
try {
+ startCustomActivity(pck,activity);
+ } catch (Exception e) {
+ mObsActivityError.setValue(mErrorInfo);
+ }
+ }
+
+ private void startCustomActivity(String pck,String activity) throws Exception{
+ if ("com.enqualcomm.imessage".equals(pck) && "com.enqualcomm.imessage.ui.MicroChatActivity".equals(activity)) {
+ ComponentName componentName1= new ComponentName("com.enqualcomm.imessage",
+ "com.enqualcomm.imessage.ui.chat.ChatActivity_");
+ Contact contact = new Contact(Contact.CATEGORY_GROUP, context.getResources().getString(R.string.all_group), Contact.GROUP_ALL);
+ Intent var5 = new Intent(Intent.ACTION_MAIN);
+ var5.putExtra("ACTIVITY_TYPE", 2);
+ var5.putExtra("contact", (Parcelable)contact);
+ var5.addCategory(Intent.CATEGORY_DEFAULT);
+ var5.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ var5.setComponent(componentName1);
+ context.startActivity(var5);
+ }else{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(pck, activity));
context.startActivity(intent);
- } catch (Exception e) {
- mObsActivityError.setValue(mErrorInfo);
}
}
}
import com.ic.launcher.util.IcLog;
public class BatteryPresenter {
-
+ private static final String TAG = "BatteryPresenter";
private Context mContext;
private MediatorLiveData<String> mObsBatteryValue;
mObsBatteryValue = new MediatorLiveData<>();
mObsBatteryCharging = new MediatorLiveData<>();
mObsBatteryResID = new MediatorLiveData<>();
+
+ registerBatteryReceiver();
}
- public void registerBatteryReceiver() {
+ private void registerBatteryReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
mContext.registerReceiver(mIntentReceiver, filter);
int status = intent.getIntExtra("status", -1);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
+
+ IcLog.i(TAG,"Battery Statu:"+acyion);
+
updateBatteryValue(rawlevel, scale);
updateBatteryCharging(status);
}
import androidx.lifecycle.MediatorLiveData;
+import com.ic.launcher.util.SPUtils;
+
public class HardwarePresenter {
private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART";
case HEART_ACTION:
int heart = intent.getIntExtra("BLOOD_HEART", 0);
mObsHardwareHeart.setValue(String.valueOf(heart));
+ SPUtils.setBloodHeartSP(mContext,heart);
break;
}
}
public TimeDatePresenter(Context context) {
mContext = context;
timeList = new ArrayList<>();
- registerTimeDateReceiver();
createTime(null);
mObsTime = new MediatorLiveData<>();
--- /dev/null
+package com.ic.launcher.util;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+public class SPUtils {
+
+ private static final String Blood_Heart = "Blood_Heart";
+
+ public static SharedPreferences getSP(Context context) {
+ return context.getSharedPreferences("IcBloodSet", Context.MODE_PRIVATE);
+ }
+
+ public static int getBloodHeartSP(Context context) {
+ return getSP(context).getInt(Blood_Heart, 0);
+ }
+
+
+ public static void setBloodHeartSP(Context context,int height) {
+ SharedPreferences.Editor editor = getSP(context).edit();
+ if (editor != null) {
+ editor.putInt(Blood_Heart, height);
+ editor.apply();
+ }
+ }
+}
--- /dev/null
+package com.ic.launcher.util;
+
+
+import java.io.FileInputStream;
+import java.lang.reflect.Method;
+
+public class SystemUtils {
+
+ public static String GetCidFromSystem() {
+ String cid_file = getSystemProperties("ro.product.partitionpath") + "miscdata";
+ byte[] resCid = new byte[16];
+ try {
+ byte[] buf = new byte[50];
+ FileInputStream inputStream = new FileInputStream(cid_file);
+ int len = inputStream.read(buf);
+ if (len < 50) return null;
+ for (int i = 0; i < 16; i++) {
+ resCid[i] = buf[i + 28];
+ }
+ for (int i = 0; i < 16; i++) {
+ if ((resCid[i] >= 0x30 && resCid[i] <= 0x39) || (resCid[i] >= 0x61 && resCid[i] <= 0x7A) || (resCid[i] >= 0x41 && resCid[i] <= 0x5A)) {
+ // valid
+ } else {
+ // invalid
+ for (int j = 28; j < 28 + 16; j++) {
+ resCid[j] = 0x30;
+ }
+ break;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ String cid = new String(resCid);
+ return cid;
+ }
+
+ public static String getSystemProperties(String prop) {
+
+ String str = "";
+ Class clazz = null;
+ try {
+ clazz = Class.forName("android.os.SystemProperties");
+ str = (String) clazz.getMethod("get", new Class[]{String.class}).invoke(clazz, new Object[]{prop});
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return str;
+ }
+
+ static public void setSystemProperties(String key, String defaultValue) {
+
+ String value = defaultValue;
+
+ try {
+
+ Class<?> c = Class.forName("android.os.SystemProperties");
+
+ Method get = c.getMethod("set", String.class, String.class);
+
+ get.invoke(c, key, value);
+
+ } catch (Exception e) {
+
+ e.printStackTrace();
+
+ }
+ }
+}
android:layout_toEndOf="@id/l02_time_sp"
android:text="@{watchWeek}" />
- <TextView
- style="@style/watchDateIconTextStyle"
- android:id="@+id/l02_heart_value"
- android:text="@{heartValue}"
- android:layout_toStartOf="@id/l02_time_sp"
- android:layout_marginEnd="10dp"/>
-
<ImageView
style="@style/watchDateIconStyle"
android:id="@+id/l02_heart_img"
android:src="@mipmap/clockl02_heartrate_icon"
- android:layout_toStartOf="@id/l02_heart_value"
- android:layout_marginEnd="5dp"/>
+ android:layout_alignParentStart="true"
+ android:layout_marginStart="40dp" />
+
+ <TextView
+ style="@style/watchDateIconTextStyle"
+ android:id="@+id/l02_heart_value"
+ android:text="@{heartValue}"
+ android:layout_marginStart="5dp"
+ android:layout_toEndOf="@id/l02_heart_img" />
<ImageView
style="@style/watchDateIconStyle"
<string name="app_name_short_message">短信</string>
<string name="app_name_setting">设置</string>
+
+ <string name="all_group">所有人</string>
+
<string name="error_start_activity">应用程序启动失败</string>
<string name="program_abnormal">很抱歉,程序出现异常,即将退出</string>