画像の撮影間隔が1秒以上の場合は、動作すると言います。たとえば、2秒ごとに写真を撮ると、完璧に機能します。しかし毎秒写真を撮る時々はjava.lang.RuntimeException: takePicture failed
を投げる。この種の行動を引き起こす原因は何でしょうか?ここでAndroidカメラが毎秒写真を撮ることができません
は、私が使用したコードであり、それはにサービスです:
@Override
public void onCreate()
{
super.onCreate();
prefs = getSharedPreferences("general",Context.MODE_PRIVATE);
handler = new Handler();
shotInterval = prefs.getInt(getString(R.string.prefs_int_imageShootingFrequency),1);
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG).show();
} else {
cameraId = findBackFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",Toast.LENGTH_LONG).show();
} else {
camera = Camera.open(cameraId);
}
}
cameraParameters = camera.getParameters();
cameraParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); //set camera to continuously auto-focus
camera.setParameters(cameraParameters);
pictureTaker.run(); // Start looping
}
Runnable pictureTaker = new Runnable() {
@Override
public void run() {
try {
takePicture();
} finally {
// 100% guarantee that this always happens, even if
// your update method throws an exception
handler.postDelayed(pictureTaker, shotInterval*1000);
}
}
};
private void takePicture(){
SurfaceView view = new SurfaceView(this);
try {
camera.setPreviewDisplay(view.getHolder());
camera.startPreview();
camera.takePicture(null, null,new PhotoHandler(getApplicationContext()));
} catch (IOException e) {
e.printStackTrace();
}
}
私はカメラが'' 'takePicture'''を呼び出すときに次の画像を撮る準備ができていません。 1秒間隔はかなり速いようです。 –
私はそれを成功させるプログラム(カメラ2 APIを使用していない)を見てきました。不思議なことは時にはうまくいくことがあり、時にはうまくいかないことです。 – Shard
これらのプログラムは異なるハードウェアで動作している可能性があります。あなたのカメラはちょっと遅くなるかもしれません。 –