Advertisement
ReyDahanCerio

Untitled

May 20th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 6.86 KB | None | 0 0
  1. package com.ceriosrey.chattrbox
  2.  
  3. import android.content.Context
  4. import android.content.Intent
  5. import android.graphics.Color
  6. import android.media.MediaPlayer
  7. import android.net.Uri
  8. import android.os.AsyncTask
  9. import android.support.v7.app.AppCompatActivity
  10. import android.os.Bundle
  11. import android.support.v7.widget.GridLayoutManager
  12. import android.support.v7.widget.RecyclerView
  13. import android.util.Log
  14. import android.view.*
  15. import android.widget.Adapter
  16. import com.squareup.picasso.Picasso
  17. import io.realm.Realm
  18. import io.realm.RealmQuery
  19. import io.realm.RealmResults
  20. import kotlinx.android.synthetic.main.activity_people.*
  21. import kotlinx.android.synthetic.main.people_cell_layout.view.*
  22. import java.io.File
  23. import java.io.FileInputStream
  24. import java.io.IOException
  25. import java.net.URI
  26.  
  27. class PeopleActivity : AppCompatActivity(), MediaPlayer.OnCompletionListener, PeopleAdapter.OnCellClickListener, MediaPlayer.OnErrorListener {
  28.  
  29.     var player: MediaPlayer? = null
  30.     var itemList: MutableList<ChattRBoxItems> = ArrayList()
  31.     var result: RealmResults<ChattRItem>? = null
  32.     val category = "People"
  33.  
  34.     override fun onCreate(savedInstanceState: Bundle?) {
  35.         super.onCreate(savedInstanceState)
  36.         setContentView(R.layout.activity_people)
  37.  
  38.         Realm.init(this)
  39.  
  40.         recyclerView_people.layoutManager = GridLayoutManager(this, 3)
  41. //        recyclerView_people.adapter = PeopleAdapter()
  42.         AsyncTask.execute {
  43.             category.let {
  44.                 loadFromRealm(it)
  45.             }
  46.         }
  47.         this.runOnUiThread {
  48.             itemList.let {
  49.                 recyclerView_people.adapter = PeopleAdapter(it, this)
  50.             }
  51.         }
  52.     }
  53.  
  54.     override fun onCreateOptionsMenu(menu: Menu?): Boolean {
  55.         val inflater: MenuInflater = menuInflater
  56.         inflater.inflate(R.menu.people_activity_menu, menu)
  57.         return super.onCreateOptionsMenu(menu)
  58.     }
  59.  
  60.     override fun onOptionsItemSelected(item: MenuItem?): Boolean {
  61.         val intent: Intent?
  62.  
  63.         when (item?.itemId) {
  64.             R.id.essentials_menuItem -> {
  65.                 intent = Intent(this, EssentialsActivity::class.java)
  66.                 startActivity(intent)
  67.             }
  68.             R.id.addItem_menuItem -> {
  69.                 intent = Intent(this, AddItemActivity::class.java)
  70.                 startActivity(intent)
  71.             }
  72.         }
  73.  
  74.  
  75.  
  76.         return super.onOptionsItemSelected(item)
  77.     }
  78.  
  79.     override fun onCompletion(mp: MediaPlayer?) {
  80.  
  81.     }
  82.  
  83.     override fun onError(mp: MediaPlayer?, what: Int, extra: Int): Boolean {
  84.         println(what)
  85.         return true
  86.     }
  87.  
  88.     override fun onCellClick(chattRItem: ChattRBoxItems) {
  89. //        play(chattRItem.itemAudioFileName)
  90.         playAudio(chattRItem.itemAudioFileName)
  91.  
  92.     }
  93.  
  94.     private fun playAudio(audioFileName: String) {
  95.         val path: File = filesDir
  96.  
  97.         val file = File(path.absolutePath + "/" + audioFileName + ".3gp")
  98.         val fileUri = Uri.fromFile(file)
  99.         try {
  100.             player = MediaPlayer.create(this, fileUri )
  101.             player?.start()
  102.             player = null
  103.         } catch (e: IOException) {
  104.             Log.e("Error in player", e.toString())
  105.             return
  106.         }
  107.  
  108.     }
  109.  
  110.  
  111.  
  112. //    private fun play(audioFileName: String) {
  113. //
  114. //
  115. //        player = MediaPlayer()
  116. //        player?.setOnCompletionListener(this)
  117. //        player?.setOnErrorListener(this)
  118. //        try {
  119. //            val path: File = filesDir
  120. //
  121. //            val file = File(path.absolutePath + "/" + audioFileName + ".3gp")
  122. //            if (file.exists()) {
  123. //                file.createNewFile()
  124. //            }
  125. //            val fis = FileInputStream(file)
  126. ////            val fileUri: Uri = Uri.fromFile(file)
  127. ////            /data/user/0/com.ceriosrey.chattrbox/files/5fc33f24-daff-4372-8353-ffd433e039f6_blue bottle_audio
  128. ////        player?.setDataSource(fis.fd)
  129. //            player?.setDataSource(fis.fd)
  130. //        } catch (e: IOException) {
  131. //            Log.d("Player error", "Error in player:", e)
  132. //        }
  133. //        try {
  134. //            player?.prepare()
  135. //        } catch (e: IOException) {
  136. //            Log.d("Player error", "Player Error:", e)
  137. //        }
  138. //        player?.start()
  139. //        player = null
  140. //    }
  141.  
  142.     private fun loadFromRealm(category: String){
  143.         val realm = Realm.getDefaultInstance()
  144.         try {
  145.             val query: RealmQuery<ChattRItem>? = realm.where(ChattRItem::class.java).equalTo("itemCategory", category)
  146.             result = query?.findAll()
  147.             result?.let {
  148.                 for (i in it) {
  149.                     val itemId = i.itemId
  150.                     val itemName = i.itemName
  151.                     val itemCategory = i.itemCategory
  152.                     val itemImageFileName = i.itemImageFileName
  153.                     val itemAudioFileName = i.itemAudioFileName
  154.  
  155.                     val chattRItem = ChattRBoxItems(itemId, itemName, itemCategory, itemImageFileName, itemAudioFileName)
  156.                     itemList.add(chattRItem)
  157.  
  158.                 }
  159.             }
  160.         } finally {
  161.             realm.close()
  162.         }
  163.     }
  164. }
  165.  
  166. class PeopleAdapter(private val itemList: MutableList<ChattRBoxItems>, private val listener: OnCellClickListener): RecyclerView.Adapter<PeopleAdapter.PeopleViewHolder>() {
  167.  
  168.     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PeopleViewHolder {
  169.         val layoutInflater = LayoutInflater.from(parent.context)
  170.         val cellForRow = layoutInflater.inflate(R.layout.people_cell_layout, parent, false)
  171.         return PeopleViewHolder(cellForRow)
  172.     }
  173.  
  174.     override fun getItemCount(): Int {
  175.         return itemList.size
  176.     }
  177.  
  178.     override fun onBindViewHolder(holder: PeopleViewHolder, position: Int) {
  179.         val chattRItem: ChattRBoxItems = itemList.get(position)
  180.         holder.bind(chattRItem)
  181.     }
  182.  
  183.     interface OnCellClickListener {
  184.         fun onCellClick(chattRItem: ChattRBoxItems)
  185.     }
  186.  
  187.     inner class PeopleViewHolder(private val view: View/*, private var chattRItem: ChattRBoxItems? = null*/): RecyclerView.ViewHolder(view) {
  188.  
  189.         fun bind(chattRItem: ChattRBoxItems) {
  190.             itemView.textView_people.text = chattRItem.itemName
  191.  
  192.             //set pass data to onClick interface
  193.             view.setOnClickListener {
  194.                 listener.onCellClick(chattRItem)
  195.             }
  196.  
  197.             //loading image here
  198.             val context = itemView.context
  199.             val path: String = context.filesDir.absolutePath
  200.             val file = File(path, chattRItem.itemImageFileName )
  201.             Picasso.get().load(file).into(itemView.imageView_people)
  202.         }
  203.  
  204. //        init {
  205. //            view.setOnClickListener {
  206. //                chattRItem?.let {
  207. //                    listener.onCellClick(it)
  208. //                }
  209. //            }
  210. //        }
  211.     }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement