`
dadi520
  • 浏览: 145763 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Android 调用intent 拍照(转)

 
阅读更多

原文: http://achorniy.wordpress.com/2010/04/26/howto-launch-android-camera-using-intents/

 

 Instead of writing your own activity to capture the pictures you probably prefer (in most cases)  to use existent Camera activity which actually have good UI and features. It’s really easy to do, just launch it with Intent like in the code below.

You should be notified that using that approach doesn’t work well on API before 2.0 (at least on G1 with 1.6 it save with pictures with 512*384 resolution). On phones with API 2.0+ it save full-sized picture.  So you could use the “How to use autofocus in Android” as the starting point to create your own Camera application.

//define the file-name to save photo taken by Camera activity
String fileName = "new-photo-name.jpg";
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

the code above should start the default Camera activity on your phone, now lets define the code to handle results returned by this Intent. Please take a notice that “imageUri” is the activity attribute, define and save it for later usage (also in onSaveInstanceState) 

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
    if (resultCode == RESULT_OK) {
        //use imageUri here to access the image
 
    } else if (resultCode == RESULT_CANCELED) {
        Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT);
    } else {
        Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT);
    }
}
}

to get the reference to File object from imageUri you can use the following code.

public static File convertImageUriToFile (Uri imageUri, Activity activity)  {
Cursor cursor = null;
try {
    String [] proj={MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID, MediaStore.Images.ImageColumns.ORIENTATION};
    cursor = activity.managedQuery( imageUri,
            proj, // Which columns to return
            null,       // WHERE clause; which rows to return (all rows)
            null,       // WHERE clause selection arguments (none)
            null); // Order-by clause (ascending by name)
    int file_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    int orientation_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION);
    if (cursor.moveToFirst()) {
        String orientation =  cursor.getString(orientation_ColumnIndex);
        return new File(cursor.getString(file_ColumnIndex));
    }
    return null;
} finally {
    if (cursor != null) {
        cursor.close();
    }
}
}

As you see you may get some more information about the image, like orientation, etc, but for things like Thumbnail – you will get null results in most cases, since the thumbnail is not yet created and you should either open Gallery to create the thumbnail or initiate it by callingMediaStore.Images.Thumbnails.getThumbnail (this is the blocking method and was introduced in API-5)

分享到:
评论

相关推荐

    Android调用系统相机、相册实现拍照、图片多选Demo移动开发

    在Android应用开发中,调用...总之,Android调用系统相机和相册并不复杂,只需要理解Intent的工作原理以及如何与系统服务进行交互。遵循这些步骤,开发者可以轻松实现拍照和图片多选功能,而无需引入额外的第三方库。

    Android利用Intent拍照、摄像、打电话、发短信、发邮件等示例

    本资源“Android利用Intent拍照、摄像、打电话、发短信、发邮件等示例”提供了一个完整的应用实例,展示了如何灵活运用Intent来实现这些功能。下面将详细解释每个功能的实现方式。 1. **拍照** 使用Intent来调用...

    Android调用摄像头拍照(兼容7.0)

    在Android应用开发中,调用摄像头进行拍照是常见的功能之一,尤其在社交、影像记录类应用中不可或缺。然而,随着Android系统的不断更新,对于权限管理、API接口的改动,使得在不同版本上实现这一功能变得稍有复杂。...

    android studio 调用相机拍照,选择相册照片

    在Android开发中,调用相机拍照和选择相册...总结,Android Studio调用相机拍照和选择相册照片,主要涉及权限管理、启动相机Intent、处理返回结果以及图片的存储操作。对于更复杂的相机功能,可以深入研究Camera2 API。

    android调用照相机拍照与选择本地照片功能

    在Android应用开发中,提供用户调用照相机拍照...以上就是关于“android调用照相机拍照与选择本地照片功能”的核心知识点,开发者在实现这些功能时,需要注意优化用户体验,合理管理文件,以及遵循Android的最佳实践。

    Android调用系统照相机并保存

    以上就是Android调用系统照相机并保存照片的基本流程。需要注意的是,从Android 7.0开始,对于外部存储的访问有了更严格的限制,需要使用FileProvider。另外,Android 10及更高版本引入了Scoped Storage,可能需要...

    android 调用照相机拍照

    在Android平台上,调用照相机拍照是常见的功能之一,它涉及到多媒体处理、用户交互以及硬件接口的使用。本文将深入探讨如何在Android应用中实现这一功能,并特别关注对焦优化。 首先,调用照相机拍照的基本流程是...

    android 调用相机和相册

    总的来说,调用Android的相机和相册涉及到Intent的使用、文件管理和权限处理。在实际开发中,为了保证兼容性,我们需要考虑各种设备的差异,尤其是像小米这样的厂商可能会有特殊的行为。通过以上方法,我们可以实现...

    Android 调用相机拍照 添加照片水印

    以上就是Android调用相机拍照并添加照片水印的基本流程。在实际开发中,你可能还需要根据具体需求进行优化,例如添加图片裁剪功能、支持图片旋转、自定义水印样式等。记住,良好的用户体验和性能优化也是必不可少的...

    android 调用系统照相机功能

    以上就是Android应用调用系统照相机功能的基本步骤,包括拍照和录像。需要注意的是,不同设备和Android版本可能有差异,实际开发中需要做好兼容性处理。同时,随着Android系统更新,新的API可能会提供更简洁、安全的...

    delphi xe6 android 调用照相机摄像头拍照片

    总的来说,Delphi XE6在Android平台上调用摄像头功能并不复杂,只需要合理使用`Intent`和系统提供的API即可。通过以上步骤,你可以在自己的应用中轻松实现拍照功能,同时确保代码能够在各种Android设备上稳定运行。

    Android的Intent方式拍照源代码

    总的来说,使用Intent在Android应用中实现拍照功能,需要理解Intent的工作原理,如何启动相机应用,以及如何处理返回的结果。通过这些步骤,我们可以轻松地集成拍照功能到自己的应用中,提供更丰富的用户体验。

    Android WebView H5调用拍照

    在“Android WebView H5调用拍照”这个主题中,我们将深入探讨如何通过WebView组件和H5页面实现用户调用手机摄像头拍照的功能。 首先,我们需要理解WebView的基本使用。在AndroidManifest.xml文件中,为应用添加...

    android调用系统照相说明

    以上就是Android调用系统照相的基本实现过程。需要注意的是,从Android 6.0(API级别23)开始,动态权限管理成为必须,因此在调用相机之前,你需要检查并请求WRITE_EXTERNAL_STORAGE和CAMERA权限。 在源码中,可能...

    Android下WebView中调用系统相机拍照范例

    在本文中,我们将深入探讨如何在WebView中调用系统的相机功能,允许用户拍照并返回照片的存储路径。这个功能对于构建混合型应用或者在网页中集成本地功能是非常实用的。 首先,我们需要在Android工程的`...

    android调用系统照相机返回到页面,保存到本地和把图片转换成字符串

    在Android开发中,调用系统照相机...此外,由于Android系统版本差异,部分设备可能不支持直接从Intent的Extras中获取到Bitmap,此时需要通过拍照后生成的文件路径来获取图片。在实际开发中,需要针对不同情况进行处理。

    Android webview调用摄像头扫描二维码

    因此,我们需要自定义一个`WebViewClient`,重写`shouldOverrideUrlLoading`方法,当用户点击“拍照”按钮时,调用Android原生的相机API: ```java webView.setWebViewClient(new WebViewClient() { @Override ...

    android调用系统自带照相机拍照

    在Android开发中,调用系统...总的来说,Android调用系统自带相机拍照涉及权限管理、Intent启动相机应用、处理返回结果以及可能的自定义存储路径。理解这些知识点对于开发Android应用中涉及拍照功能的部分至关重要。

    Android 调用系统照相机,相册,上传图片

    以上就是Android调用系统照相机、相册及上传图片的基本流程。需要注意的是,对于Android 6.0及以上版本,需要在运行时动态申请权限。同时,图片的处理(如裁剪、压缩)可能会影响应用性能和用户体验,需根据实际需求...

    Android使用Intent实现Camera功能

    然后,我们在按钮的点击事件中调用`dispatchTakePictureIntent()`方法,该方法创建一个Intent,其动作是`MediaStore.ACTION_IMAGE_CAPTURE`,这表示我们希望执行拍照操作。如果设备上有可用的相机应用,`...

Global site tag (gtag.js) - Google Analytics