Android調用系統攝像頭拍照,并把照片保存到本地,然后顯示在Imageview
img=(ImageView)findViewById(R.id.img); take_picture=(Button)findViewById(R.id.take_picture); take_picture.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { // TODO Auto-generated method stub
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent,Activity.DEFAULT_KEYS_DIALER); } });
} protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);if (resultCode == Activity.RESULT_OK) { String sdStatus = Environment.getExternalStorageState(); if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用 return; } Bundle bundle = data.getExtras(); Bitmap bitmap = (Bitmap) bundle.get("data");// 獲取相機返回的數據,并轉換為Bitmap圖片格式 FileOutputStream b = null; File file = new File("/sdcard/myImage/"); file.mkdirs();// 創建文件夾,名稱為myimage //照片的命名,目標文件夾下,以當前時間數字串為名稱,即可確保每張照片名稱不相同。 String str=null; Date date=null; SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");//獲取當前時間,進一步轉化為字符串 date =new Date(); str=format.format(date); String fileName = "/sdcard/myImage/"+str+".jpg"; try { b = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { b.flush(); b.close(); } catch (IOException e) { e.printStackTrace(); } if (data!= null) { Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data"); System.out.println("fdf================="+data.getDataString()); img.setImageBitmap(cameraBitmap); System.out.println("成功======"+cameraBitmap.getWidth()+cameraBitmap.getHeight()); } } } } }</pre>
本文由用戶 nnkde 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!