@Override
public void run()
{
- final boolean toast = loadCameraSettingsSequential(idHeader);
+ //final boolean toast = loadCameraSettingsSequential(idHeader);
+ final boolean toast = loadCameraSettingsOnlyDifferences(idHeader);
busyDialog.dismiss();
parent.runOnUiThread(new Runnable()
}
return (ret);
}
+
+
+ /**
+ * カメラのプロパティを1つづつ個別設定(違っているものだけ設定する)
+ *
+ */
+ private boolean loadCameraSettingsOnlyDifferences(String idHeader)
+ {
+ boolean ret = false;
+ int setCount = 0;
+
+ // Restores my settings.
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(parent);
+ if (cameraConnection.getConnectionStatus() == IOlyCameraConnection.CameraConnectionStatus.CONNECTED)
+ {
+
+ // 現在の設定値を全部とってくる
+ Map<String, String> propertyValues = null;
+ try
+ {
+ propertyValues = propertyProvider.getCameraPropertyValues(propertyProvider.getCameraPropertyNames());
+ }
+ catch (Exception e)
+ {
+ // 設定値が取得できなかった場合は、終了する。
+ e.printStackTrace();
+ return (false);
+ }
+ if (propertyValues == null)
+ {
+ // プロパティの取得が失敗していたら、何もせずに折り返す
+ return (false);
+ }
+
+ String takeModeValue = preferences.getString(idHeader + IOlyCameraProperty.TAKE_MODE, null);
+ try
+ {
+ // TAKEMODE だけは先行して設定する(設定できないカメラプロパティもあるので...)
+ if (takeModeValue != null)
+ {
+ propertyProvider.setCameraPropertyValue(IOlyCameraProperty.TAKE_MODE, takeModeValue);
+ Log.v(TAG, "loadCameraSettingsOnlyDifferences() TAKEMODE : " + takeModeValue);
+ setCount++;
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ Log.v(TAG, "loadCameraSettings() : loadCameraSettingsOnlyDifferences() fail...");
+ }
+
+ Set<String> names = propertyProvider.getCameraPropertyNames();
+ for (String name : names)
+ {
+ String value = preferences.getString(idHeader + name, null);
+ String currentValue = propertyValues.get(name);
+ if ((value != null)&&(currentValue != null)&&(!value.equals(currentValue)))
+ //if (value != null)
+ {
+ if (propertyProvider.canSetCameraProperty(name))
+ {
+ // Read Onlyのプロパティを除外して登録
+ try
+ {
+ // カメラプロパティを個別登録(全パラメータを一括登録すると何か落ちている
+ Log.v(TAG, "loadCameraSettingsOnlyDifferences(): SET : " + value);
+ propertyProvider.setCameraPropertyValue(name, value);
+ setCount++;
+ //Thread.sleep(5); // 処理落ちしている?かもしれないので必要なら止める
+ ret = true;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ ret = false;
+ }
+ }
+ }
+ }
+ Log.v(TAG, "loadCameraSettingsOnlyDifferences() : END [" + idHeader + "]" + " " + setCount);
+ }
+ return (ret);
+ }
+
}
import android.content.ContentValues;
import android.content.Context;
import android.graphics.Bitmap;
+import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
values.put(MediaStore.Images.Media.DATE_ADDED, now);
values.put(MediaStore.Images.Media.DATE_TAKEN, now);
values.put(MediaStore.Images.Media.DATE_MODIFIED, now);
- //values.put(MediaStore.Images.Media.WIDTH, targetImage.getWidth());
- //values.put(MediaStore.Images.Media.HEIGHT, targetImage.getHeight());
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
+ {
+ values.put(MediaStore.Images.Media.WIDTH, targetImage.getWidth());
+ values.put(MediaStore.Images.Media.HEIGHT, targetImage.getHeight());
+ }
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}
catch (Throwable t)