`
砺雪凝霜
  • 浏览: 156732 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

androig中相机的使用

阅读更多

转处:http://892848153.iteye.com/blog/1851869

好吧,为了这个问题又折腾了一整天。之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就知道了。如果要获取原图,还需要一番折腾(特别是对于手里这个Samsung i9000)——之前朋友在不同的机型上使用的方法在我这里一直报错,且属于那种uncaught的错误-.- 
话说回来,具体的折腾方法如下(如果不幸你看到了,希望不要“折疼了”): 
在拍照的出发按钮的点击事件中写入如下代码: 
toCam.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
//先验证手机是否有sdcard 
String status=Environment.getExternalStorageState(); 
if(status.equals(Environment.MEDIA_MOUNTED)) 

try { 
File dir=new File(Environment.getExternalStorageDirectory() + "/"+localTempImgDir); 
if(!dir.exists())dir.mkdirs(); 

Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
File f=new File(dir, localTempImgFileName);//localTempImgDir和localTempImageFileName是自己定义的名字 
Uri u=Uri.fromFile(f); 
intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, u); 
startActivityForResult(intent, GET_IMAGE_VIA_CAMERA); 
} catch (ActivityNotFoundException  e) { 
// TODO Auto-generated catch block 
Toast.makeText(ImpromptuActivity.this, "没有找到储存目录",Toast.LENGTH_LONG).show();  

}else{ 
Toast.makeText(ImpromptuActivity.this, "没有储存卡",Toast.LENGTH_LONG).show(); 

dialog.dismiss(); 

}); 

在onActivityResult中这样折腾: 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if(resultCode==RESULT_OK ) 

switch(requestCode) 

case GET_IMAGE_VIA_CAMERA: 
File f=new File(Environment.getExternalStorageDirectory() 
+"/"+localTempImgDir+"/"+localTempImgFileName); 
try { 
   Uri u = 
   Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), 
   f.getAbsolutePath(), null, null)); 
   //u就是拍摄获得的原始图片的uri,剩下的你想干神马坏事请便…… 
} catch (FileNotFoundException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 

break; 


super.onActivityResult(requestCode, resultCode, data); 


别高兴太早了,还有关键问题: 
上面的代码只要你会用google,一般都能找来拼凑一番。但是,仅仅是这样,你还会得到未知错误……Samsung的系统相机,版式是横板的,如果你的activity恰巧是竖版的,那么获取这个回调uri的时候,很可能为空! 
原因在于,如果你没有设置版式改变的时候,activity不要调用onCreate方法!这就是要命的地方! 
设置方法其实很简单: 
1、在Manfest.xml中,给activity添加一个属性:android:configChanges="orientation|keyboardHidden" 
2、在activity中添加: 
@Override 
    public void onConfigurationChanged(Configuration config) { 
    super.onConfigurationChanged(config); 
    } 
另外还有一个蛋疼的错误容易犯:千万别给这个activity添加单例模式,即:android:launchMode="singleInstance"

好了,完成这些,你就终于可以不“折疼”了! good luck!

照相得到的图片,最好自己指定路径,这样返回数据时,就不用从Intent中获取了,我们知道是什么路径,可以直接去拿。

 

分享到:
评论

相关推荐

    android自定义相机带取景框

    以上是自定义带有取景框的Android相机的主要步骤和知识点,实际开发中可能需要根据具体需求进行更深入的定制,例如添加滤镜效果、人脸识别等功能。理解并掌握这些知识,将有助于你创建出更加个性化的相机应用。

    xamarin android相机使用实例源码及水印菜单

    以上是关于“Xamarin.Android相机使用实例源码及水印菜单”的主要知识点。通过学习和实践这个实例,开发者能够掌握如何在Xamarin环境中集成和定制相机功能,以及如何处理图像和添加水印,进一步提升应用的功能性和...

    Android通过相机预览使用原生接口捕捉人脸并取框,androidstuido工程

    在Android平台上,开发一...总结来说,这个项目展示了如何利用Android原生接口实现相机预览和人脸检测,涵盖了Android相机API的使用、图像处理、坐标转换、界面绘制等多个技术点,是Android开发中的一个重要实践案例。

    android 4.1 相机源码

    深入研究这些源码,开发者不仅可以理解Android相机系统的运行机制,还能学习到如何优化相机功能,开发自定义相机应用,或者为新的硬件平台编写适配器。这个压缩包提供的"Camerase4.1相机"文件应该包含上述提到的关键...

    Android 自定义相机 CameraDIY源码

    在Android平台上,自定义相机(CameraDIY)是开发者经常遇到的需求,特别是在创建涉及多媒体功能的...通过对这个项目的分析和学习,开发者可以深入了解Android相机API的使用,为自己的应用增添更多个性化的相机功能。

    Android自定义相机——身份证扫描界面

    在Android应用开发中,创建一个自定义相机以实现身份证扫描功能是常见的需求。这涉及到对Android系统的相机API的深入理解和自定义布局设计。本篇将详细介绍如何构建这样一个系统,主要针对Android 6.0(API级别23)...

    Android-Android自定义相机

    本教程将深入探讨如何在Android应用中实现自定义相机功能,包括使用Camera API和CameraX库。 首先,我们要了解Android的Camera API。Camera API是Android系统提供的一组接口,用于控制设备的摄像头进行拍照和录制...

    Android圆形相机预览窗口,圆形SurfaceView

    在Android开发中,有时我们可能需要创建一个独特的用户体验,比如设计一个圆形的相机预览窗口。这个场景就涉及到了Android的SurfaceView以及如何定制它的显示效果。本文将深入探讨如何实现一个圆形的相机预览窗口。 ...

    Android4.0.3照相机源码

    在Android 4.0.3(Ice Cream Sandwich)版本中,照相机功能是系统的核心组件之一,对于开发者来说,理解其源码可以帮助我们深入学习Android系统以及如何构建高性能、功能丰富的相机应用。以下是对Android 4.0.3照相机...

    android启动相机三种方式

    在Android平台上,调用相机功能是开发者经常遇到的需求。针对Android 2.3.3(API级别10)这一版本,有三种主要的相机调用方法。本文将详细阐述这三种方式,帮助开发者更好地理解和应用。 1. **使用Intent启动系统...

    Android中关于自定义相机预览界面拉伸问题

    当我们在Android应用中使用Camera API创建自定义相机预览时,可能会遇到图像变形或拉伸的问题。这主要是由于两个因素: 1. 摄像头传感器的物理方向与设备屏幕显示方向不匹配。例如,如果设备处于竖屏模式,但摄像头...

    Android 7.0相机源码

    《Android 7.0相机源码解析》 在Android系统中,相机功能是不可或缺的一部分,它为用户提供了捕捉生活...通过对源码的研究,开发者可以深入了解Android相机框架的工作原理,从而定制自己的相机应用,提升用户体验。

    android 使用GLsurfaceView 自定义相机

    在Android平台上,自定义相机是一项常见的需求,尤其是在开发复杂或者高性能的图像处理应用时。`GLSurfaceView`是Android提供的一种高效方式,用于渲染OpenGL ES图形。本篇将深入探讨如何利用`GLSurfaceView`来实现...

    android自定义相机连拍

    同时,如果在Activity的生命周期中使用相机,记得在适当的时候停止预览和释放相机。 7. **权限管理**: 自Android 6.0(API级别23)开始,运行时权限管理变得重要。确保你的应用请求了`Manifest.permission.CAMERA...

    android 自定义相机,Camera和camera2.TextureView,相机遮罩层demo

    4. **处理相机遮罩层**:在自定义相机中添加遮罩层,可以通过在TextureView之上添加一个半透明的View来实现。这个View可以是ImageView或者自定义View,通过设置背景颜色和透明度来达到遮罩效果。在触摸事件中,可以...

    Android自定义照相机实现只拍摄矩形区域(重传)

    在Android开发中,有时我们需要对系统默认的相机功能进行扩展,以满足特定的拍摄需求,例如只拍摄画面中的矩形区域。这样的自定义相机功能可以应用于各种场景,比如二维码扫描、文档拍摄等,确保用户每次拍摄都能...

    android自定义相机黑屏问题.doc

    在Android开发中,自定义相机是一项常见的需求,但往往伴随着各种设备兼容性问题。本文将深入探讨一个特定的问题——在某些设备(如HTC)上,自定义相机可能导致黑屏的现象,以及如何解决这个问题。 首先,问题的...

    Android自定义相机demo

    这个demo可能包含了设置预览界面、处理拍照事件、保存图片到设备存储等功能的示例代码,是学习Android相机开发的好起点。 总之,Android自定义相机涉及到许多关键点,包括权限管理、相机实例的获取与释放、预览设置...

    Android调用系统相机和自定义相机实例圆形取景框。Camera工具类

    在Android开发中,调用系统相机以及自定义相机功能是常见的需求,特别是在涉及到图像拍摄和处理的应用中。本文将深入探讨如何实现这一功能,并重点介绍如何创建一个具有圆形取景框的自定义相机。 首先,调用系统...

    android相机拍照程序

    本篇文章将深入探讨如何创建一个基本的Android相机拍照应用,并着重讲解如何针对不同手机设备调整图片尺寸。 首先,我们需要了解Android的Camera API。Android系统提供了一个名为`Camera`的类,用于访问和控制手机...

Global site tag (gtag.js) - Google Analytics