android、擷取本地圖片|直接擷取照相圖片

來源:互聯網
上載者:User

在此調查中我要實現的是:點擊Pictures按鈕後,擷取手機內所有圖片,選擇某一個圖片,並顯示到ImageView中。

應用範圍: 圖片上傳時的圖片選擇  , 類似"瀏覽"。

所有的圖片都會列出來,包括目錄。

在Activity Action裡面有一個“ACTION_GET_CONTENT”字串常量,該常量讓使用者選擇特定類型的資料,並返回該資料的URI.我們利用該常量,然後設定類型為“image/*”,就可獲得Android手機內的所有image。

 


public class Lesson_01_Pic extends Activity {      /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);                    Button button = (Button)findViewById(R.id.b01);          button.setText("選擇圖片");          button.setOnClickListener(new Button.OnClickListener(){              @Override              public void onClick(View v) {                  Intent intent = new Intent();                  /* 開啟Pictures畫面Type設定為image */                  intent.setType("image/*");                  /* 使用Intent.ACTION_GET_CONTENT這個Action */                  intent.setAction(Intent.ACTION_GET_CONTENT);                   /* 取得相片後返回本畫面 */                  startActivityForResult(intent, 1);              }                        });      }            @Override      protected void onActivityResult(int requestCode, int resultCode, Intent data) {          if (resultCode == RESULT_OK) {              Uri uri = data.getData();              Log.e("uri", uri.toString());              ContentResolver cr = this.getContentResolver();              try {                  Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));                  ImageView imageView = (ImageView) findViewById(R.id.iv01);                  /* 將Bitmap設定到ImageView */                  imageView.setImageBitmap(bitmap);              } catch (FileNotFoundException e) {                  Log.e("Exception", e.getMessage(),e);              }          }          super.onActivityResult(requestCode, resultCode, data);      }  }  


 

 

好了,就將這麼多。


下面是可以擷取當前拍照的方法:

new AlertDialog.Builder(EditInfoActivity.this).setTitle(R.string.update_select_dialog).setItems(R.array.update_user_icon,new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {/* User clicked so do some stuff */switch (which) {case 0:Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(i, REQ_CODE_CAMERA);break;case 1:Intent intent = new Intent();intent.setData(Uri.parse("content://media/internal/images/media"));intent.setAction(Intent.ACTION_PICK);startActivityForResult(Intent.createChooser(intent,"Select Picture"),REQ_CODE_PICTURE);break;}}}).create().show();/* 0 --> 手機拍照;      1 --> 手機相簿 */


@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == RESULT_OK) {switch (requestCode) {case REQ_CODE_CAMERA:Bundle bundle = data.getExtras();// Uri camareUri = (Uri) bundle.get(MediaStore.EXTRA_OUTPUT);Log.i("Camre", data.getDataString());Bitmap camerabmp = (Bitmap) data.getExtras().get("data");ivIcon.setImageBitmap(camerabmp);break;case REQ_CODE_PICTURE:Uri uri = data.getData();Cursor cursor = getContentResolver().query(uri, null, null,null, null);cursor.moveToFirst();try {srcpath = cursor.getString(1);Log.i("OnActivtyResult","File path :[" + cursor.getColumnCount() + srcpath+ "]");InputStream is = new FileInputStream(cursor.getString(1));Bitmap bmp = ImageLoader.createBitmap(is, 1);ivIcon.setImageBitmap(bmp);} catch (Exception e) {e.printStackTrace();}break;}}super.onActivityResult(requestCode, resultCode, data);}




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.