From 628b2d130dbc72661d7fede19eb908aa9b89d96c Mon Sep 17 00:00:00 2001 From: DefTruth <31974251+DefTruth@users.noreply.github.com> Date: Tue, 8 Nov 2022 18:59:25 +0800 Subject: [PATCH] [Android] Revert update fastdeploy Android app ui module (#530) Revert "[Android] Update fastdeploy Android app ui module" --- java/android/app/src/main/AndroidManifest.xml | 4 +- .../detection/DetectionMainActivity.java | 431 ------------------ .../app/examples/detection/MainActivity.java | 255 +++++++++++ ...ngsActivity.java => SettingsActivity.java} | 7 +- ...OcrMainActivity.java => MainActivity.java} | 50 +- ...ngsActivity.java => SettingsActivity.java} | 6 +- .../app/ui/{layout => }/ActionBarLayout.java | 2 +- .../AppCompatPreferenceActivity.java | 2 +- .../app/ui/{view => }/CameraSurfaceView.java | 4 +- .../app/ui/view/ResultListView.java | 43 -- .../ui/view/adapter/DetectResultAdapter.java | 48 -- .../app/ui/view/model/BaseResultModel.java | 41 -- .../main/res/layout-land/activity_main.xml | 99 ++++ .../layout-land/detection_activity_main.xml | 14 - .../res/layout-land/ocr_activity_main.xml | 14 - ...tion_camera_page.xml => activity_main.xml} | 20 +- .../res/layout/detection_activity_main.xml | 14 - .../main/res/layout/detection_result_page.xml | 160 ------- .../res/layout/detection_result_page_item.xml | 26 -- .../src/main/res/layout/ocr_activity_main.xml | 14 - .../src/main/res/layout/ocr_camera_page.xml | 161 ------- .../src/main/res/layout/ocr_result_page.xml | 160 ------- .../main/res/layout/ocr_result_page_item.xml | 26 -- .../app/src/main/res/values/strings.xml | 9 +- .../app/src/main/res/values/values.xml | 17 - .../{default_settings.xml => settings.xml} | 0 26 files changed, 406 insertions(+), 1221 deletions(-) delete mode 100644 java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java create mode 100644 java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/MainActivity.java rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/{DetectionSettingsActivity.java => SettingsActivity.java} (97%) rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/{OcrMainActivity.java => MainActivity.java} (84%) rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/{OcrSettingsActivity.java => SettingsActivity.java} (97%) rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/{layout => }/ActionBarLayout.java (94%) rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/{view => }/AppCompatPreferenceActivity.java (98%) rename java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/{view => }/CameraSurfaceView.java (99%) delete mode 100644 java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/ResultListView.java delete mode 100644 java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/adapter/DetectResultAdapter.java delete mode 100644 java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/model/BaseResultModel.java create mode 100644 java/android/app/src/main/res/layout-land/activity_main.xml delete mode 100644 java/android/app/src/main/res/layout-land/detection_activity_main.xml delete mode 100644 java/android/app/src/main/res/layout-land/ocr_activity_main.xml rename java/android/app/src/main/res/layout/{detection_camera_page.xml => activity_main.xml} (92%) delete mode 100644 java/android/app/src/main/res/layout/detection_activity_main.xml delete mode 100644 java/android/app/src/main/res/layout/detection_result_page.xml delete mode 100644 java/android/app/src/main/res/layout/detection_result_page_item.xml delete mode 100644 java/android/app/src/main/res/layout/ocr_activity_main.xml delete mode 100644 java/android/app/src/main/res/layout/ocr_camera_page.xml delete mode 100644 java/android/app/src/main/res/layout/ocr_result_page.xml delete mode 100644 java/android/app/src/main/res/layout/ocr_result_page_item.xml delete mode 100644 java/android/app/src/main/res/values/values.xml rename java/android/app/src/main/res/xml/{default_settings.xml => settings.xml} (100%) diff --git a/java/android/app/src/main/AndroidManifest.xml b/java/android/app/src/main/AndroidManifest.xml index ab3b31b87..754b0b6c3 100644 --- a/java/android/app/src/main/AndroidManifest.xml +++ b/java/android/app/src/main/AndroidManifest.xml @@ -15,14 +15,14 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java deleted file mode 100644 index 704f34058..000000000 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionMainActivity.java +++ /dev/null @@ -1,431 +0,0 @@ -package com.baidu.paddle.fastdeploy.app.examples.detection; - - -import android.Manifest; -import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Bundle; -import android.os.SystemClock; -import android.preference.PreferenceManager; -import android.provider.MediaStore; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.baidu.paddle.fastdeploy.RuntimeOption; -import com.baidu.paddle.fastdeploy.app.examples.R; -import com.baidu.paddle.fastdeploy.app.ui.view.CameraSurfaceView; -import com.baidu.paddle.fastdeploy.app.ui.view.ResultListView; -import com.baidu.paddle.fastdeploy.app.ui.Utils; -import com.baidu.paddle.fastdeploy.app.ui.view.adapter.DetectResultAdapter; -import com.baidu.paddle.fastdeploy.app.ui.view.model.BaseResultModel; -import com.baidu.paddle.fastdeploy.vision.DetectionResult; -import com.baidu.paddle.fastdeploy.vision.detection.PicoDet; - -import java.io.File; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -public class DetectionMainActivity extends Activity implements View.OnClickListener, CameraSurfaceView.OnTextureChangedListener { - private static final String TAG = DetectionMainActivity.class.getSimpleName(); - - CameraSurfaceView svPreview; - TextView tvStatus; - ImageButton btnSwitch; - ImageButton btnShutter; - ImageButton btnSettings; - ImageView realtimeToggleButton; - boolean isRealtimeStatusRunning = false; - ImageView backInPreview; - private ImageView albumSelectButton; - private View mCameraPageView; - private ViewGroup mResultPageView; - private ImageView resultImage; - private ImageView backInResult; - private SeekBar confidenceSeekbar; - private TextView seekbarText; - private float resultNum = 1.0f; - private ResultListView detectResultView; - private Bitmap shutterBitmap; - private Bitmap originShutterBitmap; - private Bitmap picBitmap; - private Bitmap originPicBitmap; - public static final int BTN_SHUTTER = 0; - public static final int ALBUM_SELECT = 1; - private static int TYPE = BTN_SHUTTER; - - private static final int REQUEST_PERMISSION_CODE_STORAGE = 101; - private static final int INTENT_CODE_PICK_IMAGE = 100; - - String savedImagePath = "result.jpg"; - int lastFrameIndex = 0; - long lastFrameTime; - - // Call 'init' and 'release' manually later - PicoDet predictor = new PicoDet(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - // Fullscreen - requestWindowFeature(Window.FEATURE_NO_TITLE); - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - - setContentView(R.layout.detection_activity_main); - - // Clear all setting items to avoid app crashing due to the incorrect settings - initSettings(); - - // Init the camera preview and UI components - initView(); - - // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions - if (!checkAllPermissions()) { - requestAllPermissions(); - } - } - - @SuppressLint("NonConstantResourceId") - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_switch: - svPreview.switchCamera(); - break; - case R.id.btn_shutter: - TYPE = BTN_SHUTTER; - svPreview.onPause(); - mCameraPageView.setVisibility(View.GONE); - mResultPageView.setVisibility(View.VISIBLE); - seekbarText.setText(resultNum + ""); - confidenceSeekbar.setProgress((int) (resultNum * 100)); - resultImage.setImageBitmap(shutterBitmap); - break; - case R.id.btn_settings: - startActivity(new Intent(DetectionMainActivity.this, DetectionSettingsActivity.class)); - break; - case R.id.realtime_toggle_btn: - toggleRealtimeStyle(); - break; - case R.id.back_in_preview: - finish(); - break; - case R.id.albumSelect: - TYPE = ALBUM_SELECT; - // 判断是否已经赋予权限 - if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { - // 如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。 - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CODE_STORAGE); - } else { - Intent intent = new Intent(Intent.ACTION_PICK); - intent.setType("image/*"); - startActivityForResult(intent, INTENT_CODE_PICK_IMAGE); - } - break; - case R.id.back_in_result: - mResultPageView.setVisibility(View.GONE); - mCameraPageView.setVisibility(View.VISIBLE); - svPreview.onResume(); - break; - - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == INTENT_CODE_PICK_IMAGE) { - if (resultCode == Activity.RESULT_OK) { - mCameraPageView.setVisibility(View.GONE); - mResultPageView.setVisibility(View.VISIBLE); - seekbarText.setText(resultNum + ""); - confidenceSeekbar.setProgress((int) (resultNum * 100)); - Uri uri = data.getData(); - String path = getRealPathFromURI(uri); - picBitmap = decodeBitmap(path, 720, 1280); - originPicBitmap = picBitmap.copy(Bitmap.Config.ARGB_8888, true); - resultImage.setImageBitmap(picBitmap); - } - } - } - - private String getRealPathFromURI(Uri contentURI) { - String result; - Cursor cursor = null; - try { - cursor = getContentResolver().query(contentURI, null, null, null, null); - } catch (Throwable e) { - e.printStackTrace(); - } - if (cursor == null) { - result = contentURI.getPath(); - } else { - cursor.moveToFirst(); - int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); - result = cursor.getString(idx); - cursor.close(); - } - return result; - } - - private void toggleRealtimeStyle() { - if (isRealtimeStatusRunning) { - isRealtimeStatusRunning = false; - realtimeToggleButton.setImageResource(R.drawable.realtime_stop_btn); - svPreview.setOnTextureChangedListener(this); - tvStatus.setVisibility(View.VISIBLE); - } else { - isRealtimeStatusRunning = true; - realtimeToggleButton.setImageResource(R.drawable.realtime_start_btn); - tvStatus.setVisibility(View.GONE); - svPreview.setOnTextureChangedListener(new CameraSurfaceView.OnTextureChangedListener() { - @Override - public boolean onTextureChanged(Bitmap ARGB8888ImageBitmap) { - return false; - } - }); - } - } - - @Override - public boolean onTextureChanged(Bitmap ARGB8888ImageBitmap) { - String savedImagePath = ""; - synchronized (this) { - savedImagePath = Utils.getDCIMDirectory() + File.separator + "result.png"; - } - shutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888,true); - originShutterBitmap = ARGB8888ImageBitmap.copy(Bitmap.Config.ARGB_8888,true); - boolean modified = false; - DetectionResult result = predictor.predict( - ARGB8888ImageBitmap, savedImagePath, DetectionSettingsActivity.scoreThreshold); - modified = result.initialized(); - if (!savedImagePath.isEmpty()) { - synchronized (this) { - DetectionMainActivity.this.savedImagePath = "result.jpg"; - } - } - lastFrameIndex++; - if (lastFrameIndex >= 30) { - final int fps = (int) (lastFrameIndex * 1e9 / (System.nanoTime() - lastFrameTime)); - runOnUiThread(new Runnable() { - @SuppressLint("SetTextI18n") - public void run() { - tvStatus.setText(Integer.toString(fps) + "fps"); - } - }); - lastFrameIndex = 0; - lastFrameTime = System.nanoTime(); - } - return modified; - } - - /** - * @param path 路径 - * @param displayWidth 需要显示的宽度 - * @param displayHeight 需要显示的高度 - * @return Bitmap - */ - public static Bitmap decodeBitmap(String path, int displayWidth, int displayHeight) { - BitmapFactory.Options op = new BitmapFactory.Options(); - op.inJustDecodeBounds = true; - // op.inJustDecodeBounds = true;表示我们只读取Bitmap的宽高等信息,不读取像素。 - Bitmap bmp = BitmapFactory.decodeFile(path, op); // 获取尺寸信息 - // op.outWidth表示的是图像真实的宽度 - // op.inSamplySize 表示的是缩小的比例 - // op.inSamplySize = 4,表示缩小1/4的宽和高,1/16的像素,android认为设置为2是最快的。 - // 获取比例大小 - int wRatio = (int) Math.ceil(op.outWidth / (float) displayWidth); - int hRatio = (int) Math.ceil(op.outHeight / (float) displayHeight); - // 如果超出指定大小,则缩小相应的比例 - if (wRatio > 1 && hRatio > 1) { - if (wRatio > hRatio) { - // 如果太宽,我们就缩小宽度到需要的大小,注意,高度就会变得更加的小。 - op.inSampleSize = wRatio; - } else { - op.inSampleSize = hRatio; - } - } - op.inJustDecodeBounds = false; - bmp = BitmapFactory.decodeFile(path, op); - // 从原Bitmap创建一个给定宽高的Bitmap - return Bitmap.createScaledBitmap(bmp, displayWidth, displayHeight, true); - } - - @Override - protected void onResume() { - super.onResume(); - // Reload settings and re-initialize the predictor - checkAndUpdateSettings(); - // Open camera until the permissions have been granted - if (!checkAllPermissions()) { - svPreview.disableCamera(); - } - svPreview.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - svPreview.onPause(); - } - - @Override - protected void onDestroy() { - if (predictor != null) { - predictor.release(); - } - super.onDestroy(); - } - - public void initView() { - svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); - svPreview.setOnTextureChangedListener(this); - tvStatus = (TextView) findViewById(R.id.tv_status); - btnSwitch = (ImageButton) findViewById(R.id.btn_switch); - btnSwitch.setOnClickListener(this); - btnShutter = (ImageButton) findViewById(R.id.btn_shutter); - btnShutter.setOnClickListener(this); - btnSettings = (ImageButton) findViewById(R.id.btn_settings); - btnSettings.setOnClickListener(this); - realtimeToggleButton = findViewById(R.id.realtime_toggle_btn); - realtimeToggleButton.setOnClickListener(this); - backInPreview = findViewById(R.id.back_in_preview); - backInPreview.setOnClickListener(this); - albumSelectButton = findViewById(R.id.albumSelect); - albumSelectButton.setOnClickListener(this); - mCameraPageView = findViewById(R.id.camera_page); - mResultPageView = findViewById(R.id.result_page); - resultImage = findViewById(R.id.result_image); - backInResult = findViewById(R.id.back_in_result); - backInResult.setOnClickListener(this); - confidenceSeekbar = findViewById(R.id.confidence_seekbar); - seekbarText = findViewById(R.id.seekbar_text); - detectResultView = findViewById(R.id.result_list_view); - - List results = new ArrayList<>(); - results.add(new BaseResultModel(1, "cup", 0.4f)); - results.add(new BaseResultModel(2, "pen", 0.6f)); - results.add(new BaseResultModel(3, "tang", 1.0f)); - final DetectResultAdapter adapter = new DetectResultAdapter(this, R.layout.detection_result_page_item, results); - detectResultView.setAdapter(adapter); - detectResultView.invalidate(); - - confidenceSeekbar.setMax(100); - confidenceSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - float resultConfidence = seekBar.getProgress() / 100f; - BigDecimal bd = new BigDecimal(resultConfidence); - resultNum = bd.setScale(1, BigDecimal.ROUND_HALF_UP).floatValue(); - seekbarText.setText(resultNum + ""); - confidenceSeekbar.setProgress((int) (resultNum * 100)); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - runOnUiThread(new Runnable() { - @Override - public void run() { - if (TYPE == ALBUM_SELECT) { - SystemClock.sleep(500); - predictor.predict(picBitmap, savedImagePath, resultNum); - resultImage.setImageBitmap(picBitmap); - picBitmap = originPicBitmap.copy(Bitmap.Config.ARGB_8888, true); - resultNum = 1.0f; - } else { - SystemClock.sleep(500); - predictor.predict(shutterBitmap, savedImagePath, resultNum); - resultImage.setImageBitmap(shutterBitmap); - shutterBitmap = originShutterBitmap.copy(Bitmap.Config.ARGB_8888, true); - resultNum = 1.0f; - } - } - }); - } - }); - } - - @SuppressLint("ApplySharedPref") - public void initSettings() { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.clear(); - editor.commit(); - DetectionSettingsActivity.resetSettings(); - } - - public void checkAndUpdateSettings() { - if (DetectionSettingsActivity.checkAndUpdateSettings(this)) { - String realModelDir = getCacheDir() + "/" + DetectionSettingsActivity.modelDir; - Utils.copyDirectoryFromAssets(this, DetectionSettingsActivity.modelDir, realModelDir); - String realLabelPath = getCacheDir() + "/" + DetectionSettingsActivity.labelPath; - Utils.copyFileFromAssets(this, DetectionSettingsActivity.labelPath, realLabelPath); - - String modelFile = realModelDir + "/" + "model.pdmodel"; - String paramsFile = realModelDir + "/" + "model.pdiparams"; - String configFile = realModelDir + "/" + "infer_cfg.yml"; - String labelFile = realLabelPath; - RuntimeOption option = new RuntimeOption(); - option.setCpuThreadNum(DetectionSettingsActivity.cpuThreadNum); - option.setLitePowerMode(DetectionSettingsActivity.cpuPowerMode); - option.enableRecordTimeOfRuntime(); - if (Boolean.parseBoolean(DetectionSettingsActivity.enableLiteFp16)) { - option.enableLiteFp16(); - } - predictor.init(modelFile, paramsFile, configFile, labelFile, option); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, - @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) { - new AlertDialog.Builder(DetectionMainActivity.this) - .setTitle("Permission denied") - .setMessage("Click to force quit the app, then open Settings->Apps & notifications->Target " + - "App->Permissions to grant all of the permissions.") - .setCancelable(false) - .setPositiveButton("Exit", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - DetectionMainActivity.this.finish(); - } - }).show(); - } - } - - private void requestAllPermissions() { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA}, 0); - } - - private boolean checkAllPermissions() { - return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED - && ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; - } -} diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/MainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/MainActivity.java new file mode 100644 index 000000000..bbe184b45 --- /dev/null +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/MainActivity.java @@ -0,0 +1,255 @@ +package com.baidu.paddle.fastdeploy.app.examples.detection; + + +import android.Manifest; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import com.baidu.paddle.fastdeploy.RuntimeOption; +import com.baidu.paddle.fastdeploy.app.examples.R; +import com.baidu.paddle.fastdeploy.app.ui.CameraSurfaceView; +import com.baidu.paddle.fastdeploy.app.ui.Utils; +import com.baidu.paddle.fastdeploy.vision.DetectionResult; +import com.baidu.paddle.fastdeploy.vision.detection.PicoDet; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class MainActivity extends Activity implements View.OnClickListener, CameraSurfaceView.OnTextureChangedListener { + private static final String TAG = MainActivity.class.getSimpleName(); + + CameraSurfaceView svPreview; + TextView tvStatus; + ImageButton btnSwitch; + ImageButton btnShutter; + ImageButton btnSettings; + ImageView realtimeToggleButton; + boolean isRealtimeStatusRunning = false; + ImageView backInPreview; + + String savedImagePath = "result.jpg"; + int lastFrameIndex = 0; + long lastFrameTime; + + // Call 'init' and 'release' manually later + PicoDet predictor = new PicoDet(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Fullscreen + requestWindowFeature(Window.FEATURE_NO_TITLE); + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + + setContentView(R.layout.activity_main); + + // Clear all setting items to avoid app crashing due to the incorrect settings + initSettings(); + + // Init the camera preview and UI components + initView(); + + // Check and request CAMERA and WRITE_EXTERNAL_STORAGE permissions + if (!checkAllPermissions()) { + requestAllPermissions(); + } + } + + @SuppressLint("NonConstantResourceId") + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_switch: + svPreview.switchCamera(); + break; + case R.id.btn_shutter: + @SuppressLint("SimpleDateFormat") + SimpleDateFormat date = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); + synchronized (this) { + savedImagePath = Utils.getDCIMDirectory() + File.separator + date.format(new Date()).toString() + ".png"; + } + Toast.makeText(MainActivity.this, "Save snapshot to " + savedImagePath, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_settings: + startActivity(new Intent(MainActivity.this, SettingsActivity.class)); + break; + case R.id.realtime_toggle_btn: + toggleRealtimeStyle(); + break; + case R.id.back_in_preview: + finish(); + break; + } + } + + private void toggleRealtimeStyle() { + if (isRealtimeStatusRunning) { + isRealtimeStatusRunning = false; + realtimeToggleButton.setImageResource(R.drawable.realtime_stop_btn); + svPreview.setOnTextureChangedListener(this); + tvStatus.setVisibility(View.VISIBLE); + } else { + isRealtimeStatusRunning = true; + realtimeToggleButton.setImageResource(R.drawable.realtime_start_btn); + tvStatus.setVisibility(View.GONE); + svPreview.setOnTextureChangedListener(new CameraSurfaceView.OnTextureChangedListener() { + @Override + public boolean onTextureChanged(Bitmap ARGB8888ImageBitmap) { + return false; + } + }); + } + } + + @Override + public boolean onTextureChanged(Bitmap ARGB8888ImageBitmap) { + String savedImagePath = ""; + synchronized (this) { + savedImagePath = MainActivity.this.savedImagePath; + } + boolean modified = false; + DetectionResult result = predictor.predict( + ARGB8888ImageBitmap, savedImagePath, SettingsActivity.scoreThreshold); + modified = result.initialized(); + if (!savedImagePath.isEmpty()) { + synchronized (this) { + MainActivity.this.savedImagePath = "result.jpg"; + } + } + lastFrameIndex++; + if (lastFrameIndex >= 30) { + final int fps = (int) (lastFrameIndex * 1e9 / (System.nanoTime() - lastFrameTime)); + runOnUiThread(new Runnable() { + @SuppressLint("SetTextI18n") + public void run() { + tvStatus.setText(Integer.toString(fps) + "fps"); + } + }); + lastFrameIndex = 0; + lastFrameTime = System.nanoTime(); + } + return modified; + } + + @Override + protected void onResume() { + super.onResume(); + // Reload settings and re-initialize the predictor + checkAndUpdateSettings(); + // Open camera until the permissions have been granted + if (!checkAllPermissions()) { + svPreview.disableCamera(); + } + svPreview.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + svPreview.onPause(); + } + + @Override + protected void onDestroy() { + if (predictor != null) { + predictor.release(); + } + super.onDestroy(); + } + + public void initView() { + svPreview = (CameraSurfaceView) findViewById(R.id.sv_preview); + svPreview.setOnTextureChangedListener(this); + tvStatus = (TextView) findViewById(R.id.tv_status); + btnSwitch = (ImageButton) findViewById(R.id.btn_switch); + btnSwitch.setOnClickListener(this); + btnShutter = (ImageButton) findViewById(R.id.btn_shutter); + btnShutter.setOnClickListener(this); + btnSettings = (ImageButton) findViewById(R.id.btn_settings); + btnSettings.setOnClickListener(this); + realtimeToggleButton = findViewById(R.id.realtime_toggle_btn); + realtimeToggleButton.setOnClickListener(this); + backInPreview = findViewById(R.id.back_in_preview); + backInPreview.setOnClickListener(this); + } + + @SuppressLint("ApplySharedPref") + public void initSettings() { + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.clear(); + editor.commit(); + SettingsActivity.resetSettings(); + } + + public void checkAndUpdateSettings() { + if (SettingsActivity.checkAndUpdateSettings(this)) { + String realModelDir = getCacheDir() + "/" + SettingsActivity.modelDir; + Utils.copyDirectoryFromAssets(this, SettingsActivity.modelDir, realModelDir); + String realLabelPath = getCacheDir() + "/" + SettingsActivity.labelPath; + Utils.copyFileFromAssets(this, SettingsActivity.labelPath, realLabelPath); + + String modelFile = realModelDir + "/" + "model.pdmodel"; + String paramsFile = realModelDir + "/" + "model.pdiparams"; + String configFile = realModelDir + "/" + "infer_cfg.yml"; + String labelFile = realLabelPath; + RuntimeOption option = new RuntimeOption(); + option.setCpuThreadNum(SettingsActivity.cpuThreadNum); + option.setLitePowerMode(SettingsActivity.cpuPowerMode); + option.enableRecordTimeOfRuntime(); + if (Boolean.parseBoolean(SettingsActivity.enableLiteFp16)) { + option.enableLiteFp16(); + } + predictor.init(modelFile, paramsFile, configFile, labelFile, option); + } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) { + new AlertDialog.Builder(MainActivity.this) + .setTitle("Permission denied") + .setMessage("Click to force quit the app, then open Settings->Apps & notifications->Target " + + "App->Permissions to grant all of the permissions.") + .setCancelable(false) + .setPositiveButton("Exit", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + MainActivity.this.finish(); + } + }).show(); + } + } + + private void requestAllPermissions() { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.CAMERA}, 0); + } + + private boolean checkAllPermissions() { + return ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED + && ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; + } +} diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionSettingsActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/SettingsActivity.java similarity index 97% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionSettingsActivity.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/SettingsActivity.java index e31c228cf..17e168f07 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/DetectionSettingsActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/detection/SettingsActivity.java @@ -10,15 +10,15 @@ import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import com.baidu.paddle.fastdeploy.app.examples.R; -import com.baidu.paddle.fastdeploy.app.ui.view.AppCompatPreferenceActivity; +import com.baidu.paddle.fastdeploy.app.ui.AppCompatPreferenceActivity; import com.baidu.paddle.fastdeploy.app.ui.Utils; import java.util.ArrayList; import java.util.List; -public class DetectionSettingsActivity extends AppCompatPreferenceActivity implements +public class SettingsActivity extends AppCompatPreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { - private static final String TAG = DetectionSettingsActivity.class.getSimpleName(); + private static final String TAG = SettingsActivity.class.getSimpleName(); static public int selectedModelIdx = -1; static public String modelDir = ""; @@ -46,6 +46,7 @@ public class DetectionSettingsActivity extends AppCompatPreferenceActivity imple @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // addPreferencesFromResource(R.xml.settings); addPreferencesFromResource(R.xml.detection_settings); ActionBar supportActionBar = getSupportActionBar(); if (supportActionBar != null) { diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/MainActivity.java similarity index 84% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/MainActivity.java index ab61f366c..0ea0486e0 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrMainActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/MainActivity.java @@ -25,8 +25,8 @@ import android.widget.Toast; import com.baidu.paddle.fastdeploy.RuntimeOption; import com.baidu.paddle.fastdeploy.app.examples.R; +import com.baidu.paddle.fastdeploy.app.ui.CameraSurfaceView; import com.baidu.paddle.fastdeploy.app.ui.Utils; -import com.baidu.paddle.fastdeploy.app.ui.view.CameraSurfaceView; import com.baidu.paddle.fastdeploy.vision.OCRResult; import com.baidu.paddle.fastdeploy.pipeline.PPOCRv2; import com.baidu.paddle.fastdeploy.vision.ocr.Classifier; @@ -37,8 +37,8 @@ import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; -public class OcrMainActivity extends Activity implements View.OnClickListener, CameraSurfaceView.OnTextureChangedListener { - private static final String TAG = OcrMainActivity.class.getSimpleName(); +public class MainActivity extends Activity implements View.OnClickListener, CameraSurfaceView.OnTextureChangedListener { + private static final String TAG = MainActivity.class.getSimpleName(); CameraSurfaceView svPreview; TextView tvStatus; @@ -64,7 +64,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); - setContentView(R.layout.ocr_activity_main); + setContentView(R.layout.activity_main); // Clear all setting items to avoid app crashing due to the incorrect settings initSettings(); @@ -91,10 +91,10 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C synchronized (this) { savedImagePath = Utils.getDCIMDirectory() + File.separator + date.format(new Date()).toString() + ".png"; } - Toast.makeText(OcrMainActivity.this, "Save snapshot to " + savedImagePath, Toast.LENGTH_SHORT).show(); + Toast.makeText(MainActivity.this, "Save snapshot to " + savedImagePath, Toast.LENGTH_SHORT).show(); break; case R.id.btn_settings: - startActivity(new Intent(OcrMainActivity.this, OcrSettingsActivity.class)); + startActivity(new Intent(MainActivity.this, SettingsActivity.class)); break; case R.id.realtime_toggle_btn: toggleRealtimeStyle(); @@ -128,14 +128,14 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C public boolean onTextureChanged(Bitmap ARGB8888ImageBitmap) { String savedImagePath = ""; synchronized (this) { - savedImagePath = OcrMainActivity.this.savedImagePath; + savedImagePath = MainActivity.this.savedImagePath; } boolean modified = false; OCRResult result = predictor.predict(ARGB8888ImageBitmap, savedImagePath); modified = result.initialized(); if (!savedImagePath.isEmpty()) { synchronized (this) { - OcrMainActivity.this.savedImagePath = "result.jpg"; + MainActivity.this.savedImagePath = "result.jpg"; } } lastFrameIndex++; @@ -201,12 +201,12 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); editor.commit(); - OcrSettingsActivity.resetSettings(); + SettingsActivity.resetSettings(); } public void checkAndUpdateSettings() { - if (OcrSettingsActivity.checkAndUpdateSettings(this)) { - String realModelDir = getCacheDir() + "/" + OcrSettingsActivity.modelDir; + if (SettingsActivity.checkAndUpdateSettings(this)) { + String realModelDir = getCacheDir() + "/" + SettingsActivity.modelDir; // String detModelName = "ch_PP-OCRv2_det_infer"; String detModelName = "ch_PP-OCRv3_det_infer"; // String detModelName = "ch_ppocr_mobile_v2.0_det_infer"; @@ -217,14 +217,14 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C String realDetModelDir = realModelDir + "/" + detModelName; String realClsModelDir = realModelDir + "/" + clsModelName; String realRecModelDir = realModelDir + "/" + recModelName; - String srcDetModelDir = OcrSettingsActivity.modelDir + "/" + detModelName; - String srcClsModelDir = OcrSettingsActivity.modelDir + "/" + clsModelName; - String srcRecModelDir = OcrSettingsActivity.modelDir + "/" + recModelName; + String srcDetModelDir = SettingsActivity.modelDir + "/" + detModelName; + String srcClsModelDir = SettingsActivity.modelDir + "/" + clsModelName; + String srcRecModelDir = SettingsActivity.modelDir + "/" + recModelName; Utils.copyDirectoryFromAssets(this, srcDetModelDir, realDetModelDir); Utils.copyDirectoryFromAssets(this, srcClsModelDir, realClsModelDir); Utils.copyDirectoryFromAssets(this, srcRecModelDir, realRecModelDir); - String realLabelPath = getCacheDir() + "/" + OcrSettingsActivity.labelPath; - Utils.copyFileFromAssets(this, OcrSettingsActivity.labelPath, realLabelPath); + String realLabelPath = getCacheDir() + "/" + SettingsActivity.labelPath; + Utils.copyFileFromAssets(this, SettingsActivity.labelPath, realLabelPath); String detModelFile = realDetModelDir + "/" + "inference.pdmodel"; String detParamsFile = realDetModelDir + "/" + "inference.pdiparams"; @@ -236,16 +236,16 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C RuntimeOption detOption = new RuntimeOption(); RuntimeOption clsOption = new RuntimeOption(); RuntimeOption recOption = new RuntimeOption(); - detOption.setCpuThreadNum(OcrSettingsActivity.cpuThreadNum); - clsOption.setCpuThreadNum(OcrSettingsActivity.cpuThreadNum); - recOption.setCpuThreadNum(OcrSettingsActivity.cpuThreadNum); - detOption.setLitePowerMode(OcrSettingsActivity.cpuPowerMode); - clsOption.setLitePowerMode(OcrSettingsActivity.cpuPowerMode); - recOption.setLitePowerMode(OcrSettingsActivity.cpuPowerMode); + detOption.setCpuThreadNum(SettingsActivity.cpuThreadNum); + clsOption.setCpuThreadNum(SettingsActivity.cpuThreadNum); + recOption.setCpuThreadNum(SettingsActivity.cpuThreadNum); + detOption.setLitePowerMode(SettingsActivity.cpuPowerMode); + clsOption.setLitePowerMode(SettingsActivity.cpuPowerMode); + recOption.setLitePowerMode(SettingsActivity.cpuPowerMode); detOption.enableRecordTimeOfRuntime(); clsOption.enableRecordTimeOfRuntime(); recOption.enableRecordTimeOfRuntime(); - if (Boolean.parseBoolean(OcrSettingsActivity.enableLiteFp16)) { + if (Boolean.parseBoolean(SettingsActivity.enableLiteFp16)) { detOption.enableLiteFp16(); clsOption.enableLiteFp16(); recOption.enableLiteFp16(); @@ -263,7 +263,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) { - new AlertDialog.Builder(OcrMainActivity.this) + new AlertDialog.Builder(MainActivity.this) .setTitle("Permission denied") .setMessage("Click to force quit the app, then open Settings->Apps & notifications->Target " + "App->Permissions to grant all of the permissions.") @@ -271,7 +271,7 @@ public class OcrMainActivity extends Activity implements View.OnClickListener, C .setPositiveButton("Exit", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - OcrMainActivity.this.finish(); + MainActivity.this.finish(); } }).show(); } diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrSettingsActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/SettingsActivity.java similarity index 97% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrSettingsActivity.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/SettingsActivity.java index 6f8c45ff4..ea2c4ff72 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/OcrSettingsActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/examples/ocr/SettingsActivity.java @@ -10,15 +10,15 @@ import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import com.baidu.paddle.fastdeploy.app.examples.R; +import com.baidu.paddle.fastdeploy.app.ui.AppCompatPreferenceActivity; import com.baidu.paddle.fastdeploy.app.ui.Utils; -import com.baidu.paddle.fastdeploy.app.ui.view.AppCompatPreferenceActivity; import java.util.ArrayList; import java.util.List; -public class OcrSettingsActivity extends AppCompatPreferenceActivity implements +public class SettingsActivity extends AppCompatPreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { - private static final String TAG = OcrSettingsActivity.class.getSimpleName(); + private static final String TAG = SettingsActivity.class.getSimpleName(); static public int selectedModelIdx = -1; static public String modelDir = ""; diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/layout/ActionBarLayout.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/ActionBarLayout.java similarity index 94% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/layout/ActionBarLayout.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/ActionBarLayout.java index 099219fa9..6616a290b 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/layout/ActionBarLayout.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/ActionBarLayout.java @@ -1,4 +1,4 @@ -package com.baidu.paddle.fastdeploy.app.ui.layout; +package com.baidu.paddle.fastdeploy.app.ui; import android.content.Context; import android.graphics.Color; diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/AppCompatPreferenceActivity.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/AppCompatPreferenceActivity.java similarity index 98% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/AppCompatPreferenceActivity.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/AppCompatPreferenceActivity.java index c1a952dcf..8195c52fa 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/AppCompatPreferenceActivity.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/AppCompatPreferenceActivity.java @@ -1,4 +1,4 @@ -package com.baidu.paddle.fastdeploy.app.ui.view; +package com.baidu.paddle.fastdeploy.app.ui; import android.content.res.Configuration; import android.os.Bundle; diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/CameraSurfaceView.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/CameraSurfaceView.java similarity index 99% rename from java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/CameraSurfaceView.java rename to java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/CameraSurfaceView.java index 06248fede..6db97d68a 100644 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/CameraSurfaceView.java +++ b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/CameraSurfaceView.java @@ -1,4 +1,4 @@ -package com.baidu.paddle.fastdeploy.app.ui.view; +package com.baidu.paddle.fastdeploy.app.ui; import android.content.Context; import android.graphics.Bitmap; @@ -15,8 +15,6 @@ import android.opengl.Matrix; import android.util.AttributeSet; import android.util.Log; -import com.baidu.paddle.fastdeploy.app.ui.Utils; - import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/ResultListView.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/ResultListView.java deleted file mode 100644 index 62b48a054..000000000 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/ResultListView.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baidu.paddle.fastdeploy.app.ui.view; - -import android.content.Context; -import android.os.Handler; -import android.util.AttributeSet; -import android.widget.ListView; - -public class ResultListView extends ListView { - public ResultListView(Context context) { - super(context); - } - - public ResultListView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public ResultListView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - private Handler handler; - - public void setHandler(Handler mHandler) { - handler = mHandler; - } - - public void clear() { - handler.post(new Runnable() { - @Override - public void run() { - removeAllViewsInLayout(); - invalidate(); - } - }); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, - MeasureSpec.AT_MOST); - super.onMeasure(widthMeasureSpec, expandSpec); - } -} diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/adapter/DetectResultAdapter.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/adapter/DetectResultAdapter.java deleted file mode 100644 index 404b9cbc5..000000000 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/adapter/DetectResultAdapter.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baidu.paddle.fastdeploy.app.ui.view.adapter; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; - -import com.baidu.paddle.fastdeploy.app.examples.R; -import com.baidu.paddle.fastdeploy.app.ui.view.model.BaseResultModel; - -import java.text.DecimalFormat; -import java.util.List; - -public class DetectResultAdapter extends ArrayAdapter { - private int resourceId; - - public DetectResultAdapter(@NonNull Context context, int resource) { - super(context, resource); - } - - public DetectResultAdapter(@NonNull Context context, int resource, @NonNull List objects) { - super(context, resource, objects); - resourceId = resource; - } - - @NonNull - @Override - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { - BaseResultModel model = getItem(position); - View view = LayoutInflater.from(getContext()).inflate(resourceId, null); - TextView indexText = (TextView) view.findViewById(R.id.index); - TextView nameText = (TextView) view.findViewById(R.id.name); - TextView confidenceText = (TextView) view.findViewById(R.id.confidence); - indexText.setText(String.valueOf(model.getIndex())); - nameText.setText(String.valueOf(model.getName())); - confidenceText.setText(formatFloatString(model.getConfidence())); - return view; - } - - public static String formatFloatString(float number) { - DecimalFormat df = new DecimalFormat("0.00"); - return df.format(number); - } -} diff --git a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/model/BaseResultModel.java b/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/model/BaseResultModel.java deleted file mode 100644 index cae71b690..000000000 --- a/java/android/app/src/main/java/com/baidu/paddle/fastdeploy/app/ui/view/model/BaseResultModel.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baidu.paddle.fastdeploy.app.ui.view.model; - -public class BaseResultModel { - private int index; - private String name; - private float confidence; - - public BaseResultModel() { - - } - - public BaseResultModel(int index, String name, float confidence) { - this.index = index; - this.name = name; - this.confidence = confidence; - } - - public float getConfidence() { - return confidence; - } - - public void setConfidence(float confidence) { - this.confidence = confidence; - } - - public int getIndex() { - return index; - } - - public void setIndex(int index) { - this.index = index; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/java/android/app/src/main/res/layout-land/activity_main.xml b/java/android/app/src/main/res/layout-land/activity_main.xml new file mode 100644 index 000000000..d6e88a09a --- /dev/null +++ b/java/android/app/src/main/res/layout-land/activity_main.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/android/app/src/main/res/layout-land/detection_activity_main.xml b/java/android/app/src/main/res/layout-land/detection_activity_main.xml deleted file mode 100644 index 1a75970f4..000000000 --- a/java/android/app/src/main/res/layout-land/detection_activity_main.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/java/android/app/src/main/res/layout-land/ocr_activity_main.xml b/java/android/app/src/main/res/layout-land/ocr_activity_main.xml deleted file mode 100644 index b30f35edf..000000000 --- a/java/android/app/src/main/res/layout-land/ocr_activity_main.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/java/android/app/src/main/res/layout/detection_camera_page.xml b/java/android/app/src/main/res/layout/activity_main.xml similarity index 92% rename from java/android/app/src/main/res/layout/detection_camera_page.xml rename to java/android/app/src/main/res/layout/activity_main.xml index da262b58b..b6efea6d6 100644 --- a/java/android/app/src/main/res/layout/detection_camera_page.xml +++ b/java/android/app/src/main/res/layout/activity_main.xml @@ -5,15 +5,15 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true" - tools:context=".detection.DetectionMainActivity"> + tools:context="com.baidu.paddle.fastdeploy.app.examples.ocr.MainActivity"> - @@ -42,7 +42,7 @@ android:layout_height="wrap_content" android:text="@string/action_bar_take_photo" android:textAlignment="center" - android:visibility="gone"/> + android:visibility="gone" /> - - - + + + + android:scaleType="fitXY" + android:visibility="gone"/> - - - - - - diff --git a/java/android/app/src/main/res/layout/detection_result_page.xml b/java/android/app/src/main/res/layout/detection_result_page.xml deleted file mode 100644 index 958a85940..000000000 --- a/java/android/app/src/main/res/layout/detection_result_page.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/android/app/src/main/res/layout/detection_result_page_item.xml b/java/android/app/src/main/res/layout/detection_result_page_item.xml deleted file mode 100644 index 6a2b09ebf..000000000 --- a/java/android/app/src/main/res/layout/detection_result_page_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/java/android/app/src/main/res/layout/ocr_activity_main.xml b/java/android/app/src/main/res/layout/ocr_activity_main.xml deleted file mode 100644 index b30f35edf..000000000 --- a/java/android/app/src/main/res/layout/ocr_activity_main.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/java/android/app/src/main/res/layout/ocr_camera_page.xml b/java/android/app/src/main/res/layout/ocr_camera_page.xml deleted file mode 100644 index 4fb00472a..000000000 --- a/java/android/app/src/main/res/layout/ocr_camera_page.xml +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/android/app/src/main/res/layout/ocr_result_page.xml b/java/android/app/src/main/res/layout/ocr_result_page.xml deleted file mode 100644 index 958a85940..000000000 --- a/java/android/app/src/main/res/layout/ocr_result_page.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/java/android/app/src/main/res/layout/ocr_result_page_item.xml b/java/android/app/src/main/res/layout/ocr_result_page_item.xml deleted file mode 100644 index 6a2b09ebf..000000000 --- a/java/android/app/src/main/res/layout/ocr_result_page_item.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/java/android/app/src/main/res/values/strings.xml b/java/android/app/src/main/res/values/strings.xml index 2bd2e4355..1d8f1c2da 100644 --- a/java/android/app/src/main/res/values/strings.xml +++ b/java/android/app/src/main/res/values/strings.xml @@ -1,9 +1,9 @@ - EasyEdge + FastDeploy PicoDet - EasyEdge - EasyEdge + FastDeploy PicoDet + FastDeploy PP-OCRv2 CHOOSE_INSTALLED_MODEL_KEY MODEL_DIR_KEY @@ -17,7 +17,6 @@ LITE_POWER_HIGH 0.4 true - models/picodet_s_320_coco_lcnet labels/coco_label_list.txt @@ -36,4 +35,4 @@ 阈值控制 重新识别 保存结果 - + \ No newline at end of file diff --git a/java/android/app/src/main/res/values/values.xml b/java/android/app/src/main/res/values/values.xml deleted file mode 100644 index 156146d9a..000000000 --- a/java/android/app/src/main/res/values/values.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - 120dp - 46px - - 126px - 136px - - 46px - - 36px - - 15dp - - 15dp - - \ No newline at end of file diff --git a/java/android/app/src/main/res/xml/default_settings.xml b/java/android/app/src/main/res/xml/settings.xml similarity index 100% rename from java/android/app/src/main/res/xml/default_settings.xml rename to java/android/app/src/main/res/xml/settings.xml