`
喧嚣求静
  • 浏览: 572762 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android 选择图片(从手机照相机或手机图片)

阅读更多

package com.app.imagechooser;

import java.io.File;

import android.app.Activity;
import android.app.AlertDialog;

import android.content.DialogInterface;
import android.content.Intent;

import android.database.Cursor;
import android.provider.MediaStore;
import android.net.Uri;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import android.os.Bundle;
import android.os.Environment;

import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Button;

/**
 * This example shows how to create and handle image picker in Android.
 * 
 * @author Lorensius W. L. T <lorenz@londatiga.net>
 *
 */
public class MainActivity extends Activity {
	private Uri mImageCaptureUri;
	private ImageView mImageView;	
	
	private static final int PICK_FROM_CAMERA = 1;
	private static final int PICK_FROM_FILE = 2;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
        
        final String [] items			= new String [] {"From Camera", "From SD Card"};				
		ArrayAdapter<String> adapter	= new ArrayAdapter<String> (this, android.R.layout.select_dialog_item,items);
		AlertDialog.Builder builder		= new AlertDialog.Builder(this);
	//android.R.layout.select_dialog_item 这是android内置布局	
		builder.setTitle("Select Image");
		builder.setAdapter( adapter, new DialogInterface.OnClickListener() {
			public void onClick( DialogInterface dialog, int item ) {
				if (item == 0) {
					Intent intent 	 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
					File file		 = new File(Environment.getExternalStorageDirectory(),
							   			"tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
					mImageCaptureUri = Uri.fromFile(file);

					try {			
						intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
						intent.putExtra("return-data", true);
						
						startActivityForResult(intent, PICK_FROM_CAMERA);
					} catch (Exception e) {
						e.printStackTrace();
					}			
					
					dialog.cancel();
				} else {
					Intent intent = new Intent();
					
	                intent.setType("image/*");
	                intent.setAction(Intent.ACTION_GET_CONTENT);
	                
	                startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE);
				}
			}
		} );
		
		final AlertDialog dialog = builder.create();
		
		mImageView = (ImageView) findViewById(R.id.iv_pic);
		
		((Button) findViewById(R.id.btn_choose)).setOnClickListener(new View.OnClickListener() {			
			@Override
			public void onClick(View v) {
				dialog.show();
			}
		});
    }
    
    @Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	    if (resultCode != RESULT_OK) return;
	   
		Bitmap bitmap 	= null;
		String path		= "";
		
		if (requestCode == PICK_FROM_FILE) {
			mImageCaptureUri = data.getData(); 
			path = getRealPathFromURI(mImageCaptureUri); //from Gallery 
		
			if (path == null)
				path = mImageCaptureUri.getPath(); //from File Manager
			
			if (path != null) 
				bitmap 	= BitmapFactory.decodeFile(path);
		} else {
			path	= mImageCaptureUri.getPath();
			bitmap  = BitmapFactory.decodeFile(path);
		}
			
		mImageView.setImageBitmap(bitmap);		
	}
	
	public String getRealPathFromURI(Uri contentUri) {
        String [] proj 		= {MediaStore.Images.Media.DATA};
        Cursor cursor 		= managedQuery( contentUri, proj, null, null,null);
        
        if (cursor == null) return null;
        
        int column_index 	= cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        
        cursor.moveToFirst();

        return cursor.getString(column_index);
	}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp">
    
	<TextView  
    	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content" 
    	android:text="Android Image Choose Example"/>
    	
	<Button 
		android:id="@+id/btn_choose"
		android:text="Choose Image" 		 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:layout_marginTop="10dp"/>
		
	<ImageView 
		android:id="@+id/iv_pic"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"		
		android:layout_marginTop="10dp"/>
		
</LinearLayout>
分享到:
评论
1 楼 xici_magic 2011-11-29  
多谢分享啦 看看

相关推荐

    android 手机选择图片支持多张单张选择

    在Android开发中,用户往往需要在应用中上传或选择图片,这涉及到系统相册的访问以及拍照功能的集成。本文将详细讲解如何在Android应用中实现单张或多张图片的选择,以及如何支持从相册选取和使用相机拍摄。 首先,...

    轻量级的android原生图片选择拍照第三方库

    1. **图片选择**:TakePhoto提供了简洁的API接口,允许用户从手机相册中选择图片。它支持多种图片选择模式,如单选或多选,可以根据应用的需求进行配置。 2. **拍照功能**:用户可以直接调用相机进行拍照,...

    Android图片选择器,可轻松实现图片多张选取、图片预览、图片自由比例裁剪、图片压缩,功能超级强大

    使用超级方便,轻松配置各种特性 1.适配安卓各种系统,支持android 11 2.图片过大不会引起 oom 3.动态获取系统权限, ...8.支持一些常用场景设置:如:是否裁剪、是否预览图片、是否裁剪、是否显示相机、图片是否压缩等

    不错的android原生图片选择及拍照第三方库

    在Android开发中,图片选择和拍照是常见的功能需求,尤其对于社交、相册类应用更是不可或缺。本篇文章将深入探讨一款适用于Android原生环境的图片选择及拍照第三方库——PhotoPicker,它能很好地适配多个Android系统...

    android 拍照+从手机相册选择返回图片到imagview

    在Android开发中,用户经常需要上传或选择图片,例如在社交应用中分享照片或在电商应用中上传商品图片。这个过程通常涉及到两个主要的操作:拍照和从手机相册选取图片。接下来,我们将深入探讨如何在Android应用中...

    android zxing扫描生成条码二维码,支持从手机选择图片识别

    本文将深入探讨如何利用ZXing库在Android应用程序中实现扫描和生成条码及二维码,并且如何支持用户从手机相册选择图片进行识别。 首先,我们要理解ZXing的核心功能。ZXing库提供了多种编码和解码的接口,支持多种...

    Android相机、相册图片上传程序

    在Android平台上,开发一款能拍照、选择相册图片并上传至服务器的应用程序是一个常见的需求。这个"Android相机、相册图片上传程序"包含了客户端和服务器端的实现,旨在提供一个可运行的解决方案。下面我们将详细探讨...

    Android图片选择器

    《Android图片选择器详解》 在移动应用开发中,用户对于图片的选取、拍摄和裁剪功能需求日益增强。Android图片选择器就是为满足这一需求而设计的组件,它简化了开发者集成这些功能的过程,提供了丰富的自定义选项,...

    Android 相册获取图片或者相机拍照获取图片

    在Android应用开发中,获取用户设备上的图片或者通过相机拍摄新照片是常见的需求。随着Android系统的不断升级,尤其是从Android 4.4(KitKat)开始引入的存储权限管理变化,开发者需要采取不同的策略来适配不同的...

    android相册选择图片的编码实现代码

    android相机拍照直接选取图片固然方便,但是更多的时候,我们需要从手机已有的图片中选择一张来使用。这次就练习如何从相册中选择图片吧。 首先在 activity_main.xml 文件中增加一个 Button,用来触发从相册中选择...

    Android图片上传,可以选择多张图片,缩放预览,拍照上传等

    在Android应用开发中,图片上传是一...以上就是Android图片上传功能的实现涉及的关键知识点,包括图片选择、预览、缩放、拍照、处理、上传以及错误和权限管理。实际开发中,还需要结合具体需求和性能优化策略进行调整。

    android手机全景图片拍摄指南

    首先,关于应用的选择,不同版本的Android手机拍摄全景图片的方式有所不同。对于Android 4.2及以上版本的手机,推荐使用手机内置的原生相机全景模式,这通常在系统相机应用中可以找到。而对于Android 4.2以下版本的...

    Android 仿微信选择图片,上传图片

    本示例项目"Android 仿微信选择图片,上传图片"旨在帮助开发者实现类似的功能,让用户可以从手机相册中选取图片,并能上传到服务器。下面我们将详细探讨这一过程中的关键知识点。 1. **权限申请**: 在Android 6.0...

    android 超高仿微信图片选择和拍照

    微信的图片选择功能允许用户从手机相册中选取多张图片。在Android中,我们可以使用Intent来启动系统的图库应用,让用户选择图片。通过设置Intent的数据类型为`image/*`,并使用`ACTION_PICK`或`ACTION_GET_CONTENT`...

    Android/IOS打开手机相机设置头像

    在移动应用开发中,特别是在Android和iOS平台上,允许用户通过内置的相机功能拍摄照片或从相册中选择图片作为头像是一个常见的需求。这个小工具就是为此目的设计的,它为用户提供了一个简单、直观的界面来操作这两种...

    Android-PhotoPicker照片选择器相机拍照选取图片

    这个库主要为用户提供两种方式获取图片:一是从手机相册中选择,二是直接通过相机进行拍摄。这两种方式都旨在提供无缝的用户体验,使用户能够在应用中方便快捷地获取所需的图片。 对于相册选择,PhotoPicker支持...

    Android 仿微信图片选择器 支持图片选择与拍照

    在Android应用开发中,微信图片选择器是一种常见的功能,它允许用户从手机相册中选择图片或者通过相机拍摄新照片。这个"Android 仿微信图片选择器"是为实现这一功能而设计的一个自定义组件。它具有高度可定制性,...

    Android + <调用相机拍照 & 选择相册> + 数码相机

    【TakePicture】项目分为两大部分,分别从不同开发场景出发。 随着市场上不同版本、机型手机的出现,老项目迭代维护成本高。 本Demo最初目的: 实现如下功能之外,为了适配不同版本机型手机; 实测:android 8、9、...

    android照相机相册选择,可以多选

    本项目标题为“android照相机相册选择,可以多选”,说明它实现了在Android平台上让用户能够通过自定义的方式,不仅能够使用相机拍摄照片,还能够从相册中选取多张图片,并且具备删除已选择图片的功能。这一特性极大...

Global site tag (gtag.js) - Google Analytics