2

如果我在 jar 库中有这个方法:

public void playAudioFile()
{
  ClassLoader cLoader = getClass().getClassLoader();
  URL url = cLoader.getResource("audio.mp3"); // in the resource of the jar library
  System.out.println(url.toString());

  MediaPlayer mediaPlayer = new MediaPlayer();
  mediaPlayer.setDataSource(url);
}

编译库后,我有: MySDK.jar

当我将 MySDK.jar 添加到我的 android 应用程序并尝试播放音频文件时:

private void playAudio()
{
   MySDK.Audio audio = new MySDK.Audio();
   audio.playAudioFile();
}

编译android应用程序后,我有:mysampleapp.apk

调试应用程序时,无法播放音频文件,原因是:

System.out.println(url.toString());

给出:

jar:file:/data/app/com.mysampleapp.apk!/audio.mp3

音频的路径应该来自 jar 文件,而不是来自示例应用程序。因此,无法播放音频文件。

我做错了什么,如何将音频文件作为 jar 库中的资源文件播放?

4

5 回答 5

1

我认为在 Android 中使用 .jar 中的方法开始播放 mp3 文件是不可能的。如果您需要保留 .jar 并播放其中的 mp3,我会暂时将 mp3 解压缩到 SD 卡并从那里播放。

于 2013-03-03T10:00:00.270 回答
0

您好在您的 playAudioFile() 方法中尝试这些代码

    URL defaultSound = getClass().getResource("/folder/folder/audio.wav");
    File soundFile = new File(defaultSound.toURI());
    System.out.println("defaultSound " + defaultSound);  // check the URL!
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(defaultSound);
    Clip clip = AudioSystem.getClip();
    clip.open(audioInputStream);
    clip.start( );
于 2013-03-02T12:17:45.180 回答
0

我只看到两个解决方案:

  • jar 文件必须包含 mp3。
  • 添加基本​​ url 作为参数。
于 2013-02-25T22:33:16.680 回答
0

我怀疑这个问题与 SO 上的另一个问题非常相似(但我不知道如何标记它)。我提供给那个的答案是:将字符串转换为资源 Uri 以进行 mp3 播放

本质上,您需要正确获取 URI,如上面的链接所述。

于 2013-03-02T14:08:17.933 回答
0

Dalvik 不知道你的库,它只知道你的应用程序。我认为您可以解决此问题的一种方法是将特定于应用程序的资源作为参数传递给 playAudioFile() 方法(或者,您可以初始化其类的属性)。这样,您可以将文件复制到属于您的应用程序的正确目录,并且仍然可以为您的类重用。

于 2013-02-25T22:40:37.607 回答