源码部分分析
Camera.java → 点我定位,注意研究1134行与2023行的两个方法。
通过源码可以发现,输出的图片有2个分支
如果你没有指定Intent里面的Extra参数,它就返回一个序列化(putExtra(“data”, bitmap))的Bitmap,从理论上来说,这样的代码写的很烂,属于Magic Number。
如果你指定了Intent里面的Extra参数MediaStore.EXTRA_OUTPUT,拍照后它就直接把bitmap写到了Uri里面了,返回是空
一、获得拍照的预览图
使用范围:获得很小的预览图,用于设置头像等地方。
返回示例:bitmap = data.getExtras().getParcelable(“data”);
public final static int REQUEST_IMAGE_CAPTURE = 1;
//start
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
//receive
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
Log.d(TAG, "canceled or other exception!");
return;
}
if (requestCode == REQUEST_IMAGE_CAPTURE) {
Log.d(TAG, "REQUEST_IMAGE_CAPTURE");
Bitmap bitmap;
try {
//"data"这个居然没用常量定义,也是醉了,我们可以发现它直接把bitmap序列化到intent里面了。
bitmap = data.getExtras().getParcelable("data");
//TODO:do something with bitmap, Do NOT forget call Bitmap.recycler();
mCameraImageview.setImageBitmap(bitmap);
} catch