我們使用者可以透過兩個按鈕來實現
1.使用相機拍照
2.從相簿中拿照片
private fun takeImageFromCameraWithIntent() {
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, ACTION_CAMERA_REQUEST_CODE)
}
private fun takeImageFromAlbumWithIntent() {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
startActivityForResult(intent, ACTION_ALBUM_REQUEST_CODE)
}
我們建立兩個 function 分別有兩個 Intent 來決定使用使用者是使用相機或從相簿中拿照片。
我們這裡使用 startActivityForResult 來取得使用者拍的照片或是選取的照片。
特別注意的是 startActivityForResult 有兩個參數,第二個參數可以是任意值。
用來判斷使用者是使用了相機或相簿。
因為我們使用了 startActivityForResult
所以我們必須 override onActivityResult 來獲得回傳的資訊
override fun onActivityResult(requestCode: Int, resultCode:Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(requestCode) {
ACTION_CAMERA_REQUEST_CODE -> {
if (resultCode == Activity.RESULT_OK && data != null) {
displayImage(data.extras.get("data") as Bitmap)
}
}
ACTION_ALBUM_REQUEST_CODE -> {
if (resultCode == Activity.RESULT_OK && data != null) {
val resolver = this.contentResolver
val bitmap = MediaStore.Images.Media.getBitmap(resolver, data?.data)
displayImage(bitmap)
}
}
else -> {
println("on handler onActivityReenter")
}
}
}
我們從這裡就可以看到我們先判斷 RequestCode 來確認使用者是使用了那一個工具
再判斷 resultCode 是否執行完成以及確認是否有資料回傳
做完這些判斷後我們就能夠從 onActivityResult 所回傳的 data 中獲得資料
並把所拿到的資料轉換成 Bitmap 放置到 ImageView 裡
這樣我們就把主要的功能給做出來囉
今天就先到這裡了,我們明天見囉。