【问题标题】:Reference to "method" is ambiguous提到“方法”是模棱两可的
【发布时间】:2020-05-18 18:59:53
【问题描述】:

调用 Builder() 时,我收到错误消息:

对“Builder”的引用不明确,“androidx.camera.core.impl.UseCaseConfig.Builder”和“androidx.camera.core.impl.ImageOutputConfig.Builder”都匹配

错误是在 startCamera() 函数中产生的。 如何确保编译器知道使用 UseCaseConfig 选项? 感谢您的帮助,感谢您的时间和帮助。

package com.example.atlas2.Activities.Login.UserCreation.ProfilePhotoCamerax;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.camera.core.impl.PreviewConfig;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.content.pm.PackageManager;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.Rational;
import android.util.Size;
import android.view.Surface;
import android.view.TextureView;
import android.widget.Toast;

import com.example.atlas2.R;

public class ProfilePhotoActivityX extends AppCompatActivity {


    private int REQUEST_CODE_PERMISSIONS = 101;
    private final String[] REQUIRED_PERMISSIONS = new String[]{"android.permission.CAMERA", 
                                                  "android.permission.WRITE_EXTERNAL_STORAGE"};
    TextureView textureView;

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

        textureView = findViewById(R.id.view_finder);

        if(allPermissionsGranted()){
            startCamera(); //start camera if permission has been granted by user
        } else{
            ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);
        }
    }

    private void startCamera() {

        Rational aspectRatio = new Rational(textureView.getWidth(), textureView.getHeight());
        Size screen = new Size(textureView.getWidth(), textureView.getHeight());

        PreviewConfig pConfig = new PreviewConfig.Builder<>();

    }

    private void updateTransform(){
        Matrix mx = new Matrix();
        float w = textureView.getMeasuredWidth();
        float h = textureView.getMeasuredHeight();

        float cX = w / 2f;
        float cY = h / 2f;

        int rotationDgr;
        int rotation = (int)textureView.getRotation();

        switch(rotation){
            case Surface.ROTATION_0:
                rotationDgr = 0;
                break;
            case Surface.ROTATION_90:
                rotationDgr = 90;
                break;
            case Surface.ROTATION_180:
                rotationDgr = 180;
                break;
            case Surface.ROTATION_270:
                rotationDgr = 270;
                break;
            default:
                return;
        }

        mx.postRotate((float)rotationDgr, cX, cY);
        textureView.setTransform(mx);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull 
                                           int[] grantResults) {

        if(requestCode == REQUEST_CODE_PERMISSIONS){
            if(allPermissionsGranted()){
                startCamera();
            } else{
                Toast.makeText(this, "Permissions not granted by the user.", 
                               Toast.LENGTH_SHORT).show();
                finish();
            }
        }
    }

    private boolean allPermissionsGranted(){

        for(String permission : REQUIRED_PERMISSIONS){
            if(ContextCompat.checkSelfPermission(this, permission) != 
               PackageManager.PERMISSION_GRANTED){
                return false;
            }
        }
        return true;
    }
}

【问题讨论】:

  • 尝试重命名方法名,可能与源代码有歧义。
  • @Alex Michael 你有没有找到解决这个问题的方法?

标签: java android android-camera android-camerax


【解决方案1】:

首先 - 你使用的是什么版本的CameraX?最新的(在撰写本文时)是 alpha09(core),您应该在其中构建预览,如下所示:

Preview preview = new Preview.Builder().build();

然后,您可以轻松地使用构建器中的任何设置方法进行预览配置。 google docs 尚未完全更新到最新版本,因此您可以使用 forum 寻求帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多