android studio蓝牙传送mp3文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android studio蓝牙传送mp3文件相关的知识,希望对你有一定的参考价值。

参考技术A android studio蓝牙传送mp3文件如下
1.两部要传送歌曲的手机的蓝牙打开,注意是两部都打开。
2.点击要传送歌曲手机的播放软件,我以华为为例,其他手机大同小异。
3.找到歌曲所在的根目录
4.点击进入并寻找想要传送的歌曲,点击歌曲后面的标识。

如何使用 Mp3agic jar Android studio 从 MP3 文件中获取 ID3 歌词标签?

【中文标题】如何使用 Mp3agic jar Android studio 从 MP3 文件中获取 ID3 歌词标签?【英文标题】:How to get ID3 Lyrics tag from MP3 file using Mp3agic jar Android studio? 【发布时间】:2020-08-28 13:19:47 【问题描述】:

我需要从 mp3 歌曲中获取歌词

Mp3File mp3file = new Mp3File(file);
       
if (mp3file.hasId3v2Tag()) 

   ID3v2 id3v2Tag = mp3file.getId3v2Tag();
   Log.d("Lyrics",id3v2Tag.getLyrics());

上面的代码只有我在使用。但它返回“java.lang.NullPointerException”。请帮我解决这个问题。

完整的崩溃报告

E/AndroidRuntime: 致命异常: main 进程:in.example.mp3tag,PID:10237 java.lang.RuntimeException:无法启动活动 ComponentInfoin.example.mp3tag/in.example.mp3tag.Main2Activity:java.lang.NullPointerException:println 需要消息 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2904) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2986) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1671) 在 android.os.Handler.dispatchMessage(Handler.java:108) 在 android.os.Looper.loop(Looper.java:206) 在 android.app.ActivityThread.main(ActivityThread.java:6784) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:852) 引起:java.lang.NullPointerException: println 需要一条消息 在 android.util.Log.println_native(本机方法) 在 android.util.Log.d(Log.java:320) 在 in.example.mp3tag.Main2Activity.onCreate(Main2Activity.java:200) 在 android.app.Activity.performCreate(Activity.java:6984) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1235) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2857) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2986) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1671) 在 android.os.Handler.dispatchMessage(Handler.java:108) 在 android.os.Looper.loop(Looper.java:206) 在 android.app.ActivityThread.main(ActivityThread.java:6784) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:852)

【问题讨论】:

你能分享你的整个崩溃报告吗?你在哪里得到 NullPointerException? @会感谢你的帮助,如你所问,添加的崩溃报告请查收。 【参考方案1】:

因为id3v2Tag.getLyrics() 返回了null 并且您正在使用Log.d(String tag, String msg),所以您遇到了异常。请参阅有关此方法的文档here。

public static int d (String tag, String msg) ... 字符串:您想要记录的消息。 此值不能为空

如果您想将Log.d 与可能的空对象一起使用,请使用Log.d(String tag, String msg, Throwable tr)。请参阅文档here。

所以id3v2Tag.getLyrics() 返回null。您使用的库提供的文档很少,但我假设 getLyrics() 在没有歌词的情况下返回 null,而不是空字符串。如果您正确测试getLyrics() 的结果,这对于您的其余代码可能不是问题,如下所示:

String lyrics = id3v2Tag.getLyrics();
if (lyrics != null) 
  // Lyrics found, add your code here
 else 
  // No lyrics

【讨论】:

是的,尝试检查空值。但是我使用的mp3里面有歌词。我可以在网上查到。但是这里它返回NULL,我无法理解这个问题。请帮忙 如果您的歌曲有歌词并且getLyrics() 返回null,那么问题可能来自您的歌曲文件,或者如果无法获取歌词则来自库。但至少你知道为什么你的应用程序崩溃了。使用其他文件测试您的应用,或尝试使用其他库。

以上是关于android studio蓝牙传送mp3文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Mp3agic jar Android studio 从 MP3 文件中获取 ID3 歌词标签?

怎么读取Android的蓝牙接收到的数据

在 Kotlin/Android Studio 中无法将 mp3 转换为 pcm - UnsupportedAudioFileException

在 Android 中通过蓝牙接收音频

从 byte[] android 转换后 Mp3 文件不播放

C++:如何在visual studio控制台应用程序中使用windows media player播放和暂停mp3文件?