私はカメラで1つのプロジェクトを行っていますが、1枚の写真を撮った後、カメラがフリーズし、アクティビティを終了してもう一度思い出して別の写真を撮る必要があります。写真を1〜2秒間フリーズしてから、サーフェスビューで再びカメラ。メディアレコーダーを使用しているビデオについても同じです。ビデオプレスストップビデオの保存を取得し、画面はまだ生きていますが、ビデオを再度撮影することはできません。アクティビティを再開する必要がありますか?
誰かが解決策を持っていますか?
バックグラウンドで画像処理を行いますAsyncTask
。これにより、UIアクティビティを続行して、別の写真を撮ることができます。
編集:受け入れられた回答を削除できないので、以下のstoefinの回答を参照してください。次の写真を撮る前にcamera.startPreview()
を呼び出すと、彼に役立ちます。
私はこれに対する解決策を見つけました:写真を撮った後、プレビュー表示は停止します。さらに写真を撮るには、最初にもう一度camera.startPreview()
を呼び出します。
画像をキャプチャした後、プレビューを停止して、もう一度開始する必要があります。
mCamera.stopPreview();
mCamera.startPreview();
それはうまくいくでしょう。
Camera.startpreview();答えは私の場合はうまくいきませんでしたが、以下のコードは私にとってその問題を解決し、それが他の人にも役立つことを願っています.500msで写真がキャプチャされた後、スレッドを使用してカメラの開閉を遅らせました
private void start_camera() {
try {
camera = Camera.open();
// camera.lock();
} catch (RuntimeException e) {
Log.e(tag, "init_camera: " + e);
return;
}
Camera.Parameters param = camera.getParameters();
param = camera.getParameters();
Camera.Size size = param.getSupportedPreviewSizes().get(0);
param.setPreviewSize(size.width, size.height);
camera.setParameters(param);
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewRunning = true;
} catch (Exception e) {
Log.e(tag, "init_camera: " + e);
return;
}}
private void captureImage() {
camera.takePicture(shutterCallback,null,jpegCallback);
Thread restart_preview=new Thread(){public void run(){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
camera.release();
camera=null;
start_camera();
}};
restart_preview.start();}
カメラのプレビューを再開していないため、カメラがフリーズしています。camera.startpreview()
を呼び出して再起動してください。
スマートフォンの既存のカメラアプリで定義されているアクティビティを使用する代わりに、CameraAPIを直接使用して説明する機能を実行する独自のアクティビティを作成できます。 Cameraクラスはここに記載されています: http://developer.Android.com/reference/Android/hardware/Camera.html