多くの標準的なカメラ アプリに付属しているのと同じように、タップしてフォーカスする機能を使用するカメラ アプリを作成しています。最初にタッチ イベントの (x,y) 座標を取得し、次にこの値を UI に渡します。次に、次のようにフォーカス エリアを設定します。
Rect newRect = new Rect(left,top,right, bottom);
Camera.Parameters params = mCamera.mCameraInstance.getParameters();
Camera.Area focusArea = new Camera.Area(newRect, 1000);
List<Camera.Area> focusAreas = new ArrayList<Camera.Area>();
focusAreas.add(focusArea);
params.setFocusAreas(focusAreas);
ただし、効果はないようです。そこで、いくつかの値を四角形にハードコードしました (このようにして、タッチ イベントから不適切な座標を排除できます)。 docs によると、空間 (-1000, -1000)(左上) から (1000, 1000)(右下) の座標を探しています。
そこで、上の長方形を次の長方形に置き換えました。
//should target a 100x100 square in the center of the screen
Rect newRect = new Rect(-50,-50,50, 50);
それでも、効果はないようです。まず、カメラアプリがそれを正常に使用し、params.getMaxNumFocusAreas() が 1 を返すため、カメラがフォーカス エリアの設定をサポートしていることを知っています。
過去にこれを使って成功した人がいたら教えてください!!
編集:
この API が Android 4.0 デバイス以降では機能しないことも示しているように見えるこの同様の質問を見つけました (4.1.1、Galaxy S3 でテストしています)。それでも、これらのデバイスのカメラ アプリには、タップしてフォーカスする機能がまだ確実に備わっています。私は何が欠けていますか???