0

カメラを使って写真を撮る方法を学ぼうとしています。このチュートリアルを参照して、MakePhotoActivityクラスを実装しようとしています。携帯電話でアプリを実行すると、アプリは正常に起動します。理想的には、「MakePhoto」ボタンをクリックして画像をキャプチャし、SD カードに保存する必要があります。しかし、「MakePhoto」ボタンをクリックしても、アプリケーションは何もしません。logcatを確認すると、私error -2147483648はそれに参加しました。ここで何が起こっているのか、このエラーを解決するにはどうすればよいですか?

編集:

ログキャットは次のとおりです。

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:

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()関数は何も返していません。しかし、よくわかりません。例外が発生する理由と、それを取り除く方法を教えてください。

編集3:

今、プログラムをもう一度デバッグしようとしています。Class File Editor からメッセージが表示されますSource Not Found. The source attachment does not contain source for ClassLoader.class。ここに詳細を記載できますが、長くなりすぎます。どうやら私のコードはPhotoHandlerclass を見つけることができません。Eclipseに同じパッケージ内のクラスを見つけるにはどうすればよいですか?

4

1 に答える 1

0

そのエラーが発生した理由とその解決方法がよくわかりませんでした。PhotoHandlerまた、実行時にEclipseがクラスを見つけられなかった理由もわかりませんでした。ただし、暗黙的なカメラ アプリケーション インテントを使用するという @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) 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 ファイルに適切な変更を加えました。

ただし、これは私の質問への回答ではありません。誰かに役立つように投稿しているだけです。

于 2013-03-17T04:57:42.550 に答える