照片或摄像头的浏览器 [英] pictures or camera browser
本文介绍了照片或摄像头的浏览器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图做下:
我有一个ImageView的,我想它当用户触动它,让他选择或拍照会出现一个图片浏览器或摄像头。
我发现:
私人无效openPictureBrowser()
{
意向意图=新意图(Intent.ACTION_GET_CONTENT);
intent.setType(图像/ *);
intent.putExtra(Intent.EXTRA_TITLE,自定义标题); //可选
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); //可选
尝试{
startActivityForResult(意向,1);
}赶上(例外五){
e.printStackTrace();
}
}@覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
开关(要求code){
情况1: {
如果(结果code == RESULT_OK&放大器;&放大器;数据= NULL&放大器;!&安培;!data.getData()= NULL){
字符串文件路径= data.getData()的getPath()。 //警告:这是不是你真正的路径(在我的情况下,值设置为/外部/图像/媒体/ 4
}
}
}
}
我可以做openPictureBrowser如果我想添加的摄像头?
和我应该做的onActivityResult设置文件路径为ImageView的背景吗?
任何人都可以给我一个提示?
Thanxs!
解决方案
公共类Set_image扩展活动实现OnClickListener
{
按钮btn_capture_image,btn_share_from_gallery;
ImageView的iv_set_image;
私有静态最终诠释REQUEST_ code = 1;
私有静态最终诠释CAMERA_REQUEST = 1888;
串文件路径=;
位图Main_bitmap;
@覆盖
公共无效的onCreate(捆绑savedInstanceState)
{ super.onCreate(savedInstanceState);
的setContentView(R.layout.set_image); btn_capture_image =(按钮)findViewById(R.id.button_capture_image);
btn_share_from_gallery =(按钮)findViewById(R.id.button_share_from_gallery);
iv_set_image =(ImageView的)findViewById(R.id.imageView_set_iamge); btn_capture_image.setOnClickListener(本);
btn_share_from_gallery.setOnClickListener(本); }
公共无效的onClick(视图v)
{ 如果(V == btn_capture_image)
{
意图cameraIntent =新意图(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent,CAMERA_REQUEST);
}
如果(V == btn_share_from_gallery)
{
意向意图=新的Intent();
intent.setType(图像/ *);
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(意向,REQUEST_ code);
}
} @覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据)
{ 如果(要求code == CAMERA_REQUEST)
{
。Main_bitmap =(位图)data.getExtras()获得(数据);
iv_set_image.setImageBitmap(Main_bitmap);
} 如果(要求code == REQUEST_ code和;&安培;结果code == Activity.RESULT_OK) 尝试
{ 乌里selectedImage = data.getData();
的String [] = filePathColumn {MediaStore.Images.Media.DATA};
光标光标= getContentResolver()查询(selectedImage,filePathColumn,NULL,NULL,NULL); 如果(cursor.moveToFirst())
{
INT参数:columnIndex = cursor.getColumnIndex(filePathColumn [0]);
文件路径= cursor.getString(参数:columnIndex);
BitmapFactory.Options options4 =新BitmapFactory.Options();
options4.inSampleSize = 1;
Main_bitmap = BitmapFactory.de codeFILE(文件路径,options4); iv_set_image.setImageBitmap(Main_bitmap);
}
cursor.close();
}
赶上(例外五)
{
e.printStackTrace();
}
super.onActivityResult(要求code,结果code,数据);
}
I'm trying to do the next: I have an ImageView and i want it to appears a pictures browser or camera when user touchs it to let him select or take a picture. I've found that:
private void openPictureBrowser()
{
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_TITLE,"A Custom Title"); //optional
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); //optional
try {
startActivityForResult(intent, 1);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode) {
case 1: {
if (resultCode == RESULT_OK && data != null && data.getData() != null) {
String filePath = data.getData().getPath(); //WARNING: this is NOT your real path (in my case, value is set to "/external/images/media/4"
}
}
}
}
What can i do in openPictureBrowser if I want to add the camera?
And what should I do in onActivityResult to set filePath as ImageView background?
Can anybody give me a hint??
Thanxs!
解决方案
public class Set_image extends Activity implements OnClickListener
{
Button btn_capture_image,btn_share_from_gallery;
ImageView iv_set_image;
private static final int REQUEST_CODE = 1;
private static final int CAMERA_REQUEST = 1888;
String filePath="";
Bitmap Main_bitmap;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.set_image);
btn_capture_image =(Button) findViewById(R.id.button_capture_image);
btn_share_from_gallery =(Button) findViewById(R.id.button_share_from_gallery);
iv_set_image = (ImageView) findViewById(R.id.imageView_set_iamge);
btn_capture_image.setOnClickListener(this);
btn_share_from_gallery.setOnClickListener(this);
}
public void onClick(View v)
{
if (v == btn_capture_image)
{
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
if (v == btn_share_from_gallery)
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, REQUEST_CODE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == CAMERA_REQUEST)
{
Main_bitmap = (Bitmap) data.getExtras().get("data");
iv_set_image.setImageBitmap(Main_bitmap);
}
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
try
{
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor.moveToFirst())
{
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
filePath = cursor.getString(columnIndex);
BitmapFactory.Options options4 = new BitmapFactory.Options();
options4.inSampleSize = 1;
Main_bitmap = BitmapFactory.decodeFile(filePath, options4); iv_set_image.setImageBitmap(Main_bitmap);
}
cursor.close();
}
catch (Exception e)
{
e.printStackTrace();
}
super.onActivityResult(requestCode, resultCode, data);
}
这篇关于照片或摄像头的浏览器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文