本篇给大家带来的是拍照回传的初级使用,用的同样是数据回传的方式,首先 startActivityForResult 确定 Action、requestCode,之后重写 onActivityResult 进行逻辑操作,拍照的照片回传,一般都与选取相册内照片的回传一起使用!
回想这张 gif 图 ,还是我当年新手时期做的效果,晃眼之间竟然过了这么多年,甚是感叹...
关联文章
- Android基础进阶 - 调用拍照、获取图片(基础)
- Android基础进阶 - 获取、调用相册内图片(基础)
- Android进阶之路 - 拍照、相册选图
- Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题
- Android进阶之路 - Uri、Path、File、Bitmap 转换方式
当年并未适配 Android 6.0、Android 7.0 及以后版本 ,如果直接copy的话,记得做权限适配 ~
实现效果
AndroidMainfest 添加权限
<uses-permission android:name="android.permission.CAMERA"/>
MainActivity
package com.example.dow.camerapicture;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView mBtn;
private ImageView mImage;
private int TAKE_PHOTO=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Layout处理
initView();
//事件处理
initEvent();
}
private void initView() {
mBtn = (TextView) findViewById(R.id.picture_button);
mImage = (ImageView) findViewById(R.id.image_picture);
}
private void initEvent() {
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),520);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==520){
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap)bundle.get("data");
Log.e("tag","内存太小="+getBitmapSize(bitmap));
mImage.setImageBitmap(bitmap);
}
}
//这是一个查看图片大小的,我之后可能进行压缩,或许大家之后也会用到,就贴在这里
public int getBitmapSize(Bitmap bitmap){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
return bitmap.getAllocationByteCount();
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1){
return bitmap.getByteCount();
} else {
return bitmap.getRowBytes() * bitmap.getHeight();
}
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.dow.camerapicture.MainActivity">
<TextView
android:id="@+id/picture_button"
android:layout_width="match_parent"
android:padding="5dp"
android:gravity="center"
android:layout_height="wrap_content"
android:text="拍照" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#ff0"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/image_picture"
/>
</LinearLayout>