zhangliangming / HPLyrics

Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果,支持lrc歌词、ksc歌词、krc歌词、trc歌词、网易云API歌词和hrc歌词等歌词格式的显示,支持动感歌词制作。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

无法加载我本地的krc歌词文件

liuhaifang opened this issue · comments

我把demo下载下来后,把hplyricslibrary模块导入项目,加载raw下面的歌词文件正常,加载文件夹里面的给出文件报错:

代码如下:
protected String doInBackground(String... strings) {
if(StringUtil.isEmpty(banzou.krcFilePath)){
return null;
}
File krcFile=new File(banzou.krcFilePath);
if(krcFile==null || !krcFile.exists())
return null;
InputStream inputStream;
try {
// inputStream = getResources().openRawResource(R.raw.aa);
// inputStream = new FileInputStream(krcFile);
//延迟看一下加载效果
Thread.sleep(500);

                LyricsReader lyricsReader = new LyricsReader();

// byte[] data = new byte[inputStream.available()];
// inputStream.read(data);
// lyricsReader.loadLrc(data, null, krcFile.getName());

                lyricsReader.loadLrc(krcFile);
                mManyLyricsView.setLyricsReader(lyricsReader);
                //
                if (mMediaPlayer != null && mMediaPlayer.isPlaying() && mManyLyricsView.getLrcStatus() == ManyLyricsView.LRCSTATUS_LRC && mManyLyricsView.getLrcPlayerStatus() != ManyLyricsView.LRCPLAYERSTATUS_PLAY) {
                    mManyLyricsView.play(mMediaPlayer.getCurrentPosition());
                }

// inputStream.close();
} catch (Exception e) {

                mManyLyricsView.setLrcStatus(ManyLyricsView.LRCSTATUS_ERROR);

// Log.e(TAG, e.toString());
e.printStackTrace();
}
inputStream = null;
return null;
}
}.execute("");

java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:366)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.AssertionError: java.util.zip.ZipException: incorrect header check
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:69)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 4 more
Caused by: java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
... 11 more
java.lang.AssertionError: java.util.zip.ZipException: incorrect header check
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:69)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
... 11 more
java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)

@liuhaifang
1.麻烦用酷狗音乐播放器看看能不能打开你调用的krc文件
2.如果1可以,麻烦提供一下你调用的krc文件

@zhangliangming 好的, 谢谢楼主,我用你的demo的krc歌词文件放到我手机文件存储里面,是可以读取正常显示,我自己的歌词文件在手机存储里面是读取报上面那个错误,但是我自己的歌词文件放到项目的raw目录下又可以正常打开播放的,以下是我的krc歌词文件

@zhangliangming 有没有一个加载歌词的方法,这个方法只有一个参数,就是普通的utf-8的字符串,这个字符串是我自己解析出来的。因为歌词文件太多了,有些网站的歌词文件加载会报错 。如果有个一个方法可以直接加载字符串,那么歌词文件解析可以由第三方来做,比如直接调用这个链接,得到歌词的文本字符串。
https://v1.itooi.cn/netease/lrc?id=37239038

比如这个在qq音乐里面下载的歌词,加载会直接闪退
陈奕迅 - K歌之王 (粤语).lrc.zip

@liuhaifang 我看了一下歌词的内容,你歌词内容,没有换行符。这个应该是报错的原因。
1.如果加载链接读取歌词的文本,这样子耦合性太强了,各个链接返回的数据也不一样。
2.最新代码,目前只有网易云歌词是支持传歌词内容进去,然后解析的。

@liuhaifang 你k歌之王的歌词是编码是gbk的,需要针对选择lrc歌词格式,使用gbk编码的构造方法来解析才行。目前我的歌词都是默认用utf-8格式的。

好的,明白了,谢谢