32

我正在尝试javax.*在我的 android 应用程序中导入一些类,但我在 Android Studio 中不断收到编译器错误。我正在使用 Ubuntu Linux 13.04。

这是我的进口:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
// Here are the imports I am having trouble with:
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.SourceDataLine;

当我尝试运行应用程序甚至编译活动 java 文件时,我收到以下错误:

Gradle: error: package javax.sound.sampled does not exist
Gradle: error: package javax.sound.sampled does not exist
Gradle: error: package javax.sound.sampled does not exist

我就是想不通这个问题。任何帮助都是极好的!

4

5 回答 5

40

请注意,当您运行 Android 应用程序时:您不会在标准 JVM/JDK 上运行/编译它,甚至不会执行 java 字节码。Google 选择 java 语言(或至少它的一个子集)作为 Android 开发的语言,但它只是语言。

最后编译的java代码不是java字节码,而是dalvik字节码。(没有 .class 文件,但 .dex 文件)

因此,在进行 Android 开发时:您不能使用完整的 JavaSE API:您仅限于 dalvik VM 支持的 API(可在此处获得)。

(请注意,当您浏览此 API 时,请注意页面右上角的版本:在 API 级别 X 中添加。它会通知您支持该类或方法的 Android-API 版本)

于 2013-05-29T10:43:34.577 回答
8

这些类不包含在 Android 库中。您必须使用 Android 特定的声音 API。请参阅:http: //developer.android.com/reference/android/media/package-summary.html

于 2013-05-28T23:55:36.683 回答
5

我有同样的问题。我已经通过下载 OpenJDK 的源代码解决了这个问题(例如,从这里:http ://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/javax/sound )和将所需的包导出到 *.jar 文件中以将该文件包含到 android 应用程序中。它对我来说很好。

于 2015-01-28T16:15:30.157 回答
1

如果您从 Red Hat Developer Program(免费会员)下载 OpenJDK,您可以找到整个 OpenJDK 的 .java 源文件,包括 javax.sound.sampled。我能够使用 OpenJDK8 调试我的 Android 应用程序。

请注意,并非所有 OpenJDK8 功能都在 Android 中可用,因此仅包含您需要的类。有关更多信息,请参阅https://developer.android.com/studio/write/java8-support.html

于 2018-03-08T01:12:06.867 回答
-3

我已经在 Android 中处理 javax.sound 问题两天了。我采取了简单的方法,因为使用 javax.sound 意味着创建一个我需要的库的 jar 文件,如果它们下面的 JNI 中有 C 代码,我将不得不将它移植到 arm。或者我可以使用一个 arm Linux dist 并将我需要的 mp3 转换为 wav 转换到 JNI 中。您可以在 Android 中使用常规的 jar 文件。我使用来自第三方的现成 FTP 库用于 FTP Juju。我的 mp3 不是很大。所以我只是将它们转换为 res/raw 中的 wav。但是您可以使用上述解决方案。

于 2013-05-29T17:50:05.143 回答