![]()
前回はシンプルなAndroidカメラアプリを作成した。今回は前回のカメラアプリをオートフォーカス対応にする。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Test116"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Test116Act"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>
![]()
「オートフォーカス」というと実装が難しいように感じるが、ものすごく簡単にできる。
private Camera.AutoFocusCallback _pfnAutoFocusCallback = new AutoFocusCallback();
private final class AutoFocusCallback implements Camera.AutoFocusCallback
{
public void onAutoFocus(boolean success, Camera camera)
{
Log.d(TAG, "CameraView::onAutoFocus()");
camera.autoFocus(null);
camera.takePicture(_pfnShutterCallback, _pfnRawPictureCallback,new JpgPictureCallback());
};
}
public void TakePicture()
{
Log.d(TAG, "CameraView::takePicture()");
if(_nReady != 0)
{
_nReady = 0;
if(true)
{
//オートフォーカス撮影
_Camera.autoFocus(_pfnAutoFocusCallback);
}
else
{
//即撮影
_Camera.takePicture(_pfnShutterCallback, _pfnRawPictureCallback,new JpgPictureCallback());
}
}
}
![]()
実際に撮影してギャラリーで確認。きちんとピントが合っている。
![]()
これが実際に撮影した画像を縮小したもの。前回のピンぼけ写真とは比べ物にならないぐらいよくなった。
プロジェクトファイルをダウンロード
