【问题标题】:Play an audio file from jar resource with Android使用 Android 从 jar 资源中播放音频文件
【发布时间】:2018-01-22 19:13:21
【问题描述】:

如果我在 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 库中的资源文件播放?

【问题讨论】:

  • 您可能一开始就不应该将音频文件存储在 JAR 文件中。在 SD 卡/数据库上使用一些应用程序存储。

标签: java android android-mediaplayer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我只看到两个解决方案:

    • jar 文件必须包含 mp3。
    • 添加基本 url 作为参数。

    【讨论】:

    • 我更喜欢 jar 包含 mp3,但如果我将 jar 包含在应用程序中,我会遇到问题:jar:file:/data/app/com.mysampleapp.apk!/audio.mp3
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您好,在您的 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( );
      

      【讨论】:

        【解决方案5】:

        我怀疑这个问题与 SO 上的另一个问题非常相似(但我不知道如何标记)。我给那个人的答案是:Convert a string to a resource Uri for mp3 playback

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-04
          相关资源
          最近更新 更多