2011-02-10 39 views
1

私は正しく質問したかどうかわからないので、この質問を再投稿しています:)私は顔検出を含むアプリで作業しています。カメラは正常に起動します。プレビューフレームコールバック内で、私はフェイスビューオブジェクトをインスタンス化します(このクラスは検出を処理します)。このクラスはビットマップ内の顔しか検出できませんが、コールバックの画像はYuvImageです。私は画像をjpegに圧縮し、そのjpegをビットマップに変換するメソッドを呼び出したので、検出が機能します。NoClassDefFoundError:android.graphics.YuvImage(コンパイルは実行されません)

私が抱えている問題は、私が使用しているYuvImageに関するclassnotfoundexceptionがあると言います。私はyuvimageが含まれているapi8をダウンロードしました。ソースコードにエラーはなく、okをコンパイルします。 ealipseがyuvimageクラスをロードできない理由はありますか?ここにはスニペット、ありがとうございます。

'コード'

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); 

例外トレース:

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のおかげで、私は、フォーラムに新しい、まだ物事をフォーマットするかどうかはわかりません:)私はポストの情報を修正しました – turtleboy

+0

。これはNoClassDefFoundError *ランタイムエラー*であり、ClassNotFoundException *例外ではありません。 –

答えて

2

あなたはSDKの適切なバージョンをターゲットにしていることを確認します。 Eclipseでプロジェクトを右クリックし、[プロパティ]、[Android]の順に選択します。 Api 8をプロジェクトのビルドターゲットとして選択する必要があります。

また、マニフェストXML(これはエラーとは関係ありません)の最小SDK属性を設定する必要があります。

+0

こんにちは、私はちょうどプロパティを選択しました - アンドロイドとAPIのレベルは8であり、ターゲット名は2.2に設定されて何か私は試すことができる? – turtleboy

+0

@turtleboyエミュレータ/デバイスは完全に2.2に準拠していますか?そうではない - (プロジェクト設定に関係なく)このエラーが発生する可能性があります。 –

+0

@pst私はちょうど電話をチェックし、そのファームウェアのバージョンは2.1です。 api7のすべてが電話で動作しますが、YuvImageはapi8以上です。 2.1はapi8を使用できますか? – turtleboy

1

パッケージcom.tecmark.FaceViewがプロジェクトで使用できることを確認してください。次のようなものがあります。
package com.tecmark.FaceViewがこのファイルのコードの先頭に表示されます。

HTH、
スリラム

+0

私は両方のクラスが同じパッケージに入っていますcom.tecmark – turtleboy

関連する問題