代码之家  ›  专栏  ›  技术社区  ›  Woton Sampaio

摄像头不工作

  •  0
  • Woton Sampaio  · 技术社区  · 8 年前

    我试着从手机上访问摄像头,它工作了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 回复  |  直到 8 年前
        1
  •  2
  •   Chauyan    8 年前

    您可能需要检查项目中的几个部分。

    你的安德洛德清单。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 ,我使用它创建自己的相机应用程序。 希望这会有帮助。

        2
  •  -1
  •   Woton Sampaio    8 年前

    我做到了,你知道怎么做吗?我重新启动了手机,你知道我是怎么发现它的吗?我试着使用WhastApp的摄像头功能,并向我显示了一条信息,那就是当时无法访问摄像头,我需要重新启动,所以在那之后,它神奇地工作了。WWWTTFFFF