相机不起作用

时间:2018-04-17 03:49:46

标签: android camera

我尝试从手机上访问相机,它工作了3次,在屏幕变黑后(下面打印)在API 24中,我在带有API 22的手机上测试它并且它工作了,API 24没有,有谁知道如何解决它?

public class fotos extends AppCompatActivity {

    static final int REQUEST_IMAGE_CAPTURE = 1;

    private ImageView ivPhoto;
    private Button btTakeaaPhoto;

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

        ivPhoto = findViewById(R.id.ivPhoto);
        btTakeaaPhoto = findViewById(R.id.btTakeaPhoto);;

        btTakeaaPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //config.showProgress(true, progressBar, context);
                dispatchTakePictureIntent();
            }
        });
    }

    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            ivPhoto.setImageBitmap(imageBitmap);
        }
    }
}

enter image description here

屏幕保持这样几秒钟,然后相机关闭并返回活动。

编辑:应用程序不会停止工作,它只是打开相机屏幕,变黑,几秒后关闭,正如我已经说过的那样

清单:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus" />

问题不在于权限,已经给出了,我已经查看了配置以确认。那不是问题。

2 个答案:

答案 0 :(得分:1)

您可能想要检查项目中的多个部分。

1。你的AndroidManifest.xml

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus" />

检查您是否已添加此类权限请求。


2。在您的源代码中,来自Android 6的权限请求。您应该拥有以下代码。

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        requestCameraPermission();
        return;
}

表示requestCameraPermission()函数

if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
        new ConfirmationDialog().show(getChildFragmentManager(), FRAGMENT_DIALOG);
    } else {
        requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
}

您应该要求该用户授予权限并实现回调函数

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    if (requestCode == REQUEST_CAMERA_PERMISSION) {
        if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
            ErrorDialog.newInstance(getString(R.string.request_permission))
                    .show(getChildFragmentManager(), FRAGMENT_DIALOG);
        }
    } else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

授予权限后,请打开相机并配置正确的参数。你可以在这里检查回购https://github.com/wangchauyan/camera_sample.git,我用它来创建我自己的相机应用程序。 希望这会有所帮助。

答案 1 :(得分:0)

我做到了,你知道怎么做吗?我重启了手机,你知道我是怎么发现的吗?我尝试使用相机的WhastApp功能,并向我展示了那时无法访问相机的消息,这对我来说是重启,所以在那之后,它神奇地起作用了。 WWWTTFFFF