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

效果演示

相关推荐
2603_9494621010 分钟前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
王泰虎2 小时前
安卓开发日记,因为JCenter 关闭导致加载不了三方库应该怎么办
android
格林威3 小时前
Baumer相机金属焊缝缺陷识别:提升焊接质量检测可靠性的 7 个关键技术,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
2601_949543016 小时前
Flutter for OpenHarmony垃圾分类指南App实战:主题配置实现
android·flutter
2601_949833397 小时前
flutter_for_openharmony口腔护理app实战+知识实现
android·javascript·flutter
晚霞的不甘7 小时前
Flutter for OpenHarmony从基础到专业:深度解析新版番茄钟的倒计时优化
android·flutter·ui·正则表达式·前端框架·鸿蒙
鸟儿不吃草7 小时前
android的Retrofit请求https://192.168.43.73:8080/报错:Handshake failed
android·retrofit
Minilinux20187 小时前
Android音频系列(09)-AudioPolicyManager代码解析
android·音视频·apm·audiopolicy·音频策略
格林威8 小时前
Baumer相机金属弹簧圈数自动计数:用于来料快速检验的 6 个核心算法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
李子红了时8 小时前
【无标题】
android