2011-02-10 3 views
1

Je suis reposter cette question parce que je ne suis pas sûr si je l'ai demandé correctement avant. :) Je travaille sur une application qui comprend la détection de visage . la caméra démarre bien. dans le rappel de la frame d'aperçu, j'instancie un objet faceview (cette classe gère la détection). cette classe ne peut détecter les faces que dans un bitmap, mais l'image du callback est un YuvImage. J'ai compressé l'image en jpeg puis appelé une méthode pour convertir ce jpeg en bitmap, de sorte que la détection fonctionne. Le problème que j'ai est que eclipse dit qu'il y a une exception classnotfound concernant le YuvImage que j'utilise. J'ai téléchargé l'api8 dont yuvimage fait partie. il n'y a pas d'erreurs dans le code source et il compile ok. Y at-il une raison pour laquelle ecilipse ne peut pas charger la classe yuvimage? voici un extrait, merci.NoClassDefFoundError: android.graphics.YuvImage (compile mais ne fonctionne pas)

'code'

BitmapFactory.Options bfo = new BitmapFactory.Options(); 
bfo.inPreferredConfig = Bitmap.Config.RGB_565; 
Rect rectangle = new Rect(0, 0, width, height); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(imageData.length); 
try{ 
    img = new YuvImage(imageData,ImageFormat.NV21,width,height,null); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 
img.compressToJpeg(rectangle, 100, bos); 
byte[] array = bos.toByteArray(); 


sourceImage = BitmapFactory.decodeByteArray(array, 0, array.length); 

de trace d'exception:

02-10 11:53:07.298: ERROR/dalvikvm(2364): Could not find class 'android.graphics.YuvImage', referenced from method com.tecmark.FaceView.<init> 
02-10 11:53:07.468: ERROR/AndroidRuntime(2364): Uncaught handler: thread main exiting due to uncaught exception 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364): java.lang.NoClassDefFoundError: android.graphics.YuvImage 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.tecmark.FaceView.<init>(FaceView.java:60) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.tecmark.cameraView$1.onPreviewFrame(cameraView.java:111) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.hardware.Camera$EventHandler.handleMessage(Camera.java:395) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.os.Looper.loop(Looper.java:123) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
02-10 11:53:07.473: ERROR/AndroidRuntime(2364):  at dalvik.system.NativeStart.main(Native Method) 
+0

@kgiannakakis merci, je suis nouveau sur le forum et ne savez pas comment les choses encore :) formater – turtleboy

+0

J'ai fixé les informations après. Il s'agit d'une erreur d'exécution NoClassDefFoundError * * et non d'une exception ClassNotFoundException * *. –

Répondre

2

Assurez-vous que vous ciblez la bonne version du SDK. Dans Eclipse, cliquez avec le bouton droit sur votre projet, sélectionnez Propriétés, puis Android. Api 8 doit être sélectionné comme cible de construction du projet.

Vous devez également définir l'attribut SDK minimum dans le fichier XML du manifeste (cela n'a cependant rien à voir avec l'erreur).

+0

Salut, ouais je viens de vérifier les propriétés-> android et le niveau de l'api est de 8 et le nom de la cible est réglé sur 2.2 y at-il autre chose que je pourrais essayer? – turtleboy

+0

@turtleboy L'émulateur/périphérique est-il entièrement conforme à la norme 2.2? Ne pas l'être - (quels que soient les paramètres du projet) provoquerait probablement cette erreur. –

+0

@pst je viens de vérifier le téléphone et sa version du firmware est 2.1. tout dans api7 fonctionne au téléphone mais YuvImage est à la hausse vers le haut. peut 2.1 utiliser api8? – turtleboy

1

Assurez-vous que le package com.tecmark.FaceView est disponible pour votre projet. Quelque chose comme:
package com.tecmark.FaceView devrait être présent au début de votre code dans ce fichier.

HTH,
Sriram

+0

Oui les deux classes que j'utilise sont dans le même paquet com.tecmark – turtleboy

Questions connexes