Android相机程序错误-2147483648

时间:2013-03-16 17:39:47

标签: android android-camera

我正在尝试学习如何使用相机拍照。我指的是this tutorial并尝试实施MakePhotoActivity类。当我在手机上运行应用程序时,应用程序正常启动。理想情况下,单击“MakePhoto”按钮应捕获图像并将其保存到SD卡。但是,当我点击“MakePhoto”按钮时,我的应用程序没有做任何事情。在检查logcat时,我在其中error -2147483648。任何人都可以告诉我这里发生了什么,我该如何解决这个错误?

编辑:

这是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

我也试过在SD卡上搜索任何图片,但找不到任何图片。

我试图调试程序。这是我得到的:

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

编辑2:

确定。我只是使用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()函数没有返回任何东西。但是,我不确定。任何建议为什么我可能会得到异常,我该如何摆脱它?

编辑3:

现在,我正在尝试再次调试程序。我从类文件编辑器中收到一条消息Source Not Found. The source attachment does not contain source for ClassLoader.class。我可以在这里详细介绍,但这会花太长时间。显然我的代码无法找到PhotoHandler类。如何让Eclipse在同一个包中找到类?

1 个答案:

答案 0 :(得分: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();
      }
  }
});

我还在我的MakePhotoActivity班级

中添加了以下内容

protected void onActivityResult(int requestCode,int resultCode,Intent data){       super.onActivityResult(requestCode,resultCode,data);       if(resultCode!= RESULT_OK)返回;

  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文件进行了适当的更改。

虽然这不是我的问题的答案,但我只是发布它以便它可能对某人有用。