Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. import android.app.Activity
  2. import android.content.Intent
  3. import android.net.Uri
  4. import androidx.appcompat.app.AppCompatActivity
  5. import android.os.Bundle
  6. import android.provider.MediaStore
  7. import android.widget.Toast
  8. import com.google.android.gms.tasks.Task
  9. import com.google.firebase.firestore.FirebaseFirestore
  10. import com.google.firebase.storage.FirebaseStorage
  11. import com.google.firebase.storage.StorageReference
  12. import com.google.firebase.storage.UploadTask
  13. import kotlinx.android.synthetic.main.activity_main.*
  14. import java.io.IOException
  15. import java.util.*
  16. import kotlin.collections.HashMap
  17. import kotlin.coroutines.Continuation
  18.  
  19. class MainActivity : AppCompatActivity() {
  20.  
  21. private val PICK_IMAGE_REQUEST = 71
  22. private var filePath: Uri? = null
  23. private var firebaseStorage: FirebaseStorage? = null
  24. private var storageReference: StorageReference? = null
  25.  
  26. override fun onCreate(savedInstanceState: Bundle?) {
  27. super.onCreate(savedInstanceState)
  28. setContentView(R.layout.activity_main)
  29.  
  30. firebaseStorage = FirebaseStorage.getInstance()
  31. storageReference = FirebaseStorage.getInstance().reference
  32.  
  33. btn_choose_image.setOnClickListener{launchGallery()}
  34. btn_upload_image.setOnClickListener{uploadImage()}
  35. btn_show_image.setOnClickListener {
  36. val i = Intent(this, ShowImageActivity::class.java)
  37. startActivity(i)
  38. }
  39.  
  40. }
  41.  
  42. private fun uploadImage() {
  43. if (filePath != null) {
  44. val ref = storageReference?.child(
  45. "uploads/" + UUID.randomUUID().toString())
  46. val uploadTask = ref?.putFile(filePath!!)
  47. val urlTask = uploadTask?.continueWithTask(
  48. com.google.android.gms.tasks.Continuation<UploadTask.TaskSnapshot, Task<Uri>> {
  49. if (!it.isSuccessful) {
  50. Toast.makeText(this, "Upload Failed", Toast.LENGTH_SHORT).show()
  51. it.exception?.let { throw it }
  52. }
  53. return@Continuation ref.downloadUrl
  54. }) ?.addOnCompleteListener {
  55. if (it.isSuccessful) {
  56. val downloadUri = it.result
  57. Toast.makeText(this, "Upload Success", Toast.LENGTH_SHORT).show()
  58. addUploadRecordToDb(downloadUri.toString())
  59. } else {
  60. Toast.makeText(this, "Upload Failed", Toast.LENGTH_SHORT).show()
  61. }
  62. } ?.addOnFailureListener {
  63.  
  64. }
  65. }
  66. }
  67.  
  68. private fun addUploadRecordToDb(uri: String) {
  69. val db = FirebaseFirestore.getInstance()
  70.  
  71. val data = HashMap<String, Any>()
  72. data["imageUrl"] = uri
  73. db.collection("posts")
  74. .add(data)
  75. .addOnSuccessListener {
  76. Toast.makeText(this,"Upload to DB Success", Toast.LENGTH_SHORT).show()
  77. val i = Intent(this, ShowImageActivity::class.java)
  78. startActivity(i)
  79. }
  80. .addOnFailureListener {
  81. Toast.makeText(this,"Upload to DB Failed", Toast.LENGTH_SHORT).show()
  82. }
  83. }
  84.  
  85. private fun launchGallery() {
  86. val i = Intent()
  87. i.type = "image/*"
  88. i.action = Intent.ACTION_GET_CONTENT
  89. startActivityForResult(Intent.createChooser(i, "Select Picture"), PICK_IMAGE_REQUEST)
  90. }
  91.  
  92. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  93. super.onActivityResult(requestCode, resultCode, data)
  94. if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK) {
  95. if (data == null || data.data == null) {
  96. return
  97. }
  98. filePath = data.data
  99. try {
  100. val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, filePath)
  101. img_preview.setImageBitmap(bitmap)
  102. } catch (e: IOException) {
  103. e.printStackTrace()
  104. }
  105. }
  106. }
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement