Android Camera Api的心得
Android从Camera中获取图片的两种方法


通过以下两种方式,可以在应用程序中使用摄像机

  1. 使用现有应用程序中Android摄像头应用程序
  2. 直接使用应用程序提供的Android摄像头APP
使用现有应用程序的Android摄像头应用程序

使用MediaStore.ACTION_IMAGE_CAPTURE启动安装在手机上的摄像头应用程序。它的语法下面给出:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

除了以上,也可以通过MediaStore提供其它可用的意图。它们列出如下

ACTION_IMAGE_CAPTURE_SECURE它返回照相机拍摄到的图像,设备被固定
ACTION_VIDEO_CAPTURE它调用已有的视频应用程序在Android中捕获视频
EXTRA_SCREEN_ORIENTATION它是用来在屏幕的方向设置:垂直或横向
EXTRA_FULL_SCREEN它被用来控制ViewImage的用户接口
INTENT_ACTION_VIDEO_CAMERA这个意图是用来启动摄像机在视频模式
EXTRA_SIZE_LIMIT它用于指定的视频或图像捕获尺寸大小限制

现在使用startActivityForResult()函数推出活动,并等待它的结果。它的语法下面给出:

startActivityForResult(intent,0)

返回结果,其结果可以通过覆盖onActivityResult方法获得

startActivity(Intent intent, Int requestCode)中的requestCode用于回收Bundle时的识别。

相关函数:
startActivityForResult(Intent intent, Int requestCode)
setResut(int resultCode, Intent intent)
onActivityResult(int requestCode, int resultCode, Intent intent)


eg:

MainActivity

//在onCreate中添加btn的onClick
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,0);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){

super.onActivityResult(requestCode, resultCode, data);
Bitmap bp = (Bitmap)data.getExtras().get("data");
imgFavorite.setImageBitmap(bp);
}


补充:startActivityForResult

比较常用的应用场景:

  1. 上传头像

点击头像后,弹出选择对话框,选择相册或者拍照,完成后湖出现剪裁界面,裁剪完成后,会将头像显示在界面上,如果有服务的话,会将头像上传到服务器。

  1. 登录过程

在很多应用程序的模块中,都有“我的”这个模块,在未登录状态下点击其中的某一项,就会弹出登录界面,登录完成后回到我的界面,会显示一些登录后的数据

startActivityForResult(intent, requestcode),该方法两个参数一个是带数据的Intent,另一个就是请求码,这个请求码是用于给activity识别是哪个activity返回的数据,因为在一个activity中可能会出现多个startActivityForResult.

onActivityResult(int requestCode, int resultCode, Intent data)该方法在startActivityForResult启动的activity结束后返回数据时调用,其中第二个参数是结果码,结果码为RESULT_OK时,说明activity顺利结束并返回结果。

第一个参数requestcode就是被启动的activity的识别码,在startActivityForResult方法时传入。

第三个参数data是Intent型的数据,该数据就是从activity返回回来的数据,可以使用data.getExtras()方法得到bundle,然后从bundle中取出一些基本数据。

activity要能成功返回数据,就必须在结束finish()之前调用setResult()方法,该方法的两个参数,第一个为结果码,也就是onActivityResult方法中的第二个参数resultcode,一般情况下我们都设置该值为RESULT_OK。


在B中回传数据时采用setResult方法,并且之后要调用finish方法。

setResult(RESULT_OK, intent); //intent为A传来的带有Bundle的intent,当然也可以自己定义新的    Bundlefinish();//此处一定要调用finish()方法

按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……把BACK事件直接自己给吞了

@Override public void onBackPressed() { Log.i(TAG, "onBackPressed"); setResult(Const.LIVE_OK); super.onBackPressed(); }

直接使用应用程序提供的Android摄像头API


startActivityForResult和setResult详解

Android基础之——startActivityForResult启动界面并返回数据,上传头像

http://blog.csdn.net/csr_yang/article/details/31034291?utm_source=tuicool&utm_medium=referral

更多相关文章

  1. Android笔记 - 常见错误解决方法 | Android common erros and so
  2. Android应用程序内存分析-Memory Analysis for Android Applicat
  3. Android 线程优先级设置方法
  4. android开发之设置Edittext密码的方法
  5. Android 数据库简单操作
  6. Android TextView文字链接4中方法
  7. 面试例题1:如何在android应用程序的窗口上绘制图形
  8. Android 数据存储(二) 文件的使用

随机推荐

  1. android 解决小米手机Android Studio安装
  2. Android基础:什么是Android?
  3. Android:TextView跑马灯-详解
  4. android文件关联之mime type
  5. Android Compatibility zoom dialog 关闭
  6. 命令行装android
  7. Android构建工具
  8. Android API Level对应Android版本一览表
  9. android 欢迎画面
  10. Linux下Android开发平台的搭建