私は Android で Camera API を使用しており、Samsung Galaxy や HTC Desire などの複数のプラットフォームでコードを動作させることができました。これまでのところ、断続的な HTC Desire Z でのみ問題が発生しています。
私のコードでは、次の命令を呼び出しています
camera.startPreview();
camera.autoFocus(autoFocusCallback);
ここで、必要な autoFocusCallback クラスを既に作成しています。私が問題を抱えているものを含め、このコードは電話でも機能することをもう一度強調したいので、コードを精査しないでください. :) コールバックが呼び出された後、私のコードは写真の撮影に進みますが、その部分は今のところ関係ありません。
断続的な問題は、特定のランダムな画像 (20 ~ 100 回に 1 回発生) で、コールバックが発生しないことです。私自身の Log.i() で、これが最後に実行されたコマンドであることを確認しました (つまり、コードはコールバックに到達しません)。デバッグは、エラーが報告されていないことも示しています。
安心していただくために、私のコールバックは次のようになります
AutoFocusCallback autoFocusCallback = new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
Log.i("tag","this ran");
...
...
}
};
実行が成功した場合の Logcat の結果は、次のようになります。
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): startPreview X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): autoFocus X
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): runAutoFocus E
07-12 10:17:50.564: DEBUG/QualcommCameraHardware(1223): af start (fd 49)
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): native_set_afmode: ctrlCmd.status == 0
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): af done: 1
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): runAutoFocus X
07-12 10:17:51.184: DEBUG/QualcommCameraHardware(1223): takePicture(479)
でも問題の走りはこんな感じ
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): startPreview X
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): autoFocus E
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): autoFocus X
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): runAutoFocus E
07-12 10:17:52.194: DEBUG/QualcommCameraHardware(1223): af start (fd 49)
そしてハングします。
誰かがこの問題について何か考えを持っているかどうか、または同様のことを経験したことがあるかどうか知りたいですか? 同様の問題を抱えたネット上のスレッドを1つだけ見つけることができました。