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);
        }
    }
}
}

效果演示

相关推荐
数智工坊5 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
故渊at7 小时前
第二板块:Android 四大组件标准化学理 | 第八篇:Service 后台执行实体与优先级
android·gitee·service·前台服务·后台服务
会Tk矩阵群控的小木7 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
qeen878 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
故渊at8 小时前
第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
android·gitee·broadcast·广播·动态注册·静态注册
JohnnyDeng948 小时前
【Android】Room 数据库高级用法与性能调优:从查询瓶颈到毫秒级响应
android·性能优化·kotlin·room
zeqinjie9 小时前
Flutter 折叠屏 iPad / 宽屏适配实践
android·前端·flutter
ab_dg_dp9 小时前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
Arrom9 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java