調用Camera返回為空白的分析及處理方法,camera處理方法
前言
大家可能遇到了這樣的情況,調用Camera,然後指定自訂的儲存路徑,結果返回的Intent為空白。我們來分析一下原因。
分析
首先看Camera的部分邏輯,在源碼中的Camera.java的doAttach()方法裡面。
// First handle the no crop case -- just return the value. If the// caller specifies a "save uri" then write the data to it's// stream. Otherwise, pass back a scaled down version of the bitmap// directly in the extras.if (mSaveUri != null) { OutputStream outputStream = null; try { outputStream = mContentResolver.openOutputStream(mSaveUri); outputStream.write(data); outputStream.close(); setResult(RESULT_OK); finish(); } catch (IOException ex) { // ignore exception } finally { Util.closeSilently(outputStream); }} else { Bitmap bitmap = createCaptureBitmap(data); setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap)); finish();}
注釋也有明確解釋,假如mSaveUri不為空白,則直接返回RESULT_OK,不會回傳其他任何東西。假如為空白,則會回傳一個bitmap。
再看看我們調用Camera的代碼。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Date date = new Date();String photoDCIM = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM; // 預設相簿的路徑String path = photoDCIM + File.separator + date.getTime() + ".jpg"; intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path )));startActivityForResult(intent, PICTURE_CAMERA);
上面帶指定的儲存路徑path ,就是Camera中的mSaveUri。所以結果就是Camera只會返回RESULT_OK。
結論
我們調用Camera可以有2種方式獲得拍照的圖片:
第1種是指定儲存路徑。
如上面的範例程式碼,將path設定為成員變數,在onActivityResult()中,直接讀取該值即可。
第2種是不指定儲存路徑。
調用方法如下:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);getActivity().startActivityForResult(intent, PICTURE_CAMERA);
onActivityResult中
Bitmap bitmap= data.getParcelableExtra("data");
這樣就能得到拍照的圖片了。
總結
在日常使用過程中,推薦使用指定儲存路徑,這樣可以方便獲得File,然後做其他的操作。
函數傳回值為空白
void fun()
{
}
以上是一個傳回值類型為空白的函數。
所有子函數在被主函數main調用的時候,都是有傳回值的,如果這個傳回型別符為 VOID ,則為空白。 所以說,被調用的函數傳回值為空白是返回的,只不過相對於主函數來說,這個函數的傳回值為空白,對於這個解釋,目前大部分教科書給予的解釋是“可以理解為無傳回值,不傳回值”
void 在這裡的解釋是,使用完這個函數,即可退出,而int fun 意思則是,使用這個函數返回int類型的傳回值,這裡不許可以去糾結這個細節,使用C++時間長了後,自然會慢慢去理解!
excel 第一個if函數傳回值為空白,第二個IF函數調用第一個傳回值錯誤
空大於0,即"">0
你可以把E5=IF(B5=1,"",3) 改為E5=IF(B5=1,0,3)
許學卿[權威專家]