【问题标题】:How to open camera ONLY in a fragment如何仅在片段中打开相机
【发布时间】:2017-04-11 20:12:25
【问题描述】:

以下代码打开相机但覆盖整个屏幕,并在捕获图像后返回片段没有点击图像的迹象。 (图像已安全保存在图库中。我只想在片段部分打开相机。我已经从here 复制了代码。我刚刚删除了“viewHolder”(try() 的第 4 行),因为我不知道它是什么正在做。并在我的代码顶部声明了 URI 变量。
我也尝试过其他答案,例如this,但由于我在 API 19 上开发,它们很复杂。

//my declared variables 
 private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1888;
    Button button;
    ImageView imageView;
    Uri imageUri;


@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        File photo = new File(Environment.getExternalStorageDirectory(),  "Pic.jpg");
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.fromFile(photo));
        imageUri = Uri.fromFile(photo);
        getActivity().startActivityForResult(intent, 100);


        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_scan, container, false);
    }


@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 100:
                if (resultCode == Activity.RESULT_OK) {
                    Uri selectedImage = imageUri;
                    getActivity().getContentResolver().notifyChange(selectedImage, null);
                    ContentResolver cr = getActivity().getContentResolver();
                    Bitmap bitmap;
                    try {
                        bitmap = android.provider.MediaStore.Images.Media
                                .getBitmap(cr, selectedImage);

                        imageView.setImageBitmap(bitmap);
                        Toast.makeText(getActivity(), selectedImage.toString(),
                                Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        Toast.makeText(getActivity(), "Failed to load", Toast.LENGTH_SHORT)
                                .show();
                        Log.e("Camera", e.toString());
                    }
                }
        }
    }

【问题讨论】:

    标签: android android-fragments camera


    【解决方案1】:

    以下代码打开相机但覆盖整个屏幕

    当然。您正在启动第三方相机应用,而这些应用通常会占据前台。

    我只想在片段部分打开相机。

    使用android.hardware.Camera 和/或android.hardware.camera2.* 类集从头开始编写您自己的相机代码。您无法将第三方相机应用程序启动到片段中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多