Android调用相机拍照,展示拍摄的图片

调用相机(隐式调用)

java 复制代码
//自定义一个请求码 这里我设为10010
 int TAKE_PHOTO_REQUEST = 10010;
 int RESULT_CANCELED = 0;//定义取消码
 //触发监听,调用相机
 image_camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //创建一个意图,这里指的是相机
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //开启这个意图,并将状态码传给目标Activity
                startActivityForResult(intent, TAKE_PHOTO_REQUEST);
            }
        });

展示相机拍摄的图片

重写onActivityResult方法

java 复制代码
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //在日志中打印当前的请求码和返回码
        Log.i("TAG", "resultCode:"+resultCode);
        Log.i("TAG", "requestCode:"+requestCode);

        if (resultCode == RESULT_CANCELED) {
            if (requestCode==TAKE_PHOTO_REQUEST)
                Toast.makeText(MainActivity.this, "取消了拍照", Toast.LENGTH_LONG).show();
        }
        if (requestCode == TAKE_PHOTO_REQUEST){
            if (data!=null){
            //将返回的图片数据使用Bitmap类型变量targetBitmap 接收
                Bitmap targetBitmap = data.getParcelableExtra("data");
                //将targetBitmap 展示在ImageView组件imageView_test上
                imageView_test.setImageBitmap(targetBitmap);
            }
        }
    }

完整代码

java 复制代码
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    //自定义一个请求码 这里我设为10010
    int TAKE_PHOTO_REQUEST = 10010;
    int RESULT_CANCELED = 0;//定义取消码
    ImageView imageView_test;
    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView_test = findViewById(R.id.imageView_test);
    findViewById(R.id.image_camera).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //创建一个意图,这里指的是相机
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //开启这个意图,并将状态码传给目标Activity
            startActivityForResult(intent, TAKE_PHOTO_REQUEST);
        }
    });

    }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //在日志中打印当前的请求码和返回码
    Log.i("TAG", "resultCode:"+resultCode);
    Log.i("TAG", "requestCode:"+requestCode);

    if (resultCode == RESULT_CANCELED) {
        if (requestCode==TAKE_PHOTO_REQUEST)
            Toast.makeText(MainActivity.this, "取消了拍照", Toast.LENGTH_LONG).show();
    }
    if (requestCode == TAKE_PHOTO_REQUEST){
        if (data!=null){
            //将返回的图片数据使用Bitmap类型变量targetBitmap 接收
            Bitmap targetBitmap = data.getParcelableExtra("data");
            //将targetBitmap 展示在ImageView组件imageView_test上
            imageView_test.setImageBitmap(targetBitmap);
        }
    }
}
}

效果演示

相关推荐
红橙Darren1 小时前
手写操作系统 - 环境搭建
android·微信·操作系统
_一条咸鱼_2 小时前
Android Runtime直接内存管理原理深度剖析(73)
android·面试·android jetpack
你听得到112 小时前
揭秘Flutter图片编辑器核心技术:从状态驱动架构到高保真图像处理
android·前端·flutter
wilinz2 小时前
Flutter Android 端接入百度地图踩坑记录
android·flutter
小袁拒绝摆烂5 小时前
SQL开窗函数
android·sql·性能优化
apihz5 小时前
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
android·服务器·开发语言·网络·数据库·网络协议·tcp/ip
baidu_247438616 小时前
Android MPAndroidChart使用
android
天平7 小时前
react native现代化组件库的推荐 【持续更新...】
android·前端·react native
apihz8 小时前
通用图片搜索-搜狗源免费API接口使用指南
android·java·python·php·音视频
你过来啊你8 小时前
Android开发中ARouter使用和原理详解
android