From 1221c1a6e4234ad3bca593883e9c66c3e2fa259d Mon Sep 17 00:00:00 2001 From: lqtmcstudio <142589016+lqtmcstudio@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:38:40 +0800 Subject: [PATCH] Create AudioTag.kt --- audio_tag/AudioTag.kt | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 audio_tag/AudioTag.kt diff --git a/audio_tag/AudioTag.kt b/audio_tag/AudioTag.kt new file mode 100644 index 0000000..13a8ce8 --- /dev/null +++ b/audio_tag/AudioTag.kt @@ -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? + 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 + ) + } + } +}