/MATE-20_EMUI_11.0.0/src/main/java/huawei/com/android/server/policy/stylus/StylusGestureSettings.java

https://github.com/dstmath/HWFramework · Java · 90 lines · 82 code · 8 blank · 0 comment · 15 complexity · 134ecec3cdc4d78b2021def180540cb9 MD5 · raw file

  1. package huawei.com.android.server.policy.stylus;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.content.pm.PackageManager;
  5. import android.gesture.Gesture;
  6. import java.util.Locale;
  7. public class StylusGestureSettings {
  8. private static final String ACTION_FLOATSERVICE = "com.huawei.smartshot.floatmode.start";
  9. private static final String EXTRA_GESTURE = "com.qeexo.syswideactions.gesture";
  10. private static final String EXTRA_GESTURE_NAME = "com.qeexo.syswideactions.gesture.name";
  11. private static final String EXTRA_GESTURE_PREDICTION_SCORE = "com.qeexo.syswideactions.gesture.score";
  12. public static final String FLOAT_ENTRANCE_CLASSNAME = "com.huawei.stylus.floatmenu.FloatMenuService";
  13. public static final String FLOAT_ENTRANCE_PACKAGE_NAME = "com.huawei.stylus.floatmenu";
  14. private static final String HUAWEI_SCREENSHOT_REGION_INTENT = "com.huawei.smartshot.CropActivity";
  15. private static final String MULTISCREENSHOT_ACTION = "com.huawei.HwMultiScreenShot.start";
  16. private static final String MULTISCREENSHOT_FLOATSERVICE = "com.huawei.smartshot.floatmode.FloatService";
  17. private static final String MULTISCREENSHOT_PREFIX = "com.huawei.HwMultiScreenShot";
  18. private static final String MULTISCREENSHOT_SERVICE = "com.huawei.HwMultiScreenShot.MultiScreenShotService";
  19. public static final String PKG_HUAWEI_SMARTSHOT = "com.huawei.smartshot";
  20. public static final String PKG_QEEXO_SMARTSHOT = "com.qeexo.smartshot";
  21. private static final String QEEXO_SCREENSHOT_REGION_INTENT = "com.qeexo.smartshot.CropActivity";
  22. public static final String STYLUS_GESTURE_C_SUFFIX = "c";
  23. public static final String STYLUS_GESTURE_M_SUFFIX = "m";
  24. public static final String STYLUS_GESTURE_REGION_SUFFIX = "region";
  25. public static final String STYLUS_GESTURE_S_SUFFIX = "s";
  26. public static final String STYLUS_GESTURE_W_SUFFIX = "w";
  27. private StylusGestureSettings() {
  28. }
  29. private static Intent getIntentForMultiScreenShot() {
  30. Intent intent = new Intent(MULTISCREENSHOT_ACTION);
  31. intent.setClassName(MULTISCREENSHOT_PREFIX, MULTISCREENSHOT_SERVICE);
  32. return intent;
  33. }
  34. private static Intent getIntentForCustomGesture(Context context, String gestureName, Gesture gesture, double predictionScore) {
  35. Intent intent;
  36. if (checkPackageInstalled(context, PKG_QEEXO_SMARTSHOT)) {
  37. intent = new Intent(QEEXO_SCREENSHOT_REGION_INTENT);
  38. } else if (!checkPackageInstalled(context, PKG_HUAWEI_SMARTSHOT)) {
  39. return null;
  40. } else {
  41. intent = new Intent(HUAWEI_SCREENSHOT_REGION_INTENT);
  42. }
  43. intent.addFlags(268435456);
  44. intent.putExtra(EXTRA_GESTURE, gesture);
  45. intent.putExtra(EXTRA_GESTURE_NAME, gestureName);
  46. intent.putExtra(EXTRA_GESTURE_PREDICTION_SCORE, predictionScore);
  47. return intent;
  48. }
  49. public static Intent getIntentForStylusGesture(String gestureName, Gesture gesture, double predictionScore, Context context) {
  50. if (gestureName == null || gesture == null || context == null) {
  51. return null;
  52. }
  53. String gestureSuffix = gestureName.toLowerCase(Locale.ENGLISH);
  54. if (STYLUS_GESTURE_S_SUFFIX.equals(gestureSuffix)) {
  55. return getIntentForMultiScreenShot();
  56. }
  57. if (STYLUS_GESTURE_REGION_SUFFIX.equals(gestureSuffix)) {
  58. return getIntentForCustomGesture(context, gestureName, gesture, predictionScore);
  59. }
  60. return null;
  61. }
  62. public static Intent getFloatServiceIntentForStylusGesture(Gesture gesture) {
  63. Intent intent = new Intent(ACTION_FLOATSERVICE);
  64. intent.setClassName(MULTISCREENSHOT_PREFIX, MULTISCREENSHOT_FLOATSERVICE);
  65. intent.setPackage(MULTISCREENSHOT_PREFIX);
  66. if (gesture == null) {
  67. intent.putExtra(ACTION_FLOATSERVICE, "screenshot");
  68. } else {
  69. intent.putExtra(ACTION_FLOATSERVICE, "show");
  70. intent.putExtra(EXTRA_GESTURE, gesture);
  71. }
  72. return intent;
  73. }
  74. static boolean checkPackageInstalled(Context context, String packageName) {
  75. try {
  76. context.getPackageManager().getPackageInfo(packageName, 128);
  77. return true;
  78. } catch (PackageManager.NameNotFoundException e) {
  79. return false;
  80. }
  81. }
  82. }