web-dev-qa-db-fra.com

javax. * ne peut pas être importé dans mon application Android?

J'essaie d'importer des classes javax.* dans mon application Android, mais je continue à avoir des erreurs de compilateur dans Android Studio . J'utilise Ubuntu Linux 13.04.

Voici mes importations:

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;

Et lorsque j'essaie d'exécuter l'application ou même de compiler le fichier Java d'activité, je reçois les erreurs suivantes:

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

Je ne peux tout simplement pas comprendre ce problème. Toute aide serait géniale!

24
Tux

Sachez que lorsque vous exécutez une application Android: vous ne l'exécutez pas/ne la compilez pas sur une JVM/JDK standard, vous n'exécutez même pas de bytecode Java. Google a choisi le langage Java (ou au moins un sous-ensemble) comme langage permettant de développer Android, mais il ne s'agit que du langage.

À la fin, le code Java compilé n'est pas du bytecode Java, mais du bytecode dalvik. (il n'y a pas de fichiers .class, mais de fichiers .dex)

Ainsi, lors du développement Android: vous ne pouvez pas utiliser la totalité de l'API JavaSE: vous êtes limité à l'API prise en charge par dalvik VM (disponible ici ).

(Notez que lorsque vous parcourez cette API, prenez garde à la version située dans le coin supérieur droit de la page: ajoutée au niveau de l'API X. Elle vous informe que la version de l'API Android prend en charge cette classe ou cette méthode)

34
ben75

Ces classes ne sont pas incluses dans la bibliothèque Android. Vous devez utiliser les API de sons spécifiques à Android. Voir: http://developer.Android.com/reference/Android/media/package-summary.html

6
SimonC

J'ai eu le même problème. Je l'ai résolu en téléchargeant des sources de OpenJDK (par exemple, à partir d'ici: http://hg.openjdk.Java.net/jdk7/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/share/classes/javax/sound ) et en exportant le package requis dans un fichier * .jar pour l'inclure dans l'application Android. Cela a bien fonctionné pour moi.

2
Oleg Korniienko

Si vous téléchargez OpenJDK à partir du programme pour développeurs Red Hat (abonnement gratuit), vous pouvez trouver les fichiers source .Java de l’ensemble de OpenJDK, y compris javax.sound.sampled. J'ai pu déboguer mon application Android à l'aide d'OpenJDK8. 

Veuillez noter que toutes les fonctionnalités d'OpenJDK8 ne sont pas encore disponibles dans Android, alors n'incluez que les classes dont vous avez besoin. Pour plus d'informations, voir https://developer.Android.com/studio/write/Java8-support.html

0
George McKinney