0
  • 调用相机本来就是一个兼容性的坑,系统的api,在不同版本,不同的手机,存在很大问题的

    建议使用第三方框架,因为处理了你用系统api可能遇到的问题。

    明白了吧。

    这,就是一个大坑!不要太理想的认为几行代码就能完成这个功能!

    实际开发过程中,当然使用兼容性最好的lib。因为lib已经可能发布到市面上面,经历过众多用户的体验,如果有问题会不断修复。然后组合成一个star很多的lib。

    你用lib。就找star很多的。但是,多也有问题。因为,这本身就是个大坑!!!!!!!!

    1139423796017500160  评论     打赏       断点-含光君
    • /**调用相机*/
      private fun openCamera() {
          val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
          //判断是否有相机
          if (captureIntent.resolveActivity(packageManager)!= null){
              photoUri = creatImageUri()
              mCameraUrl = photoUri
              if (photoUri != null){
                  captureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri)
                  captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
                  startActivityForResult(captureIntent,PERMISSION_CAMERA_REQUEST_CODE)
              }
          }
      }
      /**创建图片地址uri,用于保存拍照后的照片*/
      private fun creatImageUri(): Uri? {
          val status = Environment.getExternalStorageState()
          //判断是否有SD卡,优先使用SD卡存储,当没有SD卡时使用手机储存
          if (status.equals(Environment.MEDIA_MOUNTED)){
              return contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                  ContentValues()
              )
          }else{
              return contentResolver.insert(
                  MediaStore.Images.Media.INTERNAL_CONTENT_URI,
                  ContentValues()
              )
          }
      }
      
      /**接收拍照结果和显示图片 从Uri获取图片 */
      override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
          super.onActivityResult(requestCode, resultCode, data)
          if (requestCode == PERMISSION_CAMERA_REQUEST_CODE){
              if (resultCode == RESULT_OK){
                  //iv_photo.setImageURI(mCameraUrl)
                  bitmap = MediaStore.Images.Media.getBitmap(contentResolver,mCameraUrl)
                  imageUriList.add(mCameraUrl!!)
                  attachmentAdapter!!.notifyDataSetChanged()
              }
          }
          else if (requestCode == 200 && data != null){
              Thread(Runnable {
                  runOnUiThread {
                      val imageNames = data.clipData
                      if (imageNames != null){
                          for (i in 0..imageNames.itemCount - 1){
                              val uri = imageNames.getItemAt(i).uri
                              imageUriList.add(uri)
                              attachmentAdapter!!.notifyDataSetChanged()
                          }
                      }else{
                          imageUriList.add(data.data!!)
                          attachmentAdapter!!.notifyDataSetChanged()
                      }
                  }
              }).start()
          }
      }
      

      这是我用kotlin写的

      1248043264225841152  评论     打赏       JERRY·轩
      • 可以自己按照api调用系统相机:https://www.jianshu.com/p/8eef50c360e9

        也可以用知乎的Matisse框架:https://github.com/zhihu/Matisse

        这两种方式都能调用系统相机

        1231473582161268736  评论     打赏       感同身受
        相关问题
        _empty · Android
        2019-10-20 23:51 628 2
        application · Android
        2019-11-05 00:26 779 2
        三流废物 · android / 小白
        2019-11-22 00:35 1067 5
        豪豪好嘛 · Android / GPS
        2019-11-26 20:15 884 5
        Jian · android
        2019-11-28 01:51 615 2
        2019-12-01 01:01 705 2
        小陈学编程 · Android
        2019-12-01 19:08 633 2
        fkinggod · Android
        2019-12-08 09:19 661 5
        fkinggod · Android
        2019-12-08 20:47 610 2
        kissmyass · Android
        2019-12-09 07:08 537 2
        独一无二的名zi · Android
        2019-12-30 06:48 415 2