身為一個十分業餘的 android 開發者,這種秘技實在太多啦 :~~
這篇只是記錄一下自己實驗的結果,不太確定是不是最正規的作法。
如果你要設計一個功能,是讓使用者可以立刻去拍個照片再拿到相片內容,這時候就要利用 Intent 來作:
... // 將畫面換到 Camera 拍照模式 Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(takeIntent, REQ_TAKE_PICTURE); ... // 當拍完照後,按下 OK 返回原來的 activity @Override protected void onActivityForResult(int requestCode, int resultCode, Intent data) { super.onActivityForResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case REQ_TAKE_PICTURE: Bitmap bitmap = (Bitmap) data.getExtras().getParcelable("data"); .... } } }
這樣作就可以拿到剛拍好,且縮圖過的照片。如果你想要拿到大張的圖片,將上面的程式碼稍作修改一下:
Uri outputFileUri; // 將畫面換到 Camera 拍照模式 Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 產生 tmp file,記得程式要有 android.permission.WRITE_EXTERNAL_STORAGE 的權限 File tmpFile = new File( Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg"); outputFileUri = Uri.fromFile(tmpFile); takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); startActivityForResult(takeIntent, REQ_TAKE_PICTURE); ..... // onActivityForResult case REQ_TAKE_PICTURE: if (data == null) { String filePath = outputFileUri.getPath(); .... }
這個方法要注意的是要找時機將 tmp file 給刪掉 XD
歷史上的今天
- jQuery 學習筆記 (6) -- 操作 DOM 物件 - 2008
- 直接上 WordPress SVN - 2007



真是讚! 網上找半天~ 就你這邊講的最清楚!