2012-05-31 5 views
10

내 안드로이드 응용 프로그램에서 카메라를 사용하여 개발하고 있습니다.카메라는 항상 resultCode를 0으로 반환합니다.

문제는 내가 완료 또는 취소를 눌러도 카메라가 항상 결과 코드 0을 반환한다는 것입니다. 내가 사용하는 코드는 다음과 같이

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; 
    } 
} 

로그 캣 보여줍니다 : 코멘트 섹션 당으로

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 카드에 이미지를 저장하는 경우 manifest에 쓰기 권한을 추가 했습니까? –

답변

5

resultCode 0 (결과가 취소 된 의미를) 반환 된 이유입니다 SD 카드에 저장하기 위해 사진을 찍을 때 매니페스트에 WRITE_EXTERNAL_STORAGE 권한을 추가해야합니다.

0

또한 때로는 필요한 하위 폴더를 개인적으로 추가하지 않아서 문제가 발생합니다. 응용 프로그램이 자동으로 결과 코드를 0으로 충돌합니다.

2

문제는 (android> = 5.0에서) singleInstance 모드 일 수 있습니다.

singleInstance으로 설정하면 android < 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까지 :

안드로이드 4.0 스위치를 "launchMode = singleTask"를위한 의 AndroidManifest.xml에서 활동 "RESULT_OK"의 결과로 카메라를 호출 == 1

이 이전 버전과의 호환성과 응용 프로그램에 유용합니다.

+0

안드로이드 4.4.2 근무하지 않았다 – Ujjwal

관련 문제