Create AudioTag.kt
This commit is contained in:
44
audio_tag/AudioTag.kt
Normal file
44
audio_tag/AudioTag.kt
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package love.qz.music.controller.storage
|
||||||
|
|
||||||
|
import android.os.ParcelFileDescriptor
|
||||||
|
import love.qz.music.controller.sign.DecryptUtil
|
||||||
|
import love.qz.music.models.music.MediaTagInfo
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
object AudioTag {
|
||||||
|
init {
|
||||||
|
System.loadLibrary("lib.so")
|
||||||
|
}
|
||||||
|
private external fun writeMediaTags(
|
||||||
|
fd: Int,
|
||||||
|
title: String?,
|
||||||
|
artist: String?,
|
||||||
|
album: String?,
|
||||||
|
lyric: String?,
|
||||||
|
pic: ByteArray?
|
||||||
|
): Boolean
|
||||||
|
private external fun readMediaTags(fd: Int): Array<Any?>?
|
||||||
|
fun read(path: String): MediaTagInfo? {
|
||||||
|
val file = File(path)
|
||||||
|
val pfd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE)
|
||||||
|
pfd.use { descriptor ->
|
||||||
|
var rawArray = readMediaTags(descriptor.fd)
|
||||||
|
if (rawArray == null || rawArray.size < 5) {
|
||||||
|
rawArray = arrayOf("未知歌曲", "未知歌手", "未知专辑", "", null)
|
||||||
|
}
|
||||||
|
|
||||||
|
val name = rawArray[0] as? String ?: "未知歌曲"
|
||||||
|
val artist = rawArray[1] as? String ?: "未知歌手"
|
||||||
|
val album = rawArray[2] as? String ?: "未知专辑"
|
||||||
|
val lyric = rawArray[3] as? String ?: ""
|
||||||
|
val picData = rawArray[4] as? ByteArray
|
||||||
|
return MediaTagInfo(
|
||||||
|
name = name,
|
||||||
|
artist = artist,
|
||||||
|
album = album,
|
||||||
|
lyric = lyric,
|
||||||
|
picData = picData
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user