applicationId "net.osdn.gokigen.pkremote"
minSdkVersion 14
targetSdkVersion 28
- versionCode 10005
- versionName "1.0.5"
+ versionCode 10100
+ versionName "1.1.0"
}
buildTypes {
release {
scenceUpdater.changeScenceToImageList();
return (true);
case R.id.navigation_calendar:
- //
scenceUpdater.changeSceneToCalendar();
return (true);
+ case R.id.navigation_auto_transfer:
+ scenceUpdater.changeSceneToAutoTransfer();
+ return (true);
case R.id.navigation_settings:
- //
scenceUpdater.changeSceneToConfiguration();
return (true);
}
import net.osdn.gokigen.pkremote.playback.ImageGridViewFragment;
import net.osdn.gokigen.pkremote.preference.olympus.OpcPreferenceFragment;
import net.osdn.gokigen.pkremote.preference.ricohgr2.RicohGr2PreferenceFragment;
+import net.osdn.gokigen.pkremote.transfer.AutoTransferFragment;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
private LogCatFragment logCatFragment = null;
private CalendarFragment calendarFragment = null;
private ImageGridViewFragment gridViewFragment = null;
+ private AutoTransferFragment autoTransferFragment = null;
public static CameraSceneUpdater newInstance(@NonNull AppCompatActivity activity)
{
// IChangeScene
@Override
+ public void changeSceneToAutoTransfer()
+ {
+ if (autoTransferFragment == null)
+ {
+ autoTransferFragment = AutoTransferFragment.newInstance(activity, this, interfaceProvider);
+ }
+ FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
+ transaction.replace(R.id.fragment1, autoTransferFragment);
+ // backstackに追加
+ transaction.addToBackStack(null);
+ transaction.commit();
+ }
+
+ // IChangeScene
+ @Override
public void changeSceneToCalendar()
{
if (calendarFragment == null)
changeScenceToImageList(null);
}
+ /**
+ *
+ *
+ */
private void changeScenceToImageList(String filterLabel)
{
Log.v(TAG, "changeScenceToImageList() : " + filterLabel);
void changeSceneToApiList();
void changeScenceDateSelected(String filterLabel);
void changeScenceToImageList();
+ void changeSceneToAutoTransfer();
void exitApplication();
void reloadRemoteImageContents();
void setAnotherStatusReceiver(ICameraStatusReceiver statusReceiver);
--- /dev/null
+package net.osdn.gokigen.pkremote.transfer;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.os.Vibrator;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.ImageButton;
+import android.widget.ProgressBar;
+
+import net.osdn.gokigen.pkremote.R;
+import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
+import net.osdn.gokigen.pkremote.scene.IChangeScene;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
+import static android.content.Context.VIBRATOR_SERVICE;
+
+public class AutoTransferFragment extends Fragment implements View.OnClickListener
+{
+ private final String TAG = this.toString();
+
+ private IInterfaceProvider interfaceProvider = null;
+ private IChangeScene changeScene = null;
+ private AppCompatActivity activity = null;
+ private View myView = null;
+
+ public static AutoTransferFragment newInstance(@NonNull AppCompatActivity context, IChangeScene sceneSelector, @NonNull IInterfaceProvider provider)
+ {
+ AutoTransferFragment instance = new AutoTransferFragment();
+ instance.prepare(context, sceneSelector, provider);
+
+ // パラメータはBundleにまとめておく
+ Bundle arguments = new Bundle();
+ //arguments.putString("title", title);
+ //arguments.putString("message", message);
+ instance.setArguments(arguments);
+
+ return (instance);
+ }
+
+
+ /**
+ *
+ */
+ private void prepare(@NonNull AppCompatActivity activity, IChangeScene sceneSelector, IInterfaceProvider interfaceProvider)
+ {
+ Log.v(TAG, "prepare()");
+
+ this.activity = activity;
+ this.changeScene = sceneSelector;
+ this.interfaceProvider = interfaceProvider;
+ }
+
+ /**
+ *
+ *
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ Log.v(TAG, "onCreate()");
+ }
+
+ /**
+ *
+ *
+ */
+ @Override
+ public void onAttach(Context context)
+ {
+ super.onAttach(context);
+ Log.v(TAG, "onAttach()");
+ }
+
+ /**
+ *
+ *
+ */
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
+ {
+ super.onCreateView(inflater, container, savedInstanceState);
+
+ Log.v(TAG, "onCreateView()");
+ if (myView != null)
+ {
+ // Viewを再利用。。。
+ Log.v(TAG, "onCreateView() : called again, so do nothing... : " + myView);
+ return (myView);
+ }
+
+ myView = inflater.inflate(R.layout.fragment_auto_transfer, container, false);
+ try
+ {
+ prepare(myView);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return (myView);
+ }
+
+ @Override
+ public void onResume()
+ {
+ super.onResume();
+ }
+
+ @Override
+ public void onPause()
+ {
+ super.onPause();
+
+ // 画面を抜ける時には、自動転送を停止させる
+ finishTransfer();
+ }
+
+ private void prepare(@NonNull View view)
+ {
+ try
+ {
+ Button start = view.findViewById(R.id.transfer_start_button);
+ if (start != null)
+ {
+ start.setOnClickListener(this);
+ }
+
+ Button stop = view.findViewById(R.id.transfer_stop_button);
+ if (stop != null)
+ {
+ stop.setOnClickListener(this);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void startTransfer()
+ {
+ try
+ {
+ // STARTボタンを無効化
+ controlButton(false);
+
+ // ぶるぶるする
+ Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
+ if (vibrator != null)
+ {
+ vibrator.vibrate(50);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+
+ private void finishTransfer()
+ {
+ try
+ {
+ // STARTボタンを有効化
+ controlButton(true);
+
+ // ぶるぶるする
+ Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
+ if (vibrator != null)
+ {
+ vibrator.vibrate(150);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void controlButton(boolean isStartButtonEnable)
+ {
+ try
+ {
+ Button start = activity.findViewById(R.id.transfer_start_button);
+ Button stop = activity.findViewById(R.id.transfer_stop_button);
+ if ((start != null)&&(stop != null))
+ {
+ start.setEnabled(isStartButtonEnable);
+ stop.setEnabled(!isStartButtonEnable);
+ CheckBox check = activity.findViewById(R.id.check_auto_download_raw);
+ ProgressBar bar = activity.findViewById(R.id.auto_transfer_progress_bar);
+ ImageButton reload = activity.findViewById(R.id.button_reload);
+ ImageButton connect = activity.findViewById(R.id.button_wifi_connect);
+ if (isStartButtonEnable)
+ {
+ if (bar != null)
+ {
+ bar.setVisibility(View.GONE);
+ }
+ if (check != null)
+ {
+ check.setEnabled(true);
+ }
+ if (reload != null)
+ {
+ reload.setVisibility(View.VISIBLE);
+ reload.setEnabled(true);
+ }
+ if (connect != null)
+ {
+ connect.setVisibility(View.VISIBLE);
+ connect.setEnabled(true);
+ }
+ }
+ else
+ {
+ if (bar != null)
+ {
+ bar.setVisibility(View.VISIBLE);
+ }
+ if (check != null)
+ {
+ check.setEnabled(false);
+ }
+ if (reload != null)
+ {
+ reload.setEnabled(false);
+ reload.setVisibility(View.INVISIBLE);
+ }
+ if (connect != null)
+ {
+ connect.setEnabled(false);
+ connect.setVisibility(View.INVISIBLE);
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onClick(View v)
+ {
+ int id = v.getId();
+ if (id == R.id.transfer_start_button)
+ {
+ //
+ Log.v(TAG, "TRANSFER START");
+ startTransfer();
+ }
+ else if (id == R.id.transfer_stop_button)
+ {
+ Log.v(TAG, "TRANSFER FINISH");
+ finishTransfer();
+ }
+ }
+}
--- /dev/null
+<vector android:height="24dp" android:tint="#323232"
+ android:viewportHeight="24.0" android:viewportWidth="24.0"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="#FF000000" android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z"/>
+</vector>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <ImageView
+ android:id="@+id/image_view_area"
+ android:layout_width="match_parent"
+ android:layout_height="160dp"
+ android:src="@null"
+ android:scaleType="centerCrop"
+ tools:ignore="ContentDescription" />
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="?android:attr/buttonBarStyle"
+ android:orientation="horizontal">
+
+ <Button
+ android:id="@+id/transfer_start_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:visibility="visible"
+ android:enabled="true"
+ style="?android:attr/buttonBarButtonStyle"
+ android:text="@string/button_transfer_start" />
+
+ <Button
+ android:id="@+id/transfer_stop_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:visibility="visible"
+ android:enabled="false"
+ style="?android:attr/buttonBarButtonStyle"
+ android:text="@string/button_transfer_stop" />
+
+ </LinearLayout>
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <CheckBox android:id="@+id/check_auto_download_raw"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/action_download_with_raw"
+ android:checked="false"
+ android:textSize="8pt"
+ />
+
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
+
+ <TextView
+ android:id="@+id/auto_download_information_text"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:gravity="start"
+ android:clickable="true"
+ android:focusable="true"
+ android:text="@string/blank"
+ android:textColor="@color/background_dark"
+ android:textSize="9pt" />
+
+ <ProgressBar
+ android:id="@+id/auto_transfer_progress_bar"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="gone"
+ />
+</LinearLayout>
android:id="@+id/navigation_photo_library"
android:icon="@drawable/ic_photo_library_black_24dp"
android:title="@string/title_photo_library" />
+
+ <item
+ android:id="@+id/navigation_auto_transfer"
+ android:icon="@drawable/ic_file_download_black_24dp"
+ android:title="@string/title_auto_transfer" />
<item
android:id="@+id/navigation_settings"
android:icon="@drawable/ic_settings_black_24dp"
<string name="title_notifications">通知</string>
<string name="title_settings">設定</string>
<string name="title_photo_library">画像</string>
+ <string name="title_auto_transfer">自動転送</string>
<string name="dialog_title_confirmation">確認</string>
<string name="action_batch_download_640x480">スモールサイズ(JPEG)</string>
<string name="action_batch_download_raw">オリジナルサイズ(RAWも取得)</string>
<string name="action_select_all">全選択/全解除</string>
+
+ <string name="button_transfer_start">転送開始</string>
+ <string name="button_transfer_stop">転送終了</string>
+
</resources>
<string name="title_notifications">Notifications</string>
<string name="title_settings">Settings</string>
<string name="title_photo_library">Photo Library</string>
+ <string name="title_auto_transfer">Auto Transfer</string>
<string name="dialog_title_confirmation">Confirmation</string>
<string name="action_batch_download_640x480">Small Size(JPEG)</string>
<string name="action_batch_download_raw">Original Size(with RAW)</string>
<string name="action_select_all">Select All/Unselect All</string>
+
+ <string name="button_transfer_start">TRANSFER START</string>
+ <string name="button_transfer_stop">TRANSFER STOP</string>
+
</resources>