iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
0

ImagePicker

使用者使用流程

我們使用者可以透過兩個按鈕來實現

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 有兩個參數,第二個參數可以是任意值。

用來判斷使用者是使用了相機或相簿。

startAcitivityForResult

因為我們使用了 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 裡

這樣我們就把主要的功能給做出來囉

今天就先到這裡了,我們明天見囉。


上一篇
Day3_Discount_2 移動 ProgressBar 囉
下一篇
Day5_Android 座標系簡介
系列文
發現新大陸-Android Kotlin 開發之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言