Browse Source

mindsporeInHand 1.2.8 verson add dance

mindsporeInHand 1.2.8 verson add dance

version 1.2.8 delete some codes
pull/15887/head
hukang hwx963878 4 years ago
parent
commit
cb2fbe307c
100 changed files with 2447 additions and 1407 deletions
  1. +2
    -0
      model_zoo/official/lite/MindSpore_inhand/app/.gitignore
  2. +3
    -2
      model_zoo/official/lite/MindSpore_inhand/app/build.gradle
  3. +0
    -45
      model_zoo/official/lite/MindSpore_inhand/app/src/main/AndroidManifest.xml
  4. +10
    -7
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/college/CollegeFragment.java
  5. +4
    -6
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/experience/VisionFragment.java
  6. +1
    -1
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/guide/SplashActivity.java
  7. +5
    -5
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainActivity.java
  8. +7
    -7
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainActivityPresenter.java
  9. +2
    -2
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainContract.java
  10. +5
    -4
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/me/MeFragment.java
  11. +49
    -0
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/IconButtonStyleView.java
  12. +0
    -22
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/LeftImageRightTextButton.java
  13. +0
    -22
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/MyButton.java
  14. +0
    -80
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeBrokensideActivity.java
  15. +0
    -81
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeFAQActivity.java
  16. +0
    -81
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeForumActivity.java
  17. +0
    -81
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeOneHourActivity.java
  18. +0
    -81
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegePerformReasoningActivity.java
  19. +0
    -81
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeReferencevideoActivity.java
  20. +0
    -84
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeTrainingmodelActivity.java
  21. +0
    -80
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeCodeRepositoryActivity.java
  22. +0
    -82
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeOfficialwebsiteActivity.java
  23. +0
    -82
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeProblemFeedbackActivity.java
  24. +0
    -82
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeThumbsupActivity.java
  25. +55
    -10
      model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/WebViewUtilsActivity.java
  26. +8
    -3
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/activity_web_view_utils.xml
  27. +0
    -35
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/btn_left_iamge_right_text.xml
  28. +6
    -7
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/button_style_layout.xml
  29. +10
    -5
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/fragment_vision.xml
  30. +0
    -36
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/image_intelligent_poetry_layout.xml
  31. +2
    -2
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values-en/strings.xml
  32. +2
    -2
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values-zh/strings.xml
  33. +6
    -0
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values/attrs.xml
  34. +2
    -2
      model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values/strings.xml
  35. +9
    -0
      model_zoo/official/lite/MindSpore_inhand/common/build.gradle
  36. +16
    -13
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/adapter/BasePagerAdapter.java
  37. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/grid/MSGridSpacingItemDecoration.java
  38. +3
    -3
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseActivity.java
  39. +21
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseActivityPresenter.java
  40. +22
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseFragment.java
  41. +4
    -3
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseFragmentPresenter.java
  42. +1
    -1
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/FileDownLoadObserver.java
  43. +5
    -1
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/RetrofitHelper.java
  44. +8
    -1
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/RetrofitService.java
  45. +1
    -1
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/UpdateInfoBean.java
  46. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/sp/Preferences.java
  47. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/DisplayUtil.java
  48. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/ImageUtils.java
  49. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/StringUtils.java
  50. +2
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values-en/strings.xml
  51. +3
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values-zh/strings.xml
  52. +3
    -0
      model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values/strings.xml
  53. +1
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/.gitignore
  54. +67
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/build.gradle
  55. +21
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/proguard-rules.pro
  56. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/AndroidManifest.xml
  57. +155
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/algorithm/ModelDataBean.java
  58. +349
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/algorithm/ModelDataUtils.java
  59. +26
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/global/Constants.java
  60. +23
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/global/Variables.java
  61. +116
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/present/video/MyVideoView.java
  62. +48
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/task/GoneViewTask.java
  63. +134
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/task/SampleTask.java
  64. +206
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/util/Tools.java
  65. +24
    -20
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/DanceActivity.java
  66. +207
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/PrepareFragment.java
  67. +100
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/ResultFragment.java
  68. +230
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/RunFragment.java
  69. +30
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/mvp/PrepareContract.java
  70. +50
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/mvp/PreparePresenter.java
  71. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/begin_run_bt.png
  72. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/button_begin.png
  73. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/button_complete.png
  74. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/play_again.png
  75. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/save.png
  76. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_one.png
  77. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_three.png
  78. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_two.png
  79. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/dance_back.png
  80. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/prepare_bk.png
  81. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/result_bk.png
  82. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/run_bk.png
  83. BIN
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/thumbnail.PNG
  84. +8
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/activity_dance.xml
  85. +18
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/content_dance.xml
  86. +30
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_prepare.xml
  87. +79
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_result.xml
  88. +15
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_run.xml
  89. +10
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/menu/menu_main.xml
  90. +38
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/navigation/nav_dance.xml
  91. +16
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values-night/themes.xml
  92. +10
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/colors.xml
  93. +3
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/dimens.xml
  94. +34
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/strings.xml
  95. +30
    -0
      model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/themes.xml
  96. +0
    -207
      model_zoo/official/lite/MindSpore_inhand/hms/senceDetection
  97. +0
    -8
      model_zoo/official/lite/MindSpore_inhand/hms/src/main/AndroidManifest.xml
  98. +1
    -2
      model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/ImageSegmentation/ImageSegmentationLiveAnalyseActivity.java
  99. +1
    -21
      model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/camera/MLSegmentGraphic.java
  100. +0
    -6
      model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/textrecognition/TextRecognitionActivity.java

+ 2
- 0
model_zoo/official/lite/MindSpore_inhand/app/.gitignore View File

@@ -1,2 +1,4 @@
/build
/src/main/cpp/mindspore-lite-1.0.0-minddata-arm64-cpu/
/release/


+ 3
- 2
model_zoo/official/lite/MindSpore_inhand/app/build.gradle View File

@@ -8,8 +8,8 @@ android {
applicationId "com.mindspore.himindspore"
minSdkVersion 21
targetSdkVersion 30
versionCode 14
versionName "1.2.7"
versionCode 15
versionName "1.2.8"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
@@ -80,4 +80,5 @@ dependencies {
implementation project(':imageObject')
implementation project(':styletransfer')
implementation project(':hms')
implementation project(':dance')
}

+ 0
- 45
model_zoo/official/lite/MindSpore_inhand/app/src/main/AndroidManifest.xml View File

@@ -29,51 +29,6 @@
android:name=".ui.webview.WebViewUtilsActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeReferencevideoActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeBrokensideActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegePerformReasoningActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeTrainingmodelActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeForumActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeFAQActivity"
android:hardwareAccelerated="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.CollegeOneHourActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.MeThumbsupActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.MeOfficialwebsiteActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.MeCodeRepositoryActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.webview.MeProblemFeedbackActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".ui.me.MyQRCodeActivity"
android:screenOrientation="portrait"


+ 10
- 7
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/college/CollegeFragment.java View File

@@ -16,6 +16,7 @@
package com.mindspore.himindspore.ui.college;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
@@ -31,12 +32,14 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.alibaba.android.arouter.launcher.ARouter;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.common.sp.Preferences;
import com.mindspore.common.utils.Utils;
import com.mindspore.customview.dialog.NoticeDialog;
import com.mindspore.himindspore.R;
import com.mindspore.himindspore.ui.college.adapter.CollegeItemAdapter;
import com.mindspore.himindspore.ui.college.bean.CollegeItemBean;
import com.mindspore.himindspore.ui.webview.WebViewUtilsActivity;

import java.util.Arrays;
import java.util.List;
@@ -140,19 +143,19 @@ public class CollegeFragment extends Fragment implements CollegeItemAdapter.Coll
prefs.edit().putBoolean(Preferences.KEY_COLLEGE_CLOUD, true).apply();
collegeDataList.get(1).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_CLOUD, false));
collegeItemAdapter.notifyData();
ARouter.getInstance().build("/app/CollegeOneHourActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_MAIN_CLOUD));
break;
case 3:
prefs.edit().putBoolean(Preferences.KEY_COLLEGE_FAQ, true).apply();
collegeDataList.get(3).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_FAQ, false));
collegeItemAdapter.notifyData();
ARouter.getInstance().build("/app/CollegeFAQActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_MAIN_FAQ));
break;
case 4:
prefs.edit().putBoolean(Preferences.KEY_COLLEGE_ASK, true).apply();
collegeDataList.get(4).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_ASK, false));
collegeItemAdapter.notifyData();
ARouter.getInstance().build("/app/CollegeForumActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_MAIN_ASK));
break;
}
}
@@ -168,13 +171,13 @@ public class CollegeFragment extends Fragment implements CollegeItemAdapter.Coll
collegeDataList.get(2).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_QUICK, false));
collegeItemAdapter.notifyData();
if (position == 0) {
ARouter.getInstance().build("/app/CollegeTrainingmodelActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_QUICK_TRAIN));
} else if (position == 1) {
ARouter.getInstance().build("/app/CollegePerformReasoningActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_QUICK_EXECUTE));
} else if (position == 2) {
ARouter.getInstance().build("/app/CollegeBrokensideActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_QUICK_APP));
} else if (position == 3) {
ARouter.getInstance().build("/app/CollegeReferencevideoActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.COLLEGE_QUICK_VIDEO));
}
}
}

+ 4
- 6
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/experience/VisionFragment.java View File

@@ -68,7 +68,7 @@ public class VisionFragment extends Fragment implements View.OnClickListener {
view.findViewById(R.id.btn_style_transfer).setOnClickListener(this); //onClickStyleTransfer
view.findViewById(R.id.btn_segmentation).setOnClickListener(this); //onClickSegmentation
view.findViewById(R.id.btn_image).setOnClickListener(this); //onClickImage
view.findViewById(R.id.btn_scene).setOnClickListener(this); //onClickSceneDetection
view.findViewById(R.id.btn_dance).setOnClickListener(this); //onClickSceneDetection
view.findViewById(R.id.btn_image_Intelligent_poetry).setOnClickListener(this); //onClickIntelligentPoetry
view.findViewById(R.id.btn_text_recognition).setOnClickListener(this); //onClickTextRecognition
view.findViewById(R.id.btn_gesture).setOnClickListener(this); //onClickGestureRecognition
@@ -94,15 +94,13 @@ public class VisionFragment extends Fragment implements View.OnClickListener {
ARouter.getInstance().build("/styletransfer/StyleMainActivity").navigation();
break;
case R.id.btn_segmentation:
ARouter.getInstance().build("/hms/PortraitSegmentationActivity").navigation();
// ARouter.getInstance().build("/hms/ImageSegmentationLiveAnalyseActivity").navigation();
// ARouter.getInstance().build("/hms/ImageSegmentationActivity").navigation();
ARouter.getInstance().build("/hms/ImageSegmentationLiveAnalyseActivity").navigation();
break;
case R.id.btn_image:
ARouter.getInstance().build("/imageobject/ImageCameraActivity").navigation();
break;
case R.id.btn_scene:
ARouter.getInstance().build("/hms/SenceDetectionStillAnalyseActivity").navigation();
case R.id.btn_dance:
ARouter.getInstance().build("/dance/DanceMainActivity").navigation();
break;
case R.id.btn_image_Intelligent_poetry:
ARouter.getInstance().build("/app/IntelligentPoetryWritingActivity").navigation();


+ 1
- 1
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/guide/SplashActivity.java View File

@@ -42,7 +42,7 @@ import com.mindspore.common.sp.Preferences;
import com.mindspore.common.utils.Utils;
import com.mindspore.customview.countdown.MSCountDownView;
import com.mindspore.himindspore.R;
import com.mindspore.himindspore.base.BaseActivity;
import com.mindspore.common.base.mvp.BaseActivity;
import com.mindspore.himindspore.ui.main.MainActivity;
import com.mindspore.himindspore.ui.main.PrivacyPolicyActivity;



+ 5
- 5
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainActivity.java View File

@@ -38,17 +38,17 @@ import com.google.android.material.tabs.TabLayout;
import com.mindspore.common.base.adapter.BasePagerAdapter;
import com.mindspore.customview.dialog.UpdateDialog;
import com.mindspore.himindspore.R;
import com.mindspore.himindspore.base.BaseActivity;
import com.mindspore.common.base.mvp.BaseActivity;
import com.mindspore.himindspore.comment.FragmentFactory;
import com.mindspore.himindspore.net.FileDownLoadObserver;
import com.mindspore.himindspore.net.UpdateInfoBean;
import com.mindspore.common.net.FileDownLoadObserver;
import com.mindspore.common.net.UpdateInfoBean;
import com.mindspore.himindspore.ui.view.MSTabEntity;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends BaseActivity<MainPresenter> implements MainContract.View {
public class MainActivity extends BaseActivity<MainActivityPresenter> implements MainContract.View {
private static final String TAG = "MainActivity";

private ViewPager mVpHome;
@@ -61,7 +61,7 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon

@Override
protected void init() {
presenter = new MainPresenter(this);
presenter = new MainActivityPresenter(this);
mVpHome = findViewById(R.id.vp_home);
mTabLayout = findViewById(R.id.tab_layout);
showPackaeInfo();


model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainPresenter.java → model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainActivityPresenter.java View File

@@ -18,13 +18,13 @@ package com.mindspore.himindspore.ui.main;
import android.content.res.TypedArray;
import android.util.Log;

import com.mindspore.common.base.mvp.BaseActivityPresenter;
import com.mindspore.common.utils.Utils;
import com.mindspore.himindspore.R;
import com.mindspore.himindspore.base.BasePresenter;
import com.mindspore.himindspore.bean.TabEntity;
import com.mindspore.himindspore.net.FileDownLoadObserver;
import com.mindspore.himindspore.net.RetrofitHelper;
import com.mindspore.himindspore.net.UpdateInfoBean;
import com.mindspore.common.net.FileDownLoadObserver;
import com.mindspore.common.net.RetrofitHelper;
import com.mindspore.common.net.UpdateInfoBean;
import com.mindspore.himindspore.ui.view.MSTabEntity;

import java.io.File;
@@ -37,14 +37,14 @@ import retrofit2.Callback;
import retrofit2.Response;


public class MainPresenter extends BasePresenter<MainActivity> implements MainContract.Presenter {
public class MainActivityPresenter extends BaseActivityPresenter<MainActivity> implements MainContract.Presenter {

private static final String TAG = "MainPresenter";
private static final String TAG = "MainActivityPresenter";

private MainContract.View mView;
private RetrofitHelper retrofitHelper;

public MainPresenter(MainContract.View androidView) {
public MainActivityPresenter(MainContract.View androidView) {
this.mView = androidView;
retrofitHelper = new RetrofitHelper();
}

+ 2
- 2
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/main/MainContract.java View File

@@ -15,8 +15,8 @@
*/
package com.mindspore.himindspore.ui.main;

import com.mindspore.himindspore.net.FileDownLoadObserver;
import com.mindspore.himindspore.net.UpdateInfoBean;
import com.mindspore.common.net.FileDownLoadObserver;
import com.mindspore.common.net.UpdateInfoBean;
import com.mindspore.himindspore.ui.view.MSTabEntity;

import java.io.File;


+ 5
- 4
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/me/MeFragment.java View File

@@ -31,6 +31,7 @@ import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;
import com.mindspore.himindspore.ui.webview.WebViewUtilsActivity;

public class MeFragment extends Fragment implements View.OnClickListener {

@@ -88,16 +89,16 @@ public class MeFragment extends Fragment implements View.OnClickListener {
onClickShare();
break;
case R.id.rl_me_thumbsup:
ARouter.getInstance().build("/app/MeThumbsupActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.ME_STAR_URL));
break;
case R.id.rl_me_official:
ARouter.getInstance().build("/app/MeOfficialwebsiteActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.BASE_URL));
break;
case R.id.rl_me_official_code:
ARouter.getInstance().build("/app/MeCodeRepositoryActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.ME_CODE_URL));
break;
case R.id.rl_me_qa:
ARouter.getInstance().build("/app/MeProblemFeedbackActivity").navigation();
startActivity(new Intent(getActivity(), WebViewUtilsActivity.class).putExtra("WebView", MSLinkUtils.ME_HELP_URL));
break;
case R.id.me_user_protocol:
ARouter.getInstance().build("/app/PrivacyPolicyActivity").navigation();


+ 49
- 0
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/IconButtonStyleView.java View File

@@ -0,0 +1,49 @@
package com.mindspore.himindspore.ui.view;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.mindspore.himindspore.R;

public class IconButtonStyleView extends RelativeLayout {

private RelativeLayout mBtnView;
private ImageView mBtnImage;
private TextView mBtnTextName, mBtnTextAngle;
private CharSequence text_name, text_angle;
private Drawable btn_icon;

public IconButtonStyleView(Context context) {
super(context);
}

public IconButtonStyleView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray btnStyle = context.obtainStyledAttributes(attrs, R.styleable.iconButtonStyle);
btn_icon = btnStyle.getDrawable(R.styleable.iconButtonStyle_buttonImage);
text_name = btnStyle.getText(R.styleable.iconButtonStyle_buttonTextName);
text_angle = btnStyle.getText(R.styleable.iconButtonStyle_buttonTextAngle);

btnStyle.recycle();
}

@Override
protected void onFinishInflate() {
super.onFinishInflate();
mBtnView = (RelativeLayout) LayoutInflater.from(getContext()).inflate(R.layout.button_style_layout, this, true);

mBtnImage = mBtnView.findViewById(R.id.btnImage);
mBtnTextName = mBtnView.findViewById(R.id.textName);
mBtnTextAngle = mBtnView.findViewById(R.id.textAngle);

mBtnImage.setImageDrawable(btn_icon);
mBtnTextName.setText(text_name);
mBtnTextAngle.setText(text_angle);
}
}

+ 0
- 22
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/LeftImageRightTextButton.java View File

@@ -1,22 +0,0 @@
package com.mindspore.himindspore.ui.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;

import com.mindspore.himindspore.R;

public class LeftImageRightTextButton extends RelativeLayout {

public LeftImageRightTextButton(Context context)
{
super(context, null);
}

public LeftImageRightTextButton(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.btn_left_iamge_right_text, this,true);
}
}

+ 0
- 22
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/view/MyButton.java View File

@@ -1,22 +0,0 @@
package com.mindspore.himindspore.ui.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;

import com.mindspore.himindspore.R;

public class MyButton extends RelativeLayout {

public MyButton(Context context)
{
super(context, null);
}

public MyButton(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.my_button, this,true);
}
}

+ 0
- 80
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeBrokensideActivity.java View File

@@ -1,80 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;


@Route(path = "/app/CollegeBrokensideActivity")
public class CollegeBrokensideActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_brokenside);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.brokenside_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setJavaScriptEnabled(true);
wSet.setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_QUICK_APP);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 81
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeFAQActivity.java View File

@@ -1,81 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegeFAQActivity")
public class CollegeFAQActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_f_a_q);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.CollegeFAQActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_MAIN_FAQ);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 81
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeForumActivity.java View File

@@ -1,81 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegeForumActivity")
public class CollegeForumActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_forum);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.CollegeForumActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_MAIN_ASK);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 81
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeOneHourActivity.java View File

@@ -1,81 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegeOneHourActivity")
public class CollegeOneHourActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_one_hour);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.OneHour_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_MAIN_CLOUD);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 81
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegePerformReasoningActivity.java View File

@@ -1,81 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegePerformReasoningActivity")
public class CollegePerformReasoningActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_perform_reasoning);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.perform_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {


if(newProgress==100){
progressBar.setVisibility(View.GONE);
}
else{
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_QUICK_EXECUTE);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 81
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeReferencevideoActivity.java View File

@@ -1,81 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegeReferencevideoActivity")
public class CollegeReferencevideoActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_referencevideo);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.referencevideo_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_QUICK_VIDEO);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 84
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/CollegeTrainingmodelActivity.java View File

@@ -1,84 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/CollegeTrainingmodelActivity")
public class CollegeTrainingmodelActivity extends AppCompatActivity {
private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_trainingmodel);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.Trainingmodel_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptThirdPartyCookies(mWebView, true);
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
mWebView.loadUrl(MSLinkUtils.COLLEGE_QUICK_TRAIN);

}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 80
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeCodeRepositoryActivity.java View File

@@ -1,80 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/MeCodeRepositoryActivity")
public class MeCodeRepositoryActivity extends AppCompatActivity {

private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me_code_repository);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.MeCodeRepositoryActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setJavaScriptEnabled(true);
wSet.setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.ME_CODE_URL);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 82
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeOfficialwebsiteActivity.java View File

@@ -1,82 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/MeOfficialwebsiteActivity")
public class MeOfficialwebsiteActivity extends AppCompatActivity {

private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me_officialwebsite);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.MeOfficialwebsiteActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setJavaScriptEnabled(true);
wSet.setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.BASE_URL);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 82
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeProblemFeedbackActivity.java View File

@@ -1,82 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/MeProblemFeedbackActivity")
public class MeProblemFeedbackActivity extends AppCompatActivity {

private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me_problem_feedback);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.MeProblemFeedbackActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setJavaScriptEnabled(true);
wSet.setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.ME_HELP_URL);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 0
- 82
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/MeThumbsupActivity.java View File

@@ -1,82 +0,0 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.ui.webview;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

@Route(path = "/app/MeThumbsupActivity")
public class MeThumbsupActivity extends AppCompatActivity {

private WebView mWebView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_me_thumbsup);
initView();
}

private void initView() {
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.MeThumbsupActivity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setJavaScriptEnabled(true);
wSet.setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {


if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}

}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
mWebView.loadUrl(MSLinkUtils.ME_STAR_URL);
}

@Override
protected void onDestroy() {
super.onDestroy();
mWebView.removeAllViews();
mWebView.destroy();
}
}

+ 55
- 10
model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/ui/webview/WebViewUtilsActivity.java View File

@@ -27,40 +27,39 @@ import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.mindspore.common.config.MSLinkUtils;
import com.mindspore.himindspore.R;

public class WebViewUtilsActivity extends AppCompatActivity {

private WebView mWebView;
private ProgressBar progressBar;
private final String mWebViewUtil = "";
private Toolbar mToolbar;
private String mWebViewUrl;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view_utils);
mWebViewUrl = getIntent().getStringExtra("WebView");
initView();
}

private void initView() {
String mMeThumbsup = getIntent().getStringExtra("MeThumbsup");
String mMeOfficial = getIntent().getStringExtra("MeOfficial");
String mMeCodeRepository = getIntent().getStringExtra("MeCodeRepository");
String mMeProblemFeedback = getIntent().getStringExtra("MeProblemFeedback");
progressBar = findViewById(R.id.progress);
Toolbar mToolbar = findViewById(R.id.OneHour_toolbar);
mToolbar = findViewById(R.id.mWebView_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
mWebView = findViewById(R.id.mWebView);
mWebView.setWebViewClient(new WebViewClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress==100){

if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
}
else{
} else {
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(newProgress);
}
@@ -69,6 +68,52 @@ public class WebViewUtilsActivity extends AppCompatActivity {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
showWebViewTitle(mWebViewUrl);
mWebView.loadUrl(mWebViewUrl);
}

private void showWebViewTitle(String mWebViewUrl) {
switch (mWebViewUrl) {
case MSLinkUtils.ME_STAR_URL:
mToolbar.setTitle(R.string.me_up_title);
break;
case MSLinkUtils.BASE_URL:
mToolbar.setTitle(R.string.me_official_title);
break;
case MSLinkUtils.ME_CODE_URL:
mToolbar.setTitle(R.string.me_official_code_title);
break;
case MSLinkUtils.ME_HELP_URL:
mToolbar.setTitle(R.string.me_qa_title);
break;
case MSLinkUtils.COLLEGE_QUICK_APP:
mToolbar.setTitle(R.string.title_college_broken_side);
break;
case MSLinkUtils.COLLEGE_MAIN_FAQ:
mToolbar.setTitle(R.string.title_college_faq);
break;
case MSLinkUtils.COLLEGE_MAIN_ASK:
mToolbar.setTitle(R.string.title_college_forum);
break;
case MSLinkUtils.COLLEGE_MAIN_CLOUD:
mToolbar.setTitle(R.string.title_college_one_hour);
break;
case MSLinkUtils.COLLEGE_QUICK_EXECUTE:
mToolbar.setTitle(R.string.title_college_perform);
break;
case MSLinkUtils.COLLEGE_QUICK_VIDEO:
mToolbar.setTitle(R.string.title_college_video);
break;
case MSLinkUtils.COLLEGE_QUICK_TRAIN:
mToolbar.setTitle(R.string.title_college_training);
break;
case MSLinkUtils.USER_PRIVACY_RULES:
mToolbar.setTitle(R.string.me_user_agreements);
break;
default:
mToolbar.setTitle(R.string.me_official_title);
break;
}
}

@Override


+ 8
- 3
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/activity_web_view_utils.xml View File

@@ -9,7 +9,7 @@
tools:context=".ui.webview.WebViewUtilsActivity">

<androidx.appcompat.widget.Toolbar
android:id="@+id/OneHour_toolbar"
android:id="@+id/mWebView_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white"
@@ -19,14 +19,19 @@
app:navigationIcon="@drawable/icon_back"
app:titleTextColor="@color/black" />

<View
android:id="@+id/w_view"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider_gray" />

<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="3dip"
android:progressDrawable="@drawable/progressbar"
android:visibility="gone"
/>
android:visibility="gone" />

<WebView
android:id="@+id/mWebView"


+ 0
- 35
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/btn_left_iamge_right_text.xml View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:src="@drawable/btn_intelligent_poetry" />

<TextView
android:id="@+id/text_poetry"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/btn"
android:gravity="center_vertical"
android:text="@string/title_intelligent_poetry"
android:textColor="@color/text_black"
android:textSize="12sp" />

<TextView
android:id="@+id/text_new"
android:layout_width="18dp"
android:layout_height="36dp"
android:layout_marginLeft="3dp"
android:layout_toRightOf="@id/text_poetry"
android:gravity="center_vertical"
android:text="@string/title_intelligent_poetry_new"
android:textColor="@color/text_red"
android:textSize="7sp"
android:textStyle="italic" />

</RelativeLayout>

model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/my_button.xml → model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/button_style_layout.xml View File

@@ -4,30 +4,29 @@
android:layout_height="match_parent">

<ImageView
android:id="@+id/btn"
android:id="@+id/btnImage"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:src="@drawable/btn_intelligent_poetry" />

<TextView
android:id="@+id/text_poetry"
android:id="@+id/textName"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@id/btn"
android:layout_toRightOf="@id/btnImage"
android:gravity="center_vertical"
android:text="@string/title_intelligent_poetry"
android:textColor="@color/text_black"
android:textSize="12sp" />

<TextView
android:id="@+id/text_new"
android:id="@+id/textAngle"
android:layout_width="18dp"
android:layout_height="36dp"
android:layout_marginLeft="3dp"
android:layout_toRightOf="@id/text_poetry"
android:layout_toRightOf="@id/textName"
android:gravity="center_vertical"
android:text="@string/title_intelligent_poetry_new"
android:text="@string/title_button_text_angle"
android:textColor="@color/text_red"
android:textSize="7sp"
android:textStyle="italic" />

+ 10
- 5
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/fragment_vision.xml View File

@@ -163,8 +163,8 @@
app:layout_constraintWidth_percent="0.44" />


<Button
android:id="@+id/btn_scene"
<com.mindspore.himindspore.ui.view.IconButtonStyleView
android:id="@+id/btn_dance"
android:layout_width="0dp"
android:layout_height="50dp"
android:background="@drawable/btn_vision_item"
@@ -172,11 +172,13 @@
android:gravity="left|center_vertical"
android:maxLines="1"
android:paddingStart="4dp"
android:text="@string/title_scene"
android:text="@string/title_dance"
android:textAllCaps="false"
android:textColor="@color/text_black"
android:textSize="12sp"
app:drawableStartCompat="@drawable/btn_scene"
app:buttonImage="@drawable/btn_scene"
app:buttonTextName="@string/title_dance"
app:buttonTextAngle="@string/title_button_text_angle"
app:layout_constraintBottom_toBottomOf="@+id/btn_gesture"
app:layout_constraintEnd_toEndOf="@+id/btn_image"
app:layout_constraintWidth_percent="0.44" />
@@ -232,7 +234,7 @@
app:layout_constraintWidth_percent="0.44" />


<com.mindspore.himindspore.ui.view.MyButton
<com.mindspore.himindspore.ui.view.IconButtonStyleView
android:id="@+id/btn_image_Intelligent_poetry"
android:layout_width="0dp"
android:layout_height="50dp"
@@ -244,6 +246,9 @@
android:textAllCaps="false"
android:textColor="@color/text_black"
android:textSize="12sp"
app:buttonImage="@drawable/btn_intelligent_poetry"
app:buttonTextName="@string/title_intelligent_poetry"
app:buttonTextAngle="@string/title_button_text_angle"
app:layout_constraintStart_toStartOf="@+id/title_vertical_line_two"
app:layout_constraintTop_toBottomOf="@+id/title_vertical_line_two"
app:layout_constraintWidth_percent="0.44" />


+ 0
- 36
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/layout/image_intelligent_poetry_layout.xml View File

@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
android:id="@+id/image_intelligent_poter"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/btn_intelligent_poetry"
/>

<TextView
android:id="@+id/text_poetry"
android:layout_toRightOf="@id/image_intelligent_poter"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:text="@string/title_intelligent_poetry"
android:textSize="12sp"
android:textColor="@color/text_black"
/>
<TextView
android:layout_toRightOf="@id/text_poetry"
android:id="@+id/text_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="7sp"
android:textColor="@color/text_red"
android:text="@string/title_intelligent_poetry_new"
android:textStyle="italic"
/>


</RelativeLayout>

+ 2
- 2
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values-en/strings.xml View File

@@ -16,7 +16,7 @@
<string name="title_image">Image Classification</string>
<string name="title_image_garbage">Garbage Classification</string>
<string name="title_intelligent_poetry">Intelligent poetry</string>
<string name="title_intelligent_poetry_new">NEW</string>
<string name="title_button_text_angle">HOT</string>
<string name="title_object">Object Detection(Photo)</string>
<string name="title_object_camera">Object Detection(Real-time)</string>
<string name="title_pose_net">PoseNet</string>
@@ -30,7 +30,7 @@
<string name="title_college_broken_side">Broken side application</string>
<string name="title_college_video">Reference video</string>
<string name="title_source">Code</string>
<string name="title_scene">Scene Detection</string>
<string name="title_dance">Dance Factory</string>
<string name="title_help">FeedBack</string>
<string name="title_star">Star</string>
<string name="title_version">"Version: "</string>


+ 2
- 2
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values-zh/strings.xml View File

@@ -16,14 +16,14 @@
<string name="title_image">图像分类</string>
<string name="title_image_garbage">垃圾分类</string>
<string name="title_intelligent_poetry">智能写诗</string>
<string name="title_intelligent_poetry_new">NEW</string>
<string name="title_button_text_angle">HOT</string>
<string name="title_object">对象检测(图片)</string>
<string name="title_object_camera">对象检测(实时)</string>
<string name="title_pose_net"> 骨骼检测</string>
<string name="title_style_transfer">风格迁移</string>
<string name="title_segmentation">人像分割</string>
<string name="title_source">代码</string>
<string name="title_scene">场景检测</string>
<string name="title_dance">舞蹈梦工厂</string>
<string name="title_help">反馈</string>
<string name="title_star">打星</string>
<string name="title_version">版本号: </string>


+ 6
- 0
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values/attrs.xml View File

@@ -3,4 +3,10 @@
<attr name="fullscreenBackgroundColor" format="color" />
<attr name="fullscreenTextColor" format="color" />
</declare-styleable>

<declare-styleable name="iconButtonStyle">
<attr name="buttonImage" format="reference"/>
<attr name="buttonTextName" format="reference"/>
<attr name="buttonTextAngle" format="reference"/>
</declare-styleable>
</resources>

+ 2
- 2
model_zoo/official/lite/MindSpore_inhand/app/src/main/res/values/strings.xml View File

@@ -15,7 +15,7 @@
<string name="title_image">Image Classification</string>
<string name="title_image_garbage">Garbage Classification</string>
<string name="title_intelligent_poetry">Intelligent poetry</string>
<string name="title_intelligent_poetry_new">NEW</string>
<string name="title_button_text_angle">HOT</string>
<string name="title_object">Object Detection(Photo)</string>
<string name="title_object_camera">Object Detection(Real-time)</string>
<string name="title_pose_net">PoseNet</string>
@@ -29,7 +29,7 @@
<string name="title_college_broken_side">端侧应用</string>
<string name="title_college_video">参考视频</string>
<string name="title_source">Code</string>
<string name="title_scene">Scene Detection</string>
<string name="title_dance">Dance Factory</string>
<string name="title_help">FeedBack</string>
<string name="title_star">Star</string>
<string name="title_version">Version: </string>


+ 9
- 0
model_zoo/official/lite/MindSpore_inhand/common/build.gradle View File

@@ -34,4 +34,13 @@ dependencies {
implementation 'com.google.android.material:material:1.2.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

implementation 'io.reactivex.rxjava2:rxjava:2.2.20'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
implementation 'org.greenrobot:eventbus:3.2.0'
}

+ 16
- 13
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/adapter/BasePagerAdapter.java View File

@@ -1,6 +1,20 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.base.adapter;


import android.view.ViewGroup;

import androidx.fragment.app.Fragment;
@@ -9,24 +23,17 @@ import androidx.fragment.app.FragmentPagerAdapter;

import java.util.List;



public class BasePagerAdapter extends FragmentPagerAdapter {

private List<?> mFragment;
private List<String> mTitleList;

/**
* 普通,主页使用
*/

public BasePagerAdapter(FragmentManager fm, List<?> mFragment) {
super(fm);
this.mFragment = mFragment;
}

/**
* 接收首页传递的标题
*/
public BasePagerAdapter(FragmentManager fm, List<?> mFragment, List<String> mTitleList) {
super(fm);
this.mFragment = mFragment;
@@ -48,10 +55,6 @@ public class BasePagerAdapter extends FragmentPagerAdapter {
super.destroyItem(container, position, object);
}

/**
* 首页显示title,每日推荐等..
* 若有问题,移到对应单独页面
*/
@Override
public CharSequence getPageTitle(int position) {
if (mTitleList != null) {


+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/grid/MSGridSpacingItemDecoration.java View File

@@ -1,3 +1,18 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.base.grid;

import android.graphics.Rect;


model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/base/BaseActivity.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseActivity.java View File

@@ -1,5 +1,5 @@
/**
* Copyright 2020 Huawei Technologies Co., Ltd
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,13 +13,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.base;
package com.mindspore.common.base.mvp;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public abstract class BaseActivity<T extends BasePresenter> extends AppCompatActivity {
public abstract class BaseActivity<T extends BaseActivityPresenter> extends AppCompatActivity {

protected T presenter;


+ 21
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseActivityPresenter.java View File

@@ -0,0 +1,21 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.base.mvp;

public abstract class BaseActivityPresenter<T extends BaseActivity> {

protected T view;
}

+ 22
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseFragment.java View File

@@ -0,0 +1,22 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.base.mvp;

import androidx.fragment.app.Fragment;

public class BaseFragment<T extends BaseFragmentPresenter> extends Fragment {
protected T presenter;
}

model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/base/BasePresenter.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/base/mvp/BaseFragmentPresenter.java View File

@@ -1,5 +1,5 @@
/**
* Copyright 2020 Huawei Technologies Co., Ltd
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,8 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.base;
package com.mindspore.common.base.mvp;

public class BaseFragmentPresenter <T extends BaseFragment>{

public abstract class BasePresenter<T extends BaseActivity> {
protected T view;
}

model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/net/FileDownLoadObserver.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/FileDownLoadObserver.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.net;
package com.mindspore.common.net;

import java.io.File;
import java.io.FileOutputStream;

model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/net/RetrofitHelper.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/RetrofitHelper.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.net;
package com.mindspore.common.net;

import java.util.concurrent.TimeUnit;

@@ -57,4 +57,8 @@ public class RetrofitHelper {
return retrofitService.downloadApk();
}

public Observable<ResponseBody> downloadDanceVideo() {
return retrofitService.downloadDanceVideo();
}

}

model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/net/RetrofitService.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/RetrofitService.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.net;
package com.mindspore.common.net;

import io.reactivex.Observable;
import okhttp3.ResponseBody;
@@ -29,4 +29,11 @@ public interface RetrofitService {
@Streaming
@GET("MindSpore_inhand.apk")
Observable<ResponseBody> downloadApk();

@Streaming
@GET("danceFactory/dance_factory_demo2.mp4")
Observable<ResponseBody> downloadDanceVideo();

}



model_zoo/official/lite/MindSpore_inhand/app/src/main/java/com/mindspore/himindspore/net/UpdateInfoBean.java → model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/net/UpdateInfoBean.java View File

@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.himindspore.net;
package com.mindspore.common.net;

public class UpdateInfoBean {


+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/sp/Preferences.java View File

@@ -1,3 +1,18 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.sp;

public final class Preferences {


+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/DisplayUtil.java View File

@@ -1,3 +1,18 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.utils;

import android.content.Context;


+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/ImageUtils.java View File

@@ -1,3 +1,18 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.utils;

import android.content.Context;


+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/java/com/mindspore/common/utils/StringUtils.java View File

@@ -1,3 +1,18 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.common.utils;

import java.util.regex.Matcher;


+ 2
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values-en/strings.xml View File

@@ -17,4 +17,6 @@
<string name="image_camera_title">Image Classification</string>
<string name="object_camery_title">Camera Detection</string>
<string name="activity_photo_title">Photo Detection</string>
<string name="image_save_success">Save Success</string>
<string name="image_save_failed">Save Failed</string>
</resources>

+ 3
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values-zh/strings.xml View File

@@ -17,4 +17,7 @@
<string name="object_camery_title">视频检测</string>
<string name="activity_photo_title">照片检测</string>
<string name="segmentation_toolbar_title">人像分割</string>
<string name="image_save_success">保存成功</string>
<string name="image_save_failed">保存失败</string>

</resources>

+ 3
- 0
model_zoo/official/lite/MindSpore_inhand/common/src/main/res/values/strings.xml View File

@@ -19,5 +19,8 @@
<string name="posenet_activity_title">骨骼检测</string>
<string name="style_transfer_title">风格迁移</string>
<string name="segmentation_toolbar_title">人像分割</string>
<string name="image_save_success">保存成功</string>
<string name="image_save_failed">保存失败</string>


</resources>

+ 1
- 0
model_zoo/official/lite/MindSpore_inhand/dance/.gitignore View File

@@ -0,0 +1 @@
/build

+ 67
- 0
model_zoo/official/lite/MindSpore_inhand/dance/build.gradle View File

@@ -0,0 +1,67 @@
plugins {
id 'com.android.library'
}

android {
compileSdkVersion 30
buildToolsVersion "30.0.1"

defaultConfig {
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {

implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.navigation:navigation-fragment:2.2.2'
implementation 'androidx.navigation:navigation-ui:2.2.2'
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha05"

implementation 'com.alibaba:arouter-api:1.5.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'
implementation project(path: ':common')

def camerax_version = "1.0.0-rc03"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
implementation "androidx.camera:camera-view:1.0.0-alpha22"
implementation "androidx.camera:camera-extensions:1.0.0-alpha22"
implementation 'androidx.core:core:1.5.0-alpha05'
implementation 'com.huawei.hms:ml-computer-vision-skeleton:2.0.4.300'
implementation 'com.huawei.hms:ml-computer-vision-skeleton-model:2.0.4.300'
implementation 'com.huawei.hms:ml-computer-vision-yoga-model:2.0.4.300'

implementation 'io.reactivex.rxjava2:rxjava:2.2.20'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
implementation 'org.greenrobot:eventbus:3.2.0'
}

+ 21
- 0
model_zoo/official/lite/MindSpore_inhand/dance/proguard-rules.pro View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/AndroidManifest.xml View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mindspore.dance">

<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<activity
android:name=".view.DanceActivity"
android:label="@string/dance"
android:screenOrientation="landscape"
android:theme="@style/Theme.MyApplication.NoActionBar" />
</application>
</manifest>

+ 155
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/algorithm/ModelDataBean.java View File

@@ -0,0 +1,155 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.algorithm;

public class ModelDataBean {
// RightElbow cos, RightWrist cos, LeftElbow cos, LeftWrist cos, LeftKnee cos, LeftAnkle cos
private int id;
private double sinRightElbow;
private double sinRightWrist;
private double sinLeftElbow;
private double sinLeftWrist;
private double sinLeftKnee;
private double sinLeftAnkle;

private int rightElbowXY;
private int rightWristXY;
private int leftElbowXY;
private int leftWristXY;
private int leftKneeXY;
private int leftAnkleXY;

public int getRightElbowXY() {
return rightElbowXY;
}

public ModelDataBean setRightElbowXY(int rightElbowXY) {
this.rightElbowXY = rightElbowXY;
return this;
}

public int getRightWristXY() {
return rightWristXY;
}

public ModelDataBean setRightWristXY(int rightWristXY) {
this.rightWristXY = rightWristXY;
return this;
}

public int getLeftElbowXY() {
return leftElbowXY;
}

public ModelDataBean setLeftElbowXY(int leftElbowXY) {
this.leftElbowXY = leftElbowXY;
return this;
}

public int getLeftWristXY() {
return leftWristXY;
}

public ModelDataBean setLeftWristXY(int leftWristXY) {
this.leftWristXY = leftWristXY;
return this;
}

public int getLeftKneeXY() {
return leftKneeXY;
}

public ModelDataBean setLeftKneeXY(int leftKneeXY) {
this.leftKneeXY = leftKneeXY;
return this;
}

public int getLeftAnkleXY() {
return leftAnkleXY;
}

public ModelDataBean setLeftAnkleXY(int leftAnkleXY) {
this.leftAnkleXY = leftAnkleXY;
return this;
}

public ModelDataBean() {
}

public double getSinRightElbow() {
return sinRightElbow;
}

public ModelDataBean setSinRightElbow(double sinRightElbow) {
this.sinRightElbow = sinRightElbow;
return this;
}

public double getSinRightWrist() {
return sinRightWrist;
}

public ModelDataBean setSinRightWrist(double sinRightWrist) {
this.sinRightWrist = sinRightWrist;
return this;
}

public double getSinLeftElbow() {
return sinLeftElbow;
}

public ModelDataBean setSinLeftElbow(double sinLeftElbow) {
this.sinLeftElbow = sinLeftElbow;
return this;
}

public double getSinLeftWrist() {
return sinLeftWrist;
}

public ModelDataBean setSinLeftWrist(double sinLeftWrist) {
this.sinLeftWrist = sinLeftWrist;
return this;
}

public double getSinLeftKnee() {
return sinLeftKnee;
}

public ModelDataBean setSinLeftKnee(double sinLeftKnee) {
this.sinLeftKnee = sinLeftKnee;
return this;
}

public double getSinLeftAnkle() {
return sinLeftAnkle;
}

public ModelDataBean setSinLeftAnkle(double sinLeftAnkle) {
this.sinLeftAnkle = sinLeftAnkle;
return this;
}

public int getId() {
return id;
}

public ModelDataBean setId(int id) {
this.id = id;
return this;
}
}

+ 349
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/algorithm/ModelDataUtils.java View File

@@ -0,0 +1,349 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.algorithm;

import android.util.Log;

import com.huawei.hms.mlsdk.skeleton.MLSkeleton;

import java.util.ArrayList;
import java.util.List;

import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_LEFT_ANKLE;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_LEFT_ELBOW;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_LEFT_KNEE;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_LEFT_WRIST;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_NECK;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_RIGHT_ELBOW;
import static com.huawei.hms.mlsdk.skeleton.MLJoint.TYPE_RIGHT_WRIST;

public class ModelDataUtils {
public static final int NO_POINT = -2;
public static final int NO_ACT = -1;

private static final String TAG = ModelDataUtils.class.getSimpleName();
private static final double[] MODEL_DATA_ARRAY = new double[]{
1, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
2, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
3, -0.447213595, -0.447213595, 0.5, -0.447213595, -0.948683298, -0.707106781,
4, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
5, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
6, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
7, -0.447213595, -0.447213595, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
8, -0.447213595, -0.447213595, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
9, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
10, -0.447213595, -0.707106781, 0.5, 0.5, -0.948683298, -0.707106781,
11, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
12, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
13, -0.707106781, -0.707106781, 0.5, -1, -1, -0.948683298,
14, -0.707106781, -0.707106781, 0.5, -0.707106781, -1, -0.948683298,
15, -0.707106781, -0.447213595, 0.5, -1, -1, -0.948683298,
16, -0.707106781, -0.447213595, 0.5, -0.707106781, -1, -0.948683298,
17, -0.707106781, -0.447213595, 0.5, -0.707106781, -1, -0.948683298,
18, -0.447213595, -0.447213595, -0.707106781, -0.707106781, -0.948683298, -0.707106781,
19, -0.707106781, -0.707106781, -0.894427191, -1, -0.948683298, -0.832050294,
20, -0.447213595, -0.707106781, -0.707106781, -0.447213595, -0.948683298, -0.948683298,
21, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
22, -0.316227766, -0.316227766, -0.371390676, -0.447213595, -0.948683298, -0.6,
23, -0.447213595, -0.447213595, -0.196116135, -0.447213595, -0.948683298, -0.948683298,
24, -0.447213595, -0.707106781, -0.316227766, -1, -1, -0.832050294,
25, -0.447213595, -0.707106781, -0.316227766, -1, -1, -0.832050294,
26, -1, -1, -1, 0.5, -0.948683298, -0.948683298,
27, -1, -1, -1, -0.894427191, -0.948683298, -0.948683298,
28, -0.447213595, -0.447213595, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
29, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
30, -0.447213595, 0.624695048, -0.196116135, 0.9701425, -0.948683298, -0.707106781,
31, -0.447213595, 0.514495755, -0.196116135, 0.948683298, -0.948683298, -0.707106781,
32, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
33, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
34, -0.447213595, -0.707106781, -0.196116135, -0.316227766, -0.948683298, -0.707106781,
35, -0.447213595, 0.554700196, -0.196116135, 0.948683298, -0.948683298, -0.707106781,
36, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.948683298,
37, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
38, -0.447213595, -0.316227766, -0.196116135, -0.316227766, -0.948683298, -0.707106781,
39, -0.447213595, -0.554700196, -0.196116135, -0.316227766, -0.948683298, -0.707106781,
40, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
41, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
42, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
43, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
44, -0.447213595, -0.447213595, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
45, -0.447213595, -0.707106781, -0.196116135, -0.554700196, -0.948683298, -0.707106781,
46, -0.447213595, -0.447213595, -0.196116135, -0.894427191, -0.948683298, -0.707106781,
47, -0.447213595, -0.554700196, -0.196116135, -0.894427191, -0.948683298, -0.707106781,
48, -0.707106781, -0.447213595, -0.447213595, -0.707106781, -0.948683298, -0.894427191,
49, -0.447213595, -0.447213595, -0.447213595, -0.707106781, -0.948683298, -0.948683298,
50, -0.447213595, -0.447213595, -0.447213595, -0.707106781, -0.948683298, -0.948683298,
51, -0.447213595, -0.707106781, -0.447213595, -0.707106781, -0.948683298, -0.948683298,
52, -0.447213595, -0.447213595, -0.447213595, -0.894427191, -0.948683298, -1,
53, -0.447213595, -0.447213595, 0.707106781, -0.447213595, -0.948683298, -0.707106781,
54, -0.707106781, -0.707106781, 0.5, -0.707106781, -0.948683298, -0.832050294,
55, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
56, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
57, -0.316227766, -0.447213595, -0.316227766, -0.316227766, -0.948683298, -0.6,
58, -0.316227766, -0.447213595, -0.316227766, -0.316227766, -0.948683298, -0.707106781,
59, -0.447213595, -0.707106781, -0.242535625, -0.707106781, -0.948683298, -0.707106781,
60, -0.447213595, -0.707106781, -0.242535625, -0.707106781, -0.948683298, -0.707106781,
61, -0.447213595, -0.707106781, -0.242535625, -0.707106781, -0.948683298, -0.832050294,
62, -0.447213595, -0.707106781, -0.242535625, -0.894427191, -0.948683298, -0.832050294,
63, -0.447213595, -0.707106781, -0.242535625, -0.894427191, -0.948683298, -0.707106781,
64, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
65, -0.447213595, -0.447213595, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
66, -0.316227766, -0.316227766, -0.371390676, -0.447213595, -0.948683298, -0.6,
67, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
68, -0.447213595, -0.707106781, -0.196116135, -0.707106781, -0.948683298, -0.707106781,
69, -0.447213595, -0.707106781, -0.196116135, -0.447213595, -0.948683298, -0.707106781,
70, -0.447213595, -0.447213595, -0.196116135, -0.707106781, -0.948683298, -0.707106781};

private static final float NO_POINT_SCALE = 0.4f;
private static final float NO_ACT_SCALE = 0.4f;

public static List<ModelDataBean> getModelDataList() {
List<ModelDataBean> modelDataBeanList = new ArrayList<>();
for (int i = 0; i < MODEL_DATA_ARRAY.length; i += 7) {
if (i % 7 == 0) {
ModelDataBean bean = new ModelDataBean();
bean.setId((int) MODEL_DATA_ARRAY[i]);
bean.setSinRightElbow(MODEL_DATA_ARRAY[i + 1]);
bean.setSinRightWrist(MODEL_DATA_ARRAY[i + 2]);
bean.setSinLeftElbow(MODEL_DATA_ARRAY[i + 3]);
bean.setSinLeftWrist(MODEL_DATA_ARRAY[i + 4]);
bean.setSinLeftKnee(MODEL_DATA_ARRAY[i + 5]);
bean.setSinLeftAnkle(MODEL_DATA_ARRAY[i + 6]);
modelDataBeanList.add(bean);
}
}
return modelDataBeanList;
}

public static ModelDataBean hmsData2ModelData(MLSkeleton mlSkeleton) {

ModelDataBean bean = new ModelDataBean();

float rightElbowA = mlSkeleton.getJointPoint(TYPE_RIGHT_ELBOW).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float rightElbowB = mlSkeleton.getJointPoint(TYPE_RIGHT_ELBOW).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float rightElbowC = (float) Math.sqrt(Math.pow(rightElbowA, 2) + Math.pow(rightElbowB, 2));
if (mlSkeleton.getJointPoint(TYPE_RIGHT_ELBOW).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_RIGHT_ELBOW).getPointX() == 0) {
bean.setRightElbowXY(1);
} else {
bean.setRightElbowXY(0);
}
bean.setSinRightElbow(rightElbowC == 0 ? 0.5 : (rightElbowA / rightElbowC));

float rightWristA = mlSkeleton.getJointPoint(TYPE_RIGHT_WRIST).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float rightWristB = mlSkeleton.getJointPoint(TYPE_RIGHT_WRIST).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float rightWristC = (float) Math.sqrt(Math.pow(rightWristA, 2) + Math.pow(rightWristB, 2));
if (mlSkeleton.getJointPoint(TYPE_RIGHT_WRIST).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_RIGHT_WRIST).getPointX() == 0) {
bean.setRightWristXY(1);
} else {
bean.setRightWristXY(0);
}
bean.setSinRightWrist(rightWristC == 0 ? 0.5 : (rightWristA / rightWristC));

float leftElbowA = mlSkeleton.getJointPoint(TYPE_LEFT_ELBOW).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float leftElbowB = mlSkeleton.getJointPoint(TYPE_LEFT_ELBOW).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float leftElbowC = (float) Math.sqrt(Math.pow(leftElbowA, 2) + Math.pow(leftElbowB, 2));
if (mlSkeleton.getJointPoint(TYPE_LEFT_ELBOW).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_LEFT_ELBOW).getPointX() == 0) {
bean.setLeftElbowXY(1);
} else {
bean.setLeftElbowXY(0);
}
bean.setSinLeftElbow(leftElbowC == 0 ? 0.5 : (leftElbowA / leftElbowC));

float leftWristA = mlSkeleton.getJointPoint(TYPE_LEFT_WRIST).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float leftWristB = mlSkeleton.getJointPoint(TYPE_LEFT_WRIST).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float leftWristC = (float) Math.sqrt(Math.pow(TYPE_LEFT_WRIST, 2) + Math.pow(leftWristB, 2));
if (mlSkeleton.getJointPoint(TYPE_LEFT_WRIST).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_LEFT_WRIST).getPointX() == 0) {
bean.setLeftWristXY(1);
} else {
bean.setLeftWristXY(0);
}
bean.setSinLeftWrist(leftWristC == 0 ? 0.5 : (leftWristA / leftWristC));

float leftKneeA = mlSkeleton.getJointPoint(TYPE_LEFT_KNEE).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float leftKneeB = mlSkeleton.getJointPoint(TYPE_LEFT_KNEE).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float leftKneeC = (float) Math.sqrt(Math.pow(leftKneeA, 2) + Math.pow(leftKneeB, 2));
if (mlSkeleton.getJointPoint(TYPE_LEFT_KNEE).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_LEFT_KNEE).getPointX() == 0) {
bean.setLeftKneeXY(1);
} else {
bean.setLeftKneeXY(0);
}
bean.setSinLeftKnee(leftKneeC == 0 ? 0.5 : (leftKneeA / leftKneeC));

float leftAnkleA = mlSkeleton.getJointPoint(TYPE_LEFT_ANKLE).getPointY()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointY();
float leftAnkleB = mlSkeleton.getJointPoint(TYPE_LEFT_ANKLE).getPointX()
- mlSkeleton.getJointPoint(TYPE_NECK).getPointX();
float leftAnkleC = (float) Math.sqrt(Math.pow(leftAnkleA, 2) + Math.pow(leftAnkleB, 2));
if (mlSkeleton.getJointPoint(TYPE_LEFT_ANKLE).getPointY() == 0 && mlSkeleton.getJointPoint(TYPE_LEFT_ANKLE).getPointX() == 0) {
bean.setLeftAnkleXY(1);
} else {
bean.setLeftAnkleXY(0);
}
bean.setSinLeftAnkle(leftAnkleC == 0 ? 0.5 : (leftAnkleA / leftAnkleC));
Log.d(TAG, "hmsData2ModelData"
+ ", getSinRightElbow=" + bean.getSinRightElbow()
+ ", getSinRightWrist=" + bean.getSinRightWrist()
+ ", getSinLeftElbow=" + bean.getSinLeftElbow()
+ ", getSinLeftWrist=" + bean.getSinLeftWrist()
+ ", getSinLeftKnee=" + bean.getSinLeftKnee()
+ ", getSinLeftAnkle=" + bean.getSinLeftAnkle()

);
return bean;
}


public static double getScore(List<ModelDataBean> realDataList) {
List<ModelDataBean> originList = getModelDataList();
if (realDataList.size() > originList.size()) {
for (int i = originList.size(); i < realDataList.size(); i++) {
realDataList.remove(i);
}
}

double sum = 0;
int noDataNumble = 0;

int sumRightElbowXY = 0;
int sumRightWristXY = 0;
int sumLeftElbowXY = 0;
int sumLeftWristXY = 0;
int sumLeftKneeXY = 0;
int sumLeftAnkleXY = 0;

for (int i = 0; i < realDataList.size(); i++) {
ModelDataBean realBean = realDataList.get(i);
ModelDataBean originBean = originList.get(i);
if (realBean == null) {
noDataNumble++;
Log.d(TAG, "getScore, i= " + i + ", this data is null");
continue;
}
double rightElbow = Math.abs(originBean.getSinRightElbow()) == 0.5 ?
Math.abs(originBean.getSinRightElbow() - realBean.getSinRightElbow() - 0.5) / 2 :
Math.abs(originBean.getSinRightElbow() - realBean.getSinRightElbow()) / 2;
double rightWrist = Math.abs(originBean.getSinRightWrist()) == 0.5 ?
Math.abs(originBean.getSinRightWrist() - realBean.getSinRightWrist() - 0.5) / 2 :
Math.abs(originBean.getSinRightWrist() - realBean.getSinRightWrist()) / 2;
double leftElbow = Math.abs(originBean.getSinLeftElbow()) == 0.5 ?
Math.abs(originBean.getSinLeftElbow() - realBean.getSinLeftElbow() - 0.5) / 2 :
Math.abs(originBean.getSinLeftElbow() - realBean.getSinLeftElbow()) / 2;
double leftWrist = Math.abs(originBean.getSinLeftWrist()) == 0.5 ?
Math.abs(originBean.getSinLeftWrist() - realBean.getSinLeftWrist() - 0.5) / 2 :
Math.abs(originBean.getSinLeftWrist() - realBean.getSinLeftWrist()) / 2;
double leftKnee = Math.abs(originBean.getSinLeftKnee()) == 0.5 ?
Math.abs(originBean.getSinLeftKnee() - realBean.getSinLeftKnee() - 0.5) / 2 :
Math.abs(originBean.getSinLeftKnee() - realBean.getSinLeftKnee()) / 2;
double leftAnkle = Math.abs(originBean.getSinLeftAnkle()) == 0.5 ?
Math.abs(originBean.getSinLeftAnkle() - realBean.getSinLeftAnkle() - 0.5) / 2 :
Math.abs(originBean.getSinLeftAnkle() - realBean.getSinLeftAnkle()) / 2;
double total = rightElbow + rightWrist + leftElbow + leftWrist + leftKnee + leftAnkle;
sum += total;

sumRightElbowXY += realBean.getRightElbowXY();
sumRightWristXY += realBean.getRightWristXY();
sumLeftElbowXY += realBean.getLeftElbowXY();
sumLeftWristXY += realBean.getLeftWristXY();
sumLeftKneeXY += realBean.getLeftKneeXY();
sumLeftAnkleXY += realBean.getLeftAnkleXY();

Log.d(TAG, "getScore, i= " + i
+ ", total=" + total
+ ", rightElbow=" + rightElbow
+ ", rightWrist=" + rightWrist
+ ", leftElbow=" + leftElbow
+ ", leftWrist=" + leftWrist
+ ", leftKnee=" + leftKnee
+ ", leftAnkle=" + leftAnkle);
}


float onPointValue = (realDataList.size() - noDataNumble) * NO_POINT_SCALE;
if (sumRightElbowXY >= onPointValue || sumRightWristXY >= onPointValue || sumLeftElbowXY >= onPointValue ||
sumLeftWristXY >= onPointValue || sumLeftKneeXY >= onPointValue || sumLeftAnkleXY > +onPointValue) {
return NO_POINT; // Invalid point position scanned
} else {
double StandardDeviation = StandardDeviation(realDataList);
Log.e(TAG, "getScore, StandardDeviation= " + StandardDeviation);
if (StandardDeviation <= NO_ACT_SCALE) {
return NO_ACT;
} else {
double average = sum / (realDataList.size() - noDataNumble) / 6;
Log.e(TAG, "getScore, average= " + average
+ ", sum=" + sum
+ ", noDataNumble=" + noDataNumble
+ ", realDataList.size()=" + realDataList.size());

double score = 100 - 120 * (average - 0.5);
if (score >= 100) {
score = 98;
} else if (score < 60) {
score = 63;
}
return score;
}
}
}

// standard deviation σ=sqrt(s^2)
public static double StandardDeviation(List<ModelDataBean> realDataList) {
int frameNum = realDataList.size();
int nullSum = 0;
double sum = 0;
for (int i = 0; i < frameNum; i++) {// Sum
if (realDataList.get(i) != null) {
ModelDataBean bean = realDataList.get(i);
if (bean.getSinRightElbow() == 0.5 || bean.getSinRightElbow() == 0.5 || bean.getSinLeftElbow() == 0.5 ||
bean.getSinLeftWrist() == 0.5 || bean.getSinLeftKnee() == 0.5 || bean.getSinLeftAnkle() == 0.5) {
nullSum++;
} else {
sum += bean.getSinRightElbow() + bean.getSinRightElbow()
+ bean.getSinLeftElbow() + bean.getSinLeftWrist()
+ bean.getSinLeftKnee() + bean.getSinLeftAnkle();
}
} else {
nullSum++;
}
}
double dAve = sum / (frameNum - nullSum);// Averaging
double dVar = 0;
for (int i = 0; i < frameNum; i++) {// Seek variance
if (realDataList.get(i) != null) {
ModelDataBean bean = realDataList.get(i);
if (bean.getSinRightElbow() != 0.5 && bean.getSinRightElbow() != 0.5 && bean.getSinLeftElbow() != 0.5 &&
bean.getSinLeftWrist() != 0.5 && bean.getSinLeftKnee() != 0.5 && bean.getSinLeftAnkle() != 0.5) {
double sumSin = bean.getSinRightElbow() + bean.getSinRightElbow()
+ bean.getSinLeftElbow() + bean.getSinLeftWrist()
+ bean.getSinLeftKnee() + bean.getSinLeftAnkle();
dVar += (sumSin - dAve) * (sumSin - dAve);
}
}
}
Log.e(TAG, "getScore, Standard111 nullSum= " + nullSum);
return Math.sqrt(dVar / (frameNum - nullSum));
}
}

+ 26
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/global/Constants.java View File

@@ -0,0 +1,26 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.global;

import android.os.Environment;

public class Constants {
public static String VIDEO_NAME = "danceVideo2.mp4";
public static final int VIDEO_LENGTH = 41282333;
public static String VIDEO_PATH = Environment.getExternalStorageDirectory().getPath() + "/" + Environment.DIRECTORY_DOWNLOADS + "/";
public static String BITMAP_PATH = VIDEO_PATH + "bitmap";
}

+ 23
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/global/Variables.java View File

@@ -0,0 +1,23 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.global;

public class Variables {
public static boolean hasVideo = false;
public static long downloadId = -1;
public static int score = 0;
}

+ 116
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/present/video/MyVideoView.java View File

@@ -0,0 +1,116 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.present.video;

import android.content.Context;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

import com.mindspore.dance.R;
import com.mindspore.dance.task.GoneViewTask;

import java.util.Formatter;
import java.util.Locale;

public class MyVideoView extends VideoView {
private static final String TAG = MyVideoView.class.getSimpleName();
private MediaController mediaController;
private Context mContext;
private TextView mCountdownView;

public MyVideoView(Context context) {
super(context);
mContext = context;
mediaController = new MediaController(context);
this.setMediaController(mediaController);
initMediaController();
}

public void setCountdownView(TextView countdownView) {
mCountdownView = countdownView;

}

private void initMediaController() {
mediaController.setEnabled(false);
}

@Override
public void pause() {
super.pause();
Log.d(TAG, "pause");
}

@Override
public void resume() {
super.resume();
Log.d(TAG, "resume");
}

@Override
public void start() {
super.start();
Log.d(TAG, "start");
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.d(TAG, "onTouchEvent");
int remainingTime = this.getDuration() - this.getCurrentPosition();
String timeStr = stringForTime(remainingTime);
if (mCountdownView != null) {
if (mCountdownView.getVisibility() == GONE) {
mCountdownView.setText(getContext().getString(R.string.countdown) + timeStr);
mCountdownView.setVisibility(VISIBLE);
new Thread(new GoneViewTask(mCountdownView)).start();
} else {
mCountdownView.setVisibility(GONE);
}
}
return false;
}

private String stringForTime(int timeMs) {
if (timeMs < 0) {
return "00:00";
}
StringBuilder mFormatBuilder = new StringBuilder();
Formatter mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
int totalSeconds = timeMs / 1000;

int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;

mFormatBuilder.setLength(0);
if (hours > 0) {
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString();
} else {
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
}
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}

}

+ 48
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/task/GoneViewTask.java View File

@@ -0,0 +1,48 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.task;

import android.os.Handler;
import android.os.Looper;
import android.view.View;

public class GoneViewTask implements Runnable {
private View mView;

public GoneViewTask(View view) {
this.mView = view;
}

@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(new Runnable() {
@Override
public void run() {
if (mView != null && mView.getVisibility() != View.GONE) {
mView.setVisibility(View.GONE);
}
}
});
}
}

+ 134
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/task/SampleTask.java View File

@@ -0,0 +1,134 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.task;

import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import androidx.camera.view.PreviewView;

import com.huawei.hmf.tasks.OnFailureListener;
import com.huawei.hmf.tasks.Task;
import com.huawei.hms.mlsdk.common.MLFrame;
import com.huawei.hms.mlsdk.skeleton.MLSkeleton;
import com.huawei.hms.mlsdk.skeleton.MLSkeletonAnalyzer;
import com.huawei.hms.mlsdk.skeleton.MLSkeletonAnalyzerFactory;
import com.mindspore.dance.algorithm.ModelDataBean;
import com.mindspore.dance.algorithm.ModelDataUtils;
import com.mindspore.dance.global.Variables;

import java.util.ArrayList;
import java.util.List;

public class SampleTask implements Runnable {
private static final String TAG = SampleTask.class.getSimpleName();
private PreviewView previewView;
private MLSkeletonAnalyzer analyzer;
private List<List<MLSkeleton>> bitmapsSkeleton;
private List<ModelDataBean> modelDataBeanList;

public SampleTask(PreviewView previewView) {
this.previewView = previewView;
init();
}

private void init() {
analyzer = MLSkeletonAnalyzerFactory.getInstance().getSkeletonAnalyzer();
bitmapsSkeleton = new ArrayList<List<MLSkeleton>>();
modelDataBeanList = new ArrayList<ModelDataBean>();
}

public void setNeedStop(boolean needStop) {
this.needStop = needStop;

}

public void clear() {
bitmapsSkeleton.clear();
analyzer = null;
previewView = null;
}

private int num = 0;
private boolean needStop = false;

@Override
public void run() {
while ((!needStop) && num < 70) {
sample();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
double score = ModelDataUtils.getScore(modelDataBeanList);
Log.d(TAG, "getScore:" + score);
Variables.score = (int) score;
}

private void getBitmap() {
Handler mainHandler = new Handler(Looper.getMainLooper());

mainHandler.post(() -> {
if (previewView == null) {
return;
}
Bitmap tempBitmap = previewView.getBitmap();
if (tempBitmap == null) {
modelDataBeanList.add(null);
Log.w(TAG, "bitmap is null.");
return;
}

MLFrame frame = MLFrame.fromBitmap(tempBitmap);
try {
Task<List<MLSkeleton>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(results -> {
// check successful
if (results.size() > 0) {
Log.d(TAG, "onSuccess " + "skeleton:" + results.get(0));
modelDataBeanList.add(ModelDataUtils.hmsData2ModelData(results.get(0)));
} else {
Log.w(TAG, "onSuccess, but no have skeleton in bitmap.");
modelDataBeanList.add(null);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// check failed.
Log.d(TAG, "onFailure sample:" + num);
}
});
} catch (IllegalArgumentException e) {
Log.d(TAG, "getBitmap," + e.getMessage());
} catch (IllegalStateException e) {
Log.d(TAG, "getBitmap," + e.getMessage());
}
});
}

private void sample() {
Log.d(TAG, "sample:" + num);
if (previewView != null) {
getBitmap();
}
num++;
}
}

+ 206
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/util/Tools.java View File

@@ -0,0 +1,206 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.util;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import androidx.annotation.MainThread;
import androidx.core.app.ActivityCompat;

import com.mindspore.dance.global.Constants;
import com.mindspore.dance.global.Variables;

import java.io.File;

public class Tools {
private static String TAG = Tools.class.getSimpleName();
public static int WIDTH_INDEX = 0;
public static int HEIGHT_INDEX = 1;
public static final int TYPE_VIDEO_VIEW = 0;
public static final int TYPE_CAMERA_VIEW = 1;

/**
* Get the download status, get the width and height of a view, (There is a problem, you may get {0,0})
*
* @param view
* @return int[2] int[0] = view.width; int[1] = view.height;
*/
public static int[] getWH(View view) {
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);

view.measure(w, h);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
Log.d(TAG, "rootLayout width:" + width + ", height:" + height);
int[] a = {width, height};
return a;
}

/**
* Get the width and height of an activity (including the status bar)
*
* @return int[2] int[0] = width; int[1] = height;
*/
public static int[] getActivityWH(Activity activity) {
Display display = activity.getWindowManager().getDefaultDisplay();
Log.d(TAG, "Activity width:" + display.getWidth() + ", height:" + display.getHeight());
int[] a = {display.getWidth(), display.getHeight()};
return a;
}

/**
* Get the visual area of a view
*
* @param view
* @return int[2] int[0] = width; int[1] = height;
*/
public static int[] getRect(View view) {
Rect rectangle = new Rect();
view.getWindowVisibleDisplayFrame(rectangle);
Log.d(TAG, "getRect parentView width:" + rectangle.width() + ", height:" + rectangle.height());
int[] a = {rectangle.width(), rectangle.height()};
return a;
}

/**
* Adding childView to parentView must be done in the main thread.
*
* @param parentView Parent container
* @param childView Control to add
* @param widthRatio Control width / parent container width
* @param highRatio Control height / parent container height
* if leftMarginRatio = -1; the horizontal center; topMarginRatio = -1 Indicates vertical center
* @param topMarginRatio Control top margin / parent container height
* @param leftMarginRatio Control left margin / parent container width
*/
@MainThread
public static void addView(ViewGroup parentView, View childView, float widthRatio, float highRatio,
float topMarginRatio, float leftMarginRatio) {
int[] parentMeasure = Tools.getRect(parentView);
int width = (int) (parentMeasure[0] * widthRatio);
int high = (int) (parentMeasure[1] * highRatio);
int left = leftMarginRatio == -1 ? (parentMeasure[0] - width) / 2
: (int) (parentMeasure[0] * leftMarginRatio);
int top = topMarginRatio == -1 ? (parentMeasure[1] - high) / 2
: (int) (parentMeasure[1] * topMarginRatio);
Log.d(TAG, "addView width:" + width + ", height:" + high + ", left:" + left + ", top:" + top);
FrameLayout.LayoutParams fLayoutParams = new FrameLayout.LayoutParams(width, high);
fLayoutParams.setMargins(left, top, 0, 0);

childView.setLayoutParams(fLayoutParams);
parentView.addView(childView);
}

/**
* Adding childView to parentView must be done in the main thread.
*
* @param parentView Parent container
* @param childView Control to add
* @param widthRatio Control width / parent container width
* @param highRatio Control height / parent container height
* @param widthHighRatio Control width / control height
* if leftMarginRatio = -1; the horizontal center; topMarginRatio = -1 Indicates vertical center
* @param topMarginRatio Control top margin / parent container height
* @param leftMarginRatio Control left margin / parent container width
* @param type Control is video 0 , a camera 1
*/
@MainThread
public static void addViewFixedScale(ViewGroup parentView, View childView, float widthRatio,
float highRatio, float widthHighRatio,
float topMarginRatio, float leftMarginRatio, int type) {
if (widthHighRatio == 0) {
return;
}
int[] parentMeasure = Tools.getRect(parentView);
int width = (int) (parentMeasure[0] * widthRatio);
int highBorder = (int) (parentMeasure[1] * highRatio);
int high = (int) ((float) width / widthHighRatio);
int left = leftMarginRatio == -1 ? (parentMeasure[0] - width) / 2
: (int) (parentMeasure[0] * leftMarginRatio);
int top = topMarginRatio == -1 ? (parentMeasure[1] - high) / 2
: (int) (parentMeasure[1] * topMarginRatio);
Log.d(TAG, "addViewFixedScale width:" + width + ", height:" + high + ", highBorder:" + highBorder + ", left:" + left + ", top:" + top);
FrameLayout.LayoutParams fLayoutParams = new FrameLayout.LayoutParams(width, high);
int adjustment = 0;
if (high != highBorder) {
switch (type) {
case Tools.TYPE_VIDEO_VIEW:
adjustment = (highBorder - high) / 2;
break;
case Tools.TYPE_CAMERA_VIEW:
adjustment = (highBorder - high);
break;
default:
Log.e(TAG, "type is invalid. don't adjust.");
}
}
Log.e(TAG, "addViewFixedScale adjustment." + adjustment);
fLayoutParams.setMargins(left, top + adjustment, 0, 0);

childView.setLayoutParams(fLayoutParams);
parentView.addView(childView);
}

public static boolean checkDiskHasVideo() {
File f = new File(Constants.VIDEO_PATH + Constants.VIDEO_NAME);
if (f.exists() && f.length() == Constants.VIDEO_LENGTH) {
Variables.hasVideo = true;
} else {
Variables.hasVideo = false;
}
return Variables.hasVideo;
}

private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static final int REQUEST_CAMERA = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};

private static String[] PERMISSIONS_CAMERA = {
Manifest.permission.CAMERA
};

public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
}

public static void verifyCameraPermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.CAMERA);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, PERMISSIONS_CAMERA, REQUEST_CAMERA);
}
}

}

model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/texttranslation/TextTranslationRealTimeActivity.java → model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/DanceActivity.java View File

@@ -13,35 +13,39 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.hms.texttranslation;

package com.mindspore.dance.view;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.mindspore.hms.R;
import com.mindspore.hms.camera.GraphicOverlay;
import com.mindspore.hms.camera.LensEnginePreview;

@Route(path = "/hms/TextTranslationRealTimeActivity")
public class TextTranslationRealTimeActivity extends AppCompatActivity {

private LensEnginePreview mPreview;
import com.mindspore.dance.R;

private GraphicOverlay mOverlay;
@Route(path = "/dance/DanceMainActivity")
public class DanceActivity extends AppCompatActivity {

@SuppressLint("InvalidWakeLockTag")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_translation_real_time);
init();
}
private void init(){
Toolbar mToolbar = findViewById(R.id.TextVideo_activity_toolbar);
mToolbar.setNavigationOnClickListener(view -> finish());
this.mPreview = this.findViewById(R.id.scene_preview);
this.mOverlay = this.findViewById(R.id.scene_overlay);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_dance);


}
}

}

+ 207
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/PrepareFragment.java View File

@@ -0,0 +1,207 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.view.fragment;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.navigation.fragment.NavHostFragment;

import com.mindspore.common.base.mvp.BaseFragment;
import com.mindspore.common.net.FileDownLoadObserver;
import com.mindspore.dance.R;
import com.mindspore.dance.global.Constants;
import com.mindspore.dance.global.Variables;
import com.mindspore.dance.present.video.MyVideoView;
import com.mindspore.dance.util.Tools;
import com.mindspore.dance.view.mvp.PrepareContract;
import com.mindspore.dance.view.mvp.PreparePresenter;

import java.io.File;

import static com.mindspore.common.utils.Utils.getApp;

public class PrepareFragment extends BaseFragment<PreparePresenter> implements PrepareContract.View {
private final String TAG = PrepareFragment.class.getSimpleName();

private FrameLayout root;
private TextView downloadText;
private MyVideoView videoView;
private MediaController mediaController;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter = new PreparePresenter(this);

Tools.verifyStoragePermissions(getActivity());
Tools.verifyCameraPermissions(getActivity());
Tools.checkDiskHasVideo();
if (!Variables.hasVideo) {
downFile();
}
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_prepare, container, false);
}

public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
root = view.findViewById(R.id.root);
downloadText = view.findViewById(R.id.download_text);
initView();
}

public void downFile() {
presenter.downloadDanceVideo(new FileDownLoadObserver<File>() {
@Override
public void onDownLoadSuccess(File file) {
Tools.checkDiskHasVideo();
downloadText.setVisibility(View.GONE);
if (videoView != null && !videoView.isPlaying()) {
start();
}
}

@Override
public void onDownLoadFail(Throwable throwable) {
Toast.makeText(getApp(), R.string.download_faild, Toast.LENGTH_SHORT).show();

}

@Override
public void onProgress(final int progress, long total) {
getActivity().runOnUiThread(() -> {
downloadText.setText(String.format(getString(R.string.downloading), progress, "%"));
});
}
});
}


@Override
public void onResume() {
super.onResume();
if (!Variables.hasVideo) {
downFile();
} else {
if (videoView != null && !videoView.isPlaying()) {
videoView.start();
}
}
}

@Override
public void onStop() {
super.onStop();
if (videoView != null && videoView.isPlaying()) {
videoView.pause();
}
}

@Override
public void onDestroy() {
super.onDestroy();
onStop();
videoView = null;
}

private void initView() {
addVideoView();
addBackground();
addButton();
if (!Variables.hasVideo) {
downloadText.setVisibility(View.VISIBLE);
}
}

private void addVideoView() {
videoView = new MyVideoView(getActivity());
Tools.addViewFixedScale(root, videoView, 0.625f, 0.596f, 16f / 9f,
0.227f, 0.187f, Tools.TYPE_VIDEO_VIEW);

videoView.setOnCompletionListener(mp -> videoView.start());
if (Variables.hasVideo) {
start();
}
}

private void addBackground() {
ImageView backgroundView = new ImageView(getContext());
backgroundView.setBackgroundResource(R.drawable.prepare_bk);
Tools.addView(root, backgroundView, 1f, 1f, -1, -1);
}

private void addButton() {
ImageButton buttonView = new ImageButton(getContext());
buttonView.setBackgroundResource(R.drawable.begin_run_bt);
buttonView.setOnClickListener(v -> {
int permission = ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA);
if (permission != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), R.string.toast_no_camera_permission, Toast.LENGTH_SHORT).show();
return;
}
permission = ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(getActivity(), R.string.toast_no_storage_permission,
Toast.LENGTH_SHORT).show();
return;
}
if (!Variables.hasVideo) {
return;
}
NavHostFragment.findNavController(PrepareFragment.this)
.navigate(R.id.action_PrepareFragment_to_RunFragment);
});
Tools.addView(root, buttonView, 0.256f, 0.132f, 0.843f, 0.372f);

ImageButton backButton = new ImageButton(getContext());
backButton.setBackgroundResource(R.drawable.dance_back);
backButton.setOnClickListener(view -> {
getActivity().finish();
});
Tools.addView(root, backButton, 0.1f, 0.2f, 0.2f, 0.06f);
}

private void start() {
mediaController = new MediaController(getContext());
String uri = Constants.VIDEO_PATH + Constants.VIDEO_NAME;
Log.d(TAG, "start uri:" + uri);
videoView.setVideoPath(uri);
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
videoView.start();
}

}

+ 100
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/ResultFragment.java View File

@@ -0,0 +1,100 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.view.fragment;

import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.navigation.fragment.NavHostFragment;

import com.mindspore.common.utils.ImageUtils;
import com.mindspore.dance.R;
import com.mindspore.dance.algorithm.ModelDataUtils;
import com.mindspore.dance.global.Variables;


public class ResultFragment extends Fragment {

private String comment;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_result, container, false);
}

public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView textFirstView = view.findViewById(R.id.get_score);
String score = level(Variables.score);
textFirstView.setText(score);

TextView textSecondView = view.findViewById(R.id.get_comment);
if (Variables.score >= 0 && Variables.score <= 100) {
textSecondView.setText(comment);
} else {
textSecondView.setVisibility(View.GONE);
}
view.findViewById(R.id.play_again).setOnClickListener(view1 ->
NavHostFragment.findNavController(ResultFragment.this)
.navigate(R.id.action_ResultFragment_to_PrepareFragment));

view.findViewById(R.id.save).setOnClickListener(view12 -> {
Uri imgPath = ImageUtils.saveToAlbum(getActivity(), view, null, false);
if (imgPath != null) {
Toast.makeText(getActivity(), R.string.image_save_success, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), R.string.image_save_failed, Toast.LENGTH_SHORT).show();
}
});
view.findViewById(R.id.back).setOnClickListener(view12 -> {
getActivity().finish();
});
}

private String level(int score) {
if (score == ModelDataUtils.NO_ACT) {
return getContext().getString(R.string.get_score_level0);
} else if (score == ModelDataUtils.NO_POINT) {
return getContext().getString(R.string.get_score_level8);
} else if (50 <= score && score < 60) {
comment = getContext().getString(R.string.get_score_level1);
} else if (60 <= score && score < 70) {
comment = getContext().getString(R.string.get_score_level2);
} else if (70 <= score && score < 80) {
comment = getContext().getString(R.string.get_score_level3);
} else if (80 <= score && score < 90) {
comment = getContext().getString(R.string.get_score_level4);
} else if (90 <= score && score < 95) {
comment = getContext().getString(R.string.get_score_level5);
} else if (95 <= score && score < 100) {
comment = getContext().getString(R.string.get_score_level6);
} else if (score == 100) {
comment = getContext().getString(R.string.get_score_level7);
} else {
comment = "";
}
return getContext().getString(R.string.get_score) + score;
}
}

+ 230
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/fragment/RunFragment.java View File

@@ -0,0 +1,230 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.mindspore.dance.view.fragment;

import android.annotation.SuppressLint;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.camera.camera2.Camera2Config;
import androidx.camera.core.Camera;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.CameraXConfig;
import androidx.camera.core.Preview;
import androidx.camera.lifecycle.ProcessCameraProvider;
import androidx.camera.view.PreviewView;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.LifecycleOwner;
import androidx.navigation.fragment.NavHostFragment;

import com.google.common.util.concurrent.ListenableFuture;
import com.mindspore.dance.R;
import com.mindspore.dance.global.Constants;
import com.mindspore.dance.present.video.MyVideoView;
import com.mindspore.dance.task.SampleTask;
import com.mindspore.dance.util.Tools;

import java.util.concurrent.ExecutionException;

public class RunFragment extends Fragment {
private final String TAG = RunFragment.class.getSimpleName();
private FrameLayout root;
private MyVideoView videoView;
private PreviewView cameraView;
private ListenableFuture<ProcessCameraProvider> cameraProviderFuture;
private SampleTask sampleTask;
private TextView countdownView;
private ImageView info;
private Handler handler;
private final int NEED_CANCEL = -1;
private MediaController mediaController;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_run, container, false);
}

public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
root = view.findViewById(R.id.root);
handler = new Handler();
mediaController = new MediaController(this.getContext());
initView();

cameraProviderFuture = ProcessCameraProvider.getInstance(getContext());
cameraProviderFuture.addListener(() -> {
try {
ProcessCameraProvider cameraProvider = cameraProviderFuture.get();
bindPreview(cameraProvider);
} catch (ExecutionException | InterruptedException e) {
// No errors need to be handled for this Future.
// This should never be reached.
}
}, ContextCompat.getMainExecutor(getContext()));
}

private void complete() {
if (videoView != null && videoView.isPlaying()) {
videoView.stopPlayback();
}
}

@RequiresApi(api = Build.VERSION_CODES.P)
@Override
public void onResume() {
info.setVisibility(View.VISIBLE);
info.setBackgroundResource(R.drawable.countdown_three);
super.onResume();
handler.postDelayed(() -> {
//execute the task
info.setVisibility(View.VISIBLE);
info.setBackgroundResource(R.drawable.countdown_two);
}, NEED_CANCEL, 1000);
handler.postDelayed(() -> {
//execute the task
info.setVisibility(View.VISIBLE);
info.setBackgroundResource(R.drawable.countdown_one);
}, NEED_CANCEL, 2000);
handler.postDelayed(() -> {
//execute the task
beginPlay();
info.setVisibility(View.GONE);
}, NEED_CANCEL, 3080);
}

private void start() {
String uri = Constants.VIDEO_PATH + Constants.VIDEO_NAME;
Log.d(TAG, "start uri:" + uri);
videoView.setVideoPath(uri);
videoView.setMediaController(mediaController);
mediaController.setMediaPlayer(videoView);
videoView.requestFocus();
videoView.start();
}

public void beginPlay() {
addButtonView();
start();
sampleTask = new SampleTask(cameraView);
new Thread(sampleTask).start();
}

@Override
public void onPause() {
super.onPause();
handler.removeMessages(NEED_CANCEL);
if (sampleTask != null) {
sampleTask.setNeedStop(true);
sampleTask.clear();
sampleTask = null;
}
if (videoView.isPlaying()) {
videoView.stopPlayback();
}
}

@SuppressLint("RestrictedApi")
private void bindPreview(@NonNull ProcessCameraProvider cameraProvider) {
Preview preview = new Preview.Builder().build();

CameraSelector cameraSelector = new CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_FRONT).build();

preview.setSurfaceProvider(cameraView.getSurfaceProvider());
Camera camera = cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview);
}

private void initView() {
addVideoView();
addTextInfoView();
addCameraView();
addCountdownView();
addBackground();

}

private void addTextInfoView() {
info = new ImageView(getActivity());
info.setBackgroundResource(R.drawable.countdown_three);
Tools.addView(root, info, 0.872f, 0.875f, 0.091f, 0.062f);
}

private void addCountdownView() {
countdownView = new TextView(getContext());
countdownView.setTextSize(20);
countdownView.setTextColor(0xFFFFFFFF);
countdownView.setBackgroundColor(0xff333333);
countdownView.setGravity(Gravity.CENTER);
Tools.addView(root, countdownView, 0.256f, 0.113f, 0.091f, 0.062f);
if (videoView != null) {
videoView.setCountdownView(countdownView);
}
countdownView.setVisibility(View.GONE);
}

private void addBackground() {
ImageView backgroundView = new ImageView(getContext());
backgroundView.setBackgroundResource(R.drawable.run_bk);
Tools.addView(root, backgroundView, 1f, 1f, -1, -1);
}

private void addVideoView() {
videoView = new MyVideoView(getActivity());
Tools.addViewFixedScale(root, videoView, 0.872f, 0.875f, 16f / 9f,
0.091f, 0.062f, Tools.TYPE_VIDEO_VIEW);
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
complete();
NavHostFragment.findNavController(RunFragment.this)
.navigate(R.id.action_RunFragment_to_ResultFragment);
}
});
}

private void addCameraView() {
cameraView = new PreviewView(getContext());
cameraView.setScaleType(PreviewView.ScaleType.FIT_CENTER);
Tools.addViewFixedScale(root, cameraView, 0.248f, 0.331f, 4f / 3f,
0.635f, 0.686f, Tools.TYPE_CAMERA_VIEW);
}

private void addButtonView() {
ImageButton backButton = new ImageButton(getContext());
backButton.setBackgroundResource(R.drawable.dance_back);
backButton.setOnClickListener(view -> {
getActivity().finish();
});
Tools.addView(root, backButton, 0.1f, 0.2f, 0.12f, 0.1f);
}
}

+ 30
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/mvp/PrepareContract.java View File

@@ -0,0 +1,30 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.dance.view.mvp;

import com.mindspore.common.net.FileDownLoadObserver;

import java.io.File;

public interface PrepareContract {

interface View {
}

interface Presenter {
void downloadDanceVideo(FileDownLoadObserver<File> fileDownLoadObserver);
}
}

+ 50
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/java/com/mindspore/dance/view/mvp/PreparePresenter.java View File

@@ -0,0 +1,50 @@
/**
* Copyright 2021 Huawei Technologies Co., Ltd
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mindspore.dance.view.mvp;

import com.mindspore.common.base.mvp.BaseFragmentPresenter;
import com.mindspore.common.net.FileDownLoadObserver;
import com.mindspore.common.net.RetrofitHelper;
import com.mindspore.dance.global.Constants;
import com.mindspore.dance.view.fragment.PrepareFragment;

import java.io.File;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;

public class PreparePresenter extends BaseFragmentPresenter<PrepareFragment> implements PrepareContract.Presenter {

private PrepareContract.View view;

private RetrofitHelper retrofitHelper;

public PreparePresenter(PrepareContract.View view) {
this.view = view;
retrofitHelper = new RetrofitHelper();
}

@Override
public void downloadDanceVideo(FileDownLoadObserver<File> fileDownLoadObserver) {
retrofitHelper.downloadDanceVideo()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map(responseBody -> fileDownLoadObserver.saveFile(responseBody, Constants.VIDEO_PATH, Constants.VIDEO_NAME))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(fileDownLoadObserver);
}
}

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/begin_run_bt.png View File

Before After
Width: 492  |  Height: 145  |  Size: 26 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/button_begin.png View File

Before After
Width: 110  |  Height: 65  |  Size: 12 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/button_complete.png View File

Before After
Width: 500  |  Height: 558  |  Size: 118 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/play_again.png View File

Before After
Width: 492  |  Height: 145  |  Size: 21 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable-v24/save.png View File

Before After
Width: 492  |  Height: 145  |  Size: 26 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_one.png View File

Before After
Width: 1675  |  Height: 945  |  Size: 299 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_three.png View File

Before After
Width: 1675  |  Height: 945  |  Size: 303 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/countdown_two.png View File

Before After
Width: 1675  |  Height: 945  |  Size: 302 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/dance_back.png View File

Before After
Width: 140  |  Height: 140  |  Size: 16 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/prepare_bk.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 200 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/result_bk.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 136 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/run_bk.png View File

Before After
Width: 1920  |  Height: 1080  |  Size: 33 kB

BIN
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/drawable/thumbnail.PNG View File

Before After
Width: 1209  |  Height: 680  |  Size: 904 kB

+ 8
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/activity_dance.xml View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<include layout="@layout/content_dance" />

</androidx.constraintlayout.widget.ConstraintLayout>

+ 18
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/content_dance.xml View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_dance" />
</androidx.constraintlayout.widget.ConstraintLayout>

+ 30
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_prepare.xml View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".view.fragment.PrepareFragment">

<FrameLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<TextView
android:id="@+id/download_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/downloading"
android:textSize="32sp"
android:textColor="@color/upsdk_blue_text_007dff"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5" />

</androidx.constraintlayout.widget.ConstraintLayout>

+ 79
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_result.xml View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/result_bk"
tools:context=".view.fragment.ResultFragment">

<TextView
android:id="@+id/get_score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shadowColor="#ffC8E4F0"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="5"
android:textColor="#FF40ADFF"
android:textSize="86.46px"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.277" />

<TextView
android:id="@+id/get_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shadowColor="#ffC8E4F0"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="5"
android:textColor="#FF40ADFF"
android:textSize="70px"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.402" />

<ImageButton
android:id="@+id/save"
android:layout_width="492px"
android:layout_height="145px"
android:background="@drawable/save"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.739" />

<ImageButton
android:id="@+id/play_again"
android:layout_width="492px"
android:layout_height="145px"
android:background="@drawable/play_again"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.912" />

<ImageButton
android:id="@+id/back"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_margin="10dp"
android:background="@drawable/dance_back"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

+ 15
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/layout/fragment_run.xml View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.fragment.RunFragment"
android:background="@drawable/run_bk">

<FrameLayout
android:id="@+id/root"
android:layout_height="match_parent"
android:layout_width="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

+ 10
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/menu/menu_main.xml View File

@@ -0,0 +1,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.myapplication.MainActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>

+ 38
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/navigation/nav_dance.xml View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_dance"
app:startDestination="@id/PrepareFragment">

<fragment
android:id="@+id/PrepareFragment"
android:name="com.mindspore.dance.view.fragment.PrepareFragment"
android:label="@string/second_fragment_label"
tools:layout="@layout/fragment_prepare">

<action
android:id="@+id/action_PrepareFragment_to_RunFragment"
app:destination="@id/RunFragment" />
</fragment>

<fragment
android:id="@+id/RunFragment"
android:name="com.mindspore.dance.view.fragment.RunFragment"
android:label="@string/run_fragment_label"
tools:layout="@layout/fragment_run">
<action
android:id="@+id/action_RunFragment_to_ResultFragment"
app:destination="@id/ResultFragment" />
</fragment>

<fragment
android:id="@+id/ResultFragment"
android:name="com.mindspore.dance.view.fragment.ResultFragment"
android:label="@string/Result_fragment_label"
tools:layout="@layout/fragment_result">
<action
android:id="@+id/action_ResultFragment_to_PrepareFragment"
app:destination="@id/PrepareFragment" />
</fragment>
</navigation>

+ 16
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values-night/themes.xml View File

@@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MindSpore" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

+ 10
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/colors.xml View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>

+ 3
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/dimens.xml View File

@@ -0,0 +1,3 @@
<resources>
<dimen name="fab_margin">16dp</dimen>
</resources>

+ 34
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/strings.xml View File

@@ -0,0 +1,34 @@
<resources>
<string name="app_name">舞蹈梦工厂</string>
<string name="action_settings">Settings</string>
<!-- Strings used for fragments for navigation -->
<string name="first_fragment_label">First Fragment</string>
<string name="second_fragment_label">Prepare Fragment</string>
<string name="run_fragment_label">Run Fragment</string>
<string name="next">Next</string>
<string name="previous">Previous</string>

<string name="hello_first_fragment">这里是掌中宝的功能列表页面,请点击next进入舞蹈梦工厂模块</string>
<string name="dance">Dance</string>
<string name="Result_fragment_label">result</string>
<string name="toast_no_video">抱歉,还没有可用视频</string>
<string name="toast_no_storage_permission">抱歉,您没有授予存储权限</string>
<string name="toast_no_camera_permission">抱歉,您没有授予相机访问权限</string>
<string name="download">下载</string>
<string name="download_faild">下载失败</string>

<string name="downloading">"舞蹈视频下载中 ...%1$d%2$s"</string>
<string name="get_score">恭喜完成,综合得分:</string>
<string name="get_score_level1">有点那个味了!</string>
<string name="get_score_level2">萌新说得就是你!</string>
<string name="get_score_level3">好厉害,你是专业的吗?</string>
<string name="get_score_level4">你是这条街最靓的仔!</string>
<string name="get_score_level5">隐藏在民间的高手!</string>
<string name="get_score_level6">给大神献上膝盖!</string>
<string name="get_score_level7">这个舞台属于你!</string>
<string name="get_score_level0">请动起来哦!</string>
<string name="get_score_level8">请全身出镜展示你的风采!</string>
<string name="countdown"> 剩余时长:</string>
<string name="game_rules"> 跟随视频中小人的动作起舞,AI会采集你的动作进行实时匹配,想拿高分吗,请注意你的xx部位的动作哈</string>

</resources>

+ 30
- 0
model_zoo/official/lite/MindSpore_inhand/dance/src/main/res/values/themes.xml View File

@@ -0,0 +1,30 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>

<style name="Theme.MyApplication.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

<style name="Theme.MyApplication.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="Theme.MyApplication.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />


<style name="no_title">
<item name="android:windowNoTitle">true</item>
</style>
</resources>

+ 0
- 207
model_zoo/official/lite/MindSpore_inhand/hms/senceDetection View File

@@ -1,207 +0,0 @@
beach
bluesky
sunset
food
flower
greenplant
snow
night
text
cat
dog
fireworks
overcast
fallen
panda
car
oldbuildings
bicycle
waterfall
playground
corridor
cabin
washroom
kitchen
bedroom
diningroom
livingroom
skyscraper
bridge
waterside
mountain
overlook
construction
islam
european
footballfield
baseballfield
tenniscourt
carinside
badmintoncourt
pingpangcourt
swimmingpool
alpaca
library
supermarket
restaurant
tiger
penguin
elephant
dinosaur
watersurface
indoorbasketballcourt
bowlingalley
classroom
rabbit
rhinoceros
camel
tortoise
leopard
giraffe
peacock
kangaroo
lion
motorcycle
aircraft
train
ship
glasses
watch
highwheels
washingmachine
airconditioner
camera
map
keyboard
redenvelope
fucharacter
xicharacter
dragondance
liondance
go
teddybear
transformer
thesmurfs
littlepony
butterfly
ladybug
dragonfly
billiardroom
meetingroom
office
bar
mallcourtyard
deer
cathedralhall
bee
helicopter
mahjong
chess
McDonalds
ornamentalfish
widebuildings



沙滩
蓝天
日出日落
美食
花朵
绿植
雪景
夜景
文字
烟花
阴天
秋叶
熊猫
汽车
中式建筑
自行车
瀑布
游乐场
走廊巷道
火车飞机内部
卫生间
厨房
卧室
餐厅
客厅
摩天大楼+塔
桥梁
海滨/湖滨
山峰
城市俯瞰
工地
伊斯兰式建筑
欧式建筑
足球场
棒球场
网球场
轿车内部
羽毛球馆
乒乓球馆
游泳馆
羊驼
图书馆
超市
饭店
老虎
企鹅
大象
恐龙
水面
室内篮球场
保龄球馆
教室
兔子
犀牛
骆驼
乌龟
豹子
长颈鹿
孔雀
袋鼠
狮子
电动车/摩托车
飞机
火车
轮船
眼镜
手表
高跟鞋
洗衣机
空调
相机
地图
键盘
红包
福 字
囍 字
舞龙
舞狮
围棋
泰迪熊
京剧脸谱
蓝精灵
小马宝莉
蝴蝶
瓢虫
蜻蜓
桌球房
会议室
办公室
酒吧
商场中庭
梅花鹿
教堂正厅
蜜蜂
直升机
麻将
象棋
麦当劳
观赏鱼
广角城楼

+ 0
- 8
model_zoo/official/lite/MindSpore_inhand/hms/src/main/AndroidManifest.xml View File

@@ -18,10 +18,6 @@
android:name=".bonedetection.LiveSkeletonAnalyseActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".texttranslation.TextTranslationRealTimeActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".gesturerecognition.LiveHandGestureAnalyseActivity"
android:screenOrientation="portrait"
@@ -33,10 +29,6 @@
<activity
android:name=".gesturerecognition.StillHandGestureAnalyseActivity"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".textrecognition.VideoTextRecognitionActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar" />
<activity
android:name=".scenedetection.SenceDetectionStillAnalyseActivity"
android:screenOrientation="portrait"


+ 1
- 2
model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/ImageSegmentation/ImageSegmentationLiveAnalyseActivity.java View File

@@ -185,8 +185,7 @@ public class ImageSegmentationLiveAnalyseActivity extends AppCompatActivity impl
public void transactResult(MLAnalyzer.Result<MLImageSegmentation> result) {
mOverlay.clear();
SparseArray<MLImageSegmentation> imageSegmentationResult = result.getAnalyseList();
MLSegmentGraphic graphic = new MLSegmentGraphic(ImageSegmentationLiveAnalyseActivity.this, mPreview, mOverlay, imageSegmentationResult.valueAt(0), isFront);
//mOverlay.setBackgroundColor(Color.BLUE);
MLSegmentGraphic graphic = new MLSegmentGraphic(mPreview, mOverlay, imageSegmentationResult.valueAt(0), isFront);
mOverlay.add(graphic);
}
});


+ 1
- 21
model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/camera/MLSegmentGraphic.java View File

@@ -16,18 +16,13 @@

package com.mindspore.hms.camera;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.Log;

import com.huawei.hms.mlsdk.imgseg.MLImageSegmentation;
import com.mindspore.hms.R;

public class MLSegmentGraphic extends GraphicOverlay.Graphic {
private static final String TAG = MLSegmentGraphic.class.getSimpleName();
@@ -36,12 +31,8 @@ public class MLSegmentGraphic extends GraphicOverlay.Graphic {
private final Bitmap bitmapForeground;
private final Boolean isFront;

private final Bitmap mDstBitmap;
private final Context context;

public MLSegmentGraphic(Context context, LensEnginePreview preview, GraphicOverlay overlay, MLImageSegmentation segmentation, Boolean isFront) {
public MLSegmentGraphic(LensEnginePreview preview, GraphicOverlay overlay, MLImageSegmentation segmentation, Boolean isFront) {
super(overlay);
this.context = context;
this.bitmapForeground = segmentation.getForeground();
this.isFront = isFront;

@@ -49,25 +40,14 @@ public class MLSegmentGraphic extends GraphicOverlay.Graphic {
int height = bitmapForeground.getHeight();
int div = overlay.getWidth() - preview.getWidth();
int left = overlay.getWidth() - width + div / 2;

// Set the image display area.
// Partial display.
mDestRect = new Rect(left, 0, overlay.getWidth() - div / 2, height / 2);

// All display.
// mDestRect = new Rect(0, 0, overlay.getWidth(), overlay.getHeight());
this.resultPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
this.resultPaint.setFilterBitmap(true);
this.resultPaint.setDither(true);

mDstBitmap = Bitmap.createBitmap(mDestRect.width(), mDestRect.height(), Bitmap.Config.ARGB_8888).copy(Bitmap.Config.ARGB_8888, true);
mDstBitmap.eraseColor(Color.parseColor("#FF0000"));//填充颜色

}

@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(mDstBitmap, null, mDestRect, resultPaint);
canvas.drawBitmap(isFront ? convert(bitmapForeground) : bitmapForeground, null, mDestRect, resultPaint);
}



+ 0
- 6
model_zoo/official/lite/MindSpore_inhand/hms/src/main/java/com/mindspore/hms/textrecognition/TextRecognitionActivity.java View File

@@ -39,7 +39,6 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.Glide;
import com.huawei.hmf.tasks.OnFailureListener;
import com.huawei.hmf.tasks.OnSuccessListener;
@@ -124,11 +123,6 @@ public class TextRecognitionActivity extends AppCompatActivity {
textOriginImage.setVisibility(View.GONE);
}


public void onClickRealTime(View view) {
ARouter.getInstance().build("/hms/VideoTextRecognitionActivity").navigation();
}

private void openGallay(int request) {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save