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


    调用相机(隐式调用)

    //自定义一个请求码 这里我设为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);
                }
            });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    展示相机拍摄的图片

    重写onActivityResult方法

    @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);
                }
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    完整代码

    
    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);
            }
        }
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    效果演示

    在这里插入图片描述

  • 相关阅读:
    从源码层解读react渲染原理
    Android图片涂鸦,Kotlin(1)
    前端开发常用网站
    《算法竞赛·快冲300题》每日一题:“矩阵”
    2024双非网安捡漏华五0854经验分享
    Springboot楼盘销售管理系统x1w9c计算机毕业设计-课程设计-期末作业-毕设程序代做
    Red Giant Trapcode Suite 红巨星粒子插件
    Python爬虫:原理与实战
    力扣labuladong——一刷day32
    Elasticsearch:Bucket script 聚合
  • 原文地址:https://blog.csdn.net/qq_44255741/article/details/133139092