照片或摄像头的浏览器 [英] pictures or camera browser

查看:157
本文介绍了照片或摄像头的浏览器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做下:
我有一个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_IM​​AGE_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆