Javax. * нельзя импортировать в приложение для Android?
Я пытаюсь импортировать некоторые классы 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
Я просто не могу понять эту проблему. Любая помощь будет потрясающей!
Ответы
Ответ 1
Помните, что при запуске приложения для Android: вы не запускаете/не компилируете его на стандартном JVM/JDK, вы даже не запускаете java-байт-код. Google выбирает язык Java (или, по крайней мере, его подмножество), как язык для разработки Android, но это только язык.
В конце скомпилированный Java-код не является java-байт-кодом, но это байт-код dalvik. (нет файлов .class, но .dex)
Итак, при разработке Android: вы не можете использовать полный API JavaSE: вы ограничены API, поддерживаемым dalvik VM (доступный здесь).
(Обратите внимание, что при просмотре этого API остерегайтесь версии в правом верхнем углу страницы: Добавлен в уровень API X. Он информирует вас об версии Android-API, поддерживающей этот класс или метод)
Ответ 2
Эти классы не включены в библиотеку Android. Вы должны использовать API-интерфейсы конкретных Android-приложений. См.: http://developer.android.com/reference/android/media/package-summary.html
Ответ 3
У меня была та же проблема. Я разрешил его, загрузив источники OpenJDK (например, отсюда: http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/javax/sound) и экспортирует требуемый пакет в файл *.jar включить этот файл в приложение для Android. Это сработало для меня отлично.
Ответ 4
Я работаю над проблемой javax.sound в Android в течение двух дней. Я выбрал простой путь, потому что использование javax.sound означало бы создание файла jar из библиотек, которые мне нужны, и если бы в них содержался код C в JNI, мне пришлось бы переносить это на руку. Или я мог бы взять под руку Linux-дистрибутив и принести то, что мне нужно для конвертации mp3 в wav оттуда в JNI. Вы можете использовать обычные файлы jar в Android. Я использую готовые FTP-библиотеки от сторонних разработчиков для FTP Juju. Мои mp3 были не очень большими. Поэтому я просто преобразовал их в wavs в res/raw. Но вышеупомянутые решения доступны вам.