Android按钮打开相机

Rya*_*les 25 android android-camera

我希望这不是一个重复的问题,但我正在制作一个应用程序,我想要一个按钮打开相机应用程序(单独的默认Android相机).我怎么做到这一点?我知道有一个功能:

intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE)
Run Code Online (Sandbox Code Playgroud)

我需要使用它吗?如何从xml文件中调用该按钮?

此外,我是否需要担心存储该图片或视频,或者默认的相机应用程序会处理这个问题?

小智 48

要拨打相机,您可以使用:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

图像将自动保存在默认目录中.

您需要在AndroidManifest.xml中设置摄像头的权限:

<uses-permission android:name="android.permission.CAMERA"> </uses-permission>
Run Code Online (Sandbox Code Playgroud)

  • 通过意图启动图像捕获操作时,不必包含CAMERA权限. (9认同)
  • 我不了解你,但在我的情况下,它没有得到许可 (5认同)

Has*_*sud 29

 Button b = (Button)findViewById(R.id.Button01);

    b.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
             Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
             startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST) {
          Bitmap image = (Bitmap) data.getExtras().get("data");
          ImageView imageview = (ImageView) findViewById(R.id.ImageView01); //sets imageview as the bitmap
          imageview.setImageBitmap(image);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 根据 [this](https://developer.android.com/training/camera/photobasics),`data.getExtras().get("data")` 会让你**只有一个缩略图**! (3认同)
  • @MuhammedFasil它是请求代码,您可以传递请求代码startActivityforResult,当调用OnActivity结果时它将返回相同的代码。在类中声明这样的代码 `private static final int CAMERA_PIC_REQUEST = 1337;` (2认同)
  • @soshial你是对的。`data.getExtras().get("data")` 返回缩略图并丢失图像质量... (2认同)

Pas*_*den 6

您可以创建相机意图并将其命名为startActivityForResult(intent).

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

   // start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)


小智 5

我知道回复有点晚了,但您可以使用以下语法,因为它对我来说很好用

Camera=(Button)findViewById(R.id.CameraID);
Camera.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent Intent3=new   Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
            startActivity(Intent3); 
        }
    });
Run Code Online (Sandbox Code Playgroud)