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

Android照相机Camera

2016-07-21 11:34 246 查看
使用系统照相机进行拍照并返回

在Action中,通过

Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent,1);


来打开系统照相机,当拍照完成后(Camera进行了finish())后就会执行 onActivityResult函数(谁调用startActivityForResult执行谁)

ImageView img;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
img= (ImageView) findViewById(R.id.img);
Bitmap bitmap= (Bitmap) data.getExtras().get("data");
img.setImageBitmap(bitmap);
}


从代码中可以看到,通过返回的Intent 我们可以获取到Bitmap的对象,这个对象就是我们刚刚拍照时的照片,在这里,我将这个照片放到了屏幕上。

————————————–可耻的分割线———————————————

这段代码中有一些常见的问题,譬如onActivityResult没有进行调用等在这里我和大家分享一下解决方案

错误一

AndroidManifest.xml中被别人加了android:noHistory=”true”

android:noHistory=”true”该activity在statck中不留痕迹所以不会发生回调

错误二

startActivityForResult(intent,1);这段代码中将1换成了RESULT_OK

在官方文档中规定这里填入大于0的整数时才会发生回调,而RESULT_OK在源代码中定义为-1

/* Standard activity result: operation canceled. /

public static final int RESULT_CANCELED = 0;

/* Standard activity result: operation succeeded. /

public static final int RESULT_OK = -1;

/* Start of user-defined activity results. /

public static final int RESULT_FIRST_USER = 1;

这是官方源代码常量的定义

错误三

这个错误就有点尴尬了

我把
public void onActivityReenter(int resultCode, Intent data)


函数看成了
protected void onActivityResult(int requestCode, int resultCode, Intent data)


如果不看最后的单词很容易就写错了,而且这里还不注意检查
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  回调 函数