【今更だけどandroid.hardware.Cameraを使う】Camera.Parametersの設定値 GPS

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

android.hardware.Cameraを使うことで、Android端末にあるカメラデバイスにアクセスして使うことができます。
android.hardware.Cameraは、現在では非推奨となっていますがOpenCV等ではまだまだ使われています。

Android端末に実装されているカメラデバイスは固有の性能があります。
そのため、ある端末では出来るのに別の端末では出来ないということが多々あります。
今回はCamera.ParametersのGPSに関連する設定値を説明します。
下記の実装はすべて前回までに作ったクラスを修正しています。

GPS

カメラデバイスが作成するJPEGファイルのEXIF情報にGPS関連の各種値を設定することができます。
Camera.Parameters内にあるアンチバンディングに関連するデータのキーは下記のとおりです。
gps-timestampカメラデバイスに現在設定されているGPS時間のキーです。
gps-processing-methodカメラデバイスに現在設定されているGPS-processing-methodのキーです。
gps-latitudeカメラデバイスに現在設定されている緯度のキーです。
gps-longitudeカメラデバイスに現在設定されている経度のキーです。
gps-altitudeカメラデバイスに現在設定されている高度のキーです。

カメラデバイスにGPSを設定する

カメラデバイスには下記のメソッドを使い対応するGPS関連値を設定することができます。
GPS時間を設定するにはvoid setGpsTimestamp(long timestamp)を使います。
GPS-processing-methodを設定するにはvoid setGpsProcessingMethod(String processing_method)を使います。
緯度を設定するにはvoid setGpsLatitude(double latitude)を使います。
経度を設定するにはvoid setGpsLongitude(double longitude)を使います。
高度を設定するにはvoid setGpsAltitude(double altitude)を使います。
上記の値を削除するにはvoid removeGpsData()を使います。

下記は適当な値を設定していますが、本来はGPSを取得して設定する必要があります。

    private void updateCameraParameters() {
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.removeGpsData();
        parameters.setGpsTimestamp(System.currentTimeMillis());
        parameters.setGpsAltitude(100);
        parameters.setGpsLatitude(100);
        parameters.setGpsLongitude(100);
        parameters.setGpsProcessingMethod("GpsProcessingMethod");
        mCamera.setParameters(parameters);
    }