我有一个简单的布局:
<RelativeLayout
android:id="@+id/myP"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<androidx.camera.view.PreviewView
android:id="@+id/mPreviewView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.example.dochjavatestimplementation.pkgActivity.ExtendedImageView
android:id="@+id/imageViewOmgShowIt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
previewView 用于显示相机,ExtendedImageView 用于显示显示找到的对象 rect。
我的图像分析器:
imageAnalysis = new ImageAnalysis.Builder()
.setTargetResolution(new Size(mPreviewView.getWidth(),mPreviewView.getHeight()))
.build();
imageAnalysis.setAnalyzer(executor, new PaperImageAnalyser());
Run Code Online (Sandbox Code Playgroud)
纸图像分析器:
public class PaperImageAnalyser implements ImageAnalysis.Analyzer {
ObjectDetectorOptions options = new ObjectDetectorOptions.Builder()
.setDetectorMode(ObjectDetectorOptions.STREAM_MODE)
.enableClassification() // Optional
.build();
ObjectDetector objectDetector = ObjectDetection.getClient(options);
@Override
public void analyze(@NonNull ImageProxy imageProxy) {
@SuppressLint("UnsafeExperimentalUsageError") Image mediaImage = imageProxy.getImage();
if (mediaImage != null) {
InputImage image =InputImage.fromMediaImage(mediaImage, imageProxy.getImageInfo().getRotationDegrees());
objectDetector.process(image)
.addOnSuccessListener(
new OnSuccessListener<List<DetectedObject>>() {
@Override …Run Code Online (Sandbox Code Playgroud) android image-processing android-imageview android-camerax google-mlkit
我有一个简单的 ActivityResultLauncher 实现,我可以在其中从图库中选择图像:
ActivityResultLauncher<Intent> actResLauncher;
actResLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(),this);
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
actResLauncher.launch(intent);
Run Code Online (Sandbox Code Playgroud)
结果:
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode()== Activity.RESULT_OK){
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码的问题是我依赖于预定义的结果代码,例如 Activity.RESULT_OK 或 Activity.RESULT_CANCELED。有没有办法在启动意图时传递自定义请求代码?
android android-intent onactivityresult startactivityforresult