2014-01-14 2 views
1

카메라를 사용하는 응용 프로그램을 만들려고합니다. 나는 어떤 반으로 나눕니다.Camera Freeze (Android)

  1. CameraSurface는
  2. ViewElement
  3. MainActivity (뷰를 확장) (서피스 뷰 SurfaceView 연장) 나 매니페스트 활동으로 선언
  4. SecondActivity (ViewElement 확장)

클래스 (ViewElement 확장) 단지 MainActivity 및 SecondActivity. 먼저 응용 프로그램이 실행될 때 MainActivity가 실행되어 CameraSurface가 표시됩니다 (ViewElement의 CameraSurface 클래스 인스턴스가 있으며 ViewElement 클래스의 ContentView에 추가됩니다). MainActivity에는 MainActivity에서 SecondActivity로 이동할 단추가 있습니다. 나는이 코드를 사용합니다 MainActivity와

new Handler().postDelayed(new Runnable() 
    { 
     public void run() 
     { 
     MainActivity.this.startActivity(new Intent(MainActivity.this, SecondActivity.class)); 
     } 
    } 
    , 5000L); 

SecondActivity 같은 응용 프로그램이 SecondActivity 카메라가 동결을 실행할 때, 문제는 (그냥 diffrent 버튼을 가지고 있지만, 여전히 카메라를 사용). 나는 아직도 이것이 일어난 이유를 몰랐다. CameraSurface 클래스에는 Camera instanse가 null이 아닌 경우 릴리즈 카메라에 사용되는 부분이 있습니다. 아무도 내 신청서에 어떤 일이 일어날 지 알고 있습니까? 추가 정보

나 로그 캣에 얻을 :

01-14 16 : 38 : 23.899 : D/memalloc (12581)를/디바이스/pmem : 매핑 해제 버퍼베이스 : 0x506f0000 크기 : 1,843,200 오프셋 : 1,228,800

01-14 16 : 38 : 23.899 : D/memalloc (12581)/디바이스/pmem : 매핑 해제 버퍼베이스 : 0x509b2000 크기 : 614,400 오프셋 : 0

01-14 16 : 38 : 23.899 : D/memalloc (12581) :/dev/pmem : 언 매핑 버퍼베이스 : 0x50ca4000 크기 : 1228800 오프셋 : 614400

,

01-14 16 : 38 : 24.389 : D/memalloc (12581)/디바이스/pmem : 매핑 해제 버퍼베이스 : 0x50dd0000 크기 : 4,829,184 : 오프셋 4,804,608

답변

0

나는 두 이유로 생각할 수 1) 두 활동 모두에서 카메라 표면을 호출하고 두 번째 활동을 시작하기 전에 카메라를 릴리스하십시오. 2) Camera 용 SurfaceView를 사용하고 있기 때문에이 작업은 OpenGL 스레드에서 실행하려고합니다. 시도해보십시오.

runOnUiThread(new Runnable(){ 
    public void run() { 
    //make call to your second activity 
    } 
    } 
+0

아직 답변을 얻지 못했습니다. 그래서, 두 번째 활동을 시작하기 전에 카메라를 놓아야합니다. 즉,이 코드'새로운 핸들러() 전에 의미 postDelayed (새의 Runnable() { 공공 무효 실행() { MainActivity.this.startActivity (새 의도 (MainActivity.this, SecondActivity.class)). } 을 } , 5000L); 코드를 사용하여 secondActivity를 올바르게 호출하도록 코드를 변경 하시겠습니까? –

+0

나는 카메라가 얼어 버릴 이유가 확실하지 않았다. 그 두 가지는 내가 (아마도 당신에게 도움이 될 수있는) 가능성있는 해결책이었습니다. 그리고 runOnUIMThread를 runnable과 함께 사용하여 run() 메소드 내에서 두 번째 활동을 시작하십시오. – ppuskar

+0

제안 사항을 모두 사용하고 2 개의 장치에서 시도하십시오. 첫 번째 장치에도 동일한 문제가 발생합니다. 카메라가 정지됩니다. 두 번째 장치에는 검은 색 배경이 있습니다. –