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.适配安卓各种系统,支持android 11 2.图片过大不会引起 oom 3.动态获取系统权限, ...8.支持一些常用场景设置:如:是否裁剪、是否预览图片、是否裁剪、是否显示相机、图片是否压缩等
h5中调用手机选择文件图片的代码是: *" capture="camera" id="imgFile" name="imgFile" type="file"> 用安卓的 webView 控件来显示h5网页 然后给webView 设置WebChromeClient WebChromeClient 主要处理解析,渲染...
Android相机、相册图片上传程序(客户端和服务器端)。 直接解压可以运行,之前下载别人的好多都跑步起来,这个经过加工、优化,可以正常的运行,希望能帮到你!
【TakePicture】项目分为两大部分,分别从不同开发场景出发。 随着市场上不同版本、机型手机的出现,老项目迭代维护成本高。 本Demo最初目的: 实现如下功能之外,为了适配不同版本机型手机; 实测:android 8、9、...
可以实现从相册或者相机拍照,选择图片,并裁剪图片
一个小工具,打开手机相册选择图片,或者拍照设置头像
调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌的手机都是正常的,就三星出现这个怪事。 在Android适配上,我原来一直以为国内的小米手机够奇葩...
android studio 开发,使用FileProvider兼容4.4版本以上文件权限读取。适配常见手机文件系统路径。
Android图片选择,可以选择手机中的图片或者使用照相机拍照
基于Vue实现跨平台上传图片,pc端访问时上传图片资源,移动端访问时调用相册,可拍照和从相册里选择并在页面可进行预览。文档记录了java后端和vue前端两部分核心代码包括注释说明
同过手机相册或照相机选择图片,并进行剪裁然后获得图片进行头像的更换,一个小demo
修改用户头像,仿ios底部弹框(从手机相册选择,拍照),兼容Android7.0,android8.0文件等特殊权限
Unity调用IOS/Android原生接口打开移动端图库或者相机,选择图片后保存在Unity目录中,然后Unity加载显示。
在android手机上,通过拍照获取图片获取是从相册中选取自己所需要的图片
C# Xamarin.Android ...Input调用手机摄像头上传图片,或通过选择器选中拍照还是图片 Js交互传递Location坐标信息 动态申请权限 开发版本:Visual2019,Visual2022编译通过 注意: AndroidManifest.xml配置文件
delphi xe6 android 调用照相机摄像头拍照片,简单非常实用的原代码,无特定组件,真机调试没问题.
资源中的打开相机和相册均是原生Java代码实现,在我自己手机和安卓7.0版本上面稳定可靠,测试在魅族5.0版本左右打开相机会死掉,由Qt调用,demo可学习Qt如何与原生Java的交互通信,代码均有注释,里面还有微信等接口...
Android调用相机并将照片显示出来,使用的是Android-17 设置权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_...
Android调用手机拍照,将拍照的图片放在指定文件夹中,代码中有详细的注释,直接导入即可使用。很适合初学者