我正在尝试学习如何使用相机拍照。我指的是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在同一个包中找到类?
答案 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文件进行了适当的更改。
虽然这不是我的问题的答案,但我只是发布它以便它可能对某人有用。