Working on adding the cover art of a song in the song view #51

This commit is contained in:
amazing-username
2019-04-10 21:30:26 -04:00
parent 876e75b330
commit ee66850c24
6 changed files with 115 additions and 11 deletions
@@ -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
@@ -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!!) }
}
@@ -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) {
}
@@ -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)
}
@@ -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
}
}
@@ -44,8 +44,8 @@
<android.support.v7.widget.AppCompatImageView
android:id="@+id/trackCover"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="45dp"
android:layout_height="45dp"
card_view:srcCompat="@mipmap/ic_launcher_round" />
<LinearLayout