프론트 카메라를 열고 미리보기를 보여주는 서비스가 있습니다. 이제 미리보기 이미지에서 일부 이미지 처리를 수행하려고하므로 미리보기 콜백을 설정합니다.서비스중인 카메라 및 onPreviewFrame
내 문제는 콜백이 호출되지 않는다는 것입니다. 악명 높은 Choreographer 메시지에서 "X 프레임 건너 뛰기 ... 주 스레드에서 너무 많은 작업"이 발생합니다. 콜백에서 현재 수행중인 작업이므로 매우 이상하게 보입니다. 로그 라인을 인쇄하고 있습니다. 또한 ADT를 통해 디버깅 할 때 로그 인쇄 라인을 중단하면 호출됩니다. (실행하지 못하게 한 다음 언젠가는 줄을 끊으려고합니다). 태블릿에서 실행할 때 (에뮬레이터를 사용하지 않음) 발생하지만 휴대 전화 (태블릿보다 강력한 Nexus 5)에서 실행할 때 매번 프레임이 건너 뛰지 않고 콜백이 호출됩니다.
내 사용자 정의 SurfaceHolder에 surfaceCreated() : 그것을 얻는 방법에 대한
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.d(TAG, "Error setting camera preview: " + e.getMessage());
}
try {
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera arg1) {
Log.d("Freshub.BackgroundService", "onPreviewFrame Called!!");
}
});
} catch (Throwable e) {
e.printStackTrace();
}
mCamera.startPreview();
}
어떤 제안 내 태블릿에 작동하는?
답변 해 주셔서 감사합니다.하지만 이는 매우 잘못되었습니다. 서비스는 사용자 인터페이스를 제공하지 않지만 레이아웃에 카메라 미리보기를 표시하고 모든 것이 내 휴대폰에서 잘 작동하므로보기를 확실히 유지할 수 있습니다. – Ysch
보기가 표시되지 않으면 시스템에서 카메라의 프레임을 캡처 할 수 없습니다. 활동 컨텍스트 외부보기를 들고 BTW, 확실히 메모리 누수가 발생할 수 있습니다;) –
보기가 표시됩니다 및 내 휴대 전화에 다 잘 작동합니다. 활동 컨텍스트 외부에서 뷰를 보유해도 메모리 누수가 발생하지는 않습니다. 실제로는 아주 일반적인 관행입니다. 예를 들어 페이 스북 메신저를 가져 가십시오 (여기에 보이는 것과 같이 : [http://www.piwai.info/chatheads-basics/] – Ysch