0
아직 실제 장치에서이 작업을 시도했지만 비슷한 결과가 예상됩니다. 어쨌든 짧은 이야기로, 에뮬레이터에서 앱을 실행할 때마다 메모리 부족 예외로 인해 충돌이 발생합니다.내 Android 앱 카메라 미리보기에서 내 AVD의 메모리가 부족한 이유가 무엇인가요?
내 코드는 기본적으로 google의 카메라 미리보기 API 데모와 본질적으로 완벽하게 동일하게 작동합니다.
응용 프로그램에있는 유일한 파일은 (내가/사용을 만든)
package berbst.musicReader;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/*********************************
* Music Reader v.0001
* Still VERY under construction.
* @author Bryan
*
*********************************/
public class MusicReader extends Activity {
private MainScreen main;
@Override
//Begin activity
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
main = new MainScreen(this);
setContentView(main);
}
class MainScreen extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder sHolder;
Camera cam;
MainScreen(Context context) {
super(context);
//Set up SurfaceHolder
sHolder = getHolder();
sHolder.addCallback(this);
sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
// Open the camera and start viewing
cam = Camera.open();
try {
cam.setPreviewDisplay(holder);
} catch (IOException exception) {
cam.release();
cam = null;
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
// Kill all our crap with the surface
cam.stopPreview();
cam.release();
cam = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Modify parameters to match size.
Camera.Parameters params = cam.getParameters();
params.setPreviewSize(w, h);
cam.setParameters(params);
cam.startPreview();
}
}
}
이것이 실제 장치에서도 발생하는 것을 확인할 수 있습니다. – Bryan