Android 呼叫相機拍照並顯示,開啟相簿並顯示

2021-09-26 10:23:41 字數 1960 閱讀 5246

設定拍照儲存路徑並將之轉換為uri

啟動相機,並傳遞該uri作為引數

在儲存路徑讀取**並顯示

private void takephoto() 

outputimage.createnewfile();

} catch (ioexception e)

if (build.version.sdk_int >= 24) else

//啟動相機程式

intent intent = new intent("android.media.action.image_capture");

intent.putextra(mediastore.extra_output, imageuri);

startactivityforresult(intent, take_photo);

}

由於在將file轉換成uri過程中需要fileprovider 所以需要在androidmanifest.xml中宣告。

此provider需要繫結乙個xml檔案指定**可訪問的目錄。在res目錄下新建xml目錄並新建file_paths.xml

拍照完成後返回,會呼叫系統的onactivityresult方法,重寫該方法,顯示即可。

@override

protected void onactivityresult(int requestcode, int resultcode, @nullable intent data) catch (filenotfoundexception e)

}break;

case choose_photo:

if (resultcode == result_ok)

break;

default:

break;

}}

獲取執行時許可權,write_external_storage

開啟相簿

獲取選中**的uri並轉換為路徑

顯示

private void getphotofromalbum() , 1);

} else

}

@override

public void onrequestpermissionsresult(int requestcode, @nonnull string permissions, @nonnull int grantresults) else

}}

檢測是否有對應許可權,沒有的話申請許可權,使用者確認或拒絕後,系統自動呼叫onrequestpermissionsresult()方法。

private void openalbum()
使用intent開啟相簿,使用者選擇**後,系統呼叫onactivityresult(),**在上面已貼出。

private void handleimageonkitkat(intent data) 

}else if ("content".equalsignorecase(uri.getscheme())) else if ("file".equalsignorecase(uri.getscheme()))

displayimage(imagespath);

}

處理intent返回的資料,轉化為路徑,然後顯示

private string getimagepath(uri uri, string selection) 

cursor.close();

}return path;

}private void displayimage(string imagespath) else

}

Android呼叫系統前置相機拍照

intent intent new intent mediastore.action image capture intent.putextra camerasensortype 2 呼叫前置攝像頭 測試,發現不正確,並不能直接開啟前置攝像頭,開啟的是上次使用的攝像頭。正確方法是 intent in...

android相機拍照

拍照有兩種方式,一是使用android.hardware.camera,二是使用intent android.media.action.image capture 當然還是第一種好,不過 太複雜,以後有時間再說,這裡就說一下第二種方式吧。try catch exception e 這樣就可以呼叫系統...

Android 調起相機拍照並儲存本地

因為這個需要向系統相機傳送 content uri,並授予 uri 臨時訪問許可權。而進行此授權的最簡單方式是使用 fileprovider類 許可權需要 sd卡讀寫和相機許可權 sd卡讀寫許可權需要動態獲取 android name android.permission.camera androi...