呼叫系統相機,並實現連續拍照功能。
阿新 • • 發佈:2018-12-18
private void intoPhotos() { File mediaStorageDir = new File(FileUtil.getPathRoot()+"/ietmDatas","customPicture"); if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { return; } } String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String path1 = mediaStorageDir.getPath(); String path2 = path1+"/"+timeStamp+".png"; sdcardTempFile = new File(path2); Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); Uri u = Uri.fromFile(sdcardTempFile); intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); intent.putExtra(MediaStore.EXTRA_OUTPUT, u); intent.putExtra("return-data", true); startActivityForResult(intent, xiangji); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { System.out.println("requestCode" + requestCode); switch (requestCode) { case 3: try { Uri xiangji_uri = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(activity.getContentResolver(), sdcardTempFile.getAbsolutePath(), null, null)); String path = xiangji_uri.getPath(); FileInputStream inputStream = new FileInputStream(path); BitmapFactory.Options options = new BitmapFactory.Options(); options.inTempStorage = new byte[100 * 1024]; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable = true; options.inSampleSize = 4; options.inInputShareable = true; Bitmap bmp = BitmapFactory.decodeStream(inputStream,null,options); // Bitmap bmp = BitmapFactory.decodeStream(xiangji_cr.openInputStream(xiangji_uri)); mlist.add(bmp); if (null != mlist && mlist.size()>0){ //繼續拍照的功能 intoPhotos(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } }
首先是呼叫系統的相機功能,其中因為系統自帶相機拍出來的照片的比較高幀,所以記憶體消耗比較大,我們需要在拍照的時候,對圖片進行壓縮處理即可避免,詳細程式碼至上,如有bu ming bai