Mac上如何显示本地lrc文件歌词——lrc播放器——《Super LRC Player》

为了解决QQ音乐歌词显示不全和无法使用本地lrc文件的问题,作者利用Angular10和Material框架开发了一款名为《Super LRC Player》的Mac mp3播放器。该软件支持CdkDragDrop文件排序,通过WkWebView减少打包大小,采用定时器处理播放进度,并使用angular的zone解决页面刷新问题。软件具备循环、随机、顺序播放等功能,以及与swift native代码的交互。作者在17小时内完成开发,软件UI简洁,操作友好,已上架Mac App Store并推出新版本《新lrc播放器2》。
摘要由CSDN通过智能技术生成

前不久,用QQ音乐背单词,背了一阵子,很郁闷,因为:1、长的歌词行显示不全;2、歌词自动从网上抓取,不是自己想要的本地lrc文件内容;

于是,有了想法:自己开发一款能够播放本地mp3和lrc的mp3播放器软件——《Super LRC Player》。

于是,拿来了Angular10和Material框架,

通过CdkDragDrop解决了滚动拖动文件来对文件列表排序的问题;

通过Cocoa的WkWebView来减少打包的大小;

通过定时器来解决播放进度显示的问题;

通过angular的zone来强制刷新页面的问题;

通过异步调用实现:angular的UI与swift的native代码的交互。

最终,实现了软件的顺畅播放和lrc字幕的顺畅显示。

本次开发总共经历了5*每晚2小时+在途7小时=17小时,功能单一,开发过程很顺利,最终结果UI、播放也很顺畅。已成为我的第三款上架的Hybird应用。

软件支持循环播放、随机播放、顺序播放;支持上一曲、下一曲功能;支持快速播放和慢速播放;如果添加了lrc文件,则支持上一句歌词、下一句歌词功能;如果添加了lrc文件,支持对指定歌曲的lrc文件选择不同字符集进行歌词显示。

软件界面简单、操作友好,得力于Angular+Material的组件设计。

软件下载地址:

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Android Studio中显示LRC歌词文件,可以按照以下步骤进行操作: 1.在布局文件中添加一个TextView,用于显示歌词。 2.在Java代码中读取LRC文件并将其解析为Map,其中键为时间戳,值为歌词文本。 3.在MediaPlayer的OnPreparedListener中启动一个线程,该线程将定期更新TextView以显示当前播放时间的歌词。 下面是一个简单的示例代码,可以帮助你实现这个功能: ```java // 在布局文件中添加一个TextView,用于显示歌词 TextView lrcTextView = findViewById(R.id.lrcTextView); // 在Java代码中读取LRC文件并将其解析为Map Map<Long, String> lrcMap = new HashMap<>(); try { BufferedReader br = new BufferedReader(new FileReader(lrcFile)); String line; while ((line = br.readLine()) ! null) { Matcher matcher = Pattern.compile("\\[(\\d{2}):(\\d{2})\\.(\\d{2})\\](.*)").matcher(line); if (matcher.find()) { long time = Long.parseLong(matcher.group(1)) * 60 * 1000 + Long.parseLong(matcher.group(2)) * 1000 + Long.parseLong(matcher.group(3)) * 10; String text = matcher.group(4); lrcMap.put(time, text); } } br.close(); } catch (IOException e) { e.printStackTrace(); } // 在MediaPlayer的OnPreparedListener中启动一个线程,该线程将定期更新TextView以显示当前播放时间的歌词 MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { new Thread(new Runnable() { @Override public void run() { while (mediaPlayer.isPlaying()) { long time = mediaPlayer.getCurrentPosition(); if (lrcMap.containsKey(time)) { runOnUiThread(new Runnable() { @Override public void run() { lrcTextView.setText(lrcMap.get(time)); } }); } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } }); // 播放音乐 mediaPlayer.setDataSource(audioFile); mediaPlayer.prepare(); mediaPlayer.start(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值