您的位置:首页 > 移动开发 > Android开发

【Android】相机的简单调用

2015-11-20 19:06 555 查看
不多说,慢慢积累,希望有一天能玩转这个领域。

在项目开发中几乎所有程序都不可避免的要用上相机,因为你要上传头像,不可避免的就要有拍照功能。多数的软件会采用调用系统相机来完成这个业务。接下来要讲的就是调用系统相机拍照来保存成头像。

开始

网上相关的代码一大堆,但是我不能每次都去网上扒,这是一种不思进取的行为,扒过一次我们就要记住它,弄懂它!干掉它!

1、调用系统相机

就下面的两句,只要你执行这两句就能

// 就这样就打开相机了
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);//这个1的含义,是拍完照之后需要用到的。
//当我们startActivityForResult(intent,1)拍完照之后就会调用onActivityResult()这个方法。下面介绍一下这个方法(注释为源码注释)


/**
* Called when an activity you launched exits, giving you the requestCode
* you started it with, the resultCode it returned, and any additional
* data from it.  The <var>resultCode</var> will be
* {@link #RESULT_CANCELED} if the activity explicitly returned that,
* didn't return any result, or crashed during its operation.
*
* <p>You will receive this call immediately before onResume() when your
* activity is re-starting.
*
* <p>This method is never invoked if your activity sets
* {@link android.R.styleable#AndroidManifestActivity_noHistory noHistory} to
* <code>true</code>.
*【通俗的讲就是,让你知道是谁调用的此方法,获取相应的data】
* @param requestCode The integer request code originally supplied to
*                    startActivityForResult(), allowing you to identify who this
*                    result came from.
* 【通俗的讲就是,让你知道是那个Activity返回的数据,获取相应的data】
* @param resultCode The integer result code returned by the child activity
*                   through its setResult().
* @param data An Intent, which can return result data to the caller
*               (various data can be attached to Intent "extras").
*
* @see #startActivityForResult
* @see #createPendingResult
* @see #setResult(int)
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 这里的PHOTO_RESULT = 1;就是之前我们starActivity是传递的1;拍完照后就会调用此方法,并把照片放到Bundle 里面,
if (requestCode == PHOTO_RESULT) {
Bundle extras = data.getExtras();
if (extras != null) {
Bitmap photo = extras.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
//将图片压缩
photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);
//将图片设置到ImageView上展示即可。
header_img.setImageBitmap(photo);

}
}
}
/*不知道你时候已经了解,粘源码注释的意思是,如果你有不懂得知识可直接查看源码,我认为多数情况下源码还是描述的很清晰的*/


对,就这么简单,有疑问?直接在下面评论就行,我帮你解决!或者liumeng_android@163.com 邮给我。前辈,大神欢迎赐教!

结束,谢谢!鞠躬~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  相机 android carmar