Android:カメラビュー - 非推奨方法を使用しないとアプリがクラッシュします
-
26-10-2019 - |
質問
私のアプリでは、カメラをセットアップしようとしています。私のクラスはSurfaceViewを拡張し、SurfaceHolder.Callbackメソッドを実装します。
これが私のクラスの一部です:
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は、この方法が非推奨で無視されていると主張しています。ただし、その1行をコメントすると、camera.startpreview()を呼び出すと、アプリケーション全体がクラッシュします。私はこれがなぜなのかを理解しようとしています。それが無視されている場合、それは私がその方法で何をしたかは関係ないはずです。これは、この実装に非常に問題があることを意味します。
Android 2.2ソフトウェアを実行しています。
どんな助けも感謝します。
解決
Android 2.2では、SDK SetTypeメソッドは、すでにそれを使用しているため、非推奨されていません。
したがって、他のシナリオで変更がある可能性があります。
(1)インポートしたパッケージはAndroid.hardware.cameraです。 (2)カメラのマニフェストファイルに追加されたすべてのアクセス許可を確認します。
所属していません StackOverflow