import net.osdn.gokigen.a01d.camera.CameraInterfaceProvider;
import net.osdn.gokigen.a01d.camera.IInterfaceProvider;
+import net.osdn.gokigen.a01d.camera.fujix.cameraproperty.FujiXCameraStatusDialog;
import net.osdn.gokigen.a01d.camera.olympus.cameraproperty.OlyCameraPropertyListFragment;
import net.osdn.gokigen.a01d.camera.ICameraStatusReceiver;
import net.osdn.gokigen.a01d.camera.ICameraConnection;
*
*/
@Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
onReadyClass();
}
else if (method == ICameraConnection.CameraConnectionMethod.FUJI_X)
{
- // OPCカメラでない場合には、「OPCカメラのみ有効です」表示をして画面遷移させない
- Toast.makeText(getApplicationContext(), getText(R.string.only_opc_feature), Toast.LENGTH_SHORT).show();
+ try
+ {
+ // FUJI X Seriesの場合は、ステータス表示ダイアログを表示する
+ FujiXCameraStatusDialog.newInstance(interfaceProvider.getFujiXInterface()).show(getSupportFragmentManager(), "statusDialog");
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
else
{
import net.osdn.gokigen.a01d.camera.CameraStatusListener;
import net.osdn.gokigen.a01d.camera.ICameraConnection;
import net.osdn.gokigen.a01d.camera.ICameraInformation;
+import net.osdn.gokigen.a01d.camera.ICameraStatus;
import net.osdn.gokigen.a01d.camera.ICameraStatusWatcher;
import net.osdn.gokigen.a01d.camera.ICaptureControl;
import net.osdn.gokigen.a01d.camera.IDisplayInjector;
IFujiXCommunication getCommandCommunication();
ICameraStatusWatcher getStatusWatcher();
ICameraStatusUpdateNotify getStatusListener();
+ ICameraStatus getCameraStatus();
void setAsyncEventReceiver(@NonNull IFujiXCommandCallback receiver);
}
--- /dev/null
+package net.osdn.gokigen.a01d.camera.fujix.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.a01d.R;
+import net.osdn.gokigen.a01d.camera.ICameraStatus;
+import net.osdn.gokigen.a01d.camera.fujix.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.getCameraStatus();
+ }
+
+ /**
+ *
+ *
+ */
+ @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(null);
+ if (statusList == null)
+ {
+ return;
+ }
+ 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.a01d.camera.CameraStatusListener;
import net.osdn.gokigen.a01d.camera.ICameraConnection;
import net.osdn.gokigen.a01d.camera.ICameraInformation;
+import net.osdn.gokigen.a01d.camera.ICameraStatus;
import net.osdn.gokigen.a01d.camera.ICameraStatusReceiver;
import net.osdn.gokigen.a01d.camera.ICameraStatusWatcher;
import net.osdn.gokigen.a01d.camera.ICaptureControl;
}
@Override
+ public ICameraStatus getCameraStatus()
+ {
+ return (statusChecker);
+ }
+
+ @Override
public void setAsyncEventReceiver(@NonNull IFujiXCommandCallback receiver)
{
asyncReceiver.setEventSubscriber(receiver);
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
class FujiXStatusHolder implements IFujiXCameraProperties
{
}
}
+ /**
+ * 認識したカメラのステータス名称のリストを応答する
+ *
+ */
+ private List<String> getAvailableStatusNameList()
+ {
+ ArrayList<String> selection = new ArrayList<>();
+ try
+ {
+ for (int index = 0; index < statusHolder.size(); index++)
+ {
+ int key = statusHolder.keyAt(index);
+ selection.add(statusNameArray.get(key));
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return (selection);
+
+ }
+
+
List<String> getAvailableItemList(String listKey)
{
- ArrayList<String> selection = new ArrayList<>();
+ if (listKey == null)
+ {
+ // アイテム名の一覧を応答する
+ return (getAvailableStatusNameList());
+ }
- // これ違う...これだと認識したステータスの一覧だ...
+ ArrayList<String> selection = new ArrayList<>();
try
{
for (int index = 0; index < statusHolder.size(); index++)
String strKey = statusNameArray.valueAt(index);
if (key.contentEquals(strKey))
{
- return (statusHolder.get(id) + "");
+ int value = statusHolder.get(id);
+ return (String.format(Locale.US,"0x%08x (%d)", value, value));
}
}
}
// お気に入りボタン(とMFボタン)は、SONYモード, RICOH GR2モードのときには表示しない
final View favoriteButton = view.findViewById(R.id.show_favorite_settings_button);
final View propertyButton = view.findViewById(R.id.camera_property_settings_button);
- if ((favoriteButton != null)&&(manualFocus != null))
+ if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
{
- runOnUiThread(new Runnable()
+ if ((favoriteButton != null)&&(manualFocus != null))
{
- @Override
- public void run()
+ runOnUiThread(new Runnable()
{
- favoriteButton.setVisibility(View.INVISIBLE);
- if (manualFocus != null)
+ @Override
+ public void run()
{
- manualFocus.setVisibility(View.INVISIBLE);
+ favoriteButton.setVisibility(View.INVISIBLE);
+ if (manualFocus != null)
+ {
+ manualFocus.setVisibility(View.INVISIBLE);
+ }
+ propertyButton.setVisibility(View.INVISIBLE);
}
- propertyButton.setVisibility(View.INVISIBLE);
- }
- });
- }
- if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
- {
+ });
+ }
if (changeLiveViewScale != null)
{
changeLiveViewScale.setVisibility(View.INVISIBLE);
}
else if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH_GR2)
{
+ if ((favoriteButton != null)&&(manualFocus != null))
+ {
+ runOnUiThread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ favoriteButton.setVisibility(View.INVISIBLE);
+ if (manualFocus != null)
+ {
+ manualFocus.setVisibility(View.INVISIBLE);
+ }
+ propertyButton.setVisibility(View.INVISIBLE);
+ }
+ });
+ }
if (changeLiveViewScale != null)
{
changeLiveViewScale.setVisibility(View.VISIBLE);
}
else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
{
+ if (favoriteButton != null)
+ {
+ favoriteButton.setVisibility(View.INVISIBLE);
+ }
+ if (manualFocus != null)
+ {
+ manualFocus.setVisibility(View.INVISIBLE);
+ }
if (changeLiveViewScale != null)
{
changeLiveViewScale.setVisibility(View.INVISIBLE);
{
focusIndicator.setVisibility(View.VISIBLE);
}
+ if (propertyButton != null)
+ {
+ propertyButton.setOnClickListener(onClickTouchListener);
+ }
}
}
-
if (manualFocus != null)
{
manualFocus.setOnClickListener(onClickTouchListener);
--- /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="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>
<string name="data_saving">保存中、お待ちください…</string>
<string name="save_image_failure">画像保存に失敗しました。</string>
+ <string name="camera_status_title">カメラ状態</string>
+ <string name="update_status">更新</string>
+
<string name="live_view_scale_default">LV : </string>
<string name="focal_length_with_digital_zoom_view_default"> </string>
<string name="data_saving">Saving…</string>
<string name="save_image_failure">Save image is failed.</string>
+ <string name="camera_status_title">Camera Status</string>
+ <string name="update_status">Update</string>
+
<string name="live_view_scale_default">LV : </string>
<string name="focal_length_with_digital_zoom_view_default"> </string>