2013-03-16 4 views
0

Я пытаюсь научиться фотографировать с помощью камеры. Я имею в виду this tutorial и пытаюсь реализовать класс MakePhotoActivity. Когда я запускаю приложение на своем телефоне, приложение запускается нормально. В идеале, нажатие на кнопку «MakePhoto» должно фиксировать изображение и сохранять его на SD-карте. Однако, когда я нажимаю кнопку «MakePhoto», мое приложение ничего не делает. При проверке логарифма I error -2147483648 в нем. Кто-нибудь может сказать, что здесь происходит и как я могу устранить эту ошибку?Ошибка программы для камеры для Android -2147483648

EDIT:

Вот LogCat:

03-16 13:16:03.608: I/Process(7907): Sending signal. PID: 7907 SIG: 9 
03-16 13:16:11.108: D/TextLayoutCache(8052): Using debug level: 0 - Debug Enabled: 0 
03-16 13:16:11.148: D/libEGL(8052): loaded /system/lib/egl/libGLES_android.so 
03-16 13:16:11.158: D/libEGL(8052): loaded /system/lib/egl/libEGL_adreno200.so 
03-16 13:16:11.158: D/libEGL(8052): loaded /system/lib/egl/libGLESv1_CM_adreno200.so 
03-16 13:16:11.158: D/libEGL(8052): loaded /system/lib/egl/libGLESv2_adreno200.so 
03-16 13:16:11.198: D/OpenGLRenderer(8052): Enabling debug mode 0 
03-16 13:16:28.308: D/MakePhotoActivity(8052): Camera found 
03-16 13:16:28.498: E/Camera(8052): Error -2147483648 

Я также попытался seaching моей SD-карты для любой фотографии, но не мог найти.

Я попытался отладить программу. Вот что я получаю:

03-16 14:23:13.949: W/dalvikvm(11426): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 

Edit 2:

Ok. Я просто распечатав неперехваченное исключение с помощью e.printStackTrace(); Таким образом, LogCat дописывает следующий в журнале:

03-16 14:39:09.589: W/System.err(12863): java.lang.NullPointerException 
03-16 14:39:09.599: W/System.err(12863): at edu.gatech.makephotoactivity.MakePhotoActivity.onClick(MakePhotoActivity.java:43) 
03-16 14:39:09.599: W/System.err(12863): at java.lang.reflect.Method.invokeNative(Native Method) 
03-16 14:39:09.599: W/System.err(12863): at java.lang.reflect.Method.invoke(Method.java:511) 
03-16 14:39:09.599: W/System.err(12863): at android.view.View$1.onClick(View.java:3058) 
03-16 14:39:09.599: W/System.err(12863): at android.view.View.performClick(View.java:3534) 
03-16 14:39:09.599: W/System.err(12863): at android.view.View$PerformClick.run(View.java:14263) 
03-16 14:39:09.599: W/System.err(12863): at android.os.Handler.handleCallback(Handler.java:605) 
03-16 14:39:09.599: W/System.err(12863): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-16 14:39:09.609: W/System.err(12863): at android.os.Looper.loop(Looper.java:137) 
03-16 14:39:09.609: W/System.err(12863): at android.app.ActivityThread.main(ActivityThread.java:4441) 
03-16 14:39:09.609: W/System.err(12863): at java.lang.reflect.Method.invokeNative(Native Method) 
03-16 14:39:09.609: W/System.err(12863): at java.lang.reflect.Method.invoke(Method.java:511) 
03-16 14:39:09.609: W/System.err(12863): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-16 14:39:09.609: W/System.err(12863): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-16 14:39:09.609: W/System.err(12863): at dalvik.system.NativeStart.main(Native Method) 

Таким образом, я получаю NullPointerException. Я предполагаю, что функция getDir() ничего не возвращает. Однако я не уверен. Любые предложения, почему я могу получить исключение и как я могу избавиться от него?

EDIT 3:

Теперь я пытаюсь отлаживать программу еще раз. Я получаю сообщение из редактора файлов классов, говорящее Source Not Found. The source attachment does not contain source for ClassLoader.class. Я могу описать детали здесь, но это будет слишком долго. По-видимому, мой код не может найти класс PhotoHandler. Как получить Eclipse для поиска класса в одном пакете?

ответ

0

Я действительно не понял, почему я получил эту ошибку и как ее решить. Я также не понял, почему eclipse не смог найти класс PhotoHandler во время выполнения. Тем не менее, предложение @ JoxTraex использовать намерение неявного приложения камеры было полезным. Поэтому я снятой отдельную onClick функции и добавил следующий код в моем onCreate метода:

findViewById(R.id.imageButton1).setOnClickListener(new OnClickListener() { 
    public void onClick(View view) {  

     try { 
      Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(i, RET_CODE); 
     }  
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
}); 

Я также добавил следующий mehod к моему MakePhotoActivity классу

защищен недействительный onActivityResult (интермедиат requestCode, внутр ResultCode, Intent data) { super.onActivityResult (requestCode, resultCode, data); if (resultCode! = RESULT_OK) return;

switch(requestCode){ 
    case RET_CODE: 
     Uri u = data.getData();  *//This gives the URI where the image is saved* 
     /* 
     FETCH THE PHOTO USING THE URI AND DO WHATEVER OPERATION YOU WANT WITH THE PHOTO (IN MY CASE SENDING IT OVER THE NETWORK) 
     */ 
     break; 
    default: 
     break; 
    } 

}

и внесли соответствующие изменения в файл XML.

Хотя, это не ответ на мой вопрос, я просто отправляю его, чтобы он мог быть кому-то полезен.

Смежные вопросы