| @@ -81,3 +81,4 @@ local.properties | |||||
| sdk/build | sdk/build | ||||
| sdk/.cxx | sdk/.cxx | ||||
| app/.cxx | app/.cxx | ||||
| /mindsporelibrary/mindspore/ | |||||
| @@ -0,0 +1,27 @@ | |||||
| { | |||||
| "agcgw_all": { | |||||
| "CN": "connect-drcn.hispace.hicloud.com", | |||||
| "CN_back": "connect-drcn.dbankcloud.cn", | |||||
| "DE": "connect-dre.hispace.hicloud.com", | |||||
| "DE_back": "connect-dre.dbankcloud.cn", | |||||
| "RU": "connect-drru.hispace.hicloud.com", | |||||
| "RU_back": "connect-drru.dbankcloud.cn", | |||||
| "SG": "connect-dra.hispace.hicloud.com", | |||||
| "SG_back": "connect-dra.dbankcloud.cn" | |||||
| }, | |||||
| "client": { | |||||
| "cp_id": "70086000024868540", | |||||
| "product_id": "736430079244810681", | |||||
| "client_id": "557075911736832640", | |||||
| "client_secret": "29E859D6D21E08CB492E2B824423F2AE0C1B22140CF6D2029ED0B82BC74B3A67", | |||||
| "project_id": "736430079244810681", | |||||
| "app_id": "103836135", | |||||
| "api_key": "CgB6e3x9ss3nul/jhX9/4Y54MU0plgs6E1bW5SY8YQnq/uWhQHRxVGTf5Jl9f5NjRpvl0QV3Ft9sPihQ/PSL6RjC", | |||||
| "package_name": "com.mindspore.himindspore" | |||||
| }, | |||||
| "configuration_version": "2.0", | |||||
| "appInfos": [{ | |||||
| "package_name": "com.mindspore.himindspore", | |||||
| "app_id": "103836135" | |||||
| }] | |||||
| } | |||||
| @@ -1,4 +1,5 @@ | |||||
| apply plugin: 'com.android.application' | apply plugin: 'com.android.application' | ||||
| apply plugin: 'com.huawei.agconnect' | |||||
| android { | android { | ||||
| compileSdkVersion 30 | compileSdkVersion 30 | ||||
| buildToolsVersion "30.0.1" | buildToolsVersion "30.0.1" | ||||
| @@ -7,8 +8,8 @@ android { | |||||
| applicationId "com.mindspore.himindspore" | applicationId "com.mindspore.himindspore" | ||||
| minSdkVersion 21 | minSdkVersion 21 | ||||
| targetSdkVersion 30 | targetSdkVersion 30 | ||||
| versionCode 11 | |||||
| versionName "1.2.4" | |||||
| versionCode 14 | |||||
| versionName "1.2.7" | |||||
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||
| javaCompileOptions { | javaCompileOptions { | ||||
| @@ -74,10 +75,9 @@ dependencies { | |||||
| annotationProcessor 'com.alibaba:arouter-compiler:1.5.1' | annotationProcessor 'com.alibaba:arouter-compiler:1.5.1' | ||||
| implementation 'pub.devrel:easypermissions:3.0.0' | implementation 'pub.devrel:easypermissions:3.0.0' | ||||
| implementation project(':posenet') | |||||
| implementation project(':common') | implementation project(':common') | ||||
| implementation project(':customView') | implementation project(':customView') | ||||
| implementation project(':imageObject') | implementation project(':imageObject') | ||||
| implementation project(':styletransfer') | implementation project(':styletransfer') | ||||
| implementation project(':segmentation') | |||||
| implementation project(':hms') | |||||
| } | } | ||||
| @@ -19,12 +19,7 @@ | |||||
| # If you keep the line number information, uncomment this to | # If you keep the line number information, uncomment this to | ||||
| # hide the original source file name. | # hide the original source file name. | ||||
| #-renamesourcefileattribute SourceFile | #-renamesourcefileattribute SourceFile | ||||
| -keep class cn.sharesdk.**{*;} | |||||
| -keep class com.sina.**{*;} | |||||
| -keep class **.R$* {*;} | -keep class **.R$* {*;} | ||||
| -keep class **.R{*;} | |||||
| -keep class com.mob.**{*;} | |||||
| -keep class m.framework.**{*;} | |||||
| -dontwarn cn.sharesdk.** | -dontwarn cn.sharesdk.** | ||||
| -dontwarn com.sina.** | -dontwarn com.sina.** | ||||
| -dontwarn com.mob.** | -dontwarn com.mob.** | ||||
| @@ -16,16 +16,80 @@ | |||||
| <application | <application | ||||
| android:name=".base.MyApplication" | android:name=".base.MyApplication" | ||||
| android:allowBackup="true" | android:allowBackup="true" | ||||
| android:icon="@mipmap/ic_launcher" | |||||
| android:icon="@mipmap/ic_launchers" | |||||
| android:label="@string/app_name" | android:label="@string/app_name" | ||||
| android:requestLegacyExternalStorage="true" | android:requestLegacyExternalStorage="true" | ||||
| android:roundIcon="@mipmap/ic_launcher_round" | |||||
| android:roundIcon="@mipmap/ic_launchers_round" | |||||
| android:supportsRtl="true" | android:supportsRtl="true" | ||||
| android:theme="@style/AppTheme" | android:theme="@style/AppTheme" | ||||
| android:usesCleartextTraffic="true" | |||||
| tools:replace="android:label"> | tools:replace="android:label"> | ||||
| <activity | |||||
| 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" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".ui.poetry.IntelligentPoetryWritingActivity" | |||||
| android:configChanges="keyboardHidden|orientation|screenSize|screenSize" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".ui.poetry.PoetryPosterActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | <activity | ||||
| android:name=".ui.main.PrivacyPolicyActivity" | android:name=".ui.main.PrivacyPolicyActivity" | ||||
| android:screenOrientation="portrait"></activity> | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | <activity | ||||
| android:name=".ui.main.MainActivity" | android:name=".ui.main.MainActivity" | ||||
| android:screenOrientation="portrait" | android:screenOrientation="portrait" | ||||
| @@ -41,7 +105,6 @@ | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar"> | android:theme="@style/Theme.AppCompat.NoActionBar"> | ||||
| <intent-filter> | <intent-filter> | ||||
| <action android:name="android.intent.action.MAIN" /> | <action android:name="android.intent.action.MAIN" /> | ||||
| <category android:name="android.intent.category.LAUNCHER" /> | <category android:name="android.intent.category.LAUNCHER" /> | ||||
| </intent-filter> | </intent-filter> | ||||
| </activity> | </activity> | ||||
| @@ -28,7 +28,7 @@ import retrofit2.converter.gson.GsonConverterFactory; | |||||
| public class RetrofitHelper { | public class RetrofitHelper { | ||||
| public static final String MS_BASE_HOST = "https://download.mindspore.cn/model_zoo/official/lite/apk/"; | public static final String MS_BASE_HOST = "https://download.mindspore.cn/model_zoo/official/lite/apk/"; | ||||
| private RetrofitService retrofitService; | |||||
| private final RetrofitService retrofitService; | |||||
| public RetrofitHelper() { | public RetrofitHelper() { | ||||
| @@ -30,7 +30,7 @@ import androidx.fragment.app.Fragment; | |||||
| import androidx.recyclerview.widget.LinearLayoutManager; | import androidx.recyclerview.widget.LinearLayoutManager; | ||||
| import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||
| import com.mindspore.common.config.MSLinkUtils; | |||||
| import com.alibaba.android.arouter.launcher.ARouter; | |||||
| import com.mindspore.common.sp.Preferences; | import com.mindspore.common.sp.Preferences; | ||||
| import com.mindspore.common.utils.Utils; | import com.mindspore.common.utils.Utils; | ||||
| import com.mindspore.customview.dialog.NoticeDialog; | import com.mindspore.customview.dialog.NoticeDialog; | ||||
| @@ -140,19 +140,19 @@ public class CollegeFragment extends Fragment implements CollegeItemAdapter.Coll | |||||
| prefs.edit().putBoolean(Preferences.KEY_COLLEGE_CLOUD, true).apply(); | prefs.edit().putBoolean(Preferences.KEY_COLLEGE_CLOUD, true).apply(); | ||||
| collegeDataList.get(1).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_CLOUD, false)); | collegeDataList.get(1).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_CLOUD, false)); | ||||
| collegeItemAdapter.notifyData(); | collegeItemAdapter.notifyData(); | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.COLLEGE_MAIN_CLOUD); | |||||
| ARouter.getInstance().build("/app/CollegeOneHourActivity").navigation(); | |||||
| break; | break; | ||||
| case 3: | case 3: | ||||
| prefs.edit().putBoolean(Preferences.KEY_COLLEGE_FAQ, true).apply(); | prefs.edit().putBoolean(Preferences.KEY_COLLEGE_FAQ, true).apply(); | ||||
| collegeDataList.get(3).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_FAQ, false)); | collegeDataList.get(3).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_FAQ, false)); | ||||
| collegeItemAdapter.notifyData(); | collegeItemAdapter.notifyData(); | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.COLLEGE_MAIN_FAQ); | |||||
| ARouter.getInstance().build("/app/CollegeFAQActivity").navigation(); | |||||
| break; | break; | ||||
| case 4: | case 4: | ||||
| prefs.edit().putBoolean(Preferences.KEY_COLLEGE_ASK, true).apply(); | prefs.edit().putBoolean(Preferences.KEY_COLLEGE_ASK, true).apply(); | ||||
| collegeDataList.get(4).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_ASK, false)); | collegeDataList.get(4).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_ASK, false)); | ||||
| collegeItemAdapter.notifyData(); | collegeItemAdapter.notifyData(); | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.COLLEGE_MAIN_ASK); | |||||
| ARouter.getInstance().build("/app/CollegeForumActivity").navigation(); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -167,6 +167,14 @@ public class CollegeFragment extends Fragment implements CollegeItemAdapter.Coll | |||||
| prefs.edit().putBoolean(Preferences.KEY_COLLEGE_QUICK, isHasCheckedTrain && isHasCheckedExecute && isHasCheckedApp && isHasCheckedVideo).apply(); | prefs.edit().putBoolean(Preferences.KEY_COLLEGE_QUICK, isHasCheckedTrain && isHasCheckedExecute && isHasCheckedApp && isHasCheckedVideo).apply(); | ||||
| collegeDataList.get(2).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_QUICK, false)); | collegeDataList.get(2).setHasChecked(prefs.getBoolean(Preferences.KEY_COLLEGE_QUICK, false)); | ||||
| collegeItemAdapter.notifyData(); | collegeItemAdapter.notifyData(); | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.COLLEGE_QUICK_WEB_ARRAY[position]); | |||||
| if (position == 0) { | |||||
| ARouter.getInstance().build("/app/CollegeTrainingmodelActivity").navigation(); | |||||
| } else if (position == 1) { | |||||
| ARouter.getInstance().build("/app/CollegePerformReasoningActivity").navigation(); | |||||
| } else if (position == 2) { | |||||
| ARouter.getInstance().build("/app/CollegeBrokensideActivity").navigation(); | |||||
| } else if (position == 3) { | |||||
| ARouter.getInstance().build("/app/CollegeReferencevideoActivity").navigation(); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -27,8 +27,6 @@ import androidx.fragment.app.Fragment; | |||||
| import com.alibaba.android.arouter.facade.annotation.Route; | import com.alibaba.android.arouter.facade.annotation.Route; | ||||
| import com.alibaba.android.arouter.launcher.ARouter; | import com.alibaba.android.arouter.launcher.ARouter; | ||||
| import com.mindspore.common.config.MSLinkUtils; | |||||
| import com.mindspore.common.utils.Utils; | |||||
| import com.mindspore.himindspore.R; | import com.mindspore.himindspore.R; | ||||
| /** | /** | ||||
| @@ -70,9 +68,12 @@ public class VisionFragment extends Fragment implements View.OnClickListener { | |||||
| view.findViewById(R.id.btn_style_transfer).setOnClickListener(this); //onClickStyleTransfer | view.findViewById(R.id.btn_style_transfer).setOnClickListener(this); //onClickStyleTransfer | ||||
| view.findViewById(R.id.btn_segmentation).setOnClickListener(this); //onClickSegmentation | view.findViewById(R.id.btn_segmentation).setOnClickListener(this); //onClickSegmentation | ||||
| view.findViewById(R.id.btn_image).setOnClickListener(this); //onClickImage | view.findViewById(R.id.btn_image).setOnClickListener(this); //onClickImage | ||||
| view.findViewById(R.id.btn_image_garbage).setOnClickListener(this); //onClickGarbage | |||||
| view.findViewById(R.id.btn_scene).setOnClickListener(this); //onClickSceneDetection | view.findViewById(R.id.btn_scene).setOnClickListener(this); //onClickSceneDetection | ||||
| view.findViewById(R.id.btn_image_Intelligent_poetry).setOnClickListener(this); //onClickIntelligentPoetry | 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 | |||||
| view.findViewById(R.id.btn_texttranslation).setOnClickListener(this); //onClickTextTranslation | |||||
| } | } | ||||
| @@ -87,30 +88,34 @@ public class VisionFragment extends Fragment implements View.OnClickListener { | |||||
| ARouter.getInstance().build("/imageobject/ObjectCameraActivity").navigation(); | ARouter.getInstance().build("/imageobject/ObjectCameraActivity").navigation(); | ||||
| break; | break; | ||||
| case R.id.btn_posenet: | case R.id.btn_posenet: | ||||
| ARouter.getInstance().build("/posenet/PosenetMainActivity").navigation(); | |||||
| ARouter.getInstance().build("/hms/PosenetMainActivitys").navigation(); | |||||
| break; | break; | ||||
| case R.id.btn_style_transfer: | case R.id.btn_style_transfer: | ||||
| ARouter.getInstance().build("/styletransfer/StyleMainActivity").navigation(); | ARouter.getInstance().build("/styletransfer/StyleMainActivity").navigation(); | ||||
| break; | break; | ||||
| case R.id.btn_segmentation: | case R.id.btn_segmentation: | ||||
| ARouter.getInstance().build("/segmentation/SegmentationMainActivity").navigation(); | |||||
| ARouter.getInstance().build("/hms/PortraitSegmentationActivity").navigation(); | |||||
| // ARouter.getInstance().build("/hms/ImageSegmentationLiveAnalyseActivity").navigation(); | |||||
| // ARouter.getInstance().build("/hms/ImageSegmentationActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.btn_image: | case R.id.btn_image: | ||||
| ARouter.getInstance().build("/imageobject/ImageCameraActivity") | |||||
| .withInt("OPEN_TYPE", 1).navigation(); | |||||
| break; | |||||
| case R.id.btn_image_garbage: | |||||
| ARouter.getInstance().build("/imageobject/ImageCameraActivity") | |||||
| .withInt("OPEN_TYPE", 2).navigation(); | |||||
| ARouter.getInstance().build("/imageobject/ImageCameraActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.btn_scene: | case R.id.btn_scene: | ||||
| ARouter.getInstance().build("/imageobject/ImageCameraActivity") | |||||
| .withInt("OPEN_TYPE", 3).navigation(); | |||||
| ARouter.getInstance().build("/hms/SenceDetectionStillAnalyseActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.btn_image_Intelligent_poetry: | case R.id.btn_image_Intelligent_poetry: | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.HELP_INTELLIGENT_POETRY); | |||||
| ARouter.getInstance().build("/app/IntelligentPoetryWritingActivity").navigation(); | |||||
| break; | |||||
| case R.id.btn_text_recognition: | |||||
| ARouter.getInstance().build("/hms/TextRecognitionActivity").navigation(); | |||||
| break; | |||||
| case R.id.btn_gesture: | |||||
| ARouter.getInstance().build("/hms/StillHandGestureAnalyseActivity").navigation(); | |||||
| break; | |||||
| case R.id.btn_texttranslation: | |||||
| ARouter.getInstance().build("/hms/TextTranslationActivity").navigation(); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -17,8 +17,8 @@ package com.mindspore.himindspore.ui.guide; | |||||
| import android.Manifest; | import android.Manifest; | ||||
| import android.content.Intent; | import android.content.Intent; | ||||
| import android.content.SharedPreferences; | |||||
| import android.graphics.Color; | import android.graphics.Color; | ||||
| import android.content.SharedPreferences; | |||||
| import android.net.Uri; | import android.net.Uri; | ||||
| import android.preference.PreferenceManager; | import android.preference.PreferenceManager; | ||||
| import android.provider.Settings; | import android.provider.Settings; | ||||
| @@ -52,7 +52,6 @@ import pub.devrel.easypermissions.AfterPermissionGranted; | |||||
| import pub.devrel.easypermissions.AppSettingsDialog; | import pub.devrel.easypermissions.AppSettingsDialog; | ||||
| import pub.devrel.easypermissions.EasyPermissions; | import pub.devrel.easypermissions.EasyPermissions; | ||||
| public class SplashActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks { | public class SplashActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks { | ||||
| private static final String TAG = "SplashActivity"; | private static final String TAG = "SplashActivity"; | ||||
| @@ -70,6 +69,7 @@ public class SplashActivity extends BaseActivity implements EasyPermissions.Perm | |||||
| private TextView mTv_protocol; | private TextView mTv_protocol; | ||||
| private PopupWindow mPopupW; | private PopupWindow mPopupW; | ||||
| private boolean isLoadindFinish = false; | |||||
| @Override | @Override | ||||
| protected void init() { | protected void init() { | ||||
| cdvTime = findViewById(R.id.cdv_time); | cdvTime = findViewById(R.id.cdv_time); | ||||
| @@ -80,11 +80,17 @@ public class SplashActivity extends BaseActivity implements EasyPermissions.Perm | |||||
| private void initCountDownView() { | private void initCountDownView() { | ||||
| cdvTime.setTime(3); | cdvTime.setTime(3); | ||||
| cdvTime.start(); | cdvTime.start(); | ||||
| cdvTime.setOnLoadingFinishListener(() -> check()); | |||||
| cdvTime.setOnClickListener(view -> { | |||||
| cdvTime.setOnLoadingFinishListener(() -> { | |||||
| cdvTime.stop(); | cdvTime.stop(); | ||||
| isLoadindFinish= true; | |||||
| check(); | check(); | ||||
| }); | }); | ||||
| cdvTime.setOnClickListener(view -> { | |||||
| if (!isLoadindFinish) { | |||||
| cdvTime.stop(); | |||||
| check(); | |||||
| } | |||||
| }); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -96,7 +102,7 @@ public class SplashActivity extends BaseActivity implements EasyPermissions.Perm | |||||
| @AfterPermissionGranted(REQUEST_PERMISSION) | @AfterPermissionGranted(REQUEST_PERMISSION) | ||||
| private void startPermissionsTask() { | private void startPermissionsTask() { | ||||
| if (hasPermissions()) { | if (hasPermissions()) { | ||||
| setHandler(); | |||||
| enterMainView(); | |||||
| } else { | } else { | ||||
| EasyPermissions.requestPermissions(this, | EasyPermissions.requestPermissions(this, | ||||
| this.getResources().getString(R.string.app_need_permission), | this.getResources().getString(R.string.app_need_permission), | ||||
| @@ -132,7 +138,7 @@ public class SplashActivity extends BaseActivity implements EasyPermissions.Perm | |||||
| public void onActivityResult(int requestCode, int resultCode, Intent data) { | public void onActivityResult(int requestCode, int resultCode, Intent data) { | ||||
| super.onActivityResult(requestCode, resultCode, data); | super.onActivityResult(requestCode, resultCode, data); | ||||
| if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) { | if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) { | ||||
| setHandler(); | |||||
| enterMainView(); | |||||
| } | } | ||||
| } | } | ||||
| @@ -161,9 +167,6 @@ public class SplashActivity extends BaseActivity implements EasyPermissions.Perm | |||||
| return super.onKeyDown(keyCode, event); | return super.onKeyDown(keyCode, event); | ||||
| } | } | ||||
| private void setHandler() { | |||||
| enterMainView(); | |||||
| } | |||||
| private void enterMainView() { | private void enterMainView() { | ||||
| Intent intent = new Intent(); | Intent intent = new Intent(); | ||||
| @@ -223,7 +223,7 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon | |||||
| progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); | progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); | ||||
| progressDialog.setTitle(getResources().getString(R.string.app_is_loading)); | progressDialog.setTitle(getResources().getString(R.string.app_is_loading)); | ||||
| progressDialog.setMessage(getResources().getString(R.string.app_wait)); | progressDialog.setMessage(getResources().getString(R.string.app_wait)); | ||||
| progressDialog.setProgressNumberFormat("%1d Mb/%2d Mb"); | |||||
| // progressDialog.setProgressNumberFormat("%1d Mb/%2d Mb"); | |||||
| progressDialog.setProgress(0); | progressDialog.setProgress(0); | ||||
| progressDialog.show(); | progressDialog.show(); | ||||
| presenter.downloadApk(getApkPath(), "MindSpore_inhand.apk", new FileDownLoadObserver<File>() { | presenter.downloadApk(getApkPath(), "MindSpore_inhand.apk", new FileDownLoadObserver<File>() { | ||||
| @@ -240,7 +240,7 @@ public class MainActivity extends BaseActivity<MainPresenter> implements MainCon | |||||
| @Override | @Override | ||||
| public void onProgress(final int progress, final long total) { | public void onProgress(final int progress, final long total) { | ||||
| runOnUiThread(() -> { | runOnUiThread(() -> { | ||||
| progressDialog.setMax((int) total / 1024 / 1024); | |||||
| // progressDialog.setMax((int) total / 1024 / 1024); | |||||
| progressDialog.setProgress(progress); | progressDialog.setProgress(progress); | ||||
| }); | }); | ||||
| @@ -17,32 +17,55 @@ package com.mindspore.himindspore.ui.main; | |||||
| import android.os.Bundle; | import android.os.Bundle; | ||||
| import android.view.View; | import android.view.View; | ||||
| import android.webkit.WebChromeClient; | |||||
| import android.webkit.WebSettings; | import android.webkit.WebSettings; | ||||
| import android.webkit.WebView; | import android.webkit.WebView; | ||||
| import android.widget.ProgressBar; | |||||
| import androidx.appcompat.app.AppCompatActivity; | 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.common.config.MSLinkUtils; | ||||
| import com.mindspore.himindspore.R; | import com.mindspore.himindspore.R; | ||||
| @Route(path = "/app/PrivacyPolicyActivity") | |||||
| public class PrivacyPolicyActivity extends AppCompatActivity { | public class PrivacyPolicyActivity extends AppCompatActivity { | ||||
| private static final String TAG = PrivacyPolicyActivity.class.getSimpleName(); | private static final String TAG = PrivacyPolicyActivity.class.getSimpleName(); | ||||
| private WebView mWebView; | private WebView mWebView; | ||||
| private ProgressBar progressBar; | |||||
| @Override | @Override | ||||
| protected void onCreate(Bundle savedInstanceState) { | protected void onCreate(Bundle savedInstanceState) { | ||||
| super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
| setContentView(R.layout.activity_privacy_policy); | setContentView(R.layout.activity_privacy_policy); | ||||
| initView(); | initView(); | ||||
| } | } | ||||
| private void initView() { | private void initView() { | ||||
| findViewById(R.id.w_back).setOnClickListener(v -> finish()); | |||||
| progressBar = findViewById(R.id.progress); | |||||
| Toolbar mToolbar = findViewById(R.id.brokenside_toolbar); | |||||
| mToolbar.setNavigationOnClickListener(view -> finish()); | |||||
| mWebView = findViewById(R.id.mWebView); | mWebView = findViewById(R.id.mWebView); | ||||
| WebSettings wSet = mWebView.getSettings(); | WebSettings wSet = mWebView.getSettings(); | ||||
| wSet.setJavaScriptEnabled(true); | wSet.setJavaScriptEnabled(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); | |||||
| } | |||||
| } | |||||
| }); | |||||
| mWebView.loadUrl(MSLinkUtils.USER_PRIVACY_RULES); | mWebView.loadUrl(MSLinkUtils.USER_PRIVACY_RULES); | ||||
| } | } | ||||
| @@ -28,10 +28,9 @@ import androidx.annotation.NonNull; | |||||
| import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
| import androidx.fragment.app.Fragment; | import androidx.fragment.app.Fragment; | ||||
| import com.alibaba.android.arouter.launcher.ARouter; | |||||
| import com.mindspore.common.config.MSLinkUtils; | import com.mindspore.common.config.MSLinkUtils; | ||||
| import com.mindspore.common.utils.Utils; | |||||
| import com.mindspore.himindspore.R; | import com.mindspore.himindspore.R; | ||||
| import com.mindspore.himindspore.ui.main.PrivacyPolicyActivity; | |||||
| public class MeFragment extends Fragment implements View.OnClickListener { | public class MeFragment extends Fragment implements View.OnClickListener { | ||||
| @@ -57,6 +56,7 @@ public class MeFragment extends Fragment implements View.OnClickListener { | |||||
| view.findViewById(R.id.rl_me_qa).setOnClickListener(this); | view.findViewById(R.id.rl_me_qa).setOnClickListener(this); | ||||
| view.findViewById(R.id.rl_me_version).setOnClickListener(this); | view.findViewById(R.id.rl_me_version).setOnClickListener(this); | ||||
| view.findViewById(R.id.me_user_protocol).setOnClickListener(this); | view.findViewById(R.id.me_user_protocol).setOnClickListener(this); | ||||
| view.findViewById(R.id.rl_me_qr_code).setOnClickListener(this); | |||||
| showPackageInfo(); | showPackageInfo(); | ||||
| } | } | ||||
| @@ -88,19 +88,22 @@ public class MeFragment extends Fragment implements View.OnClickListener { | |||||
| onClickShare(); | onClickShare(); | ||||
| break; | break; | ||||
| case R.id.rl_me_thumbsup: | case R.id.rl_me_thumbsup: | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.ME_STAR_URL); | |||||
| ARouter.getInstance().build("/app/MeThumbsupActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.rl_me_official: | case R.id.rl_me_official: | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.BASE_URL); | |||||
| ARouter.getInstance().build("/app/MeOfficialwebsiteActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.rl_me_official_code: | case R.id.rl_me_official_code: | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.ME_CODE_URL); | |||||
| ARouter.getInstance().build("/app/MeCodeRepositoryActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.rl_me_qa: | case R.id.rl_me_qa: | ||||
| Utils.openBrowser(getActivity(), MSLinkUtils.ME_HELP_URL); | |||||
| ARouter.getInstance().build("/app/MeProblemFeedbackActivity").navigation(); | |||||
| break; | break; | ||||
| case R.id.me_user_protocol: | case R.id.me_user_protocol: | ||||
| startActivity(new Intent(getContext(), PrivacyPolicyActivity.class)); | |||||
| ARouter.getInstance().build("/app/PrivacyPolicyActivity").navigation(); | |||||
| break; | |||||
| case R.id.rl_me_qr_code: | |||||
| ARouter.getInstance().build("/app/MyQRCodeActivity").navigation(); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,131 @@ | |||||
| package com.mindspore.himindspore.ui.me; | |||||
| import android.content.ContentResolver; | |||||
| import android.content.Context; | |||||
| import android.graphics.Bitmap; | |||||
| import android.graphics.drawable.BitmapDrawable; | |||||
| import android.os.Bundle; | |||||
| import android.os.Environment; | |||||
| import android.provider.MediaStore; | |||||
| import android.util.DisplayMetrics; | |||||
| import android.util.Log; | |||||
| import android.view.Gravity; | |||||
| import android.view.LayoutInflater; | |||||
| import android.view.Menu; | |||||
| import android.view.MenuItem; | |||||
| import android.view.View; | |||||
| import android.view.WindowManager; | |||||
| import android.widget.ImageView; | |||||
| import android.widget.PopupWindow; | |||||
| import android.widget.RelativeLayout; | |||||
| import android.widget.Toast; | |||||
| import androidx.appcompat.app.AppCompatActivity; | |||||
| import androidx.appcompat.widget.Toolbar; | |||||
| import com.alibaba.android.arouter.facade.annotation.Route; | |||||
| import com.mindspore.himindspore.R; | |||||
| @Route(path = "/app/MyQRCodeActivity") | |||||
| public class MyQRCodeActivity extends AppCompatActivity { | |||||
| private static final String TAG = "MyQRCodeActivity"; | |||||
| private PopupWindow popupWindow; | |||||
| private View save_and_cancels_image; | |||||
| private RelativeLayout mMy_layout; | |||||
| private ImageView mQr_code_image; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_my_qr_code); | |||||
| init(); | |||||
| } | |||||
| private void init() { | |||||
| Toolbar mToolbar = findViewById(R.id.segmentation_toolbar); | |||||
| setSupportActionBar(mToolbar); | |||||
| mToolbar.setNavigationOnClickListener(view -> finish()); | |||||
| mMy_layout = (RelativeLayout) findViewById(R.id.my_relativelayout); | |||||
| mQr_code_image = findViewById(R.id.img_origin); | |||||
| } | |||||
| @Override | |||||
| public boolean onCreateOptionsMenu(Menu menu) { | |||||
| Log.i(TAG, "onCreateOptionsMenu info"); | |||||
| getMenuInflater().inflate(R.menu.menu_setting_qr, menu); | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public boolean onOptionsItemSelected(MenuItem item) { | |||||
| findViewById(R.id.item_more_qr).setOnClickListener(new View.OnClickListener() { | |||||
| @Override | |||||
| public void onClick(View v) { | |||||
| LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |||||
| save_and_cancels_image = layoutInflater.inflate(R.layout.save_qr_code_popupwindo, null); | |||||
| DisplayMetrics dm = new DisplayMetrics(); | |||||
| getWindowManager().getDefaultDisplay().getMetrics(dm); | |||||
| popupWindow = new PopupWindow(save_and_cancels_image, dm.widthPixels, WindowManager.LayoutParams.WRAP_CONTENT); | |||||
| popupWindow.setAnimationStyle(R.style.anims); | |||||
| popupWindow.setFocusable(true); | |||||
| popupWindow.setOutsideTouchable(true); | |||||
| popupWindow.setBackgroundDrawable(new BitmapDrawable()); | |||||
| backgroundAlpha(0.5f); | |||||
| popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { | |||||
| @Override | |||||
| public void onDismiss() { | |||||
| backgroundAlpha(1f); | |||||
| } | |||||
| }); | |||||
| popupWindow.showAtLocation(mMy_layout, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); | |||||
| save_and_cancels_image.findViewById(R.id.my_save_picture).setOnClickListener(new View.OnClickListener() { | |||||
| @Override | |||||
| public void onClick(View v) { | |||||
| SaveImageToSysAlbum(); | |||||
| } | |||||
| }); | |||||
| save_and_cancels_image.findViewById(R.id.my_cancel).setOnClickListener(new View.OnClickListener() { | |||||
| @Override | |||||
| public void onClick(View v) { | |||||
| popupWindow.dismiss(); | |||||
| } | |||||
| }); | |||||
| } | |||||
| }); | |||||
| return super.onOptionsItemSelected(item); | |||||
| } | |||||
| public void backgroundAlpha(float bgAlpha) { | |||||
| WindowManager.LayoutParams lp = getWindow().getAttributes(); | |||||
| lp.alpha = bgAlpha; | |||||
| getWindow().setAttributes(lp); | |||||
| } | |||||
| private void SaveImageToSysAlbum() { | |||||
| if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { | |||||
| mQr_code_image.setDrawingCacheEnabled(true); | |||||
| mQr_code_image.buildDrawingCache(); | |||||
| Bitmap bitmap = Bitmap.createBitmap(mQr_code_image.getDrawingCache()); | |||||
| if (bitmap != null) { | |||||
| try { | |||||
| ContentResolver cr = getContentResolver(); | |||||
| String url = MediaStore.Images.Media.insertImage(cr, bitmap, | |||||
| String.valueOf(System.currentTimeMillis()), ""); | |||||
| Toast.makeText(this.getApplicationContext(), R.string.save_success, Toast.LENGTH_SHORT).show(); | |||||
| popupWindow.dismiss(); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } else { | |||||
| Toast.makeText(this.getApplicationContext(), R.string.save_failure, Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| } else { | |||||
| Toast.makeText(this.getApplicationContext(), R.string.save_success, Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,92 @@ | |||||
| /** | |||||
| * 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.poetry; | |||||
| import android.annotation.SuppressLint; | |||||
| import android.content.Intent; | |||||
| import android.os.Build; | |||||
| import android.os.Bundle; | |||||
| import android.util.Log; | |||||
| import android.view.View; | |||||
| import android.webkit.JavascriptInterface; | |||||
| import android.webkit.WebChromeClient; | |||||
| import android.webkit.WebSettings; | |||||
| import android.webkit.WebView; | |||||
| 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/IntelligentPoetryWritingActivity") | |||||
| public class IntelligentPoetryWritingActivity extends AppCompatActivity { | |||||
| private WebView mWebView; | |||||
| private ProgressBar progressBar; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_intelligent_poetry_writing); | |||||
| progressBar = findViewById(R.id.progress); | |||||
| initView(); | |||||
| } | |||||
| @SuppressLint("JavascriptInterface") | |||||
| private void initView() { | |||||
| findViewById(R.id.w_back).setOnClickListener(v -> finish()); | |||||
| mWebView = findViewById(R.id.mWebView); | |||||
| WebSettings wSet = mWebView.getSettings(); | |||||
| wSet.setJavaScriptEnabled(true); | |||||
| wSet.setDomStorageEnabled(true); | |||||
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
| mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); | |||||
| } | |||||
| 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); | |||||
| } | |||||
| } | |||||
| }); | |||||
| // mWebView.loadUrl("http://114.116.235.161/resources/tech/nlp/poetry"); | |||||
| mWebView.loadUrl(MSLinkUtils.HELP_INTELLIGENT_POETRY); | |||||
| mWebView.addJavascriptInterface(IntelligentPoetryWritingActivity.this,"android"); | |||||
| } | |||||
| @JavascriptInterface | |||||
| public void getGeneratePoetry(final String text){ | |||||
| Intent intent = new Intent(IntelligentPoetryWritingActivity.this,PoetryPosterActivity.class); | |||||
| intent.putExtra("POEM",text); | |||||
| startActivity(intent); | |||||
| } | |||||
| @Override | |||||
| protected void onDestroy() { | |||||
| super.onDestroy(); | |||||
| mWebView.removeAllViews(); | |||||
| mWebView.destroy(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,65 @@ | |||||
| /** | |||||
| * 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.poetry; | |||||
| import android.content.Intent; | |||||
| import android.net.Uri; | |||||
| import android.os.Bundle; | |||||
| import android.widget.Button; | |||||
| import android.widget.Toast; | |||||
| import androidx.appcompat.app.AppCompatActivity; | |||||
| import com.mindspore.common.utils.ImageUtils; | |||||
| import com.mindspore.himindspore.R; | |||||
| public class PoetryPosterActivity extends AppCompatActivity { | |||||
| private Button saveBtn, shareBtn; | |||||
| private PoetryView poetryView; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_poetry_poster); | |||||
| findViewById(R.id.w_back).setOnClickListener(v -> finish()); | |||||
| String poem = getIntent().getStringExtra("POEM"); | |||||
| saveBtn = findViewById(R.id.save_btn); | |||||
| shareBtn = findViewById(R.id.share_btn); | |||||
| poetryView = findViewById(R.id.top_layout); | |||||
| poetryView.setPoemText(poem); | |||||
| saveBtn.setOnClickListener(view -> { | |||||
| Uri imgPath = ImageUtils.saveToAlbum(PoetryPosterActivity.this, poetryView,null,false); | |||||
| if (imgPath != null) { | |||||
| Toast.makeText(PoetryPosterActivity.this, R.string.poem_save_success, Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| }); | |||||
| shareBtn.setOnClickListener(view -> { | |||||
| Uri imgPath = ImageUtils.saveToAlbum(PoetryPosterActivity.this, poetryView,"poemshare",false); | |||||
| Intent share_intent = new Intent(); | |||||
| share_intent.setAction(Intent.ACTION_SEND); | |||||
| share_intent.setType("image/*"); | |||||
| share_intent.putExtra(Intent.EXTRA_STREAM, imgPath); | |||||
| share_intent = Intent.createChooser(share_intent, getString(R.string.title_share)); | |||||
| startActivity(share_intent); | |||||
| }); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,52 @@ | |||||
| /** | |||||
| * 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.poetry; | |||||
| import android.content.Context; | |||||
| import android.graphics.Bitmap; | |||||
| import android.graphics.Canvas; | |||||
| import android.os.Build; | |||||
| import android.util.AttributeSet; | |||||
| import android.util.Log; | |||||
| import android.view.View; | |||||
| import android.widget.RelativeLayout; | |||||
| import android.widget.TextView; | |||||
| import com.mindspore.himindspore.R; | |||||
| public class PoetryView extends RelativeLayout { | |||||
| private final TextView poemText; | |||||
| public PoetryView(Context context) { | |||||
| this(context,null); | |||||
| } | |||||
| public PoetryView(Context context, AttributeSet attrs) { | |||||
| this(context, attrs,0); | |||||
| } | |||||
| public PoetryView(Context context, AttributeSet attrs, int defStyleAttr) { | |||||
| super(context, attrs, defStyleAttr); | |||||
| View view = View.inflate(context, R.layout.layout_poem,this); | |||||
| poemText =view.findViewById(R.id.poemContent); | |||||
| } | |||||
| public void setPoemText(String content){ | |||||
| poemText.setText(content); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,22 @@ | |||||
| 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,0 +1,80 @@ | |||||
| /** | |||||
| * 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,0 +1,81 @@ | |||||
| /** | |||||
| * 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,0 +1,81 @@ | |||||
| /** | |||||
| * 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,0 +1,81 @@ | |||||
| /** | |||||
| * 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,0 +1,81 @@ | |||||
| /** | |||||
| * 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,0 +1,81 @@ | |||||
| /** | |||||
| * 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,0 +1,84 @@ | |||||
| /** | |||||
| * 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,0 +1,80 @@ | |||||
| /** | |||||
| * 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,0 +1,82 @@ | |||||
| /** | |||||
| * 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,0 +1,82 @@ | |||||
| /** | |||||
| * 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,0 +1,82 @@ | |||||
| /** | |||||
| * 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(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,80 @@ | |||||
| /** | |||||
| * 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.mindspore.himindspore.R; | |||||
| public class WebViewUtilsActivity extends AppCompatActivity { | |||||
| private WebView mWebView; | |||||
| private ProgressBar progressBar; | |||||
| private final String mWebViewUtil = ""; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_web_view_utils); | |||||
| 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.setNavigationOnClickListener(view -> finish()); | |||||
| mWebView = findViewById(R.id.mWebView); | |||||
| 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); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| protected void onDestroy() { | |||||
| super.onDestroy(); | |||||
| mWebView.removeAllViews(); | |||||
| mWebView.destroy(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <translate xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| android:interpolator="@android:anim/accelerate_interpolator" | |||||
| android:duration="300" | |||||
| android:fromYDelta="100%" | |||||
| android:toXDelta="0"> | |||||
| </translate> | |||||
| @@ -0,0 +1,7 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <translate xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| android:interpolator="@android:anim/accelerate_interpolator" | |||||
| android:duration="300" | |||||
| android:fromYDelta="0" | |||||
| android:toYDelta="100%"> | |||||
| </translate> | |||||
| @@ -0,0 +1,15 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <selector xmlns:android="http://schemas.android.com/apk/res/android"> | |||||
| <item android:state_pressed="false" > | |||||
| <shape android:shape="rectangle"> | |||||
| <stroke android:width="1dp" android:color="@color/white" /> | |||||
| <solid android:color="@color/white" /> | |||||
| <!--<corners android:radius="30dip" />--> | |||||
| <corners android:topLeftRadius="20dip" | |||||
| android:topRightRadius="20dip" | |||||
| /> | |||||
| </shape> | |||||
| </item> | |||||
| </selector> | |||||
| @@ -0,0 +1,27 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | |||||
| <item android:id="@android:id/background"> | |||||
| <shape> | |||||
| <corners android:radius="2dp" /> | |||||
| <gradient | |||||
| android:angle="270" | |||||
| android:centerColor="#E3E3E3" | |||||
| android:endColor="#E6E6E6" | |||||
| android:startColor="#C8C8C8" /> | |||||
| </shape> | |||||
| </item> | |||||
| <item android:id="@android:id/progress"> | |||||
| <clip> | |||||
| <shape> | |||||
| <corners android:radius="2dp" /> | |||||
| <gradient | |||||
| android:centerColor="#4AEA2F" | |||||
| android:endColor="#31CE15" | |||||
| android:startColor="#5FEC46" /> | |||||
| </shape> | |||||
| </clip> | |||||
| </item> | |||||
| </layer-list> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeBrokensideActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/brokenside_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_broken_side" | |||||
| 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" /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeFAQActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/CollegeFAQActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_faq" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeForumActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/CollegeForumActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_forum" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeOneHourActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/OneHour_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_one_hour" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegePerformReasoningActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/perform_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_perform" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeReferencevideoActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/referencevideo_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_video" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,44 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.CollegeTrainingmodelActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/Trainingmodel_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/title_college_training" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" | |||||
| android:layerType="software" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,38 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| xmlns:tools="http://schemas.android.com/tools" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" | |||||
| android:layout_gravity="center_vertical" | |||||
| android:background="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.poetry.IntelligentPoetryWritingActivity"> | |||||
| <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:layout_marginTop="50dp" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_below="@id/progress" | |||||
| /> | |||||
| <ImageView | |||||
| android:id="@+id/w_back" | |||||
| android:layout_width="50dp" | |||||
| android:layout_height="18dp" | |||||
| android:layout_marginTop="16dp" | |||||
| android:src="@drawable/back" /> | |||||
| </RelativeLayout> | |||||
| @@ -0,0 +1,44 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="vertical" | |||||
| android:background="@color/white" | |||||
| tools:context=".ui.webview.MeCodeRepositoryActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/MeCodeRepositoryActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_official_code_title" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.MeOfficialwebsiteActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/MeOfficialwebsiteActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_official_title" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,44 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="vertical" | |||||
| android:background="@color/white" | |||||
| tools:context=".ui.webview.MeProblemFeedbackActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/MeProblemFeedbackActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_qa_title" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| /> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="vertical" | |||||
| android:background="@color/white" | |||||
| tools:context=".ui.webview.MeThumbsupActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/MeThumbsupActivity_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_up_title" | |||||
| 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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content"/> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,39 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <RelativeLayout 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/my_relativelayout" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" | |||||
| android:background="@color/white" | |||||
| tools:context=".ui.me.MyQRCodeActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/segmentation_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_my_qr_code" | |||||
| app:titleTextColor="@color/black" /> | |||||
| <View | |||||
| android:id="@+id/w_view" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="1dp" | |||||
| android:layout_below="@+id/segmentation_toolbar" | |||||
| android:background="@color/divider_gray" /> | |||||
| <ImageView | |||||
| android:id="@+id/img_origin" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_below="@id/segmentation_toolbar" | |||||
| android:layout_centerInParent="true" | |||||
| android:padding="50dp" | |||||
| android:src="@mipmap/my_qr_code" /> | |||||
| </RelativeLayout> | |||||
| @@ -0,0 +1,86 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| xmlns:tools="http://schemas.android.com/tools" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" | |||||
| android:background="@color/white" | |||||
| tools:context=".ui.poetry.PoetryPosterActivity"> | |||||
| <RelativeLayout | |||||
| android:id="@+id/w_linear" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:background="@color/white" | |||||
| android:orientation="horizontal"> | |||||
| <ImageView | |||||
| android:id="@+id/w_back" | |||||
| android:layout_width="50dp" | |||||
| android:layout_height="18dp" | |||||
| android:layout_marginTop="16dp" | |||||
| android:src="@drawable/back" /> | |||||
| <TextView | |||||
| android:id="@+id/w_title" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="54dp" | |||||
| android:gravity="center" | |||||
| android:text="@string/title_intelligent_poetry" | |||||
| android:textColor="@color/text_black" | |||||
| android:textSize="20sp" | |||||
| android:textStyle="bold" /> | |||||
| </RelativeLayout> | |||||
| <View | |||||
| android:id="@+id/w_view" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="1dp" | |||||
| android:layout_below="@+id/w_linear" | |||||
| android:background="@color/divider_gray" /> | |||||
| <com.mindspore.himindspore.ui.poetry.PoetryView | |||||
| android:id="@+id/top_layout" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_above="@+id/bottom_layout" | |||||
| android:layout_below="@+id/w_view" | |||||
| android:layout_marginStart="20dp" | |||||
| android:layout_marginEnd="20dp" | |||||
| android:layout_marginBottom="20dp" /> | |||||
| <LinearLayout | |||||
| android:id="@+id/bottom_layout" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_alignParentBottom="true" | |||||
| android:orientation="horizontal"> | |||||
| <Button | |||||
| android:layout_marginEnd="5dp" | |||||
| android:id="@+id/save_btn" | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_marginStart="30dp" | |||||
| android:layout_marginBottom="40dp" | |||||
| android:layout_weight="1" | |||||
| android:background="@drawable/item_bg_blue_rect" | |||||
| android:text="@string/poem_save_poster" | |||||
| android:textColor="@color/main_tab_text_checked" | |||||
| android:textSize="18sp" /> | |||||
| <Button | |||||
| android:layout_marginStart="5dp" | |||||
| android:layout_weight="1" | |||||
| android:id="@+id/share_btn" | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_marginEnd="30dp" | |||||
| android:layout_marginBottom="40dp" | |||||
| android:layout_toEndOf="@+id/save_btn" | |||||
| android:background="@drawable/item_bg_blue_rect" | |||||
| android:text="@string/poem_share_poster" | |||||
| android:textColor="@color/main_tab_text_checked" | |||||
| android:textSize="18sp" /> | |||||
| </LinearLayout> | |||||
| </RelativeLayout> | |||||
| @@ -1,51 +1,46 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| xmlns:app="http://schemas.android.com/apk/res-auto" | xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
| xmlns:tools="http://schemas.android.com/tools" | xmlns:tools="http://schemas.android.com/tools" | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
| android:orientation="vertical" | |||||
| tools:context=".ui.main.PrivacyPolicyActivity"> | tools:context=".ui.main.PrivacyPolicyActivity"> | ||||
| <RelativeLayout | |||||
| android:id="@+id/w_linear" | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/brokenside_toolbar" | |||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="wrap_content" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | android:background="@color/white" | ||||
| android:orientation="horizontal"> | |||||
| <ImageView | |||||
| android:id="@+id/w_back" | |||||
| android:layout_width="50dp" | |||||
| android:layout_height="18dp" | |||||
| android:layout_marginTop="16dp" | |||||
| android:src="@drawable/back" /> | |||||
| <TextView | |||||
| android:id="@+id/w_title" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="54dp" | |||||
| android:gravity="center" | |||||
| android:text="@string/me_user_agreements" | |||||
| android:textColor="@color/text_black" | |||||
| android:textSize="20sp" | |||||
| android:textStyle="bold" /> | |||||
| </RelativeLayout> | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:title="@string/me_user_agreements" | |||||
| app:titleTextColor="@color/black" /> | |||||
| <View | <View | ||||
| android:id="@+id/w_view" | android:id="@+id/w_view" | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="1dp" | android:layout_height="1dp" | ||||
| android:layout_below="@id/w_linear" | |||||
| android:background="@color/divider_gray" /> | 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" /> | |||||
| <WebView | <WebView | ||||
| android:id="@+id/mWebView" | android:id="@+id/mWebView" | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
| android:layout_below="@id/w_view" | |||||
| android:layout_below="@id/progress" | |||||
| android:layout_marginBottom="5dp" /> | android:layout_marginBottom="5dp" /> | ||||
| </RelativeLayout> | |||||
| </LinearLayout> | |||||
| @@ -0,0 +1,36 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout 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="@color/white" | |||||
| android:orientation="vertical" | |||||
| tools:context=".ui.webview.WebViewUtilsActivity"> | |||||
| <androidx.appcompat.widget.Toolbar | |||||
| android:id="@+id/OneHour_toolbar" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="?attr/actionBarSize" | |||||
| android:background="@color/white" | |||||
| app:contentInsetLeft="0dp" | |||||
| app:contentInsetStart="0dp" | |||||
| app:contentInsetStartWithNavigation="0dp" | |||||
| app:navigationIcon="@drawable/icon_back" | |||||
| app:titleTextColor="@color/black" /> | |||||
| <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" | |||||
| /> | |||||
| <WebView | |||||
| android:id="@+id/mWebView" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" /> | |||||
| </LinearLayout> | |||||
| @@ -1,6 +1,5 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| xmlns:tools="http://schemas.android.com/tools" | |||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="match_parent"> | android:layout_height="match_parent"> | ||||
| @@ -1,6 +1,5 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| xmlns:tools="http://schemas.android.com/tools" | |||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
| android:orientation="vertical"> | android:orientation="vertical"> | ||||
| @@ -1,6 +1,7 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| xmlns:tools="http://schemas.android.com/tools" | xmlns:tools="http://schemas.android.com/tools" | ||||
| xmlns:app="http://schemas.android.com/apk/res-auto" | |||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="match_parent"> | android:layout_height="match_parent"> | ||||
| @@ -57,7 +58,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_share" | |||||
| app:drawableStartCompat="@drawable/me_share" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_share_title" /> | android:text="@string/me_share_title" /> | ||||
| @@ -71,6 +72,31 @@ | |||||
| android:background="@drawable/me_go" /> | android:background="@drawable/me_go" /> | ||||
| </RelativeLayout> | </RelativeLayout> | ||||
| <RelativeLayout | |||||
| android:id="@+id/rl_me_qr_code" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:clickable="true" | |||||
| android:paddingTop="29dp" | |||||
| android:paddingBottom="29dp"> | |||||
| <TextView | |||||
| style="@style/MeInfoTextLeftStyle" | |||||
| android:layout_marginStart="20dp" | |||||
| app:drawableStartCompat="@drawable/me_qr_code" | |||||
| android:drawablePadding="15dp" | |||||
| android:gravity="center_vertical" | |||||
| android:text="@string/me_my_qr_code" /> | |||||
| <ImageView | |||||
| android:layout_width="6dp" | |||||
| android:layout_height="12dp" | |||||
| android:layout_alignParentEnd="true" | |||||
| android:layout_centerVertical="true" | |||||
| android:layout_marginEnd="20dp" | |||||
| android:background="@drawable/me_go" /> | |||||
| </RelativeLayout> | |||||
| <RelativeLayout | <RelativeLayout | ||||
| android:id="@+id/rl_me_thumbsup" | android:id="@+id/rl_me_thumbsup" | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| @@ -81,7 +107,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_up" | |||||
| app:drawableStartCompat="@drawable/me_up" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_up_title" /> | android:text="@string/me_up_title" /> | ||||
| @@ -105,7 +131,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_official" | |||||
| app:drawableStartCompat="@drawable/me_official" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_official_title" /> | android:text="@string/me_official_title" /> | ||||
| @@ -129,7 +155,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_official_code" | |||||
| app:drawableStartCompat="@drawable/me_official_code" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_official_code_title" /> | android:text="@string/me_official_code_title" /> | ||||
| @@ -153,7 +179,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_qa" | |||||
| app:drawableStartCompat="@drawable/me_qa" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_qa_title" /> | android:text="@string/me_qa_title" /> | ||||
| @@ -177,7 +203,7 @@ | |||||
| <TextView | <TextView | ||||
| style="@style/MeInfoTextLeftStyle" | style="@style/MeInfoTextLeftStyle" | ||||
| android:layout_marginStart="20dp" | android:layout_marginStart="20dp" | ||||
| android:drawableStart="@drawable/me_version" | |||||
| app:drawableStartCompat="@drawable/me_version" | |||||
| android:drawablePadding="15dp" | android:drawablePadding="15dp" | ||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| android:text="@string/me_version_title" /> | android:text="@string/me_version_title" /> | ||||
| @@ -14,9 +14,9 @@ | |||||
| <androidx.constraintlayout.widget.ConstraintLayout | <androidx.constraintlayout.widget.ConstraintLayout | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
| android:orientation="vertical" | |||||
| android:paddingTop="30dp" | android:paddingTop="30dp" | ||||
| android:paddingBottom="30dp" | |||||
| android:orientation="vertical"> | |||||
| android:paddingBottom="30dp"> | |||||
| <View | <View | ||||
| android:id="@+id/title_vertical_line_one" | android:id="@+id/title_vertical_line_one" | ||||
| @@ -52,16 +52,15 @@ | |||||
| android:layout_marginStart="18dp" | android:layout_marginStart="18dp" | ||||
| android:layout_marginTop="13dp" | android:layout_marginTop="13dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_test" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickPhotoDetection" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_object" | android:text="@string/title_object" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_test" | |||||
| app:layout_constraintStart_toStartOf="parent" | app:layout_constraintStart_toStartOf="parent" | ||||
| app:layout_constraintTop_toBottomOf="@id/title_vertical_line_one" | app:layout_constraintTop_toBottomOf="@id/title_vertical_line_one" | ||||
| app:layout_constraintWidth_percent="0.44" | app:layout_constraintWidth_percent="0.44" | ||||
| @@ -73,16 +72,15 @@ | |||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginEnd="18dp" | android:layout_marginEnd="18dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_video" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickCameraDetection" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_object_camera" | android:text="@string/title_object_camera" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_video" | |||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_object" | app:layout_constraintBottom_toBottomOf="@+id/btn_object" | ||||
| app:layout_constraintEnd_toEndOf="parent" | app:layout_constraintEnd_toEndOf="parent" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| @@ -93,16 +91,15 @@ | |||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="17dp" | android:layout_marginTop="17dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_posenet" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickPoseNet" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_pose_net" | android:text="@string/title_pose_net" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_posenet" | |||||
| app:layout_constraintStart_toStartOf="@+id/btn_object" | app:layout_constraintStart_toStartOf="@+id/btn_object" | ||||
| app:layout_constraintTop_toBottomOf="@+id/btn_object" | app:layout_constraintTop_toBottomOf="@+id/btn_object" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| @@ -112,16 +109,15 @@ | |||||
| android:layout_width="0dp" | android:layout_width="0dp" | ||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_style" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickStyleTransfer" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_style_transfer" | android:text="@string/title_style_transfer" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_style" | |||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_posenet" | app:layout_constraintBottom_toBottomOf="@+id/btn_posenet" | ||||
| app:layout_constraintEnd_toEndOf="@+id/btn_object_camera" | app:layout_constraintEnd_toEndOf="@+id/btn_object_camera" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| @@ -133,16 +129,15 @@ | |||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="17dp" | android:layout_marginTop="17dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_segment" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickSegmentation" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_segmentation" | android:text="@string/title_segmentation" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_segment" | |||||
| app:layout_constraintStart_toStartOf="@+id/btn_posenet" | app:layout_constraintStart_toStartOf="@+id/btn_posenet" | ||||
| app:layout_constraintTop_toBottomOf="@+id/btn_posenet" | app:layout_constraintTop_toBottomOf="@+id/btn_posenet" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| @@ -154,58 +149,55 @@ | |||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="30dp" | android:layout_marginTop="30dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_classification" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickImage" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_image" | android:text="@string/title_image" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:drawableStartCompat="@drawable/btn_classification" | |||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_segmentation" | app:layout_constraintBottom_toBottomOf="@+id/btn_segmentation" | ||||
| app:layout_constraintEnd_toEndOf="@+id/btn_style_transfer" | app:layout_constraintEnd_toEndOf="@+id/btn_style_transfer" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <Button | <Button | ||||
| android:id="@+id/btn_image_garbage" | |||||
| android:id="@+id/btn_scene" | |||||
| android:layout_width="0dp" | android:layout_width="0dp" | ||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="17dp" | |||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_garbage" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickGarbage" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_image_garbage" | |||||
| android:text="@string/title_scene" | |||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:layout_constraintStart_toStartOf="@+id/btn_segmentation" | |||||
| app:layout_constraintTop_toBottomOf="@+id/btn_segmentation" | |||||
| app:drawableStartCompat="@drawable/btn_scene" | |||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_gesture" | |||||
| app:layout_constraintEnd_toEndOf="@+id/btn_image" | |||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <Button | <Button | ||||
| android:id="@+id/btn_scene" | |||||
| android:id="@+id/btn_gesture" | |||||
| android:layout_width="0dp" | android:layout_width="0dp" | ||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="17dp" | |||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:drawableStart="@drawable/btn_scene" | |||||
| android:drawablePadding="5dp" | android:drawablePadding="5dp" | ||||
| android:gravity="left|center_vertical" | android:gravity="left|center_vertical" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickSceneDetection" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_scene" | |||||
| android:text="@string/title_gesture_recognition" | |||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| android:textColor="@color/text_black" | android:textColor="@color/text_black" | ||||
| android:textSize="12sp" | android:textSize="12sp" | ||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_image_garbage" | |||||
| app:layout_constraintEnd_toEndOf="@+id/btn_image" | |||||
| app:drawableStartCompat="@drawable/btn_gesture_recognition" | |||||
| app:layout_constraintStart_toStartOf="@+id/btn_segmentation" | |||||
| app:layout_constraintTop_toBottomOf="@+id/btn_segmentation" | |||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <View | <View | ||||
| @@ -220,7 +212,7 @@ | |||||
| android:gravity="center_vertical" | android:gravity="center_vertical" | ||||
| app:layout_constraintLeft_toLeftOf="parent" | app:layout_constraintLeft_toLeftOf="parent" | ||||
| app:layout_constraintStart_toStartOf="parent" | app:layout_constraintStart_toStartOf="parent" | ||||
| app:layout_constraintTop_toBottomOf="@id/btn_image_garbage" | |||||
| app:layout_constraintTop_toBottomOf="@id/btn_gesture" | |||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <TextView | <TextView | ||||
| @@ -236,18 +228,17 @@ | |||||
| android:textStyle="bold" | android:textStyle="bold" | ||||
| app:layout_constraintLeft_toLeftOf="parent" | app:layout_constraintLeft_toLeftOf="parent" | ||||
| app:layout_constraintStart_toStartOf="parent" | app:layout_constraintStart_toStartOf="parent" | ||||
| app:layout_constraintTop_toBottomOf="@id/btn_image_garbage" | |||||
| app:layout_constraintTop_toBottomOf="@id/btn_gesture" | |||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <com.mindspore.himindspore.ui.view.LeftImageRightTextButton | |||||
| <com.mindspore.himindspore.ui.view.MyButton | |||||
| android:id="@+id/btn_image_Intelligent_poetry" | android:id="@+id/btn_image_Intelligent_poetry" | ||||
| android:layout_width="0dp" | android:layout_width="0dp" | ||||
| android:layout_height="50dp" | android:layout_height="50dp" | ||||
| android:layout_marginTop="13dp" | android:layout_marginTop="13dp" | ||||
| android:background="@drawable/btn_vision_item" | android:background="@drawable/btn_vision_item" | ||||
| android:maxLines="1" | android:maxLines="1" | ||||
| android:onClick="onClickIntelligentPoetry" | |||||
| android:paddingStart="4dp" | android:paddingStart="4dp" | ||||
| android:text="@string/title_intelligent_poetry" | android:text="@string/title_intelligent_poetry" | ||||
| android:textAllCaps="false" | android:textAllCaps="false" | ||||
| @@ -257,6 +248,45 @@ | |||||
| app:layout_constraintTop_toBottomOf="@+id/title_vertical_line_two" | app:layout_constraintTop_toBottomOf="@+id/title_vertical_line_two" | ||||
| app:layout_constraintWidth_percent="0.44" /> | app:layout_constraintWidth_percent="0.44" /> | ||||
| <Button | |||||
| android:id="@+id/btn_text_recognition" | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="50dp" | |||||
| android:layout_marginEnd="18dp" | |||||
| android:background="@drawable/btn_vision_item" | |||||
| android:drawablePadding="5dp" | |||||
| android:gravity="left|center_vertical" | |||||
| android:maxLines="1" | |||||
| android:paddingStart="4dp" | |||||
| android:text="@string/title_text_extraction" | |||||
| android:textAllCaps="false" | |||||
| android:textColor="@color/text_black" | |||||
| android:textSize="12sp" | |||||
| app:drawableStartCompat="@drawable/btn_text_extraction" | |||||
| app:layout_constraintBottom_toBottomOf="@+id/btn_image_Intelligent_poetry" | |||||
| app:layout_constraintEnd_toEndOf="parent" | |||||
| app:layout_constraintWidth_percent="0.44" /> | |||||
| <Button | |||||
| android:id="@+id/btn_texttranslation" | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="50dp" | |||||
| android:layout_marginTop="17dp" | |||||
| android:background="@drawable/btn_vision_item" | |||||
| android:drawablePadding="5dp" | |||||
| android:gravity="left|center_vertical" | |||||
| android:maxLines="1" | |||||
| android:paddingStart="4dp" | |||||
| android:text="@string/title_texttranslation" | |||||
| android:textAllCaps="false" | |||||
| android:textColor="@color/text_black" | |||||
| android:textSize="12sp" | |||||
| app:drawableStartCompat="@drawable/btn_text_translation" | |||||
| app:layout_constraintStart_toStartOf="@+id/btn_image_Intelligent_poetry" | |||||
| app:layout_constraintTop_toBottomOf="@+id/btn_image_Intelligent_poetry" | |||||
| app:layout_constraintWidth_percent="0.44" /> | |||||
| </androidx.constraintlayout.widget.ConstraintLayout> | </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| </ScrollView> | </ScrollView> | ||||
| @@ -0,0 +1,36 @@ | |||||
| <?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> | |||||
| @@ -0,0 +1,42 @@ | |||||
| <?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="wrap_content" | |||||
| android:background="@drawable/poem_bg" | |||||
| android:padding="20dp"> | |||||
| <TextView | |||||
| android:layout_marginTop="20dp" | |||||
| android:id="@+id/poemContent" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:background="@drawable/poem_frame" | |||||
| android:gravity="center" | |||||
| android:padding="60dp" | |||||
| android:textColor="@color/black" | |||||
| android:textSize="15sp" /> | |||||
| <TextView | |||||
| android:id="@+id/illustrate" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_alignParentBottom="true" | |||||
| android:text="由MindSpore AI技术生成" | |||||
| android:textColor="@color/text_gray" | |||||
| android:textSize="15sp" /> | |||||
| <ImageView | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_above="@+id/illustrate" | |||||
| android:scaleType="fitXY" | |||||
| android:src="@drawable/logo2" /> | |||||
| <ImageView | |||||
| android:layout_width="80dp" | |||||
| android:layout_height="80dp" | |||||
| android:layout_alignBottom="@+id/illustrate" | |||||
| android:layout_alignParentEnd="true" | |||||
| android:src="@mipmap/my_qr_code" /> | |||||
| </RelativeLayout> | |||||
| @@ -0,0 +1,36 @@ | |||||
| <?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> | |||||
| @@ -0,0 +1,33 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| xmlns:tools="http://schemas.android.com/tools" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="match_parent" | |||||
| android:orientation="vertical" | |||||
| android:background="@drawable/item_qrcode" | |||||
| tools:ignore="MissingDefaultResource"> | |||||
| <TextView | |||||
| android:id="@+id/my_save_picture" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="50dp" | |||||
| android:gravity="center" | |||||
| android:text="@string/app_save_picture" | |||||
| android:onClick="onClickSave" | |||||
| android:textColor="@color/black" | |||||
| android:textSize="14sp" /> | |||||
| <View | |||||
| android:id="@+id/w_view" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="1dp" | |||||
| android:background="@color/divider_gray" /> | |||||
| <TextView | |||||
| android:id="@+id/my_cancel" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="50dp" | |||||
| android:gravity="center" | |||||
| android:text="@string/app_cancel" | |||||
| android:textColor="@color/black" | |||||
| android:textSize="14sp" /> | |||||
| </LinearLayout> | |||||
| @@ -11,16 +11,24 @@ | |||||
| <string name="app_wait">"Please wait..."</string> | <string name="app_wait">"Please wait..."</string> | ||||
| <string name="app_load_fail">"download failed"</string> | <string name="app_load_fail">"download failed"</string> | ||||
| <string name="app_update_lastest">Upgrade to a new version</string> | <string name="app_update_lastest">Upgrade to a new version</string> | ||||
| <string name="app_save_picture">Save Picture</string> | |||||
| <string name="app_cancel">Cancel</string> | |||||
| <string name="title_image">Image Classification</string> | <string name="title_image">Image Classification</string> | ||||
| <string name="title_image_garbage">Garbage Classification</string> | <string name="title_image_garbage">Garbage Classification</string> | ||||
| <string name="title_intelligent_poetry">Intelligent poetry</string> | <string name="title_intelligent_poetry">Intelligent poetry</string> | ||||
| <string name="title_intelligent_poetry_new">NEW</string> | <string name="title_intelligent_poetry_new">NEW</string> | ||||
| <string name="title_object">Photo Detection</string> | |||||
| <string name="title_object_camera">Camera Detection</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> | <string name="title_pose_net">PoseNet</string> | ||||
| <string name="title_style_transfer">Style Transfer</string> | <string name="title_style_transfer">Style Transfer</string> | ||||
| <string name="title_segmentation">Image Segmentation</string> | |||||
| <string name="title_segmentation">Portrait Segmentation</string> | |||||
| <string name="title_college_faq">FAQ</string> | |||||
| <string name="title_college_one_hour">One hour experience</string> | |||||
| <string name="title_college_forum">Forum questions</string> | |||||
| <string name="title_college_training">Training model</string> | |||||
| <string name="title_college_perform">Perform reasoning</string> | |||||
| <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_source">Code</string> | ||||
| <string name="title_scene">Scene Detection</string> | <string name="title_scene">Scene Detection</string> | ||||
| <string name="title_help">FeedBack</string> | <string name="title_help">FeedBack</string> | ||||
| @@ -28,7 +36,6 @@ | |||||
| <string name="title_version">"Version: "</string> | <string name="title_version">"Version: "</string> | ||||
| <string name="title_share">Share</string> | <string name="title_share">Share</string> | ||||
| <string name="title_share_commend">MindSpore掌中宝:A one-stop platform of collaborative learning, demonstrating, and experiencing for AI users.\t</string> | <string name="title_share_commend">MindSpore掌中宝:A one-stop platform of collaborative learning, demonstrating, and experiencing for AI users.\t</string> | ||||
| <string name="main_tab_title_one">Experience</string> | <string name="main_tab_title_one">Experience</string> | ||||
| <string name="main_tab_title_two">College</string> | <string name="main_tab_title_two">College</string> | ||||
| <string name="main_tab_title_three">Me</string> | <string name="main_tab_title_three">Me</string> | ||||
| @@ -42,6 +49,7 @@ | |||||
| <string name="me_title">Me</string> | <string name="me_title">Me</string> | ||||
| <string name="me_share_title">Share</string> | <string name="me_share_title">Share</string> | ||||
| <string name="me_my_qr_code">My QR Code</string> | |||||
| <string name="me_up_title">Like</string> | <string name="me_up_title">Like</string> | ||||
| <string name="me_qa_title">Feedback</string> | <string name="me_qa_title">Feedback</string> | ||||
| <string name="me_agree">agree</string> | <string name="me_agree">agree</string> | ||||
| @@ -69,7 +77,6 @@ | |||||
| <string name="college_ask_title">Ask on forum</string> | <string name="college_ask_title">Ask on forum</string> | ||||
| <string name="college_light_title">~Illuminate your learning trip~</string> | <string name="college_light_title">~Illuminate your learning trip~</string> | ||||
| <string name="college_adapter_view">View</string> | <string name="college_adapter_view">View</string> | ||||
| <string name="college_dialog_title">Summary</string> | <string name="college_dialog_title">Summary</string> | ||||
| <string name="college_dialog_content">\t\t MindSpore is an ALL-Scenario AI Computing Framework developed by Huawei. | <string name="college_dialog_content">\t\t MindSpore is an ALL-Scenario AI Computing Framework developed by Huawei. | ||||
| It takes into account the flexibility of academic research and high performance required by industry. | It takes into account the flexibility of academic research and high performance required by industry. | ||||
| @@ -82,4 +89,12 @@ | |||||
| creating all-inclusive AI applications and building AI Ecology with us.\n | creating all-inclusive AI applications and building AI Ecology with us.\n | ||||
| </string> | </string> | ||||
| <string name="splash_count_down">s</string> | <string name="splash_count_down">s</string> | ||||
| <string name="poem_save_share">save and share the picture</string> | |||||
| <string name="poem_save_poster">save the picture</string> | |||||
| <string name="poem_share_poster">share the picture</string> | |||||
| <string name="poem_save_success">save successfully</string> | |||||
| <string name="me_user_agreements">User Agreement and Privacy Policy</string> | |||||
| <string name="save_failure">Save failure</string> | |||||
| </resources> | </resources> | ||||
| @@ -11,15 +11,17 @@ | |||||
| <string name="app_wait">"请稍候..."</string> | <string name="app_wait">"请稍候..."</string> | ||||
| <string name="app_load_fail">"下载失败"</string> | <string name="app_load_fail">"下载失败"</string> | ||||
| <string name="app_update_lastest">"请升级新版本"</string> | <string name="app_update_lastest">"请升级新版本"</string> | ||||
| <string name="app_save_picture">保存图片</string> | |||||
| <string name="app_cancel">取消</string> | |||||
| <string name="title_image">图像分类</string> | <string name="title_image">图像分类</string> | ||||
| <string name="title_image_garbage">垃圾分类</string> | <string name="title_image_garbage">垃圾分类</string> | ||||
| <string name="title_intelligent_poetry">智能写诗</string> | <string name="title_intelligent_poetry">智能写诗</string> | ||||
| <string name="title_intelligent_poetry_new">NEW</string> | <string name="title_intelligent_poetry_new">NEW</string> | ||||
| <string name="title_object">照片检测</string> | |||||
| <string name="title_object_camera">视频检测</string> | |||||
| <string name="title_object">对象检测(图片)</string> | |||||
| <string name="title_object_camera">对象检测(实时)</string> | |||||
| <string name="title_pose_net"> 骨骼检测</string> | <string name="title_pose_net"> 骨骼检测</string> | ||||
| <string name="title_style_transfer">风格迁移</string> | <string name="title_style_transfer">风格迁移</string> | ||||
| <string name="title_segmentation">图像分割</string> | |||||
| <string name="title_segmentation">人像分割</string> | |||||
| <string name="title_source">代码</string> | <string name="title_source">代码</string> | ||||
| <string name="title_scene">场景检测</string> | <string name="title_scene">场景检测</string> | ||||
| <string name="title_help">反馈</string> | <string name="title_help">反馈</string> | ||||
| @@ -27,11 +29,9 @@ | |||||
| <string name="title_version">版本号: </string> | <string name="title_version">版本号: </string> | ||||
| <string name="title_share">分享</string> | <string name="title_share">分享</string> | ||||
| <string name="title_share_commend">MindSpore掌中宝:AI爱好者的一站式协同学习、演示、体验平台\t</string> | <string name="title_share_commend">MindSpore掌中宝:AI爱好者的一站式协同学习、演示、体验平台\t</string> | ||||
| <string name="main_tab_title_one">体验</string> | <string name="main_tab_title_one">体验</string> | ||||
| <string name="main_tab_title_two">学院</string> | <string name="main_tab_title_two">学院</string> | ||||
| <string name="main_tab_title_three">我的</string> | <string name="main_tab_title_three">我的</string> | ||||
| <string name="tab_experience_one">视觉图像技术</string> | <string name="tab_experience_one">视觉图像技术</string> | ||||
| <string name="tab_speech_two">语音语义技术</string> | <string name="tab_speech_two">语音语义技术</string> | ||||
| @@ -41,11 +41,19 @@ | |||||
| <string name="me_title">我的</string> | <string name="me_title">我的</string> | ||||
| <string name="me_share_title">一键分享</string> | <string name="me_share_title">一键分享</string> | ||||
| <string name="me_my_qr_code">我的二维码</string> | |||||
| <string name="me_up_title">一键点赞</string> | <string name="me_up_title">一键点赞</string> | ||||
| <string name="me_qa_title">问题反馈</string> | <string name="me_qa_title">问题反馈</string> | ||||
| <string name="me_version_title">版本号</string> | <string name="me_version_title">版本号</string> | ||||
| <string name="me_official_title">官方网站</string> | <string name="me_official_title">官方网站</string> | ||||
| <string name="me_official_code_title">官方代码仓</string> | <string name="me_official_code_title">官方代码仓</string> | ||||
| <string name="title_college_faq">FAQ</string> | |||||
| <string name="title_college_one_hour">一小时体验</string> | |||||
| <string name="title_college_forum">论坛提问</string> | |||||
| <string name="title_college_training">训练模型</string> | |||||
| <string name="title_college_perform">执行推理</string> | |||||
| <string name="title_college_broken_side">端侧应用</string> | |||||
| <string name="title_college_video">参考视频</string> | |||||
| <string name="me_agree">同意</string> | <string name="me_agree">同意</string> | ||||
| <string name="me_disagree_and_exit">不同意并退出</string> | <string name="me_disagree_and_exit">不同意并退出</string> | ||||
| <string name="me_user_agreement">《用户协议和隐私政策》</string> | <string name="me_user_agreement">《用户协议和隐私政策》</string> | ||||
| @@ -67,12 +75,16 @@ | |||||
| <string name="college_ask_title">论坛提问</string> | <string name="college_ask_title">论坛提问</string> | ||||
| <string name="college_light_title">~点亮您的学习之旅~</string> | <string name="college_light_title">~点亮您的学习之旅~</string> | ||||
| <string name="college_adapter_view">查看</string> | <string name="college_adapter_view">查看</string> | ||||
| <string name="college_dialog_title">简介</string> | <string name="college_dialog_title">简介</string> | ||||
| <string name="college_dialog_content">\t\t\t MindSpore是华为自研的全场景AI计算框架, | <string name="college_dialog_content">\t\t\t MindSpore是华为自研的全场景AI计算框架, | ||||
| 兼顾学术界研究的灵活性与工业界的高性能要求,支持端边云全场景业务,为开发者带来编程更简单、调试更轻松、性能更卓越、部署更灵活的体验。\n\n | 兼顾学术界研究的灵活性与工业界的高性能要求,支持端边云全场景业务,为开发者带来编程更简单、调试更轻松、性能更卓越、部署更灵活的体验。\n\n | ||||
| \t\t\t MindSpore致力于构筑面向全球的开源社区,持续推动AI软硬件应用开源生态繁荣发展,已于2020年3月28日开源。\n\n | \t\t\t MindSpore致力于构筑面向全球的开源社区,持续推动AI软硬件应用开源生态繁荣发展,已于2020年3月28日开源。\n\n | ||||
| \t\t\t 版本在不断迭代更新中,MindSpore也会持续提供更多的学习资源、支持与服务,欢迎各行各业的开发者与伙伴深度参与、贡献智慧,打造无所不及的AI应用,与我们共建AI生态。\n</string> | \t\t\t 版本在不断迭代更新中,MindSpore也会持续提供更多的学习资源、支持与服务,欢迎各行各业的开发者与伙伴深度参与、贡献智慧,打造无所不及的AI应用,与我们共建AI生态。\n</string> | ||||
| <string name="splash_count_down">秒</string> | <string name="splash_count_down">秒</string> | ||||
| <string name="poem_save_share">保存分享图片</string> | |||||
| <string name="poem_save_poster">保存图片</string> | |||||
| <string name="poem_share_poster">分享图片</string> | |||||
| <string name="poem_save_success">保存成功</string> | |||||
| <string name="save_failure">保存失败</string> | |||||
| </resources> | </resources> | ||||
| @@ -10,16 +10,24 @@ | |||||
| <string name="app_wait">"请稍候..."</string> | <string name="app_wait">"请稍候..."</string> | ||||
| <string name="app_load_fail">"下载失败"</string> | <string name="app_load_fail">"下载失败"</string> | ||||
| <string name="app_update_lastest">"请升级新版本"</string> | <string name="app_update_lastest">"请升级新版本"</string> | ||||
| <string name="app_save_picture">保存图片</string> | |||||
| <string name="app_cancel">取消</string> | |||||
| <string name="title_image">Image Classification</string> | <string name="title_image">Image Classification</string> | ||||
| <string name="title_image_garbage">Garbage Classification</string> | <string name="title_image_garbage">Garbage Classification</string> | ||||
| <string name="title_intelligent_poetry">Intelligent poetry</string> | <string name="title_intelligent_poetry">Intelligent poetry</string> | ||||
| <string name="title_intelligent_poetry_new">NEW</string> | <string name="title_intelligent_poetry_new">NEW</string> | ||||
| <string name="title_object">Photo Detection</string> | |||||
| <string name="title_object_camera">Camera Detection</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> | <string name="title_pose_net">PoseNet</string> | ||||
| <string name="title_style_transfer">Style Transfer</string> | <string name="title_style_transfer">Style Transfer</string> | ||||
| <string name="title_segmentation">Image Segmentation</string> | |||||
| <string name="title_segmentation">Portrait Segmentation</string> | |||||
| <string name="title_college_faq">FAQ</string> | |||||
| <string name="title_college_one_hour">一小时体验</string> | |||||
| <string name="title_college_forum">论坛提问</string> | |||||
| <string name="title_college_training">训练模型</string> | |||||
| <string name="title_college_perform">执行推理</string> | |||||
| <string name="title_college_broken_side">端侧应用</string> | |||||
| <string name="title_college_video">参考视频</string> | |||||
| <string name="title_source">Code</string> | <string name="title_source">Code</string> | ||||
| <string name="title_scene">Scene Detection</string> | <string name="title_scene">Scene Detection</string> | ||||
| <string name="title_help">FeedBack</string> | <string name="title_help">FeedBack</string> | ||||
| @@ -44,6 +52,7 @@ | |||||
| <!-- me fragment --> | <!-- me fragment --> | ||||
| <string name="me_title">我的</string> | <string name="me_title">我的</string> | ||||
| <string name="me_share_title">一键分享</string> | <string name="me_share_title">一键分享</string> | ||||
| <string name="me_my_qr_code">我的二维码</string> | |||||
| <string name="me_up_title">一键点赞</string> | <string name="me_up_title">一键点赞</string> | ||||
| <string name="me_official_title">官方网站</string> | <string name="me_official_title">官方网站</string> | ||||
| <string name="me_official_code_title">官方代码仓</string> | <string name="me_official_code_title">官方代码仓</string> | ||||
| @@ -66,7 +75,6 @@ | |||||
| <string name="college_faq_title">FAQ</string> | <string name="college_faq_title">FAQ</string> | ||||
| <string name="college_ask_title">论坛提问</string> | <string name="college_ask_title">论坛提问</string> | ||||
| <string name="college_light_title">~点亮您的学习之旅~</string> | <string name="college_light_title">~点亮您的学习之旅~</string> | ||||
| <string name="college_adapter_view">查看</string> | <string name="college_adapter_view">查看</string> | ||||
| <string name="college_dialog_title">简介</string> | <string name="college_dialog_title">简介</string> | ||||
| <string name="college_dialog_content">\t\t\tMindSpore是华为自研的全场景AI计算框架, | <string name="college_dialog_content">\t\t\tMindSpore是华为自研的全场景AI计算框架, | ||||
| @@ -75,4 +83,10 @@ | |||||
| \t\t\t版本在不断迭代更新中,MindSpore也会持续提供更多的学习资源、支持与服务,欢迎各行各业的开发者与伙伴深度参与、贡献智慧,打造无所不及的AI应用,与我们共建AI生态。\n</string> | \t\t\t版本在不断迭代更新中,MindSpore也会持续提供更多的学习资源、支持与服务,欢迎各行各业的开发者与伙伴深度参与、贡献智慧,打造无所不及的AI应用,与我们共建AI生态。\n</string> | ||||
| <string name="college_execute_title">" "</string> | <string name="college_execute_title">" "</string> | ||||
| <string name="poem_save_poster">保存图片</string> | |||||
| <string name="poem_share_poster">分享图片</string> | |||||
| <string name="poem_save_success">保存成功</string> | |||||
| <string name="poem_save_share">保存分享图片</string> | |||||
| <string name="save_failure">保存失败</string> | |||||
| </resources> | </resources> | ||||
| @@ -13,8 +13,10 @@ | |||||
| <item name="android:buttonBarStyle">?android:attr/buttonBarStyle</item> | <item name="android:buttonBarStyle">?android:attr/buttonBarStyle</item> | ||||
| </style> | </style> | ||||
| <style name="anims" parent="AppTheme"> | |||||
| <item name="android:windowEnterAnimation">@anim/anim_enter</item> | |||||
| <item name="android:windowExitAnimation">@anim/anim_exit</item> | |||||
| </style> | |||||
| <!-- Text style "" --> | <!-- Text style "" --> | ||||
| <!-- Add this snippet to styles.xml. --> | <!-- Add this snippet to styles.xml. --> | ||||
| @@ -5,10 +5,12 @@ buildscript { | |||||
| jcenter() | jcenter() | ||||
| mavenCentral() | mavenCentral() | ||||
| maven { url "https://jitpack.io" } | maven { url "https://jitpack.io" } | ||||
| maven {url 'https://developer.huawei.com/repo/'} | |||||
| } | } | ||||
| dependencies { | dependencies { | ||||
| classpath "com.android.tools.build:gradle:4.0.1" | classpath "com.android.tools.build:gradle:4.0.1" | ||||
| classpath 'com.huawei.agconnect:agcp:1.4.2.300' | |||||
| } | } | ||||
| } | } | ||||
| @@ -18,6 +20,7 @@ allprojects { | |||||
| jcenter() | jcenter() | ||||
| mavenCentral() | mavenCentral() | ||||
| maven { url "https://jitpack.io" } | maven { url "https://jitpack.io" } | ||||
| maven {url 'https://developer.huawei.com/repo/'} | |||||
| } | } | ||||
| } | } | ||||
| @@ -11,6 +11,7 @@ public final class Preferences { | |||||
| public static final String KEY_COLLEGE_VIDEO = "preferences_college_video"; | public static final String KEY_COLLEGE_VIDEO = "preferences_college_video"; | ||||
| public static final String KEY_COLLEGE_FAQ = "preferences_college_faq"; | public static final String KEY_COLLEGE_FAQ = "preferences_college_faq"; | ||||
| public static final String KEY_COLLEGE_ASK = "preferences_college_ask"; | public static final String KEY_COLLEGE_ASK = "preferences_college_ask"; | ||||
| public static final String API_KEY = "CgB6e3x9ss3nul/jhX9/4Y54MU0plgs6E1bW5SY8YQnq/uWhQHRxVGTf5Jl9f5NjRpvl0QV3Ft9sPihQ/PSL6RjC"; | |||||
| public static final String KEY_PRIVACY = "preferences_privacy"; | public static final String KEY_PRIVACY = "preferences_privacy"; | ||||
| public static final String[] KEY_COLLEGE_QUICK_ARRAY = new String[]{KEY_COLLEGE_TRAIN,KEY_COLLEGE_EXECUTE,KEY_COLLEGE_APP,KEY_COLLEGE_VIDEO}; | public static final String[] KEY_COLLEGE_QUICK_ARRAY = new String[]{KEY_COLLEGE_TRAIN,KEY_COLLEGE_EXECUTE,KEY_COLLEGE_APP,KEY_COLLEGE_VIDEO}; | ||||
| } | } | ||||
| @@ -0,0 +1,129 @@ | |||||
| package com.mindspore.common.utils; | |||||
| import android.content.Context; | |||||
| import android.content.Intent; | |||||
| import android.graphics.Bitmap; | |||||
| import android.graphics.Canvas; | |||||
| import android.media.MediaScannerConnection; | |||||
| import android.net.Uri; | |||||
| import android.os.Build; | |||||
| import android.os.Environment; | |||||
| import android.text.TextUtils; | |||||
| import android.util.Log; | |||||
| import android.view.View; | |||||
| import androidx.core.content.FileProvider; | |||||
| import java.io.File; | |||||
| import java.io.FileNotFoundException; | |||||
| import java.io.FileOutputStream; | |||||
| import java.io.IOException; | |||||
| public class ImageUtils { | |||||
| private static final String TAG = "BitmapUtils"; | |||||
| private static Bitmap loadBitmapFromView(View v, boolean isNeedCrop) { | |||||
| int w = v.getWidth(); | |||||
| int h = v.getHeight(); | |||||
| Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); | |||||
| Canvas c = new Canvas(bmp); | |||||
| v.layout((int) v.getX(), (int) v.getY(), | |||||
| (int) v.getX() + w, (int) v.getY() + h); | |||||
| v.draw(c); | |||||
| return isNeedCrop ? Bitmap.createBitmap(bmp, 0, 0, w / 10 * 9, h / 10 * 9, null, false) : bmp; | |||||
| } | |||||
| private static Uri sharePic(Context context, Bitmap cachebmp, String child) { | |||||
| final File qrImage = new File(Environment.getExternalStorageDirectory(), child + ".jpg"); | |||||
| if (qrImage.exists()) { | |||||
| qrImage.delete(); | |||||
| } | |||||
| try { | |||||
| qrImage.createNewFile(); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| FileOutputStream fOut = null; | |||||
| try { | |||||
| fOut = new FileOutputStream(qrImage); | |||||
| } catch (FileNotFoundException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if (cachebmp == null) { | |||||
| return null; | |||||
| } | |||||
| cachebmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut); | |||||
| try { | |||||
| fOut.flush(); | |||||
| fOut.close(); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| Uri photoUri = FileProvider.getUriForFile( | |||||
| context, context.getPackageName() + ".fileprovider", qrImage); | |||||
| return photoUri; | |||||
| } | |||||
| // Save the picture to the system album and refresh it. | |||||
| public static Uri saveToAlbum(Context context, View view, String child, boolean isNeedCrop) { | |||||
| Bitmap cachebmp = loadBitmapFromView(view, isNeedCrop); | |||||
| File file = null; | |||||
| String fileName = TextUtils.isEmpty(child) ? System.currentTimeMillis() + ".jpg" : child + ".jpg"; | |||||
| File root = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), context.getPackageName()); | |||||
| File dir = new File(root, "image"); | |||||
| if (dir.mkdirs() || dir.isDirectory()) { | |||||
| file = new File(dir, fileName); | |||||
| } | |||||
| FileOutputStream os = null; | |||||
| try { | |||||
| os = new FileOutputStream(file); | |||||
| cachebmp.compress(Bitmap.CompressFormat.JPEG, 100, os); | |||||
| os.flush(); | |||||
| } catch (FileNotFoundException e) { | |||||
| Log.e(TAG, e.getMessage()); | |||||
| } catch (IOException e) { | |||||
| Log.e(TAG, e.getMessage()); | |||||
| } finally { | |||||
| try { | |||||
| if (os != null) { | |||||
| os.close(); | |||||
| } | |||||
| } catch (IOException e) { | |||||
| Log.e(TAG, e.getMessage()); | |||||
| } | |||||
| } | |||||
| if (file == null) { | |||||
| return null; | |||||
| } | |||||
| // Gallery refresh. | |||||
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | |||||
| String path = null; | |||||
| try { | |||||
| path = file.getCanonicalPath(); | |||||
| } catch (IOException e) { | |||||
| Log.e(TAG, e.getMessage()); | |||||
| } | |||||
| MediaScannerConnection.scanFile(context, new String[]{path}, null, | |||||
| (path1, uri) -> { | |||||
| Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); | |||||
| mediaScanIntent.setData(uri); | |||||
| context.sendBroadcast(mediaScanIntent); | |||||
| }); | |||||
| } else { | |||||
| String relationDir = file.getParent(); | |||||
| File file1 = new File(relationDir); | |||||
| context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.fromFile(file1.getAbsoluteFile()))); | |||||
| } | |||||
| Uri photoUri = FileProvider.getUriForFile( | |||||
| context, context.getPackageName() + ".fileprovider", file); | |||||
| return photoUri; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,31 @@ | |||||
| package com.mindspore.common.utils; | |||||
| import java.util.regex.Matcher; | |||||
| import java.util.regex.Pattern; | |||||
| public class StringUtils { | |||||
| public static boolean checkChar(char ch) { | |||||
| return (ch + "").getBytes().length == 1; | |||||
| } | |||||
| public static boolean isChinese(String str) { | |||||
| String regEx1 = "[\\u4e00-\\u9fa5]+"; | |||||
| String regEx2 = "[\\uFF00-\\uFFEF]+"; | |||||
| String regEx3 = "[\\u2E80-\\u2EFF]+"; | |||||
| String regEx4 = "[\\u3000-\\u303F]+"; | |||||
| String regEx5 = "[\\u31C0-\\u31EF]+"; | |||||
| Pattern p1 = Pattern.compile(regEx1); | |||||
| Pattern p2 = Pattern.compile(regEx2); | |||||
| Pattern p3 = Pattern.compile(regEx3); | |||||
| Pattern p4 = Pattern.compile(regEx4); | |||||
| Pattern p5 = Pattern.compile(regEx5); | |||||
| Matcher m1 = p1.matcher(str); | |||||
| Matcher m2 = p2.matcher(str); | |||||
| Matcher m3 = p3.matcher(str); | |||||
| Matcher m4 = p4.matcher(str); | |||||
| Matcher m5 = p5.matcher(str); | |||||
| return m1.find() || m2.find() || m3.find() || m4.find() || m5.find(); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,11 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| xmlns:app="http://schemas.android.com/apk/res-auto"> | |||||
| <item | |||||
| android:id="@+id/item_more_qr" | |||||
| android:title="more" | |||||
| android:orderInCategory="2" | |||||
| android:icon="@drawable/icon_more" | |||||
| app:showAsAction="always"/> | |||||
| </menu> | |||||
| @@ -9,7 +9,7 @@ | |||||
| <string name="explain_garbage_classification">Garbage classification identifies the garbage category of the object detected by the camera lens.</string> | <string name="explain_garbage_classification">Garbage classification identifies the garbage category of the object detected by the camera lens.</string> | ||||
| <string name="explain_scene_detection">Scene detection can estimate the category of the target scene.</string> | <string name="explain_scene_detection">Scene detection can estimate the category of the target scene.</string> | ||||
| <string name="explain_title">Summary</string> | <string name="explain_title">Summary</string> | ||||
| <string name="segmentation_toolbar_title">Image Segmentation</string> | |||||
| <string name="segmentation_toolbar_title">Portrait Segmentation</string> | |||||
| <string name="style_transfer_title">Style Transfer</string> | <string name="style_transfer_title">Style Transfer</string> | ||||
| <string name="posenet_activity_title">PoseNet</string> | <string name="posenet_activity_title">PoseNet</string> | ||||
| <string name="image_scene_title">Scene Detection</string> | <string name="image_scene_title">Scene Detection</string> | ||||
| @@ -9,7 +9,6 @@ | |||||
| <string name="explain_garbage_classification">垃圾分类可识别出镜头中物体所属的垃圾类别。</string> | <string name="explain_garbage_classification">垃圾分类可识别出镜头中物体所属的垃圾类别。</string> | ||||
| <string name="explain_scene_detection">场景检测可以判断目标场景的类型。</string> | <string name="explain_scene_detection">场景检测可以判断目标场景的类型。</string> | ||||
| <string name="explain_title">简要说明</string> | <string name="explain_title">简要说明</string> | ||||
| <string name="segmentation_toolbar_title">图像分割</string> | |||||
| <string name="style_transfer_title">风格迁移</string> | <string name="style_transfer_title">风格迁移</string> | ||||
| <string name="posenet_activity_title">骨骼检测</string> | <string name="posenet_activity_title">骨骼检测</string> | ||||
| <string name="image_scene_title">场景检测</string> | <string name="image_scene_title">场景检测</string> | ||||
| @@ -17,4 +16,5 @@ | |||||
| <string name="image_camera_title">图像分类</string> | <string name="image_camera_title">图像分类</string> | ||||
| <string name="object_camery_title">视频检测</string> | <string name="object_camery_title">视频检测</string> | ||||
| <string name="activity_photo_title">照片检测</string> | <string name="activity_photo_title">照片检测</string> | ||||
| <string name="segmentation_toolbar_title">人像分割</string> | |||||
| </resources> | </resources> | ||||
| @@ -18,6 +18,6 @@ | |||||
| <string name="image_scene_title">场景检测</string> | <string name="image_scene_title">场景检测</string> | ||||
| <string name="posenet_activity_title">骨骼检测</string> | <string name="posenet_activity_title">骨骼检测</string> | ||||
| <string name="style_transfer_title">风格迁移</string> | <string name="style_transfer_title">风格迁移</string> | ||||
| <string name="segmentation_toolbar_title">图像分割</string> | |||||
| <string name="segmentation_toolbar_title">人像分割</string> | |||||
| </resources> | </resources> | ||||
| @@ -0,0 +1 @@ | |||||
| /build | |||||
| @@ -0,0 +1,95 @@ | |||||
| 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 | |||||
| } | |||||
| aaptOptions { | |||||
| noCompress "ms" | |||||
| } | |||||
| lintOptions { | |||||
| checkReleaseBuilds false | |||||
| // Or, if you prefer, you can continue to check for errors in release builds, | |||||
| // but continue the build even when errors are found: | |||||
| abortOnError false | |||||
| } | |||||
| repositories { | |||||
| google() | |||||
| jcenter() | |||||
| } | |||||
| compileOptions { | |||||
| sourceCompatibility JavaVersion.VERSION_1_8 | |||||
| targetCompatibility JavaVersion.VERSION_1_8 | |||||
| } | |||||
| } | |||||
| dependencies { | |||||
| implementation fileTree(dir: "libs", include: ["*.jar"]) | |||||
| implementation 'androidx.recyclerview:recyclerview:1.1.0' | |||||
| implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' | |||||
| implementation 'androidx.constraintlayout:constraintlayout:2.0.4' | |||||
| implementation project(path: ':common') | |||||
| testImplementation 'junit:junit:4.12' | |||||
| androidTestImplementation 'androidx.test.ext:junit:1.1.1' | |||||
| androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' | |||||
| implementation 'com.github.bumptech.glide:glide:4.11.0' | |||||
| annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' | |||||
| implementation 'com.alibaba:arouter-api:1.5.1' | |||||
| annotationProcessor 'com.alibaba:arouter-compiler:1.5.1' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-segmentation:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-multiclass-model:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-body-model:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-hair-model:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.5.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:2.0.5.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:2.0.5.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.5.300' | |||||
| 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 'com.huawei.hms:ml-computer-vision-scenedetection:2.0.3.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-scenedetection-model:2.0.3.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.1.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.1.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-vision-gesture-model:2.1.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-translate:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-translate-model:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-language-detection:2.2.0.300' | |||||
| implementation 'com.huawei.hms:ml-computer-language-detection-model:2.2.0.300' | |||||
| } | |||||
| @@ -0,0 +1,207 @@ | |||||
| 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 | |||||
| 沙滩 | |||||
| 蓝天 | |||||
| 日出日落 | |||||
| 美食 | |||||
| 花朵 | |||||
| 绿植 | |||||
| 雪景 | |||||
| 夜景 | |||||
| 文字 | |||||
| 猫 | |||||
| 狗 | |||||
| 烟花 | |||||
| 阴天 | |||||
| 秋叶 | |||||
| 熊猫 | |||||
| 汽车 | |||||
| 中式建筑 | |||||
| 自行车 | |||||
| 瀑布 | |||||
| 游乐场 | |||||
| 走廊巷道 | |||||
| 火车飞机内部 | |||||
| 卫生间 | |||||
| 厨房 | |||||
| 卧室 | |||||
| 餐厅 | |||||
| 客厅 | |||||
| 摩天大楼+塔 | |||||
| 桥梁 | |||||
| 海滨/湖滨 | |||||
| 山峰 | |||||
| 城市俯瞰 | |||||
| 工地 | |||||
| 伊斯兰式建筑 | |||||
| 欧式建筑 | |||||
| 足球场 | |||||
| 棒球场 | |||||
| 网球场 | |||||
| 轿车内部 | |||||
| 羽毛球馆 | |||||
| 乒乓球馆 | |||||
| 游泳馆 | |||||
| 羊驼 | |||||
| 图书馆 | |||||
| 超市 | |||||
| 饭店 | |||||
| 老虎 | |||||
| 企鹅 | |||||
| 大象 | |||||
| 恐龙 | |||||
| 水面 | |||||
| 室内篮球场 | |||||
| 保龄球馆 | |||||
| 教室 | |||||
| 兔子 | |||||
| 犀牛 | |||||
| 骆驼 | |||||
| 乌龟 | |||||
| 豹子 | |||||
| 长颈鹿 | |||||
| 孔雀 | |||||
| 袋鼠 | |||||
| 狮子 | |||||
| 电动车/摩托车 | |||||
| 飞机 | |||||
| 火车 | |||||
| 轮船 | |||||
| 眼镜 | |||||
| 手表 | |||||
| 高跟鞋 | |||||
| 洗衣机 | |||||
| 空调 | |||||
| 相机 | |||||
| 地图 | |||||
| 键盘 | |||||
| 红包 | |||||
| 福 字 | |||||
| 囍 字 | |||||
| 舞龙 | |||||
| 舞狮 | |||||
| 围棋 | |||||
| 泰迪熊 | |||||
| 京剧脸谱 | |||||
| 蓝精灵 | |||||
| 小马宝莉 | |||||
| 蝴蝶 | |||||
| 瓢虫 | |||||
| 蜻蜓 | |||||
| 桌球房 | |||||
| 会议室 | |||||
| 办公室 | |||||
| 酒吧 | |||||
| 商场中庭 | |||||
| 梅花鹿 | |||||
| 教堂正厅 | |||||
| 蜜蜂 | |||||
| 直升机 | |||||
| 麻将 | |||||
| 象棋 | |||||
| 麦当劳 | |||||
| 观赏鱼 | |||||
| 广角城楼 | |||||
| @@ -1,14 +1,14 @@ | |||||
| package com.mindspore.posenet; | |||||
| package com.mindspore.hms; | |||||
| import android.content.Context; | import android.content.Context; | ||||
| import androidx.test.ext.junit.runners.AndroidJUnit4; | |||||
| import androidx.test.platform.app.InstrumentationRegistry; | import androidx.test.platform.app.InstrumentationRegistry; | ||||
| import androidx.test.ext.junit.runners.AndroidJUnit4; | |||||
| import org.junit.Test; | import org.junit.Test; | ||||
| import org.junit.runner.RunWith; | import org.junit.runner.RunWith; | ||||
| import static org.junit.Assert.assertEquals; | |||||
| import static org.junit.Assert.*; | |||||
| /** | /** | ||||
| * Instrumented test, which will execute on an Android device. | * Instrumented test, which will execute on an Android device. | ||||
| @@ -21,6 +21,6 @@ public class ExampleInstrumentedTest { | |||||
| public void useAppContext() { | public void useAppContext() { | ||||
| // Context of the app under test. | // Context of the app under test. | ||||
| Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); | ||||
| assertEquals("com.mindspore.posenet", appContext.getPackageName()); | |||||
| assertEquals("com.mindspore.hms.test", appContext.getPackageName()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,62 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||||
| package="com.mindspore.hms"> | |||||
| <application | |||||
| android:allowBackup="true" | |||||
| android:label="@string/app_name" | |||||
| android:supportsRtl="true"> | |||||
| <activity | |||||
| android:name=".ImageSegmentation.PortraitSegmentationActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar"/> | |||||
| <activity | |||||
| android:name=".bonedetection.PosenetMainActivitys" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| 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" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".texttranslation.TextTranslationActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <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" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".scenedetection.SenceDetectionLiveAnalyseActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".ImageSegmentation.ImageSegmentationActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".ImageSegmentation.ImageSegmentationLiveAnalyseActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| <activity | |||||
| android:name=".textrecognition.TextRecognitionActivity" | |||||
| android:screenOrientation="portrait" | |||||
| android:theme="@style/Theme.AppCompat.NoActionBar" /> | |||||
| </application> | |||||
| </manifest> | |||||
| @@ -0,0 +1,59 @@ | |||||
| Afrikaans af | |||||
| Arabic ar | |||||
| Bulgarian bg | |||||
| Bengali bn | |||||
| Catalan ca | |||||
| Czech cs | |||||
| Welsh cy | |||||
| Danish da | |||||
| German de | |||||
| Greek el | |||||
| English en | |||||
| Spanish es | |||||
| Estonian et | |||||
| Finnish fi | |||||
| French fr | |||||
| Gujarati gu | |||||
| Hebrew he | |||||
| Hindi hi | |||||
| Croatian hr | |||||
| Hungarian hu | |||||
| Indonesian id | |||||
| Italian it | |||||
| Japanese ja | |||||
| Kannada kn | |||||
| Korean ko | |||||
| Lithuanian lt | |||||
| Macedonian mk | |||||
| Malayalam ml | |||||
| Marathi mr | |||||
| Dutch nl | |||||
| Punjabi pa | |||||
| Polish pl | |||||
| Portuguese pt | |||||
| Romanian ro | |||||
| Russian ru | |||||
| Slovak sk | |||||
| Slovenian sl | |||||
| Somali so | |||||
| Albanian sq | |||||
| Swedish sv | |||||
| Tamil ta | |||||
| Telugu te | |||||
| Thai th | |||||
| Tagalog tl | |||||
| Turkish tr | |||||
| Ukrainian uk | |||||
| Urdu ur | |||||
| Vietnamese vi | |||||
| Chinese zh | |||||
| Malaysian ms | |||||
| Norwegian no | |||||
| Chinese(Traditional) zh-HK | |||||
| Serbian sr | |||||
| Myanmar my | |||||
| Khmer km | |||||
| Persian fa | |||||
| Latvian lv | |||||
| Filipino tl | |||||
| Chinese(Traditional) zh-hk | |||||
| @@ -13,7 +13,7 @@ | |||||
| * See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.mindspore.imagesegmentation.help; | |||||
| package com.mindspore.hms; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.content.ContentResolver; | import android.content.ContentResolver; | ||||
| @@ -23,13 +23,11 @@ import android.database.Cursor; | |||||
| import android.graphics.Bitmap; | import android.graphics.Bitmap; | ||||
| import android.graphics.BitmapFactory; | import android.graphics.BitmapFactory; | ||||
| import android.graphics.Matrix; | import android.graphics.Matrix; | ||||
| import android.graphics.RectF; | |||||
| import android.media.ExifInterface; | import android.media.ExifInterface; | ||||
| import android.media.MediaScannerConnection; | import android.media.MediaScannerConnection; | ||||
| import android.net.Uri; | import android.net.Uri; | ||||
| import android.os.Build; | import android.os.Build; | ||||
| import android.os.Environment; | import android.os.Environment; | ||||
| import android.provider.MediaStore; | |||||
| import android.util.Log; | import android.util.Log; | ||||
| import java.io.ByteArrayInputStream; | import java.io.ByteArrayInputStream; | ||||
| @@ -39,21 +37,10 @@ import java.io.FileNotFoundException; | |||||
| import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.InputStream; | import java.io.InputStream; | ||||
| import java.nio.ByteBuffer; | |||||
| import java.nio.ByteOrder; | |||||
| public class BitmapUtils { | public class BitmapUtils { | ||||
| private static final String TAG = "BitmapUtils"; | private static final String TAG = "BitmapUtils"; | ||||
| public static void recycleBitmap(Bitmap... bitmaps) { | |||||
| for (Bitmap bitmap : bitmaps) { | |||||
| if (bitmap != null && !bitmap.isRecycled()) { | |||||
| bitmap.recycle(); | |||||
| bitmap = null; | |||||
| } | |||||
| } | |||||
| } | |||||
| public static Bitmap getBitmapFormUri(Activity ac, Uri uri) { | public static Bitmap getBitmapFormUri(Activity ac, Uri uri) { | ||||
| Bitmap bitmap = null; | Bitmap bitmap = null; | ||||
| try { | try { | ||||
| @@ -110,13 +97,13 @@ public class BitmapUtils { | |||||
| ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray()); | ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray()); | ||||
| Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null); | Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null); | ||||
| return bitmap; | return bitmap; | ||||
| }else { | |||||
| } else { | |||||
| return null; | return null; | ||||
| } | } | ||||
| } | } | ||||
| public static File getFileFromMediaUri(Context ac, Uri uri) { | public static File getFileFromMediaUri(Context ac, Uri uri) { | ||||
| if (uri.getScheme().toString().compareTo("content") == 0) { | |||||
| if (uri.getScheme().compareTo("content") == 0) { | |||||
| ContentResolver cr = ac.getContentResolver(); | ContentResolver cr = ac.getContentResolver(); | ||||
| Cursor cursor = cr.query(uri, null, null, null, null); | Cursor cursor = cr.query(uri, null, null, null, null); | ||||
| if (cursor != null) { | if (cursor != null) { | ||||
| @@ -127,7 +114,7 @@ public class BitmapUtils { | |||||
| return new File(filePath); | return new File(filePath); | ||||
| } | } | ||||
| } | } | ||||
| } else if (uri.getScheme().toString().compareTo("file") == 0) { | |||||
| } else if (uri.getScheme().compareTo("file") == 0) { | |||||
| return new File(uri.toString().replace("file://", "")); | return new File(uri.toString().replace("file://", "")); | ||||
| } | } | ||||
| return null; | return null; | ||||
| @@ -173,48 +160,22 @@ public class BitmapUtils { | |||||
| return returnBm; | return returnBm; | ||||
| } | } | ||||
| public static Bitmap scaleBitmapAndKeepRatio(Bitmap targetBmp, int reqHeightInPixels, int reqWidthInPixels) { | |||||
| if (targetBmp.getHeight() == reqHeightInPixels && targetBmp.getWidth() == reqWidthInPixels) { | |||||
| return targetBmp; | |||||
| } | |||||
| Matrix matrix = new Matrix(); | |||||
| matrix.setRectToRect(new RectF(0f, 0f, | |||||
| targetBmp.getWidth(), | |||||
| targetBmp.getHeight() | |||||
| ), new RectF(0f, 0f, | |||||
| reqWidthInPixels, | |||||
| reqHeightInPixels | |||||
| ), Matrix.ScaleToFit.FILL); | |||||
| return Bitmap.createBitmap( | |||||
| targetBmp, 0, 0, | |||||
| targetBmp.getWidth(), | |||||
| targetBmp.getHeight(), matrix, true | |||||
| ); | |||||
| } | |||||
| public static ByteBuffer bitmapToByteBuffer(Bitmap bitmapIn, int width, int height, float mean, float std) { | |||||
| Bitmap bitmap = scaleBitmapAndKeepRatio(bitmapIn, width, height); | |||||
| ByteBuffer inputImage = ByteBuffer.allocateDirect(1 * width * height * 3 * 4); | |||||
| inputImage.order(ByteOrder.nativeOrder()); | |||||
| inputImage.rewind(); | |||||
| int[] intValues = new int[width * height]; | |||||
| bitmap.getPixels(intValues, 0, width, 0, 0, width, height); | |||||
| int pixel = 0; | |||||
| for (int y = 0; y < height; y++) { | |||||
| for (int x = 0; x < width; x++) { | |||||
| int value = intValues[pixel++]; | |||||
| inputImage.putFloat(((float) (value >> 16 & 255) - mean) / std); | |||||
| inputImage.putFloat(((float) (value >> 8 & 255) - mean) / std); | |||||
| inputImage.putFloat(((float) (value & 255) - mean) / std); | |||||
| } | |||||
| } | |||||
| inputImage.rewind(); | |||||
| return inputImage; | |||||
| // Scale pictures to screen width. | |||||
| public static Bitmap zoomImage(Bitmap imageBitmap, int targetWidth, int maxHeight) { | |||||
| float scaleFactor = | |||||
| Math.max( | |||||
| (float) imageBitmap.getWidth() / (float) targetWidth, | |||||
| (float) imageBitmap.getHeight() / (float) maxHeight); | |||||
| Bitmap resizedBitmap = | |||||
| Bitmap.createScaledBitmap( | |||||
| imageBitmap, | |||||
| (int) (imageBitmap.getWidth() / scaleFactor), | |||||
| (int) (imageBitmap.getHeight() / scaleFactor), | |||||
| true); | |||||
| return resizedBitmap; | |||||
| } | } | ||||
| // Save the picture to the system album and refresh it. | // Save the picture to the system album and refresh it. | ||||
| public static void saveToAlbum(final Context context, Bitmap bitmap) { | public static void saveToAlbum(final Context context, Bitmap bitmap) { | ||||
| File file = null; | File file = null; | ||||
| @@ -255,13 +216,10 @@ public class BitmapUtils { | |||||
| Log.e(TAG, e.getMessage()); | Log.e(TAG, e.getMessage()); | ||||
| } | } | ||||
| MediaScannerConnection.scanFile(context, new String[]{path}, null, | MediaScannerConnection.scanFile(context, new String[]{path}, null, | ||||
| new MediaScannerConnection.OnScanCompletedListener() { | |||||
| @Override | |||||
| public void onScanCompleted(String path, Uri uri) { | |||||
| Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); | |||||
| mediaScanIntent.setData(uri); | |||||
| context.sendBroadcast(mediaScanIntent); | |||||
| } | |||||
| (path1, uri) -> { | |||||
| Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); | |||||
| mediaScanIntent.setData(uri); | |||||
| context.sendBroadcast(mediaScanIntent); | |||||
| }); | }); | ||||
| } else { | } else { | ||||
| String relationDir = file.getParent(); | String relationDir = file.getParent(); | ||||
| @@ -0,0 +1,227 @@ | |||||
| /** | |||||
| * 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.hms.ImageSegmentation; | |||||
| import android.content.Intent; | |||||
| import android.graphics.Bitmap; | |||||
| import android.graphics.BitmapFactory; | |||||
| import android.net.Uri; | |||||
| import android.os.Bundle; | |||||
| import android.os.Environment; | |||||
| import android.provider.MediaStore; | |||||
| import android.util.Log; | |||||
| import android.util.Pair; | |||||
| import android.view.View; | |||||
| import android.widget.ImageView; | |||||
| import android.widget.Toast; | |||||
| import androidx.annotation.Nullable; | |||||
| import androidx.appcompat.app.AppCompatActivity; | |||||
| 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.Task; | |||||
| import com.huawei.hms.mlsdk.MLAnalyzerFactory; | |||||
| import com.huawei.hms.mlsdk.common.MLFrame; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentation; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationAnalyzer; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationScene; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationSetting; | |||||
| import com.mindspore.hms.BitmapUtils; | |||||
| import com.mindspore.hms.R; | |||||
| import java.io.File; | |||||
| import java.io.FileNotFoundException; | |||||
| import java.io.IOException; | |||||
| @Route(path = "/hms/ImageSegmentationActivity") | |||||
| public class ImageSegmentationActivity extends AppCompatActivity { | |||||
| private static final String TAG = ImageSegmentationActivity.class.getSimpleName(); | |||||
| private static final int RC_CHOOSE_PHOTO = 1; | |||||
| private static final int RC_CHOOSE_CAMERA = 2; | |||||
| private ImageView imgPreview, mImageView; | |||||
| private Uri imageUri; | |||||
| private Bitmap originBitmap; | |||||
| private MLImageSegmentationAnalyzer analyzer; | |||||
| private Bitmap bitmapFore; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_image_segmentation); | |||||
| createAnalyzer(); | |||||
| init(); | |||||
| } | |||||
| private void init() { | |||||
| imgPreview = findViewById(R.id.img_origin); | |||||
| mImageView = findViewById(R.id.image_result); | |||||
| Toolbar mToolbar = findViewById(R.id.ImageSegmentation_activity_toolbar); | |||||
| setSupportActionBar(mToolbar); | |||||
| mToolbar.setNavigationOnClickListener(view -> finish()); | |||||
| } | |||||
| private void createAnalyzer() { | |||||
| MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory() | |||||
| .setExact(false) | |||||
| .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG) | |||||
| .setScene(MLImageSegmentationScene.ALL) | |||||
| .create(); | |||||
| analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting); | |||||
| } | |||||
| public void onClickPhoto(View view) { | |||||
| openGallay(RC_CHOOSE_PHOTO); | |||||
| } | |||||
| public void onClickCamera(View view) { | |||||
| openCamera(); | |||||
| } | |||||
| public void onClickRealTime(View view) { | |||||
| ARouter.getInstance().build("/hms/ImageSegmentationLiveAnalyseActivity").navigation(); | |||||
| } | |||||
| private void openGallay(int request) { | |||||
| Intent intent = new Intent(Intent.ACTION_PICK, null); | |||||
| intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); | |||||
| startActivityForResult(intent, request); | |||||
| } | |||||
| public void onClickSave(View view) { | |||||
| if (this.bitmapFore == null) { | |||||
| Log.e(TAG, "null processed image"); | |||||
| Toast.makeText(this.getApplicationContext(), R.string.no_pic_neededSave, Toast.LENGTH_SHORT).show(); | |||||
| } else { | |||||
| BitmapUtils.saveToAlbum(getApplicationContext(), this.bitmapFore); | |||||
| Toast.makeText(this.getApplicationContext(), R.string.save_success, Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| } | |||||
| private void openCamera() { | |||||
| Intent intentToTakePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); | |||||
| String mTempPhotoPath = Environment.getExternalStorageDirectory() + File.separator + "photo.jpeg"; | |||||
| imageUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", new File(mTempPhotoPath)); | |||||
| intentToTakePhoto.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); | |||||
| startActivityForResult(intentToTakePhoto, RC_CHOOSE_CAMERA); | |||||
| } | |||||
| @Override | |||||
| protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { | |||||
| super.onActivityResult(requestCode, resultCode, data); | |||||
| if (resultCode == RESULT_OK) { | |||||
| if (RC_CHOOSE_PHOTO == requestCode) { | |||||
| if (null != data && null != data.getData()) { | |||||
| this.imageUri = data.getData(); | |||||
| showOriginImage(); | |||||
| } else { | |||||
| finish(); | |||||
| } | |||||
| } else if (RC_CHOOSE_CAMERA == requestCode) { | |||||
| showOriginCamera(); | |||||
| } | |||||
| } | |||||
| } | |||||
| private void showOriginImage() { | |||||
| try { | |||||
| originBitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); | |||||
| } catch (FileNotFoundException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| if (originBitmap != null) { | |||||
| Glide.with(this).load(originBitmap).into(imgPreview); | |||||
| showSegmentationImage(); | |||||
| } else { | |||||
| } | |||||
| } | |||||
| private void showSegmentationImage() { | |||||
| MLFrame frame = new MLFrame.Creator().setBitmap(originBitmap).create(); | |||||
| Task<MLImageSegmentation> task = analyzer.asyncAnalyseFrame(frame); | |||||
| task.addOnSuccessListener(segmentation -> { | |||||
| // Processing logic for recognition success. | |||||
| if (segmentation != null) { | |||||
| displaySuccess(segmentation); | |||||
| } | |||||
| }).addOnFailureListener(e -> { | |||||
| displayFailure(e.toString()); | |||||
| }); | |||||
| } | |||||
| private void showOriginCamera() { | |||||
| try { | |||||
| Pair<Integer, Integer> targetedSize = this.getTargetSize(); | |||||
| int targetWidth = targetedSize.first; | |||||
| int maxHeight = targetedSize.second; | |||||
| Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); | |||||
| originBitmap = BitmapUtils.zoomImage(bitmap, targetWidth, maxHeight); | |||||
| } catch (FileNotFoundException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| // Determine how much to scale down the image. | |||||
| if (originBitmap != null) { | |||||
| Glide.with(this).load(originBitmap).into(imgPreview); | |||||
| showSegmentationImage(); | |||||
| } | |||||
| } | |||||
| private Pair<Integer, Integer> getTargetSize() { | |||||
| return new Pair<>(((View) this.imgPreview.getParent()).getWidth(), ((View) this.imgPreview.getParent()).getHeight()); | |||||
| } | |||||
| private void displaySuccess(MLImageSegmentation imageSegmentationResult) { | |||||
| // Draw the portrait with a transparent background. | |||||
| bitmapFore = imageSegmentationResult.getForeground(); | |||||
| if (bitmapFore != null) { | |||||
| this.mImageView.setImageBitmap(bitmapFore); | |||||
| } else { | |||||
| this.displayFailure("bitmapFore is null."); | |||||
| } | |||||
| } | |||||
| private void displayFailure(String str) { | |||||
| Log.e(TAG, str); | |||||
| Toast.makeText(this, R.string.segmentation_fail, Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| @Override | |||||
| protected void onDestroy() { | |||||
| super.onDestroy(); | |||||
| stopAnalyzer(); | |||||
| } | |||||
| private void stopAnalyzer() { | |||||
| if (analyzer != null) { | |||||
| try { | |||||
| analyzer.stop(); | |||||
| } catch (IOException e) { | |||||
| e.printStackTrace(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,283 @@ | |||||
| /** | |||||
| * 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.hms.ImageSegmentation; | |||||
| import android.Manifest; | |||||
| import android.content.Context; | |||||
| import android.content.DialogInterface; | |||||
| import android.content.Intent; | |||||
| import android.content.pm.PackageManager; | |||||
| import android.net.Uri; | |||||
| import android.os.Build; | |||||
| import android.os.Bundle; | |||||
| import android.provider.Settings; | |||||
| import android.renderscript.RenderScript; | |||||
| import android.util.Log; | |||||
| import android.util.SparseArray; | |||||
| import android.view.View; | |||||
| import androidx.annotation.NonNull; | |||||
| import androidx.appcompat.app.AlertDialog; | |||||
| import androidx.appcompat.app.AppCompatActivity; | |||||
| import androidx.appcompat.widget.Toolbar; | |||||
| import androidx.core.app.ActivityCompat; | |||||
| import com.alibaba.android.arouter.facade.annotation.Route; | |||||
| import com.huawei.hms.mlsdk.MLAnalyzerFactory; | |||||
| import com.huawei.hms.mlsdk.common.LensEngine; | |||||
| import com.huawei.hms.mlsdk.common.MLAnalyzer; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentation; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationAnalyzer; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationScene; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationSetting; | |||||
| import com.mindspore.hms.R; | |||||
| import com.mindspore.hms.camera.GraphicOverlay; | |||||
| import com.mindspore.hms.camera.LensEnginePreview; | |||||
| import com.mindspore.hms.camera.MLSegmentGraphic; | |||||
| import java.io.IOException; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.Collections; | |||||
| import java.util.List; | |||||
| @Route(path = "/hms/ImageSegmentationLiveAnalyseActivity") | |||||
| public class ImageSegmentationLiveAnalyseActivity extends AppCompatActivity implements View.OnClickListener { | |||||
| private static final String TAG = ImageSegmentationLiveAnalyseActivity.class.getSimpleName(); | |||||
| private static final int CAMERA_PERMISSION_CODE = 0; | |||||
| private MLImageSegmentationAnalyzer analyzer; | |||||
| private LensEngine mLensEngine; | |||||
| private LensEnginePreview mPreview; | |||||
| private GraphicOverlay mOverlay; | |||||
| private int lensType = LensEngine.FRONT_LENS; | |||||
| private boolean isFront = true; | |||||
| private boolean isPermissionRequested; | |||||
| private static final String[] ALL_PERMISSION = | |||||
| new String[]{ | |||||
| Manifest.permission.CAMERA, | |||||
| }; | |||||
| private RenderScript renderScript; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_image_segmentation_live_analyse); | |||||
| Toolbar mToolbar = findViewById(R.id.ImageSegmentation_activity_toolbar); | |||||
| setSupportActionBar(mToolbar); | |||||
| mToolbar.setNavigationOnClickListener(view -> finish()); | |||||
| this.mPreview = this.findViewById(R.id.segment_preview); | |||||
| this.mOverlay = this.findViewById(R.id.segment_overlay); | |||||
| this.findViewById(R.id.facingSwitch).setOnClickListener(this); | |||||
| if (savedInstanceState != null) { | |||||
| this.lensType = savedInstanceState.getInt("lensType"); | |||||
| } | |||||
| this.createSegmentAnalyzer(); | |||||
| // Checking camera permissions. | |||||
| if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { | |||||
| this.createLensEngine(); | |||||
| } else { | |||||
| this.checkPermission(); | |||||
| } | |||||
| renderScript = RenderScript.create(this); | |||||
| } | |||||
| private void createLensEngine() { | |||||
| Context context = this.getApplicationContext(); | |||||
| // Create LensEngine. | |||||
| this.mLensEngine = new LensEngine.Creator(context, this.analyzer).setLensType(this.lensType) | |||||
| .applyDisplayDimension(960, 720) | |||||
| .applyFps(25.0f) | |||||
| .enableAutomaticFocus(true) | |||||
| .create(); | |||||
| } | |||||
| // Permission application callback. | |||||
| @Override | |||||
| public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, | |||||
| @NonNull int[] grantResults) { | |||||
| boolean hasAllGranted = true; | |||||
| if (requestCode == CAMERA_PERMISSION_CODE) { | |||||
| if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |||||
| this.createLensEngine(); | |||||
| } else if (grantResults[0] == PackageManager.PERMISSION_DENIED) { | |||||
| hasAllGranted = false; | |||||
| if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[0])) { | |||||
| showWaringDialog(); | |||||
| } else { | |||||
| finish(); | |||||
| } | |||||
| } | |||||
| return; | |||||
| } | |||||
| super.onRequestPermissionsResult(requestCode, permissions, grantResults); | |||||
| } | |||||
| @Override | |||||
| public void onSaveInstanceState(Bundle savedInstanceState) { | |||||
| savedInstanceState.putInt("lensType", this.lensType); | |||||
| super.onSaveInstanceState(savedInstanceState); | |||||
| } | |||||
| @Override | |||||
| protected void onResume() { | |||||
| super.onResume(); | |||||
| if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { | |||||
| this.createLensEngine(); | |||||
| this.startLensEngine(); | |||||
| } else { | |||||
| this.checkPermission(); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public void onClick(View v) { | |||||
| this.isFront = !this.isFront; | |||||
| if (this.isFront) { | |||||
| this.lensType = LensEngine.FRONT_LENS; | |||||
| } else { | |||||
| this.lensType = LensEngine.BACK_LENS; | |||||
| } | |||||
| if (this.mLensEngine != null) { | |||||
| this.mLensEngine.close(); | |||||
| } | |||||
| this.createLensEngine(); | |||||
| this.startLensEngine(); | |||||
| } | |||||
| private void createSegmentAnalyzer() { | |||||
| // Create a segmentation analyzer. You can create an analyzer using the provided customized face detection parameter: MLImageSegmentationSetting | |||||
| MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory() | |||||
| .setExact(false) | |||||
| .setScene(MLImageSegmentationScene.FOREGROUND_ONLY) | |||||
| .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG) | |||||
| .create(); | |||||
| this.analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting); | |||||
| this.analyzer.setTransactor(new MLAnalyzer.MLTransactor<MLImageSegmentation>() { | |||||
| @Override | |||||
| public void destroy() { | |||||
| } | |||||
| @Override | |||||
| 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); | |||||
| mOverlay.add(graphic); | |||||
| } | |||||
| }); | |||||
| } | |||||
| private void startLensEngine() { | |||||
| if (this.mLensEngine != null) { | |||||
| try { | |||||
| this.mPreview.start(this.mLensEngine, this.mOverlay); | |||||
| } catch (IOException e) { | |||||
| Log.e(TAG, "Failed to start lens engine.", e); | |||||
| this.mLensEngine.release(); | |||||
| this.mLensEngine = null; | |||||
| } | |||||
| } | |||||
| } | |||||
| @Override | |||||
| protected void onPause() { | |||||
| super.onPause(); | |||||
| this.mPreview.stop(); | |||||
| } | |||||
| @Override | |||||
| protected void onDestroy() { | |||||
| super.onDestroy(); | |||||
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | |||||
| RenderScript.releaseAllContexts(); | |||||
| } else { | |||||
| renderScript.finish(); | |||||
| } | |||||
| if (this.mLensEngine != null) { | |||||
| this.mLensEngine.release(); | |||||
| } | |||||
| if (this.analyzer != null) { | |||||
| try { | |||||
| this.analyzer.stop(); | |||||
| } catch (IOException e) { | |||||
| Log.e(TAG, "Stop failed: " + e.getMessage()); | |||||
| } | |||||
| } | |||||
| } | |||||
| // Check the permissions required by the SDK. | |||||
| private void checkPermission() { | |||||
| if (Build.VERSION.SDK_INT >= 23 && !isPermissionRequested) { | |||||
| isPermissionRequested = true; | |||||
| ArrayList<String> permissionsList = new ArrayList<>(); | |||||
| for (String perm : getAllPermission()) { | |||||
| if (PackageManager.PERMISSION_GRANTED != this.checkSelfPermission(perm)) { | |||||
| permissionsList.add(perm); | |||||
| } | |||||
| } | |||||
| if (!permissionsList.isEmpty()) { | |||||
| requestPermissions(permissionsList.toArray(new String[0]), 0); | |||||
| } | |||||
| } | |||||
| } | |||||
| public static List<String> getAllPermission() { | |||||
| return Collections.unmodifiableList(Arrays.asList(ALL_PERMISSION)); | |||||
| } | |||||
| private void showWaringDialog() { | |||||
| AlertDialog.Builder dialog = new AlertDialog.Builder(this); | |||||
| dialog.setMessage(R.string.app_need_permission) | |||||
| .setPositiveButton(R.string.app_permission_by_hand, new DialogInterface.OnClickListener() { | |||||
| @Override | |||||
| public void onClick(DialogInterface dialog, int which) { | |||||
| //Guide the user to the setting page for manual authorization. | |||||
| Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); | |||||
| Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null); | |||||
| intent.setData(uri); | |||||
| startActivity(intent); | |||||
| } | |||||
| }) | |||||
| .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { | |||||
| @Override | |||||
| public void onClick(DialogInterface dialog, int which) { | |||||
| //Instruct the user to perform manual authorization. The permission request fails. | |||||
| finish(); | |||||
| } | |||||
| }).setOnCancelListener(dialogInterface); | |||||
| dialog.setCancelable(false); | |||||
| dialog.show(); | |||||
| } | |||||
| static DialogInterface.OnCancelListener dialogInterface = new DialogInterface.OnCancelListener() { | |||||
| @Override | |||||
| public void onCancel(DialogInterface dialog) { | |||||
| } | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,9 @@ | |||||
| package com.mindspore.hms.ImageSegmentation; | |||||
| import android.view.View; | |||||
| public interface OnBackgroundImageListener { | |||||
| void onBackImageSelected(int position); | |||||
| void onImageAdd(View view); | |||||
| } | |||||
| @@ -0,0 +1,234 @@ | |||||
| package com.mindspore.hms.ImageSegmentation; | |||||
| import android.content.Context; | |||||
| import android.content.Intent; | |||||
| import android.graphics.Bitmap; | |||||
| import android.graphics.Matrix; | |||||
| import android.net.Uri; | |||||
| import android.os.Bundle; | |||||
| import android.provider.MediaStore; | |||||
| import android.util.SparseArray; | |||||
| import android.view.Menu; | |||||
| import android.view.MenuItem; | |||||
| import android.view.View; | |||||
| import android.widget.ImageView; | |||||
| import android.widget.Toast; | |||||
| import androidx.annotation.Nullable; | |||||
| import androidx.appcompat.app.AppCompatActivity; | |||||
| import androidx.appcompat.widget.Toolbar; | |||||
| import androidx.recyclerview.widget.LinearLayoutManager; | |||||
| import androidx.recyclerview.widget.RecyclerView; | |||||
| import com.alibaba.android.arouter.facade.annotation.Route; | |||||
| import com.bumptech.glide.Glide; | |||||
| import com.huawei.hms.mlsdk.MLAnalyzerFactory; | |||||
| import com.huawei.hms.mlsdk.common.LensEngine; | |||||
| import com.huawei.hms.mlsdk.common.MLAnalyzer; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentation; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationAnalyzer; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationScene; | |||||
| import com.huawei.hms.mlsdk.imgseg.MLImageSegmentationSetting; | |||||
| import com.mindspore.common.utils.ImageUtils; | |||||
| import com.mindspore.hms.ImageSegmentation.overlay.CameraImageGraphic; | |||||
| import com.mindspore.hms.ImageSegmentation.overlay.GraphicOverlay; | |||||
| import com.mindspore.hms.R; | |||||
| import com.mindspore.hms.camera.LensEnginePreview; | |||||
| import java.io.IOException; | |||||
| @Route(path = "/hms/PortraitSegmentationActivity") | |||||
| public class PortraitSegmentationActivity extends AppCompatActivity implements OnBackgroundImageListener { | |||||
| private static final int[] IMAGES = {R.drawable.portrait1, R.drawable.portrait2, R.drawable.portrait3, R.drawable.portrait4, R.drawable.portrait5, R.drawable.icon_default}; | |||||
| private RecyclerView recyclerView; | |||||
| private MLImageSegmentationAnalyzer analyzer; | |||||
| private LensEnginePreview mPreview; | |||||
| private GraphicOverlay mOverlay; | |||||
| private LensEngine mLensEngine; | |||||
| private int lensType = LensEngine.FRONT_LENS; | |||||
| private boolean isFront = true; | |||||
| private ImageView background; | |||||
| @Override | |||||
| protected void onCreate(Bundle savedInstanceState) { | |||||
| super.onCreate(savedInstanceState); | |||||
| setContentView(R.layout.activity_portrait); | |||||
| init(); | |||||
| createSegmentAnalyzer(); | |||||
| if (savedInstanceState != null) { | |||||
| this.lensType = savedInstanceState.getInt("lensType"); | |||||
| } | |||||
| } | |||||
| private void init() { | |||||
| Toolbar mToolbar = findViewById(R.id.activity_toolbar); | |||||
| setSupportActionBar(mToolbar); | |||||
| mToolbar.setNavigationOnClickListener(view -> finish()); | |||||
| recyclerView = findViewById(R.id.recycleView); | |||||
| LinearLayoutManager mHorizontalLinearLayout = new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false); | |||||
| recyclerView.setLayoutManager(mHorizontalLinearLayout); | |||||
| recyclerView.setAdapter(new PortraitSegmentationAdapter(this, IMAGES, this)); | |||||
| mPreview = findViewById(R.id.preview); | |||||
| mOverlay = findViewById(R.id.graphic); | |||||
| background = findViewById(R.id.background); | |||||
| } | |||||
| @Override | |||||
| public void onSaveInstanceState(Bundle savedInstanceState) { | |||||
| savedInstanceState.putInt("lensType", this.lensType); | |||||
| super.onSaveInstanceState(savedInstanceState); | |||||
| } | |||||
| @Override | |||||
| protected void onResume() { | |||||
| super.onResume(); | |||||
| this.createLensEngine(); | |||||
| this.startLensEngine(); | |||||
| } | |||||
| @Override | |||||
| public boolean onCreateOptionsMenu(Menu menu) { | |||||
| getMenuInflater().inflate(R.menu.menu_setting, menu); | |||||
| return true; | |||||
| } | |||||
| @Override | |||||
| public boolean onOptionsItemSelected(MenuItem item) { | |||||
| int itemId = item.getItemId(); | |||||
| if (itemId == R.id.item_camera) { | |||||
| isFront = !isFront; | |||||
| if (isFront) { | |||||
| lensType = LensEngine.FRONT_LENS; | |||||
| } else { | |||||
| lensType = LensEngine.BACK_LENS; | |||||
| } | |||||
| if (mLensEngine != null) { | |||||
| mLensEngine.close(); | |||||
| } | |||||
| createLensEngine(); | |||||
| startLensEngine(); | |||||
| } else if (itemId == R.id.item_save) { | |||||
| mOverlay.setTag("mOverlay"); | |||||
| mPreview.setTag("mPreview"); | |||||
| Uri imgPath = ImageUtils.saveToAlbum(PortraitSegmentationActivity.this, mPreview,null,true); | |||||
| if (imgPath != null) { | |||||
| Toast.makeText(PortraitSegmentationActivity.this,"保存成功", Toast.LENGTH_SHORT).show(); | |||||
| } | |||||
| } | |||||
| return super.onOptionsItemSelected(item); | |||||
| } | |||||
| private void createSegmentAnalyzer() { | |||||
| MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory() | |||||
| .setExact(false) | |||||
| .setScene(MLImageSegmentationScene.FOREGROUND_ONLY) | |||||
| .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG) | |||||
| .create(); | |||||
| this.analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting); | |||||
| this.analyzer.setTransactor(new MLAnalyzer.MLTransactor<MLImageSegmentation>() { | |||||
| @Override | |||||
| public void destroy() { | |||||
| } | |||||
| @Override | |||||
| public void transactResult(MLAnalyzer.Result<MLImageSegmentation> result) { | |||||
| SparseArray<MLImageSegmentation> imageSegmentationResult = result.getAnalyseList(); | |||||
| Bitmap bitmap = imageSegmentationResult.valueAt(0).getForeground(); | |||||
| if (isFront) { | |||||
| bitmap = convert(bitmap); | |||||
| } | |||||
| mOverlay.clear(); | |||||
| CameraImageGraphic cameraImageGraphic = new CameraImageGraphic(mOverlay, bitmap); | |||||
| mOverlay.addGraphic(cameraImageGraphic); | |||||
| mOverlay.postInvalidate(); | |||||
| } | |||||
| }); | |||||
| } | |||||
| private void createLensEngine() { | |||||
| Context context = this.getApplicationContext(); | |||||
| // Create LensEngine. | |||||
| this.mLensEngine = new LensEngine.Creator(context, this.analyzer) | |||||
| .setLensType(lensType) | |||||
| .applyDisplayDimension(1280, 720) | |||||
| .applyFps(25.0f) | |||||
| .enableAutomaticFocus(true) | |||||
| .create(); | |||||
| } | |||||
| private void startLensEngine() { | |||||
| if (mLensEngine != null) { | |||||
| try { | |||||
| mPreview.start(mLensEngine); | |||||
| } catch (IOException e) { | |||||
| mLensEngine.release(); | |||||
| mLensEngine = null; | |||||
| } | |||||
| } | |||||
| } | |||||
| private Bitmap convert(Bitmap bitmap) { | |||||
| Matrix m = new Matrix(); | |||||
| m.setScale(-1, 1); | |||||
| Bitmap reverseBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true); | |||||
| return reverseBitmap; | |||||
| } | |||||
| public void stopPreview() { | |||||
| mPreview.stop(); | |||||
| } | |||||
| @Override | |||||
| public void onBackImageSelected(int position) { | |||||
| Glide.with(this).load(IMAGES[position]).into(background); | |||||
| } | |||||
| @Override | |||||
| public void onImageAdd(View view) { | |||||
| openGallay(1000); | |||||
| } | |||||
| private void openGallay(int request) { | |||||
| Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null); | |||||
| intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); | |||||
| startActivityForResult(intentToPickPic, 1000); | |||||
| } | |||||
| @Override | |||||
| protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { | |||||
| super.onActivityResult(requestCode, resultCode, data); | |||||
| if (resultCode == RESULT_OK) { | |||||
| if (1000 == requestCode) { | |||||
| if (null != data && null != data.getData()) { | |||||
| Glide.with(this).load(data.getData()).into(background); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @Override | |||||
| protected void onDestroy() { | |||||
| super.onDestroy(); | |||||
| if (analyzer != null) { | |||||
| try { | |||||
| analyzer.stop(); | |||||
| } catch (IOException e) { | |||||
| } | |||||
| } | |||||
| if (mLensEngine != null) { | |||||
| mLensEngine.release(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,85 @@ | |||||
| package com.mindspore.hms.ImageSegmentation; | |||||
| import android.content.Context; | |||||
| import android.view.LayoutInflater; | |||||
| import android.view.View; | |||||
| import android.view.ViewGroup; | |||||
| import android.widget.ImageView; | |||||
| import androidx.annotation.NonNull; | |||||
| import androidx.recyclerview.widget.RecyclerView; | |||||
| import com.bumptech.glide.Glide; | |||||
| import com.mindspore.hms.R; | |||||
| public class PortraitSegmentationAdapter extends RecyclerView.Adapter<PortraitSegmentationAdapter.PortraitItemViewHolder> { | |||||
| private final int[] IMAGES; | |||||
| private final Context context; | |||||
| private final OnBackgroundImageListener mListener; | |||||
| public PortraitSegmentationAdapter(Context context, int[] IMAGES, OnBackgroundImageListener mListener) { | |||||
| this.IMAGES = IMAGES; | |||||
| this.context = context; | |||||
| this.mListener = mListener; | |||||
| } | |||||
| @NonNull | |||||
| @Override | |||||
| public PortraitItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | |||||
| View view = LayoutInflater.from(context) | |||||
| .inflate(R.layout.image_item, parent, false); | |||||
| return new PortraitItemViewHolder(view); | |||||
| } | |||||
| @Override | |||||
| public void onBindViewHolder(@NonNull PortraitItemViewHolder holder, int position) { | |||||
| Glide.with(context). | |||||
| load(IMAGES[position]). | |||||
| into(holder.getImageView()); | |||||
| View view = holder.getMView(); | |||||
| view.setTag(IMAGES[position]); | |||||
| view.setOnClickListener(view1 -> { | |||||
| if (mListener != null) { | |||||
| if (IMAGES.length - 1 == position) { | |||||
| mListener.onImageAdd(holder.getImageView()); | |||||
| } else { | |||||
| mListener.onBackImageSelected(position); | |||||
| } | |||||
| } | |||||
| }); | |||||
| } | |||||
| @Override | |||||
| public int getItemCount() { | |||||
| return IMAGES == null ? 0 : IMAGES.length; | |||||
| } | |||||
| public class PortraitItemViewHolder extends RecyclerView.ViewHolder { | |||||
| private ImageView imageView; | |||||
| private final View mView; | |||||
| public final ImageView getImageView() { | |||||
| return this.imageView; | |||||
| } | |||||
| public final void setImageView(ImageView imageView) { | |||||
| this.imageView = imageView; | |||||
| } | |||||
| public final View getMView() { | |||||
| return this.mView; | |||||
| } | |||||
| public PortraitItemViewHolder(View mView) { | |||||
| super(mView); | |||||
| this.mView = mView; | |||||
| this.imageView = mView.findViewById(R.id.image_view); | |||||
| } | |||||
| } | |||||
| } | |||||