6
在我的應用程序中,我試圖設置相機。我的類擴展了SurfaceView並實現了SurfaceHolder.Callback方法。Android:相機視圖 - 應用程序崩潰時,我不使用已棄用的方法
下面是我的一些類:
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{
private SurfaceHolder mHolder;
private Camera.Parameters cameraParameters;
private Camera camera;
public CameraPreview(Context context) {
super(context);
mHolder = this.getHolder();
mHolder.addCallback(this);
// If this is deprecated, why do I still need it?
// It says deprecated, but app crashes when removed.
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes();
Camera.Size previewSize = previewSizes.get(0);
parameters.setPreviewSize(previewSize.width, previewSize.height);
camera.setParameters(parameters);
try {
camera.stopPreview();
camera.setPreviewDisplay(mHolder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
cameraParameters = camera.getParameters();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
camera = null;
}
}
我的問題涉及到在構造函數中「的setType」的方法。 API宣稱該方法已被棄用並被忽略。但是,如果我註釋掉那一行,當我調用camera.startPreview()時整個應用程序崩潰。我想弄明白爲什麼。如果它被忽略了,那麼我用這種方法做什麼都不重要。這意味着這個實現有一些非常錯誤的地方。
我使用的是Android 2.2軟件。
任何幫助,將不勝感激。
這個問題看起來似乎是它最近被廢棄了,正如在這裏指出的那樣:http://code.google.com/p/android/issues/detail?id=16639這將是有益的,如果參考docs實際上是說當一個方法被棄用而不是僅僅改變它時。 – DeeV 2011-06-17 17:23:26