import android.app.Activity;
import android.content.SharedPreferences;
+import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.FujiXInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.olympus.IOlympusInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.olympus.wrapper.OlympusInterfaceProvider;
return (olympus);
}
+ @Override
+ public IFujiXInterfaceProvider getFujiXInterfaceProvider()
+ {
+ return (fujiX);
+ }
+
/*
@Override
public IOlympusLiveViewListener getOlympusLiveViewListener()
package net.osdn.gokigen.gr2control.camera;
+import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.olympus.IOlympusInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.playback.IPlaybackControl;
import net.osdn.gokigen.gr2control.liveview.liveviewlistener.ILiveViewListener;
ICameraRunMode getCameraRunMode();
IOlympusInterfaceProvider getOlympusInterfaceProvider();
+ IFujiXInterfaceProvider getFujiXInterfaceProvider();
ICameraConnection.CameraConnectionMethod getCammeraConnectionMethod();
void resetCameraConnectionMethod();
--- /dev/null
+package net.osdn.gokigen.gr2control.camera.fuji_x.cameraproperty;
+
+
+import android.app.Activity;
+import android.util.Log;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandCallback;
+
+class FujiXCameraCommandResponse implements IFujiXCommandCallback
+{
+ private final String TAG = toString();
+ private final Activity activity;
+ private final TextView field;
+
+ FujiXCameraCommandResponse(@NonNull Activity activity, @NonNull TextView field)
+ {
+ this.activity = activity;
+ this.field = field;
+ }
+
+ void clear()
+ {
+ try
+ {
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ field.setText("");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onReceiveProgress(int currentBytes, int totalBytes, byte[] body)
+ {
+ Log.v(TAG, " " + currentBytes + "/" + totalBytes);
+ }
+
+ @Override
+ public boolean isReceiveMulti()
+ {
+ return (false);
+ }
+
+ @Override
+ public void receivedMessage(int id, byte[] rx_body)
+ {
+ //Log.v(TAG, "RECEIVE : " + rx_body.length + " bytes.");
+ String message = "[Receive "+ rx_body.length + " bytes.]\n";
+ message = message + dump_bytes(rx_body);
+ final String messageToShow = message;
+ try
+ {
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ field.setText(messageToShow);
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * デバッグ用:ログにバイト列を出力する
+ *
+ */
+ private String dump_bytes(byte[] data)
+ {
+ int index = 0;
+ StringBuilder message = new StringBuilder();
+ for (byte item : data)
+ {
+ index++;
+ message.append(String.format("%02x ", item));
+ if (index >= 8)
+ {
+ message.append("\n");
+ index = 0;
+ }
+ }
+ message.append("\n");
+ return (message.toString());
+ }
+}
--- /dev/null
+package net.osdn.gokigen.gr2control.camera.fuji_x.cameraproperty;
+
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.collection.SparseArrayCompat;
+import androidx.fragment.app.DialogFragment;
+
+import net.osdn.gokigen.gr2control.R;
+import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.IFujiXCommandPublisher;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.CommandGeneric;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.IFujiXCameraCommands;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages.SetPropertyValue;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXCameraModeChangeToLiveView;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.connection.FujiXCameraModeChangeToPlayback;
+import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.values.IFujiXCameraProperties;
+
+public class FujiXCameraCommandSendDialog extends DialogFragment
+{
+ private final String TAG = toString();
+ private Dialog myDialog = null;
+ private IFujiXCommandPublisher commandPublisher = null;
+ private FujiXCameraCommandResponse responseReceiver = null;
+ private SparseArrayCompat<String> commandNameIndexArray;
+
+ private int selectedCommandIdPosition = 0;
+ private int selectedMessageTypePosition = 0;
+ private int selectedBodyLengthPosition = 0;
+
+ public static FujiXCameraCommandSendDialog newInstance(@NonNull IFujiXInterfaceProvider interfaceProvider)
+ {
+ FujiXCameraCommandSendDialog instance = new FujiXCameraCommandSendDialog();
+ instance.prepare(interfaceProvider);
+
+ // パラメータはBundleにまとめておく
+ Bundle arguments = new Bundle();
+ //arguments.putString("method", method);
+ //arguments.putString("message", message);
+ instance.setArguments(arguments);
+
+ return (instance);
+ }
+
+ private void prepare(@NonNull IFujiXInterfaceProvider interfaceProvider)
+ {
+ this.commandPublisher = interfaceProvider.getCommandPublisher();
+ this.commandNameIndexArray = new SparseArrayCompat<>();
+ }
+
+ @Override
+ public @NonNull Dialog onCreateDialog(Bundle savedInstanceState)
+ {
+ final Activity activity = getActivity();
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity);
+
+ // Get the layout inflater
+ LayoutInflater inflater = activity.getLayoutInflater();
+ final View alertView = inflater.inflate(R.layout.fujix_request_command_layout, null, false);
+ alertDialog.setView(alertView);
+
+ alertDialog.setIcon(R.drawable.ic_linked_camera_black_24dp);
+ alertDialog.setTitle(getString(R.string.dialog_fujix_command_title_command));
+ try
+ {
+ final TextView commandResponse = alertView.findViewById(R.id.command_response_value);
+ final EditText edit_command_id = alertView.findViewById(R.id.edit_command_id);
+ final EditText edit_message_body1 = alertView.findViewById(R.id.edit_message_body1);
+ final EditText edit_message_body2 = alertView.findViewById(R.id.edit_message_body2);
+ final Spinner selection_command_id = alertView.findViewById(R.id.spinner_selection_command_id);
+ final Spinner selection_message_type = alertView.findViewById(R.id.spinner_selection_message_type);
+ final Spinner selection_message_body_length = alertView.findViewById(R.id.spinner_selection_message_body_length);
+ final Button sendButton = alertView.findViewById(R.id.send_message_button);
+ final Button liveViewButton = alertView.findViewById(R.id.change_to_liveview);
+ final Button playbackButton = alertView.findViewById(R.id.change_to_playback);
+
+ responseReceiver = new FujiXCameraCommandResponse(activity, commandResponse);
+
+ initializeCommandSelection(activity, selection_command_id, edit_command_id);
+ initializeMessageTypeSelection(activity, selection_message_type);
+ initializeBodyLengthSelection(activity, selection_message_body_length);
+
+ sendButton.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ try
+ {
+ //Log.v(TAG, "SEND COMMAND");
+ if (responseReceiver != null)
+ {
+ responseReceiver.clear();
+ int id = parseInt(edit_command_id);
+ int value1 = parseInt(edit_message_body1);
+ int value2 = parseInt(edit_message_body2);
+ if (selectedMessageTypePosition == 0)
+ {
+ // single
+ if (selectedBodyLengthPosition == 0)
+ {
+ commandPublisher.enqueueCommand(new CommandGeneric(responseReceiver, id));
+ }
+ else if (selectedBodyLengthPosition == 3)
+ {
+ commandPublisher.enqueueCommand(new CommandGeneric(responseReceiver, id, 8, value1, value2));
+ }
+ else if (selectedBodyLengthPosition == 2)
+ {
+ commandPublisher.enqueueCommand(new CommandGeneric(responseReceiver, id, 4, value1));
+ }
+ else
+ {
+ commandPublisher.enqueueCommand(new CommandGeneric(responseReceiver, id, 2, value1));
+ }
+ }
+ else
+ {
+ // multi
+ if (selectedBodyLengthPosition == 0)
+ {
+ commandPublisher.enqueueCommand(new SetPropertyValue(responseReceiver, id));
+ }
+ else if (selectedBodyLengthPosition == 3)
+ {
+ commandPublisher.enqueueCommand(new SetPropertyValue(responseReceiver, id, 8, value1, value2));
+ }
+ else if (selectedBodyLengthPosition == 2)
+ {
+ commandPublisher.enqueueCommand(new SetPropertyValue(responseReceiver, id, 4, value1));
+ }
+ else
+ {
+ commandPublisher.enqueueCommand(new SetPropertyValue(responseReceiver, id, 2, value1));
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ });
+ if ((responseReceiver != null)&&(commandPublisher != null))
+ {
+ liveViewButton.setOnClickListener(new FujiXCameraModeChangeToLiveView(commandPublisher, responseReceiver));
+ playbackButton.setOnClickListener(new FujiXCameraModeChangeToPlayback(commandPublisher, responseReceiver));
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ alertDialog.setCancelable(true);
+
+ // ボタンを設定する(実行ボタン)
+ alertDialog.setPositiveButton(activity.getString(R.string.dialog_positive_execute),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ //dialog.dismiss();
+ }
+ });
+
+ // ボタンを設定する (キャンセルボタン)
+ alertDialog.setNegativeButton(activity.getString(R.string.dialog_negative_cancel),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // 確認ダイアログを応答する
+ myDialog = alertDialog.create();
+ return (myDialog);
+ }
+
+ @Override
+ public void onPause()
+ {
+ super.onPause();
+ Log.v(TAG, "AlertDialog::onPause()");
+ if (myDialog != null)
+ {
+ myDialog.cancel();
+ }
+ }
+
+ private int parseInt(EditText area)
+ {
+ try
+ {
+ String value = (area.getText().toString()).toLowerCase();
+ int index = value.indexOf("x");
+ if (index > 0)
+ {
+ value = value.substring(index + 1);
+ }
+ if (value.length() < 1)
+ {
+ // 未入力のときには0を返す
+ return (0);
+ }
+ //int convertValue = (int)Long.parseLong(value, 16);
+ //Log.v(TAG, String.format(Locale.US, "PARSED VALUE : 0x%08x (%d)", convertValue, convertValue));
+ //return (convertValue);
+ return ((int)Long.parseLong(value, 16));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ Log.v(TAG, "[" + area.getText().toString() + "]");
+ }
+ return (-1);
+ }
+
+
+ private ArrayAdapter<String> prepareCommandAdapter(@NonNull final Activity activity)
+ {
+ int position = 0;
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
+ commandNameIndexArray.clear();
+
+ // せっせとコマンドを入れていく...
+ adapter.add("(Direct Input)");
+ commandNameIndexArray.append(position++, "");
+
+ adapter.add(IFujiXCameraCommands.SHUTTER_STR + " (" + IFujiXCameraCommands.SHUTTER_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.SHUTTER_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.FOCUS_POINT_STR + " (" + IFujiXCameraCommands.FOCUS_POINT_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.FOCUS_POINT_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.FOCUS_UNLOCK_STR + " (" + IFujiXCameraCommands.FOCUS_UNLOCK_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.FOCUS_UNLOCK_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.SHUTTER_SPEED_STR + " (" + IFujiXCameraCommands.SHUTTER_SPEED_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.SHUTTER_SPEED_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.APERTURE_STR + " (" + IFujiXCameraCommands.APERTURE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.APERTURE_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.EXPREV_STR + " (" + IFujiXCameraCommands.EXPREV_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.EXPREV_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.WHITE_BALANCE_STR + " (" + IFujiXCameraProperties.WHITE_BALANCE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.WHITE_BALANCE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.EXPOSURE_COMPENSATION_STR + " (" + IFujiXCameraProperties.EXPOSURE_COMPENSATION_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.EXPOSURE_COMPENSATION_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.APERTURE_STR + " (" + IFujiXCameraProperties.APERTURE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.APERTURE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.SHUTTER_SPEED_STR + " (" + IFujiXCameraProperties.SHUTTER_SPEED_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.SHUTTER_SPEED_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.SELF_TIMER_STR + " (" + IFujiXCameraProperties.SELF_TIMER_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.SELF_TIMER_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.FILM_SIMULATION_STR + " (" + IFujiXCameraProperties.FILM_SIMULATION_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.FILM_SIMULATION_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.ISO_STR + " (" + IFujiXCameraProperties.ISO_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.ISO_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.MOVIE_ISO_STR + " (" + IFujiXCameraProperties.MOVIE_ISO_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.MOVIE_ISO_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.IMAGE_FORMAT_STR + " (" + IFujiXCameraProperties.IMAGE_FORMAT_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.IMAGE_FORMAT_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.IMAGE_ASPECT_STR + " (" + IFujiXCameraProperties.IMAGE_ASPECT_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.IMAGE_ASPECT_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.FLASH_STR + " (" + IFujiXCameraProperties.FLASH_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.FLASH_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.F_SS_CONTROL_STR + " (" + IFujiXCameraProperties.F_SS_CONTROL_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.F_SS_CONTROL_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.RECMODE_ENABLE_STR + " (" + IFujiXCameraProperties.RECMODE_ENABLE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.RECMODE_ENABLE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.BATTERY_LEVEL_STR + " (" + IFujiXCameraProperties.BATTERY_LEVEL_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.BATTERY_LEVEL_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.BATTERY_LEVEL_2_STR + " (" + IFujiXCameraProperties.BATTERY_LEVEL_2_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.BATTERY_LEVEL_2_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.FOCUS_MODE_STR + " (" + IFujiXCameraProperties.FOCUS_MODE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.FOCUS_MODE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.SHOOTING_MODE_STR + " (" + IFujiXCameraProperties.SHOOTING_MODE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.SHOOTING_MODE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.FOCUS_POINT_STR + " (" + IFujiXCameraProperties.FOCUS_POINT_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.FOCUS_POINT_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.FOCUS_LOCK_STR + " (" + IFujiXCameraProperties.FOCUS_LOCK_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.FOCUS_LOCK_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.SDCARD_REMAIN_SIZE_STR + " (" + IFujiXCameraProperties.SDCARD_REMAIN_SIZE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.SDCARD_REMAIN_SIZE_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.MOVIE_REMAINING_TIME_STR + " (" + IFujiXCameraProperties.MOVIE_REMAINING_TIME_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.MOVIE_REMAINING_TIME_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.DEVICE_ERROR_STR + " (" + IFujiXCameraProperties.DEVICE_ERROR_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.DEVICE_ERROR_STR_ID);
+
+ adapter.add(IFujiXCameraProperties.IMAGE_FILE_COUNT_STR + " (" + IFujiXCameraProperties.IMAGE_FILE_COUNT_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraProperties.IMAGE_FILE_COUNT_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.CAMERA_CAPABILITIES_STR + " (" + IFujiXCameraCommands.CAMERA_CAPABILITIES_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.CAMERA_CAPABILITIES_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.SINGLE_REQUEST_STR + " (" + IFujiXCameraCommands.SINGLE_REQUEST_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.SINGLE_REQUEST_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.STOP_STR + " (" + IFujiXCameraCommands.STOP_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.STOP_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.IMAGE_INFO_STR + " (" + IFujiXCameraCommands.IMAGE_INFO_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.IMAGE_INFO_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.THUMBNAIL_INDEX_STR + " (" + IFujiXCameraCommands.THUMBNAIL_INDEX_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.THUMBNAIL_INDEX_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.FULL_IMAGE_STR + " (" + IFujiXCameraCommands.FULL_IMAGE_STR_ID + ")");
+ commandNameIndexArray.append(position++, IFujiXCameraCommands.FULL_IMAGE_STR_ID);
+
+ adapter.add(IFujiXCameraCommands.LAST_IMAGE_CAMERA_STR + " (" + IFujiXCameraCommands.LAST_IMAGE_CAMERA_STR_ID + ")");
+ commandNameIndexArray.append(position, IFujiXCameraCommands.LAST_IMAGE_CAMERA_STR_ID);
+
+ return (adapter);
+ }
+
+ private void initializeCommandSelection(@NonNull final Activity activity, final Spinner spinner, final EditText commandIdArea)
+ {
+ try
+ {
+ commandIdArea.setText("");
+ ArrayAdapter<String> adapter = prepareCommandAdapter(activity);
+ spinner.setAdapter(adapter);
+ spinner.setSelection(selectedCommandIdPosition);
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
+ {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
+ {
+ Log.v(TAG, "onItemSelected : " + position + " (" + id + ")");
+ try
+ {
+ selectedCommandIdPosition = position;
+ commandIdArea.setText(commandNameIndexArray.get(position, ""));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent)
+ {
+ Log.v(TAG, "onNothingSelected");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void initializeMessageTypeSelection(final Activity activity, final Spinner spinner)
+ {
+ try
+ {
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
+ adapter.add("Command(Single)");
+ adapter.add("Property(Multi)");
+
+ spinner.setAdapter(adapter);
+ spinner.setSelection(selectedMessageTypePosition);
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
+ {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
+ {
+ Log.v(TAG, "onItemSelected : " + position + " (" + id + ")");
+ selectedMessageTypePosition = position;
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent)
+ {
+ Log.v(TAG, "onNothingSelected");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void initializeBodyLengthSelection(final Activity activity, final Spinner spinner)
+ {
+ try
+ {
+ ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
+ adapter.add("0");
+ adapter.add("2");
+ adapter.add("4");
+ adapter.add("8");
+
+ spinner.setAdapter(adapter);
+ spinner.setSelection(selectedBodyLengthPosition);
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
+ {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
+ {
+ Log.v(TAG, "onItemSelected : " + position + " (" + id + ")");
+ selectedBodyLengthPosition = position;
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent)
+ {
+ Log.v(TAG, "onNothingSelected");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
--- /dev/null
+package net.osdn.gokigen.gr2control.camera.fuji_x.cameraproperty;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import net.osdn.gokigen.gr2control.R;
+import net.osdn.gokigen.gr2control.camera.ICameraStatus;
+import net.osdn.gokigen.gr2control.camera.fuji_x.IFujiXInterfaceProvider;
+
+import java.util.List;
+
+public class FujiXCameraStatusDialog extends DialogFragment
+{
+ private final String TAG = toString();
+ private ICameraStatus cameraStatus = null;
+ private Dialog myDialog = null;
+
+ public static FujiXCameraStatusDialog newInstance(@NonNull IFujiXInterfaceProvider interfaceProvider)
+ {
+ FujiXCameraStatusDialog instance = new FujiXCameraStatusDialog();
+ instance.prepare(interfaceProvider);
+
+ // パラメータはBundleにまとめておく
+ Bundle arguments = new Bundle();
+ //arguments.putString("method", method);
+ //arguments.putString("message", message);
+ instance.setArguments(arguments);
+
+ return (instance);
+ }
+
+ private void prepare(@NonNull IFujiXInterfaceProvider interfaceProvider)
+ {
+ this.cameraStatus = interfaceProvider.getCameraStatusListHolder();
+ }
+
+ /**
+ *
+ *
+ */
+ @Override
+ public @NonNull Dialog onCreateDialog(Bundle savedInstanceState)
+ {
+ final Activity activity = getActivity();
+ final AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity);
+
+ // Get the layout inflater
+ LayoutInflater inflater = activity.getLayoutInflater();
+ final View alertView = inflater.inflate(R.layout.dialog_status_show, null, false);
+ alertDialog.setView(alertView);
+
+ alertDialog.setIcon(R.drawable.ic_linked_camera_black_24dp);
+ alertDialog.setTitle(getString(R.string.camera_status_title));
+ final Button updateButton = alertView.findViewById(R.id.status_update_button);
+ final TextView statusTextView = alertView.findViewById(R.id.status_text_view);
+ try
+ {
+ if (updateButton != null)
+ {
+ updateButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v)
+ {
+ try
+ {
+ updateStatus(statusTextView);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+ updateStatus(statusTextView);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ alertDialog.setCancelable(true);
+
+ // ボタンを設定する(実行ボタン)
+ alertDialog.setPositiveButton(activity.getString(R.string.dialog_positive_execute),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ dialog.dismiss();
+ }
+ });
+
+ // ボタンを設定する (キャンセルボタン)
+ alertDialog.setNegativeButton(activity.getString(R.string.dialog_negative_cancel),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+
+ // 確認ダイアログを応答する
+ myDialog = alertDialog.create();
+ return (myDialog);
+ }
+
+ @Override
+ public void onPause()
+ {
+ super.onPause();
+ Log.v(TAG, "AlertDialog::onPause()");
+ if (myDialog != null)
+ {
+ myDialog.cancel();
+ }
+ }
+
+ private void updateStatus(TextView statusTextView)
+ {
+ try
+ {
+ String message = "";
+ if (cameraStatus == null)
+ {
+ Log.v(TAG, "STATUS HOLDER IS NULL..");
+ return;
+ }
+ List<String> statusList = cameraStatus.getStatusList("");
+ for (String statusName : statusList)
+ {
+ if (statusName != null)
+ {
+ message = message.concat(statusName);
+ message = message + " : " + cameraStatus.getStatus(statusName) + "\n";
+ }
+ }
+ if (statusTextView != null)
+ {
+ statusTextView.setText(message);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
import net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.playback.FujiXPlaybackControl;
import net.osdn.gokigen.gr2control.camera.playback.IPlaybackControl;
import net.osdn.gokigen.gr2control.liveview.IAutoFocusFrameDisplay;
-import net.osdn.gokigen.gr2control.liveview.ICameraStatusUpdateNotify;
import net.osdn.gokigen.gr2control.liveview.IIndicatorControl;
import net.osdn.gokigen.gr2control.liveview.liveviewlistener.ILiveViewListener;
case IFujiXFilmSimulation.FILM_SIMULATION_ETERNA:
value = "ETERNA";
break;
+ case IFujiXFilmSimulation.FILM_SIMULATION_CLASSIC_NEGATIVE:
+ value = "CLASSIC NEGATIVE";
+ break;
default:
value = "??? " + current;
break;
List<String> getAvailableItemList(String listKey)
{
- if (listKey == null)
+ if ((listKey == null)||(listKey.isEmpty()))
{
// アイテム名の一覧を応答する
return (getAvailableStatusNameList());
--- /dev/null
+package net.osdn.gokigen.gr2control.camera.fuji_x.wrapper.command.messages;
+
+public interface IFujiXCameraCommands
+{
+/*
+ int STOP = 0x1003;
+ int IMAGE_INFO = 0x1008;
+ int THUMBNAIL_INDEX = 0x100a;
+ int SHUTTER = 0x100e;
+ int SINGLE_REQUEST = 0x1015;
+ int FULL_IMAGE = 0x101b;
+ int LAST_IMAGE_CAMERA = 0x9022;
+ int FOCUS_POINT = 0x9026;
+ int FOCUS_UNLOCK = 0x9027;
+ int CAMERA_CAPABILITIES = 0x902b;
+ int SHUTTER_SPEED = 0x902c;
+ int APERTURE = 0x902d;
+ int EXPREV = 0x902e;
+*/
+
+ String STOP_STR = "STOP";
+ String IMAGE_INFO_STR = "IMAGE_INFO";
+ String THUMBNAIL_INDEX_STR = "THUMBNAIL";
+ String SHUTTER_STR = "SHUTTER";
+ String SINGLE_REQUEST_STR = "SINGLE_REQUEST";
+ String FULL_IMAGE_STR = "FULL_IMAGE";
+ String LAST_IMAGE_CAMERA_STR = "LAST_IMAGE";
+ String FOCUS_POINT_STR = "FOCUS_POINT";
+ String FOCUS_UNLOCK_STR = "FOCUS_UNLOCK";
+ String CAMERA_CAPABILITIES_STR = "CAMERA_CAPABILITIES";
+ String SHUTTER_SPEED_STR = "SHUTTER_SPEED";
+ String APERTURE_STR = "APERTURE";
+ String EXPREV_STR = "EXPREV";
+
+ String STOP_STR_ID = "0x1003";
+ String IMAGE_INFO_STR_ID = "0x1008";
+ String THUMBNAIL_INDEX_STR_ID = "0x100a";
+ String SHUTTER_STR_ID = "0x100e";
+ String SINGLE_REQUEST_STR_ID = "0x1015";
+ String FULL_IMAGE_STR_ID = "0x101b";
+ String LAST_IMAGE_CAMERA_STR_ID = "0x9022";
+ String FOCUS_POINT_STR_ID = "0x9026";
+ String FOCUS_UNLOCK_STR_ID = "0x9027";
+ String CAMERA_CAPABILITIES_STR_ID = "0x902b";
+ String SHUTTER_SPEED_STR_ID = "0x902c";
+ String APERTURE_STR_ID = "0x902d";
+ String EXPREV_STR_ID = "0x902e";
+}
int FILM_SIMULATION_ACROS_R =14;
int FILM_SIMULATION_ACROS_G =15;
int FILM_SIMULATION_ETERNA =16;
- int FILM_SIMULATION_MAX = 17;
+ int FILM_SIMULATION_CLASSIC_NEGATIVE = 17;
+ int FILM_SIMULATION_MAX = 18;
}
package net.osdn.gokigen.gr2control.liveview;
-import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Vibrator;
import android.util.Log;
import net.osdn.gokigen.gr2control.camera.IFocusingControl;
import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
import net.osdn.gokigen.gr2control.camera.IZoomLensControl;
+import net.osdn.gokigen.gr2control.camera.fuji_x.cameraproperty.FujiXCameraCommandSendDialog;
import net.osdn.gokigen.gr2control.preference.IPreferencePropertyAccessor;
import net.osdn.gokigen.gr2control.scene.ConfirmationDialog;
import net.osdn.gokigen.gr2control.scene.IChangeScene;
import androidx.annotation.NonNull;
+import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceManager;
import static android.content.Context.VIBRATOR_SERVICE;
class LiveViewClickTouchListener implements View.OnClickListener, View.OnTouchListener, View.OnKeyListener
{
private final String TAG = toString();
- private final Activity context;
+ private final FragmentActivity context;
private final ILiveImageStatusNotify statusNotify;
private final IStatusViewDrawer statusViewDrawer;
private final IChangeScene changeScene;
private final IFavoriteSettingDialogKicker dialogKicker;
private final IZoomLensControl zoomLensControl;
- LiveViewClickTouchListener(@NonNull Activity context, @NonNull ILiveImageStatusNotify imageStatusNotify, @NonNull IStatusViewDrawer statusView, @NonNull IChangeScene changeScene, @NonNull IInterfaceProvider interfaceProvider, @NonNull IFavoriteSettingDialogKicker dialogKicker)
+ LiveViewClickTouchListener(@NonNull FragmentActivity context, @NonNull ILiveImageStatusNotify imageStatusNotify, @NonNull IStatusViewDrawer statusView, @NonNull IChangeScene changeScene, @NonNull IInterfaceProvider interfaceProvider, @NonNull IFavoriteSettingDialogKicker dialogKicker)
{
this.context = context;
this.statusNotify = imageStatusNotify;
public void onClick(View view)
{
int id = view.getId();
- boolean isVibrate = true;
+ boolean isVibrate;
//Log.v(TAG, "onClick() : " + id);
try
{
case R.id.connect_disconnect_button:
// カメラと接続・切断のボタンが押された
changeScene.changeCameraConnection();
- //isVibrate = true;
+ isVibrate = true;
break;
case R.id.shutter_button:
case R.id.show_images_button:
// 画像一覧表示ボタンが押された...画像一覧画面を開く
changeScene.changeScenceToImageList();
- //isVibrate = true;
+ isVibrate = true;
break;
case R.id.camera_power_off_button:
// 電源ボタンが押された...終了してよいか確認して、終了する
confirmExitApplication();
- //isVibrate = true;
+ isVibrate = true;
break;
case R.id.show_preference_button:
// カメラの設定
changeScene.changeSceneToConfiguration();
- //isVibrate = true;
+ isVibrate = true;
break;
case R.id.show_hide_grid_button:
dialogKicker.showFavoriteSettingDialog();
return;
}
-
+ else if (interfaceProvider.getCammeraConnectionMethod() == ICameraConnection.CameraConnectionMethod.FUJI_X)
+ {
+ try
+ {
+ // FUJI X Seriesの場合は、コマンド送信ダイアログを表示する
+ FujiXCameraCommandSendDialog.newInstance(interfaceProvider.getFujiXInterfaceProvider()).show(context.getSupportFragmentManager(), "sendCommandDialog");
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return;
+ }
ICameraButtonControl btnCtl = interfaceProvider.getButtonControl();
if (btnCtl != null)
package net.osdn.gokigen.gr2control.liveview;
-import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceManager;
import android.util.Log;
{
Log.v(TAG, "interfaceInjector is NULL...");
}
- Activity activity = this.getActivity();
+ FragmentActivity activity = this.getActivity();
Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
if ((onClickTouchListener == null)&&(activity != null))
{
{
try
{
- Activity activity = getActivity();
+ FragmentActivity activity = getActivity();
if (activity != null)
{
if (showGrid == null) {
@Override
public void run() {
// isVisibleがtrueなら、ズームレンズボタンを有効にする
- Activity activity = getActivity();
+ FragmentActivity activity = getActivity();
if (activity != null)
{
try
*/
private void runOnUiThread(Runnable action)
{
- Activity activity = getActivity();
+ FragmentActivity activity = getActivity();
if (activity == null)
{
return;
{
try
{
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if (activity == null)
{
return;
try
{
final String shutterSpeed = tv.replace(".", "/");
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if (activity == null)
{
return;
try
{
final String apertureValue = (av.length() > 1) ? ("F" + av) : "";
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if (activity == null)
{
return;
{
try
{
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if (activity == null)
{
return;
try
{
Log.v(TAG, "updatedMeteringMode() : " + meteringMode);
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if ((activity == null)||(meteringMode == null))
{
return;
{
try
{
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
if (activity == null)
{
return;
@Override
public void updateFocusedStatus(final boolean focused, final boolean focusLocked)
{
- final Activity activity = getActivity();
+ final FragmentActivity activity = getActivity();
try
{
if (activity != null)
{
try
{
- Activity activity = getActivity();
+ FragmentActivity activity = getActivity();
if (activity != null)
{
ImageView imageView = activity.findViewById(R.id.button_toggle_aeaf);
{
try
{
- Activity activity = getActivity();
+ FragmentActivity activity = getActivity();
if (activity != null)
{
TextView textView = activity.findViewById(R.id.lever_ael_caf);
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <ScrollView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout
+ android:id="@+id/info_edit_data"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/status_text_view"
+ android:tag="status_text"
+ android:textSize="8pt"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/status_update_button"
+ android:text="@string/update_status"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ android:id="@+id/info_edit_data"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <LinearLayout
+ android:id="@+id/mode_change_button_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/change_to_liveview"
+ android:text="@string/dialog_button_liveview"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/change_to_playback"
+ android:text="@string/dialog_button_playback"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+ <LinearLayout
+ android:id="@+id/command_select_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/command_name"
+ android:text="@string/dialog_title_command"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_command_id"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <EditText android:id="@+id/edit_command_id"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_command_id_hint"
+ />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="8dp" />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:id="@+id/message_type_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/message_type_name"
+ android:text="@string/dialog_message_type_name"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_message_type"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:id="@+id/body_length_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/body_length_name"
+ android:text="@string/dialog_title_body_length"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_message_body_length"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="6dp" />
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/method_name"
+ android:text="@string/dialog_title_message_body"
+ />
+
+ <EditText android:id="@+id/edit_message_body1"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_message_body1_hint"
+ />
+
+ <EditText android:id="@+id/edit_message_body2"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_message_body2_hint"
+ />
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/send_message_button"
+ android:text="@string/dialog_send_message"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/command_response_value"
+ android:text="@string/blank"
+ />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <ScrollView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout
+ android:id="@+id/info_edit_data"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/status_text_view"
+ android:tag="status_text"
+ android:textSize="8pt"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/status_update_button"
+ android:text="@string/update_status"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ android:id="@+id/info_edit_data"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <LinearLayout
+ android:id="@+id/mode_change_button_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/change_to_liveview"
+ android:text="@string/dialog_button_liveview"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/change_to_playback"
+ android:text="@string/dialog_button_playback"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:id="@+id/command_select_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/command_name"
+ android:text="@string/dialog_title_command"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_command_id"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <EditText android:id="@+id/edit_command_id"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_command_id_hint"
+ />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="8dp" />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:id="@+id/message_type_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/message_type_name"
+ android:text="@string/dialog_message_type_name"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_message_type"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:id="@+id/body_length_area"
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:padding="6dp"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/body_length_name"
+ android:text="@string/dialog_title_body_length"
+ android:layout_gravity="start">
+ </TextView>
+
+ <Spinner
+ android:id="@+id/spinner_selection_message_body_length"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/blank"
+ android:visibility="visible" />
+ </LinearLayout>
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="6dp" />
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/message_body_name"
+ android:text="@string/dialog_title_message_body"
+ />
+
+ <EditText android:id="@+id/edit_message_body1"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_message_body1_hint"
+ />
+
+ <EditText android:id="@+id/edit_message_body2"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="all"
+ android:linksClickable="true"
+ android:inputType="text"
+ android:hint="@string/dialog_message_body2_hint"
+ />
+
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tag="button"
+ android:id="@+id/send_message_button"
+ android:text="@string/dialog_send_message"
+ android:layout_gravity="center"
+ android:textSize="6pt" />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+
+ <TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:id="@+id/command_response_value"
+ android:text="@string/blank"
+ />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:background="@android:color/darker_gray"/>
+
+ </LinearLayout>
+ </ScrollView>
+</LinearLayout>
<item >QUAD_VGA</item>
</string-array>
+ <string-array name="fuji_x_film_simulation">
+ <item>PROVIA</item>
+ <item>Velvia</item>
+ <item>ASTIA</item>
+ <item>MONOCHROME</item>
+ <item>SEPIA</item>
+ <item>PRO Neg. Hi</item>
+ <item>PRO Neg. Std</item>
+ <item>MONOCHROME+Ye</item>
+ <item>MONOCHROME+R</item>
+ <item>MONOCHROME+G</item>
+ <item>CLASSIC CHROME</item>
+ <item>ACROS</item>
+ <item>ACROS+Ye</item>
+ <item>ACROS+R</item>
+ <item>ACROS+G</item>
+ <item>ETERNA</item>
+ <item>CLASSIC Neg.</item>
+ </string-array>
+
+ <string-array name="fuji_x_film_simulation_value">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <item>16</item>
+ <item>17</item>
+ </string-array>
+
+ <string-array name="fuji_x_white_balance">
+ <item>AUTO</item>
+ <item>FINE</item>
+ <item>INCANDESCENT</item>
+ <item>FLUORESCENT 1</item>
+ <item>FLUORESCENT 2</item>
+ <item>FLUORESCENT 3</item>
+ <item>SHADE</item>
+ <item>UNDERWATER</item>
+ <item>TEMPERATURE</item>
+ <item>CUSTOM</item>
+ </string-array>
+
+ <string-array name="fuji_x_white_balance_value">
+ <item>2</item>
+ <item>4</item>
+ <item>6</item>
+ <item>32769</item>
+ <item>32770</item>
+ <item>32771</item>
+ <item>32774</item>
+ <item>32778</item>
+ <item>32779</item>
+ <item>32780</item>
+ </string-array>
+
</resources>
<string name="pref_exit_only">アプリ終了</string>
<string name="pref_fujix_display_camera_view">LVをカメラでも表示</string>
<string name="pref_fujix_display_camera_view_summary">お試し:ライブビューをカメラ画面で同時表示します</string>
- <string name="pref_fujix_focus_xy">フォーカス点数 (default: 7,7)</string>
- <string name="pref_summary_fujix_focus_xy">フォーカス点数を指定します</string>
+ <string name="pref_fujix_focus_xy">フォーカス点数[X,Y] (default: 7,7)</string>
+ <string name="pref_summary_fujix_focus_xy">接続するカメラに合わせてフォーカス点数を指定します</string>
<string name="pref_fujix_liveview_wait">LV画像受信待ち間隔(default: 80)</string>
<string name="pref_summary_fujix_liveview_wait">ライブビュー画像受信間隔を指定します</string>
<string name="pref_fujix_command_polling_wait">コマンド間隔(default: 500)</string>
<string name="connect_connecting12">接続中…(12/12)</string>
<string name="connect_connect_finished">カメラと接続</string>
<string name="connect_receive_unknown_message">不明な応答を受信しました。</string>
+
+ <string name="dialog_fujix_command_title_command">メッセージ送信(FUJI)</string>
+ <string name="camera_status_title">カメラ状態</string>
+ <string name="update_status">更新</string>
+ <string name="dialog_title_command">コマンド</string>
+ <string name="dialog_command_id_hint">0x####</string>
+ <string name="dialog_message_type_name">メッセージ種別</string>
+ <string name="dialog_title_body_length">ボディ長</string>
+ <string name="dialog_message_body1_hint">0x########</string>
+ <string name="dialog_message_body2_hint">0x########</string>
+ <string name="dialog_message_body3_hint">0x########</string>
+ <string name="dialog_message_body4_hint">0x########</string>
+ <string name="dialog_title_message_body">メッセージボディ</string>
+ <string name="dialog_command_hint">(command)</string>
+ <string name="dialog_service_hint">(service)</string>
</resources>
<item >QUAD_VGA</item>
</string-array>
+ <string-array name="fuji_x_film_simulation">
+ <item>PROVIA</item>
+ <item>Velvia</item>
+ <item>ASTIA</item>
+ <item>MONOCHROME</item>
+ <item>SEPIA</item>
+ <item>PRO Neg. Hi</item>
+ <item>PRO Neg. Std</item>
+ <item>MONOCHROME+Ye</item>
+ <item>MONOCHROME+R</item>
+ <item>MONOCHROME+G</item>
+ <item>CLASSIC CHROME</item>
+ <item>ACROS</item>
+ <item>ACROS+Ye</item>
+ <item>ACROS+R</item>
+ <item>ACROS+G</item>
+ <item>ETERNA</item>
+ <item>CLASSIC Neg.</item>
+ </string-array>
+
+ <string-array name="fuji_x_film_simulation_value">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9</item>
+ <item>10</item>
+ <item>11</item>
+ <item>12</item>
+ <item>13</item>
+ <item>14</item>
+ <item>15</item>
+ <item>16</item>
+ <item>17</item>
+ </string-array>
+
+ <string-array name="fuji_x_white_balance">
+ <item>AUTO</item>
+ <item>FINE</item>
+ <item>INCANDESCENT</item>
+ <item>FLUORESCENT 1</item>
+ <item>FLUORESCENT 2</item>
+ <item>FLUORESCENT 3</item>
+ <item>SHADE</item>
+ <item>UNDERWATER</item>
+ <item>TEMPERATURE</item>
+ <item>CUSTOM</item>
+ </string-array>
+
+ <string-array name="fuji_x_white_balance_value">
+ <item>2</item>
+ <item>4</item>
+ <item>6</item>
+ <item>32769</item>
+ <item>32770</item>
+ <item>32771</item>
+ <item>32774</item>
+ <item>32778</item>
+ <item>32779</item>
+ <item>32780</item>
+ </string-array>
+
</resources>
<string name="connect_connect_finished">Connect Finished.</string>
<string name="connect_receive_unknown_message">RECEIVED UNKNOWN ID MESSAGE</string>
+ <string name="dialog_fujix_command_title_command">Send Message(FUJI)</string>
+ <string name="camera_status_title">Camera Status</string>
+ <string name="update_status">Update</string>
+
+ <string name="dialog_title_command">Command</string>
+ <string name="dialog_command_id_hint">0x####</string>
+ <string name="dialog_message_type_name">Message Type</string>
+ <string name="dialog_title_body_length">Body Length</string>
+ <string name="dialog_message_body1_hint">0x########</string>
+ <string name="dialog_message_body2_hint">0x########</string>
+ <string name="dialog_message_body3_hint">0x########</string>
+ <string name="dialog_message_body4_hint">0x########</string>
+ <string name="dialog_title_message_body">Message Body</string>
+ <string name="dialog_command_hint">(command)</string>
+ <string name="dialog_service_hint">(service)</string>
+
</resources>