From: kfl_614 Date: Tue, 24 Mar 2020 05:01:16 +0000 (+0800) Subject: 1.修复微聊不能打开的bug X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=d55ab8966b8cb66587a913ca23d7898c06e76fd1;p=launcher4.git 1.修复微聊不能打开的bug 2.添加fragment过度动画。待优化 3.修改双击进去协议模块 4.合并LiveData,不在分开。难以管理fragment。 Signed-off-by: kfl_614 --- diff --git a/app/src/main/java/com/enqualcomm/support/bean/Contact.java b/app/src/main/java/com/enqualcomm/support/bean/Contact.java new file mode 100644 index 0000000..09d8a58 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/bean/Contact.java @@ -0,0 +1,143 @@ +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 CREATOR = new Creator() { + 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); + } +} + diff --git a/app/src/main/java/com/ic/launcher/IcLauncherApplication.java b/app/src/main/java/com/ic/launcher/IcLauncherApplication.java index 0779d2a..ce9624c 100644 --- a/app/src/main/java/com/ic/launcher/IcLauncherApplication.java +++ b/app/src/main/java/com/ic/launcher/IcLauncherApplication.java @@ -4,6 +4,7 @@ import android.app.Application; 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; @@ -15,6 +16,7 @@ public class IcLauncherApplication extends Application { private BatteryPresenter mBatteryPresenter; private TimeDatePresenter timeDatePresenter; private AppListPresenter appListPresenter; + private HardwarePresenter mHardwarePresenter; @Override public void onCreate() { @@ -26,9 +28,10 @@ public class IcLauncherApplication extends Application { 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() { @@ -43,4 +46,7 @@ public class IcLauncherApplication extends Application { public AppListPresenter getAppListPresenter() { return appListPresenter; } + public HardwarePresenter getHardwarePresenter() { + return mHardwarePresenter; + } } diff --git a/app/src/main/java/com/ic/launcher/MainActivity.java b/app/src/main/java/com/ic/launcher/MainActivity.java index 53b24c7..c471081 100644 --- a/app/src/main/java/com/ic/launcher/MainActivity.java +++ b/app/src/main/java/com/ic/launcher/MainActivity.java @@ -7,34 +7,36 @@ import androidx.fragment.app.FragmentTransaction; 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 mAddFt; + private SparseArray 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(); @@ -48,10 +50,16 @@ public class MainActivity extends AppCompatActivity implements @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) { } } @@ -93,13 +101,34 @@ public class MainActivity extends AppCompatActivity implements 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); } } diff --git a/app/src/main/java/com/ic/launcher/configure/l02/L02AppInfo.java b/app/src/main/java/com/ic/launcher/configure/l02/L02AppInfo.java index 1be15c0..c1133fa 100644 --- a/app/src/main/java/com/ic/launcher/configure/l02/L02AppInfo.java +++ b/app/src/main/java/com/ic/launcher/configure/l02/L02AppInfo.java @@ -25,7 +25,7 @@ public class L02AppInfo { "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")); diff --git a/app/src/main/java/com/ic/launcher/fragment/L02MainFragment.java b/app/src/main/java/com/ic/launcher/fragment/L02MainFragment.java index 439576b..3d32341 100644 --- a/app/src/main/java/com/ic/launcher/fragment/L02MainFragment.java +++ b/app/src/main/java/com/ic/launcher/fragment/L02MainFragment.java @@ -8,15 +8,18 @@ import androidx.annotation.NonNull; 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; @@ -25,6 +28,9 @@ public class L02MainFragment extends Fragment { private static final String TAG = "L02MainFragment"; private Context mContext; + private IcLauncherApplication mApp; + + private L02MainModel watchMainModel; private L02StatusBarFragment statusBarFt; private L02WatchFragment watchFt; @@ -37,9 +43,23 @@ public class L02MainFragment extends Fragment { 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 @@ -48,6 +68,7 @@ public class L02MainFragment extends Fragment { 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; @@ -56,46 +77,82 @@ public class L02MainFragment extends Fragment { @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()) { diff --git a/app/src/main/java/com/ic/launcher/fragment/l02/L02StatusBarFragment.java b/app/src/main/java/com/ic/launcher/fragment/l02/L02StatusBarFragment.java index 772592d..4bec7de 100644 --- a/app/src/main/java/com/ic/launcher/fragment/l02/L02StatusBarFragment.java +++ b/app/src/main/java/com/ic/launcher/fragment/l02/L02StatusBarFragment.java @@ -6,26 +6,20 @@ import android.os.Bundle; 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) { @@ -36,68 +30,51 @@ public class L02StatusBarFragment extends Fragment { @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); } } diff --git a/app/src/main/java/com/ic/launcher/fragment/l02/L02WatchFragment.java b/app/src/main/java/com/ic/launcher/fragment/l02/L02WatchFragment.java index e012afa..d2099d1 100644 --- a/app/src/main/java/com/ic/launcher/fragment/l02/L02WatchFragment.java +++ b/app/src/main/java/com/ic/launcher/fragment/l02/L02WatchFragment.java @@ -6,26 +6,22 @@ import android.os.Bundle; 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 @@ -37,65 +33,51 @@ public class L02WatchFragment extends Fragment { @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 value){ + watchBinding.setTimeText(value); } } diff --git a/app/src/main/java/com/ic/launcher/listener/MainClockGestureDetectorImpl.java b/app/src/main/java/com/ic/launcher/listener/MainClockGestureDetectorImpl.java index ece2e7c..a682398 100644 --- a/app/src/main/java/com/ic/launcher/listener/MainClockGestureDetectorImpl.java +++ b/app/src/main/java/com/ic/launcher/listener/MainClockGestureDetectorImpl.java @@ -10,7 +10,7 @@ public class MainClockGestureDetectorImpl extends GestureDetector.SimpleOnGestur 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 { diff --git a/app/src/main/java/com/ic/launcher/mode/L02MainModel.java b/app/src/main/java/com/ic/launcher/mode/L02MainModel.java new file mode 100644 index 0000000..d639e25 --- /dev/null +++ b/app/src/main/java/com/ic/launcher/mode/L02MainModel.java @@ -0,0 +1,185 @@ +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 mObsPhoneTypeID; + private final LiveData mObsPhoneSignalID; + private final LiveData mObsPhoneTransportID; + + private final LiveData mObsBatteryValue; + private final LiveData mObsBatteryCharging; + private final LiveData mObsBatteryResID; + + private final LiveData> mObsTime; + private final LiveData mObsYear; + private final LiveData mObsWeek; + + private final LiveData mObsHardwareHeart; + private final LiveData 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 create(@NonNull Class modelClass) { + return (T) new L02MainModel(mApplication, + phonePresenter, + batteryPresenter, + timeDatePresenter, + hardwarePresenter); + } + } + + public LiveData getObsPhoneTypeID() { + return mObsPhoneTypeID; + } + + public LiveData getObsPhoneSignalID() { + return mObsPhoneSignalID; + } + + public LiveData getObsPhoneTransportID() { + return mObsPhoneTransportID; + } + + public LiveData getObsBatteryValue() { + return mObsBatteryValue; + } + + public LiveData getObsBatteryCharging() { + return mObsBatteryCharging; + } + + public LiveData getObsBatteryResID() { + return mObsBatteryResID; + } + + public LiveData> getObsTime() { + return mObsTime; + } + + public LiveData getObsYear() { + return mObsYear; + } + + public LiveData getObsWeek() { + return mObsWeek; + } + + public LiveData getObsHardwareHeart() { + return mObsHardwareHeart; + } + + public LiveData getObsHardwarePed() { + return mObsHardwarePed; + } +} diff --git a/app/src/main/java/com/ic/launcher/mode/StateBarModel.java b/app/src/main/java/com/ic/launcher/mode/StateBarModel.java deleted file mode 100644 index 3c6b3d3..0000000 --- a/app/src/main/java/com/ic/launcher/mode/StateBarModel.java +++ /dev/null @@ -1,121 +0,0 @@ -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 mObsPhoneTypeID; - private final LiveData mObsPhoneSignalID; - private final LiveData mObsPhoneTransportID; - - private final LiveData mObsBatteryValue; - private final LiveData mObsBatteryCharging; - private final LiveData 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 getObsPhoneTypeID() { - return mObsPhoneTypeID; - } - - public LiveData getObsPhoneSignalID() { - return mObsPhoneSignalID; - } - - public LiveData getObsPhoneTransportID() { - return mObsPhoneTransportID; - } - - public LiveData getObsBatteryValue() { - return mObsBatteryValue; - } - - public LiveData getObsBatteryCharging() { - return mObsBatteryCharging; - } - - public LiveData 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 create(@NonNull Class modelClass) { - return (T) new StateBarModel(mApplication, phonePresenter,batteryPresenter); - } - } - -} diff --git a/app/src/main/java/com/ic/launcher/mode/WatchFaceModel.java b/app/src/main/java/com/ic/launcher/mode/WatchFaceModel.java deleted file mode 100644 index eb1e6e4..0000000 --- a/app/src/main/java/com/ic/launcher/mode/WatchFaceModel.java +++ /dev/null @@ -1,105 +0,0 @@ -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> mObsTime; - private final LiveData mObsYear; - private final LiveData mObsWeek; - - private final LiveData mObsHardwareHeart; - private final LiveData 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> getObsTime() { - return mObsTime; - } - - public LiveData getObsYear() { - return mObsYear; - } - - public LiveData getObsWeek() { - return mObsWeek; - } - - public LiveData getObsHardwareHeart() { - return mObsHardwareHeart; - } - - public LiveData 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 create(@NonNull Class modelClass) { - return (T) new WatchFaceModel(mApplication, timeDatePresenter); - } - } -} diff --git a/app/src/main/java/com/ic/launcher/presenter/AppListPresenter.java b/app/src/main/java/com/ic/launcher/presenter/AppListPresenter.java index 4ff9840..bdc912c 100644 --- a/app/src/main/java/com/ic/launcher/presenter/AppListPresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/AppListPresenter.java @@ -3,10 +3,12 @@ package com.ic.launcher.presenter; 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; @@ -69,12 +71,29 @@ public class AppListPresenter { } 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); } } } diff --git a/app/src/main/java/com/ic/launcher/presenter/BatteryPresenter.java b/app/src/main/java/com/ic/launcher/presenter/BatteryPresenter.java index 9ca23e4..46ad639 100644 --- a/app/src/main/java/com/ic/launcher/presenter/BatteryPresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/BatteryPresenter.java @@ -13,7 +13,7 @@ import com.ic.launcher.configure.l02.L02Icon; import com.ic.launcher.util.IcLog; public class BatteryPresenter { - + private static final String TAG = "BatteryPresenter"; private Context mContext; private MediatorLiveData mObsBatteryValue; @@ -38,9 +38,11 @@ public class BatteryPresenter { 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); @@ -70,6 +72,9 @@ public class BatteryPresenter { 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); } diff --git a/app/src/main/java/com/ic/launcher/presenter/HardwarePresenter.java b/app/src/main/java/com/ic/launcher/presenter/HardwarePresenter.java index 73eed9f..769049e 100644 --- a/app/src/main/java/com/ic/launcher/presenter/HardwarePresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/HardwarePresenter.java @@ -8,6 +8,8 @@ import android.text.TextUtils; import androidx.lifecycle.MediatorLiveData; +import com.ic.launcher.util.SPUtils; + public class HardwarePresenter { private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART"; @@ -68,6 +70,7 @@ public class HardwarePresenter { case HEART_ACTION: int heart = intent.getIntExtra("BLOOD_HEART", 0); mObsHardwareHeart.setValue(String.valueOf(heart)); + SPUtils.setBloodHeartSP(mContext,heart); break; } } diff --git a/app/src/main/java/com/ic/launcher/presenter/TimeDatePresenter.java b/app/src/main/java/com/ic/launcher/presenter/TimeDatePresenter.java index 49bfe38..28c24b0 100644 --- a/app/src/main/java/com/ic/launcher/presenter/TimeDatePresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/TimeDatePresenter.java @@ -39,7 +39,6 @@ public class TimeDatePresenter { public TimeDatePresenter(Context context) { mContext = context; timeList = new ArrayList<>(); - registerTimeDateReceiver(); createTime(null); mObsTime = new MediatorLiveData<>(); diff --git a/app/src/main/java/com/ic/launcher/util/SPUtils.java b/app/src/main/java/com/ic/launcher/util/SPUtils.java new file mode 100644 index 0000000..9cae414 --- /dev/null +++ b/app/src/main/java/com/ic/launcher/util/SPUtils.java @@ -0,0 +1,26 @@ +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(); + } + } +} diff --git a/app/src/main/java/com/ic/launcher/util/SystemUtils.java b/app/src/main/java/com/ic/launcher/util/SystemUtils.java new file mode 100644 index 0000000..6985afa --- /dev/null +++ b/app/src/main/java/com/ic/launcher/util/SystemUtils.java @@ -0,0 +1,69 @@ +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(); + + } + } +} diff --git a/app/src/main/res/layout/fragment_l02_watch.xml b/app/src/main/res/layout/fragment_l02_watch.xml index 43aae6a..e71fdca 100644 --- a/app/src/main/res/layout/fragment_l02_watch.xml +++ b/app/src/main/res/layout/fragment_l02_watch.xml @@ -63,19 +63,19 @@ android:layout_toEndOf="@id/l02_time_sp" android:text="@{watchWeek}" /> - - + android:layout_alignParentStart="true" + android:layout_marginStart="40dp" /> + + 短信 设置 + + 所有人 + 应用程序启动失败 很抱歉,程序出现异常,即将退出