diff --git a/app/src/main/java/com/example/mear/activities/SongViewActivity.kt b/app/src/main/java/com/example/mear/activities/SongViewActivity.kt
index 970c13d..6b1c848 100644
--- a/app/src/main/java/com/example/mear/activities/SongViewActivity.kt
+++ b/app/src/main/java/com/example/mear/activities/SongViewActivity.kt
@@ -95,7 +95,7 @@ class SongViewActivity : BaseServiceActivity() {
for (track in tracks) {
var trackCover = ByteArray(0)
- val trackItem = TrackItems(track.id, track.title, track.artist, trackCover!!)
+ val trackItem = TrackItems(track.id, track.title, track.artist, track.songPath, trackCover!!)
trackItems.add(trackItem)
}
return trackItems
diff --git a/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt b/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt
index 1c5978c..56d6621 100644
--- a/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt
+++ b/app/src/main/java/com/example/mear/adapters/RecyclerAdapter.kt
@@ -9,6 +9,7 @@ import android.widget.Filterable
import java.lang.Exception
import kotlinx.android.synthetic.main.fragment_song_view.view.*
+import kotlinx.coroutines.GlobalScope
import com.squareup.picasso.Picasso
@@ -16,6 +17,9 @@ import com.example.mear.constants.Filenames
import com.example.mear.inflate
import com.example.mear.models.TrackItems
import com.example.mear.R
+import com.example.mear.util.ConvertByteArray
+import com.example.mear.util.ExtractCover
+import org.jetbrains.anko.imageBitmap
class RecyclerAdapter(val mOnClickListenerI: (TrackItems) -> Unit,
@@ -82,8 +86,8 @@ class RecyclerAdapter(val mOnClickListenerI: (TrackItems) -> Unit,
private var view: View = v
private var trackItem: TrackItems? = null
- private val imgWidth = 90
- private val imgHeight = 90
+ private val imgWidth = 40
+ private val imgHeight = 40
private var mBound = false
fun bindTrackItems(trackItems: TrackItems, clickList: (TrackItems) -> Unit) {
@@ -100,7 +104,16 @@ class RecyclerAdapter(val mOnClickListenerI: (TrackItems) -> Unit,
var trackCoverPath = "${context.filesDir}/${Filenames.TRACK_COVERS}"
trackCoverPath = "${trackCoverPath}${id}.bmp"
- Picasso.get().load(trackCoverPath).into(view.trackCover)
+
+ //val extractArt = ExtractCover(null)
+ //val coverArt = extractArt.retrieveCover(trackItem!!.trackPath)
+
+ //val convertByte = ConvertByteArray(coverArt)
+ //var coverArtBmp = convertByte.convertToBmptScales(imgWidth, imgHeight)
+
+ //view.trackCover.imageBitmap = coverArtBmp
+ // TODO: Implement usage of Picasso
+ //Picasso.get().load(trackCoverPath).into(view.trackCover)
view.setOnClickListener { clickList(trackItem!!) }
}
diff --git a/app/src/main/java/com/example/mear/models/TrackItems.kt b/app/src/main/java/com/example/mear/models/TrackItems.kt
index 73bd01e..474126b 100644
--- a/app/src/main/java/com/example/mear/models/TrackItems.kt
+++ b/app/src/main/java/com/example/mear/models/TrackItems.kt
@@ -1,5 +1,6 @@
package com.example.mear.models
-data class TrackItems(val id: Int, val trackTitle: String, val artistTitle: String, val trackCover: ByteArray) {
+data class TrackItems(val id: Int, val trackTitle: String, val artistTitle: String, val trackPath: String,
+ val trackCover: ByteArray) {
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/mear/util/ConvertByteArray.kt b/app/src/main/java/com/example/mear/util/ConvertByteArray.kt
index 7976e3a..e2c9831 100644
--- a/app/src/main/java/com/example/mear/util/ConvertByteArray.kt
+++ b/app/src/main/java/com/example/mear/util/ConvertByteArray.kt
@@ -3,16 +3,16 @@ package com.example.mear.util
import android.graphics.Bitmap
import android.graphics.BitmapFactory
-class ConvertByteArray(private val byteArray: ByteArray) {
+class ConvertByteArray(private val byteArray: ByteArray?) {
fun convertToBmp(): Bitmap {
val songImage = BitmapFactory
- .decodeByteArray(byteArray, 0, byteArray.size)
+ .decodeByteArray(byteArray, 0, byteArray!!.size)
return songImage
}
fun convertToBmptScales(width: Int, height: Int): Bitmap {
- val b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
+ val b = BitmapFactory.decodeByteArray(byteArray, 0, byteArray!!.size)
return Bitmap.createScaledBitmap(b, width, height, false)
}
diff --git a/app/src/main/java/com/example/mear/util/ExtractCover.kt b/app/src/main/java/com/example/mear/util/ExtractCover.kt
index 3311075..88c0c1d 100644
--- a/app/src/main/java/com/example/mear/util/ExtractCover.kt
+++ b/app/src/main/java/com/example/mear/util/ExtractCover.kt
@@ -2,7 +2,12 @@ package com.example.mear.util
import android.media.MediaMetadataRetriever
-class ExtractCover(private val trackPath: String) {
+import java.io.FileInputStream
+
+import com.example.mear.models.Track
+import java.lang.Exception
+
+class ExtractCover(private val trackPath: String?) {
fun retrieveCover(): ByteArray {
var trackData = MediaMetadataRetriever()
@@ -10,6 +15,57 @@ class ExtractCover(private val trackPath: String) {
return trackData.embeddedPicture
}
+ fun retrieveCover(track: Track): ByteArray? {
+
+ var coverArt: ByteArray? = null
+
+ try {
+ if (!hasCover(track)) {
+ return null
+ }
+
+ val songPath = track.songPath
+
+ val metaData = MediaMetadataRetriever()
+ val fp = FileInputStream(songPath)
+ metaData.setDataSource(fp.fd)
+
+ coverArt = metaData.embeddedPicture
+
+ fp.close()
+ metaData.release()
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ }
+
+ return coverArt
+ }
+ fun retrieveCover(songPath: String): ByteArray? {
+
+ var coverArt: ByteArray? = null
+
+ try {
+ if (!hasCover(songPath)) {
+ return null
+ }
+
+
+ val metaData = MediaMetadataRetriever()
+ val fp = FileInputStream(songPath)
+ metaData.setDataSource(fp.fd)
+
+ coverArt = metaData.embeddedPicture
+
+ fp.close()
+ metaData.release()
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ }
+
+ return coverArt
+ }
fun hasCover(): Boolean {
var trackData = MediaMetadataRetriever()
@@ -19,6 +75,40 @@ class ExtractCover(private val trackPath: String) {
return false
}
+ return true
+ }
+ fun hasCover(track: Track): Boolean {
+ try {
+ val trackData = MediaMetadataRetriever()
+ val songPath = track.songPath
+ val songStream = FileInputStream(songPath)
+ trackData.setDataSource(songStream.fd)
+
+ if (trackData.embeddedPicture == null) {
+ return false
+ }
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ }
+
+ return true
+ }
+ fun hasCover(songPath: String): Boolean {
+ try {
+ val trackData = MediaMetadataRetriever()
+ val songPath = songPath
+ val songStream = FileInputStream(songPath)
+ trackData.setDataSource(songStream.fd)
+
+ if (trackData.embeddedPicture == null) {
+ return false
+ }
+ }
+ catch (ex: Exception) {
+ val exMsg = ex.message
+ }
+
return true
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_song_view.xml b/app/src/main/res/layout/fragment_song_view.xml
index 6853aac..98f363b 100644
--- a/app/src/main/res/layout/fragment_song_view.xml
+++ b/app/src/main/res/layout/fragment_song_view.xml
@@ -44,8 +44,8 @@