2012-11-14 4 views
0

Android SDK와 함께 제공되는 API 데모에서 CameraPreview로 작업하고 있습니다. 카메라 미리보기가 실행되는 동안 화면을 껐다가 다시 켜면 카메라 미리보기가 완전히 검은 색입니다. 장치의 카메라 응용 프로그램은 어떻게 든 카메라 미리보기를 복원 할 수 있기 때문에 방법이 있어야합니다.화면이 꺼지면 카메라 미리보기가 완전히 검은 색이됩니다.

시도한 모든 장치가이 동작을 나타내지는 않습니다. 확인할 수는 없지만 OS 버전이 중요하다고 생각됩니다.

답변

1

일시 중지/다시 시작시 카메라를 놓았다가 다시 가져와야합니다. 내 CameraView 위젯의 코드는 다음과 같습니다.

+0

API 데모를 사용하고 있습니다. 이미 onPause 및 onResume에서 카메라를 획득/릴리스합니다. – Karakuri

+1

아무 생각없이. 하지만 내 애플 리케이션을 작성할 때이 문제가 있다는 것을 알고있다. 그리고이 문제를 해결 한 정확한 코드이다. –

0

동일한 문제가있었습니다. 어쩌면, 그것은 최선의 해결책은 아니지만 그것은 나를 위해 작동합니다. onPause() 메서드에서 카메라 동작을 다시 시작합니다.

private boolean isBackPreesed = false; 

@Override 
public void onPause() { 
    if (camera != null) { 
     camera.release(); 
     camera = null; 
    } 

    if (!isBackPreesed) { 
     finish(); 
     Intent restart = new Intent(this, this.getClass()); 
     startActivity(restart); 
    } 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     isBackPreesed = true; 
    }  
    return super.onKeyDown(keyCode, event); 
} 
1

내가 도움이 된 것은 onResume()에서 setContentView()였습니다.

이 될 수 있습니다

protected void onResume() { 
    super.onResume(); 
    setContentView(R.layout.xxx); 
    // ... 
} 

또는

private View cachedContentView; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    cachedContentView = doCreateContentView(getLayoutInflater()); 
    // ... 
} 
protected void onResume() { 
    super.onResume(); 
    setContentView(cachedContentView); 
    // ... 
} 

둘 다 작동

.

0

내 솔루션은 onPause 메서드가 아닌 surfaceDestroyed 메서드에서 카메라를 릴리스하고 surfaceCreated 메서드에서 카메라를 다시 시작합니다. 결과는 양호합니다.

+0

그럼, 얼마나 멀리 대답하고 코멘트가 아니라고 생각하십니까? – Gahan

관련 문제