0

你好,我是安卓新手。

我想将内置的相机应用程序作为一个整体来调用。就像我希望我的应用程序调用该应用程序来拍摄一些照片一样,它会自行保存到外部存储中,就像用户单击菜单中的相机时一样。我不想在我的应用程序中加入相机。我只想调用它并让它完成它的工作。

我进行了一些研究,只发现了一些例子和人们在他们的应用程序中加入相机的问题。请帮助我,谢谢。

目前我的代码中有这个,但看起来它正在将它合并到代码中。我只想调用它,让它像往常一样在用户按下相机应用程序时保存到外部存储中。

  Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
4

3 回答 3

1

实际上,您并没有将相机合并到您的代码中,您只是调用相机应用程序为您拍照。

来自安卓文档

Intent 提供了一种在不同应用程序中的代码之间执行后期运行时绑定的工具。它最重要的用途是在活动的启动中,它可以被认为是活动之间的粘合剂。它基本上是一种被动数据结构,包含对要执行的操作的抽象描述。

您可以使用 MediaStore.EXTRA_OUTPUT 键请求相机应用程序将照片保存在选择的路径中。

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriToFileInExternalStorage);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

见这里:MediaStore.EXTRA_OUTPUT

于 2013-10-23T19:55:55.640 回答
0
  Bitmap bm = (Bitmap) data.getExtras().get("data");  
                MediaStore.Images.Media.insertImage(getContentResolver(), bm, null, null);

            }

结果出来后我最终使用了它并且它有效:)

于 2013-10-24T18:12:01.617 回答
0
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_PIC_REQUEST) {
            //2
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");  
            mImage.setImageBitmap(thumbnail);
            //3
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
            //4
            File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg");
            try {
                file.createNewFile();
                FileOutputStream fo = new FileOutputStream(file);
                //5
                fo.write(bytes.toByteArray());
                fo.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
于 2013-10-23T19:53:17.073 回答