android studio拍照后返回,Android studio使用相机拍照,保存并显示一坨屎一样的照片...

呼叫相机

文件的创建

在Android项目开发多多少少都会需要用到相机的功能,这里我会使用最基本的方法调用相机进行拍照和保存到自定义的目录,最后在应用中显示拍照的结果

MainActivity.java:

import android.Manifest;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.graphics.Bitmap;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.Toast;

import android.widget.VideoView;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

private Button buttonImage;

private ImageView imageView;

private static final int REQUEST_ID_READ_WRITE_PERMISSION = 99;

private static final int REQUEST_ID_IMAGE_CAPTURE = 100;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//

this.buttonImage = (Button) this.findViewById(R.id.button_image);

this.imageView = (ImageView) this.findViewById(R.id.imageView);

this.buttonImage.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

captureImage();

}

});//呼叫照相方法

}

//

private void captureImage() {

// Create an implicit intent, for image capture.

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

// Start camera and wait for the results.

this.startActivityForResult(intent, REQUEST_ID_IMAGE_CAPTURE);

}//执行相机的调用

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {//调用完相机并拍照后会执行

//第二个 Activity 指定的结果代码。

// 如果操作成功,此为 RESULT_OK;如果用户退出或操作出于某种原因失败,则是 RESULT_CANCELED

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == REQUEST_ID_IMAGE_CAPTURE) {

if (resultCode == RESULT_OK) {

//请求使用照相,而且用户同意使用相机权限

Bitmap bp = (Bitmap) data.getExtras().get("data");

//得到intent返回的信息

//保存图片等信息

this.imageView.setImageBitmap(bp);

//设置照片成果

save(bp);

//调用创建文件

} else if (resultCode == RESULT_CANCELED) {

//用户不授权使用照相机

Toast.makeText(this, "Action canceled", Toast.LENGTH_LONG).show();

} else {

Toast.makeText(this, "Action Failed", Toast.LENGTH_LONG).show();

//不授权使用相机和请求码不是request image

}

} //

}

private void save(Bitmap bp) {

File Pdirectory = new File(Environment.getExternalStorageDirectory()+File.separator+"草泥马");

Random generator = new Random();

int n = 10000;

n = generator.nextInt(n);

String fname = "Image-" + n + ".jpg";

File file = new File(Pdirectory,fname);

//在目录下添加东西

Pdirectory.mkdirs();

//创建草泥马目录

try{

FileOutputStream out = new FileOutputStream(file);

bp.compress(Bitmap.CompressFormat.JPEG,100,out);

out.flush();

out.close();

//compress(Bitmap.CompressFormat format, int quality, OutputStream stream)

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

//

}

添加权限:

activity_main.xml:

这时候打开相机拍照后会显示拍照结果,而且在手机下会多出一个名叫草泥马的目录,里面保存着我们拍照的结果,但不细心的同学应该发现照片的画质比较模糊像屎一样,这是因为用这种方法拍照后的照片是经过压缩的,如果照片被放大那么画质会失真,对于拍照并保存完整的照片在安卓7.0版本后需要用到provider,稍后我会进行介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值