Hallo Android-Gemeinde,
hab gerade angefangen mein erstes Projekt mit dem Android zu starten.
Ich versuch im onPreviewFrame Bilder der Camera zu empfangen und Farbwerte zu erhalten.
Hier mein Problem Code!
public void surfaceCreated( SurfaceHolder myHolder )
{
Log.e(beep, "0 test");
myCamera = Camera.open();
try
{
Log.e(beep, "1 test");
//this.setpreferenceMyCamera();
myCamera.setPreviewDisplay( myHolder ); //Sets the Surface to be used for live preview.
myCamera.setPreviewCallback( new PreviewCallback()
//Installs a callback to be invoked for every preview frame in addition
to displaying them on the screen.
{
/*
* (non-Javadoc)
* @see android.hardware.Camera.PreviewCallback#onPreviewFrame(byte[], android.hardware.Camera)
* onPreviewFrame is called for each frame previewed
*/
public void onPreviewFrame( byte[] data , Camera camera )
{
Log.e(beep, "2 test");
Bitmap bitmap;
BitmapFactory.Options myBitmapFO = new BitmapFactory.Options();
//myBitmapFO.inPreferredConfig();
Log.e(beep, "3 test");
bitmap = BitmapFactory.decodeByteArray( data , 0, data.length, myBitmapFO );
int test = 4;
try
{
Log.e(beep, "4 MMMMMYYYYYY camera open");
test = bitmap.getPixel(50, 59); // this line produce an error
Log.e(beep, "5 test");
}
catch( IllegalArgumentException IAE )
{
Log.e(beep, "6 test");
IAE.printStackTrace();
Log.e(beep, "7 test");
Log.e( beep , "ERROR!!!!!!!!!!!!!!" + IAE.getMessage() );
}
Log.e( beep , String.valueOf( test ) );
//myPictureCallback.onPictureTaken(data, camera);
MyCamera.this.invalidate();
}
});
}
...
}
Alles anzeigen
Wenn ich die Zeile bitmap.getPixel( 0 , 0); auskommentiere läuft es
wunderbar, wenn ich es im Code behalte bekomme ich folgende
Fehlermeldung im logcat
02-21 09:39:36.332: ERROR/Start of my beep log(3622): 4 test
02-21 09:39:36.332: DEBUG/AndroidRuntime(3622): Shutting down VM
02-21 09:39:36.332: WARN/dalvikvm(3622): threadid=1: thread exiting with uncaught exception (group=0x40028a00)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): FATAL EXCEPTION: main
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): java.lang.NullPointerException
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at com.android.tla.MyCamera$1.onPreviewFrame(MyCamera.java:88)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:346)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at android.os.Looper.loop(Looper.java:143)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at android.app.ActivityThread.main(ActivityThread.java:4914)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at java.lang.reflect.Method.invoke(Method.java:521)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
02-21 09:39:36.352: ERROR/AndroidRuntime(3622): at dalvik.system.NativeStart.main(Native Method)
java.lang.NullPointerException <<< ok, versteh ich aber
irgendwie find ich meinen Fehler nicht wo ich einen NullPointerException
gemacht habe.
Könnte es sein das ich noch gar kein Bild empfange??
Wäre jeder Hilfe sehr dankbar.
Danke
Viele Grüße
Mr. U.