![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e5a8106759397d2dc065f12e05f07c7.gif)
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import java.io.File;
import cn.edu.zufe.app002.util.DateUtil;
public class TakePhotoActivity extends AppCompatActivity implements View.OnClickListener{
private Button btnTakephoto;
private ImageView ivPhoto;
private String mPath;
private Uri mImageUri;
private File mPhotoFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_take_photo);
btnTakephoto = (Button) findViewById(R.id.btn_takephoto);
btnTakephoto.setOnClickListener(this);
ivPhoto = (ImageView) findViewById(R.id.iv_photo);
mPath = getExternalFilesDir(null).getPath();
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.btn_takephoto) {
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.CAMERA}, 1);
} else {
takePhoto();
}
}
}
private void takePhoto() {
mPhotoFile = new File(mPath, DateUtil.getNowTime("") + ".jpg");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mImageUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", mPhotoFile);
} else {
mImageUri = Uri.fromFile(mPhotoFile);
}
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1) {
if(resultCode == RESULT_OK) {
ivPhoto.setImageBitmap(BitmapFactory.decodeFile(mPhotoFile.getPath()));
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 1) {
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
takePhoto();
} else {
Toast.makeText(this, "没有足够的权限", Toast.LENGTH_SHORT).show();
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TakePhotoActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_takephoto"
android:layout_gravity="center_horizontal"
android:text="拍照"
android:textSize="17sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv_photo" />
</LinearLayout>