2012-05-31 17 views
10

私はAndroidアプリケーションでカメラを使用して開発しようとしています。カメラは常にresultCodeを0として返します

問題は、完了またはキャンセルを押してもカメラは常に結果コード0を返します。 I、使用コードスニペットは次のように

protected void startCameraActivity() 
{ 

    Log.i("MakeMachine", "startCameraActivity()"); 

    File file = new File(_path); 
    Uri outputFileUri = Uri.fromFile(file); 

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, 0); 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 

    Log.i("MakeMachine", "resultCode: " + resultCode); 

    switch(resultCode) 
    { 
     case 0: 
      Log.i("MakeMachine", "User cancelled"); 
      break; 

     case -1: 
      Log.i("MakeMachine", "User done"); 
      onPhotoTaken(); 
      break; 
    } 
} 

logcatに示す:コメントセクション1として

05-31 14:58:15.367: E/asset(29114): MAS: getAppPckgAndVerCode package: makemachine.android.examples === version 1 
05-31 14:58:15.398: D/dalvikvm(29114): Trying to load lib lib_glossary.so 0x0 
05-31 14:58:15.414: D/dalvikvm(29114): Added shared lib lib_glossary.so 0x0 
05-31 14:58:26.125: I/MakeMachine(29114): ButtonClickHandler.onClick() 
05-31 14:58:26.125: I/MakeMachine(29114): startCameraActivity() 
05-31 14:58:26.507: W/IInputConnectionWrapper(29114): showStatusIcon on inactive InputConnection 
05-31 14:58:36.375: I/MakeMachine(29114): User cancelled 
05-31 14:58:36.375: I/MakeMachine(29114): resultCode: 0 
05-31 14:58:50.945: I/MakeMachine(29114): ButtonClickHandler.onClick() 
05-31 14:58:50.945: I/MakeMachine(29114): startCameraActivity() 
05-31 14:58:51.429: W/IInputConnectionWrapper(29114): showStatusIcon on inactive InputConnection 
05-31 14:59:01.554: I/MakeMachine(29114): User cancelled 
05-31 14:59:01.554: I/MakeMachine(29114): resultCode: 0 
+0

問題を解決するのに役立つlogs.thatを表示できますか? –

+0

logcatの詳細を含めました... –

+0

イメージをsdカードに保存する場合は、マニフェストに書き込み権限を追加しましたか? –

答えて

5

resultCode 0(結果がキャンセルされたという意味)を返すた理由でありますSDカードに保存する写真を撮るときは、マニフェストにWRITE_EXTERNAL_STORAGE権限を追加する必要があるためです。

0

また、必要なサブフォルダを個人的に追加しないために問題が発生することがあります。アプリケーションは、結果コードを毎回0として静かにクラッシュします。

2

問題は(アンドロイド> = 5.0の場合)singleInstanceモードである可能性があります。

launchModesingleInstanceに設定されている場合は、アンドロイド< 5.0にすぐにキャンセルされます。 android> = 5.0の場合はresultCode == Activity.RESULT_CANCELEDになります。

launchMode = singleTaskをお試しください。 singleInstanceとよく似ていますが、タスクで他のアクティビティを起動することができます。ここ

さらに詳しい情報: https://developer.android.com/guide/topics/manifest/activity-element.html#lmode

2

私はこの同じ問題を経験していました。カメラはlauchmode = singleInstance正しい "RESULT_OK" を返すが、アンドロイド4.0上で、私は戻ってきたと5.0+で動作します0時まで:

のAndroid 4.0が切り替わるまで "launchMode = singleTask" のための のAndroidManifest.xmlで "RESULT_OK" == 1

これは、後方互換性のあるアプリケーションに役立ちます。

+0

はアンドロイド4.4.2のために働かなかった – Ujjwal

関連する問題