OSDN Git Service

とりあえず、撮影画像を一覧表示・詳細表示できるようにした。
authorMRSa <mrsa@myad.jp>
Sat, 4 Aug 2018 04:14:14 +0000 (13:14 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 4 Aug 2018 04:14:14 +0000 (13:14 +0900)
18 files changed:
app/src/main/java/net/osdn/gokigen/gr2control/camera/ICameraFileInfo.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/playback/CameraFileInfo.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/playback/IContentInfoCallback.java [new file with mode: 0644]
app/src/main/java/net/osdn/gokigen/gr2control/camera/playback/IPlaybackControl.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/ricohgr2/wrapper/RicohGr2PlaybackControl.java
app/src/main/java/net/osdn/gokigen/gr2control/liveview/LiveViewFragment.java
app/src/main/java/net/osdn/gokigen/gr2control/playback/ImageGridViewFragment.java
app/src/main/java/net/osdn/gokigen/gr2control/playback/ScalableImagePager.java
app/src/main/java/net/osdn/gokigen/gr2control/playback/detail/ExifInformationDumper.java [moved from app/src/main/java/net/osdn/gokigen/gr2control/playback/ExifInformationDumper.java with 99% similarity]
app/src/main/java/net/osdn/gokigen/gr2control/playback/detail/ImageContentInfoEx.java [moved from app/src/main/java/net/osdn/gokigen/gr2control/playback/ImageContentInfoEx.java with 55% similarity]
app/src/main/java/net/osdn/gokigen/gr2control/playback/detail/ImagePagerViewFragment.java [moved from app/src/main/java/net/osdn/gokigen/gr2control/playback/ImagePagerViewFragment.java with 89% similarity]
app/src/main/java/net/osdn/gokigen/gr2control/playback/detail/ScalableImageView.java [moved from app/src/main/java/net/osdn/gokigen/gr2control/playback/ScalableImageView.java with 99% similarity]
app/src/main/res/layout-land/fragment_image_grid_view.xml
app/src/main/res/layout-land/view_grid_cell.xml
app/src/main/res/layout-land/view_image_page.xml
app/src/main/res/menu/image_view.xml
app/src/main/res/menu/image_view_with_raw.xml
app/src/main/res/values/strings.xml

index 80ac814..4984955 100644 (file)
@@ -8,4 +8,14 @@ public interface ICameraFileInfo
     String getDirectoryPath();
     String getFilename();
 
+    String getAperature();
+    String getShutterSpeed();
+    String getIsoSensitivity();
+    String getExpRev();
+    int getOrientation();
+    String getAspectRatio();
+    String getModel();
+    String getLatLng();
+    boolean getCaptured();
+
 }
index c21efd6..36dd439 100644 (file)
@@ -11,19 +11,63 @@ public class CameraFileInfo implements ICameraFileInfo
     private final String path;
     private final String name;
     private Date dateTime;
+    private boolean captured;
+    private String av;
+    private String sv;
+    private String tv;
+    private String xv;
+    private int orientation;
+    private String aspectRatio;
+    private String cameraModel;
+    private String latlng;
 
     public CameraFileInfo(@NonNull String path, @NonNull String name)
     {
         this.path = path;
         this.name = name;
         this.dateTime = new Date();
-
     }
 
     public void setDateTime(@NonNull Date dateTime)
     {
         this.dateTime = dateTime;
     }
+    public void setCaptured(boolean captured)
+    {
+        this.captured = captured;
+    }
+    public void setAperature(String av)
+    {
+        this.av = av;
+    }
+    public void setShutterSpeed(String tv)
+    {
+        this.tv = tv;
+    }
+    public void setIso(String sv)
+    {
+        this.sv = sv;
+    }
+    public void setExpRev(String xv)
+    {
+        this.xv = xv;
+    }
+    public void setOrientation(int orientation)
+    {
+        this.orientation = orientation;
+    }
+    public void setAspectRatio(String aspectRatio)
+    {
+        this.aspectRatio = aspectRatio;
+    }
+    public void setModel(String cameraModel)
+    {
+        this.cameraModel = cameraModel;
+    }
+    public void setLatLng(String latlng)
+    {
+        this.latlng = latlng;
+    }
 
     @Override
     public Date getDatetime()
@@ -42,4 +86,58 @@ public class CameraFileInfo implements ICameraFileInfo
     {
         return (name);
     }
+
+    @Override
+    public String getAperature()
+    {
+        return (av);
+    }
+
+    @Override
+    public String getShutterSpeed()
+    {
+        return (tv);
+    }
+
+    @Override
+    public String getIsoSensitivity()
+    {
+        return (sv);
+    }
+
+    @Override
+    public String getExpRev()
+    {
+        return (xv);
+    }
+
+    @Override
+    public int getOrientation()
+    {
+        return (orientation);
+    }
+
+    @Override
+    public String getAspectRatio()
+    {
+        return (aspectRatio);
+    }
+
+    @Override
+    public String getModel()
+    {
+        return (cameraModel);
+    }
+
+    @Override
+    public String getLatLng()
+    {
+        return (latlng);
+    }
+
+    @Override
+    public boolean getCaptured()
+    {
+        return (captured);
+    }
 }
diff --git a/app/src/main/java/net/osdn/gokigen/gr2control/camera/playback/IContentInfoCallback.java b/app/src/main/java/net/osdn/gokigen/gr2control/camera/playback/IContentInfoCallback.java
new file mode 100644 (file)
index 0000000..72d4055
--- /dev/null
@@ -0,0 +1,6 @@
+package net.osdn.gokigen.gr2control.camera.playback;
+
+public interface IContentInfoCallback
+{
+    void onErrorOccurred(Exception  e);
+}
index 8c8aaaf..fc79832 100644 (file)
@@ -12,8 +12,12 @@ import net.osdn.gokigen.gr2control.camera.playback.IDownloadImageCallback;
 public interface IPlaybackControl
 {
     void downloadContentList(@NonNull IDownloadContentListCallback callback);
-    void downloadContentScreennail(@NonNull String  path, @NonNull IDownloadImageCallback callback);
+    void getContentInfo(@NonNull String  path, @NonNull IContentInfoCallback  callback);
+
+    void downloadContentScreennail(@NonNull String  path, @NonNull IDownloadThumbnailImageCallback callback);
     void downloadContentThumbnail(@NonNull String path, @NonNull IDownloadThumbnailImageCallback callback);
+    //void downloadContentScreennail(@NonNull String  path, @NonNull IDownloadThumbnailImageCallback callback);
+    //void downloadContentThumbnail(@NonNull String path, @NonNull IDownloadThumbnailImageCallback callback);
     void downloadImage(@NonNull String  path, float resize, @NonNull IDownloadImageCallback  callback);
     void downloadLargeContent(@NonNull String  path, @NonNull IDownloadLargeContentCallback  callback);
 }
index 501c822..b2b3489 100644 (file)
@@ -6,6 +6,7 @@ import android.util.Log;
 
 import net.osdn.gokigen.gr2control.camera.ICameraFileInfo;
 import net.osdn.gokigen.gr2control.camera.playback.CameraFileInfo;
+import net.osdn.gokigen.gr2control.camera.playback.IContentInfoCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadContentListCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadImageCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadLargeContentCallback;
@@ -17,6 +18,7 @@ import org.json.JSONArray;
 import org.json.JSONObject;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
@@ -39,7 +41,6 @@ public class RicohGr2PlaybackControl implements IPlaybackControl
             動画をダウンロードする      : http://192.168.0.1/v1/photos/yyyRICOH/R0000xxx.MOV?size=full
      *****/
 
-
     RicohGr2PlaybackControl()
     {
 
@@ -82,7 +83,19 @@ public class RicohGr2PlaybackControl implements IPlaybackControl
                     for (int fileIndex = 0; fileIndex < nofFiles; fileIndex++)
                     {
                         String fileName = filesArray.getString(fileIndex);
-                        fileList.add(new CameraFileInfo(dirName, fileName));
+                        CameraFileInfo info = new CameraFileInfo(dirName, fileName);
+/*
+                        try
+                        {
+                            updateCameraFileInfo(info);
+                            //Log.v(TAG, ">> FILE INFO: " + info.getFilename() + " [" + info.getDatetime() + "] O : " + info.getOrientation() + " " + info.getModel());
+                        }
+                        catch (Exception e)
+                        {
+                            e.printStackTrace();
+                        }
+*/
+                        fileList.add(info);
                     }
                 }
             }
@@ -95,12 +108,118 @@ public class RicohGr2PlaybackControl implements IPlaybackControl
         callback.onCompleted(fileList);
     }
 
-    @Override
-    public void downloadContentScreennail(@NonNull String path, @NonNull IDownloadImageCallback callback)
+    private void updateCameraFileInfo(CameraFileInfo info)
     {
-        Log.v(TAG, "downloadContentScreennail() : " + path);
+        String url = getPhotoUrl + info.getDirectoryPath() + "/" + info.getFilename() + "/info";
+        Log.v(TAG, "updateCameraFileInfo() GET URL : " + url);
+        try
+        {
+            String response = SimpleHttpClient.httpGet(url, DEFAULT_TIMEOUT);
+            if ((response == null)||(response.length() < 1))
+            {
+                return;
+            }
+            JSONObject object = new JSONObject(response);
+
+            // データを突っ込む
+            info.setCaptured(object.getBoolean("captured"));
+            String av = getJSONString(object, "av");
+            if (av != null)
+            {
+                info.setAperature(av);
+            }
+            String tv = getJSONString(object, "tv");
+            if (tv != null)
+            {
+                info.setShutterSpeed(tv);
+            }
+            String sv = getJSONString(object,"sv");
+            if (sv != null)
+            {
+                info.setIso(sv);
+            }
+            String xv = getJSONString(object,"xv");
+            if (xv != null)
+            {
+                info.setExpRev(xv);
+            }
+            info.setOrientation(object.getInt("orientation"));
+            String aspectRatio = getJSONString(object,"aspectRatio");
+            if (aspectRatio != null)
+            {
+                info.setAspectRatio(aspectRatio);
+            }
+            String cameraModel = getJSONString(object,"cameraModel");
+            if (cameraModel != null)
+            {
+                info.setModel(cameraModel);
+            }
+            String latLng = getJSONString(object,"latlng");
+            if (latLng != null)
+            {
+                info.setLatLng(latLng);
+            }
+            //info.setDateTime(new Date(object.getString("datetime")));
+        }
+        catch (Throwable e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private String getJSONString(JSONObject object, String key)
+    {
+        String value = null;
+        try
+        {
+            value = object.getString(key);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (value);
+    }
 
 
+
+    @Override
+    public void getContentInfo(@NonNull String path, @NonNull IContentInfoCallback callback)
+    {
+        String url = getPhotoUrl + path + "/info";
+        Log.v(TAG, "getContentInfo() GET URL : " + url);
+        try
+        {
+            String response = SimpleHttpClient.httpGet(url, DEFAULT_TIMEOUT);
+            if ((response == null)||(response.length() < 1))
+            {
+                callback.onErrorOccurred(new NullPointerException());
+            }
+        }
+        catch (Throwable e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void downloadContentScreennail(@NonNull String path, @NonNull IDownloadThumbnailImageCallback callback)
+    {
+        //Log.v(TAG, "downloadContentScreennail() : " + path);
+        String suffix = "?size=view";
+        String url = getPhotoUrl + path + suffix;
+        Log.v(TAG, "downloadContentScreennail() GET URL : " + url);
+        try
+        {
+            Bitmap bmp = SimpleHttpClient.httpGetBitmap(url, DEFAULT_TIMEOUT);
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("Orientation", 0);
+            callback.onCompleted(bmp, map);
+        }
+        catch (Throwable e)
+        {
+            e.printStackTrace();
+        }
     }
 
     @Override
@@ -114,10 +233,17 @@ public class RicohGr2PlaybackControl implements IPlaybackControl
         }
         String url = getPhotoUrl + path + suffix;
         Log.v(TAG, "downloadContentThumbnail() GET URL : " + url);
-        Bitmap bmp = SimpleHttpClient.httpGetBitmap(url, DEFAULT_TIMEOUT);
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("Orientation", 0);
-        callback.onCompleted(bmp, map);
+        try
+        {
+            Bitmap bmp = SimpleHttpClient.httpGetBitmap(url, DEFAULT_TIMEOUT);
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("Orientation", 0);
+            callback.onCompleted(bmp, map);
+        }
+        catch (Throwable e)
+        {
+            e.printStackTrace();
+        }
    }
 
     @Override
index 7984c26..54d0c5e 100644 (file)
@@ -228,7 +228,10 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
             focalLengthArea = view.findViewById(R.id.focal_length_with_digital_zoom_view);
 */
             connectStatus = view.findViewById(R.id.connect_disconnect_button);
-            connectStatus.setOnClickListener(onClickTouchListener);
+            if (connectStatus != null)
+            {
+                connectStatus.setOnClickListener(onClickTouchListener);
+            }
         }
         catch (Exception e)
         {
index 15a8a75..b1b273e 100644 (file)
@@ -42,15 +42,17 @@ import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.GridView;
 import android.widget.ImageView;
+import android.widget.ProgressBar;
 
 
 import net.osdn.gokigen.gr2control.R;
 import net.osdn.gokigen.gr2control.camera.ICameraFileInfo;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadContentListCallback;
-import net.osdn.gokigen.gr2control.camera.playback.IDownloadImageCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadThumbnailImageCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IPlaybackControl;
 import net.osdn.gokigen.gr2control.camera.playback.ProgressEvent;
+import net.osdn.gokigen.gr2control.playback.detail.ImageContentInfoEx;
+import net.osdn.gokigen.gr2control.playback.detail.ImagePagerViewFragment;
 
 public class ImageGridViewFragment extends Fragment
 {
@@ -200,18 +202,38 @@ public class ImageGridViewFragment extends Fragment
         });
         try
         {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    showHideProgressBar(true);
+                }
+            });
             thread.start();
         }
         catch (Exception e)
         {
             e.printStackTrace();
         }
-      }
+    }
 
+    private void showHideProgressBar(final boolean isVisible)
+    {
+        Activity activity = getActivity();
+        if (activity != null)
+        {
+            ProgressBar bar = getActivity().findViewById(R.id.progress_bar);
+            if (bar != null)
+            {
+                bar.setVisibility((isVisible) ? View.VISIBLE : View.GONE);
+                bar.invalidate();
+            }
+        }
+    }
 
        private void refreshImpl()
        {
                contentList = null;
+               Log.v(TAG, "refreshImpl() start");
 
                playbackControl.downloadContentList(new IDownloadContentListCallback() {
                        @Override
@@ -264,7 +286,8 @@ public class ImageGridViewFragment extends Fragment
                                runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
-                                               gridView.invalidateViews();
+                        showHideProgressBar(false);
+                        gridView.invalidateViews();
                                        }
                                });
                        }
@@ -275,12 +298,14 @@ public class ImageGridViewFragment extends Fragment
                                runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
-                                               presentMessage("Load failed", message);                                         
+                        showHideProgressBar(false);
+                                               presentMessage("Load failed", message);
                                        }
                                });
                        }
                });
-       }
+        Log.v(TAG, "refreshImpl() end");
+    }
 
        private static class GridCellViewHolder
     {
index cb6c078..f6d80b1 100644 (file)
@@ -5,6 +5,8 @@ import android.support.v4.view.ViewPager;
 import android.util.AttributeSet;
 import android.view.View;
 
+import net.osdn.gokigen.gr2control.playback.detail.ScalableImageView;
+
 /**
  *
  *
@@ -1,4 +1,4 @@
-package net.osdn.gokigen.gr2control.playback;
+package net.osdn.gokigen.gr2control.playback.detail;
 
 import android.support.media.ExifInterface;
 import android.util.Log;
@@ -175,5 +175,4 @@ class ExifInformationDumper
 
         return (msg);
     }
-
 }
@@ -1,28 +1,28 @@
-package net.osdn.gokigen.gr2control.playback;
+package net.osdn.gokigen.gr2control.playback.detail;
 
 import net.osdn.gokigen.gr2control.camera.ICameraFileInfo;
 
-class ImageContentInfoEx
+public class ImageContentInfoEx
 {
     private final ICameraFileInfo fileInfo;
     private boolean hasRaw;
 
-    ImageContentInfoEx(ICameraFileInfo fileInfo, boolean hasRaw)
+    public ImageContentInfoEx(ICameraFileInfo fileInfo, boolean hasRaw)
     {
         this.fileInfo = fileInfo;
         this.hasRaw = hasRaw;
     }
 
-    void setHasRaw(boolean value)
+    public void setHasRaw(boolean value)
     {
         hasRaw = value;
     }
-    boolean hasRaw()
+    public boolean hasRaw()
     {
         return (hasRaw);
     }
 
-    ICameraFileInfo getFileInfo()
+    public ICameraFileInfo getFileInfo()
     {
         return (fileInfo);
     }
@@ -1,14 +1,16 @@
-package net.osdn.gokigen.gr2control.playback;
+package net.osdn.gokigen.gr2control.playback.detail;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.ProgressDialog;
 import android.content.ContentResolver;
@@ -47,14 +49,13 @@ import net.osdn.gokigen.gr2control.R;
 import net.osdn.gokigen.gr2control.camera.ICameraFileInfo;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadImageCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IDownloadLargeContentCallback;
+import net.osdn.gokigen.gr2control.camera.playback.IDownloadThumbnailImageCallback;
 import net.osdn.gokigen.gr2control.camera.playback.IPlaybackControl;
 import net.osdn.gokigen.gr2control.camera.playback.ProgressEvent;
 
-
 public class ImagePagerViewFragment extends Fragment
 {
     private final String TAG = this.toString();
-    //private final float IMAGE_RESIZE_FOR_GET_INFORMATION = 640.0f;
     private final String JPEG_SUFFIX = ".jpg";
     private final String RAW_SUFFIX = ".dng";
     private IPlaybackControl playbackControl;
@@ -66,11 +67,7 @@ public class ImagePagerViewFragment extends Fragment
        private ViewPager viewPager = null;
        private LruCache<String, Bitmap> imageCache =null;
 
-       private MyImageDownloader imageDownloader = null;
-       private MyMovieDownloader movieDownloader = null;
-
-
-    static ImagePagerViewFragment newInstance(@NonNull IPlaybackControl playbackControl, @NonNull List<ImageContentInfoEx> contentList, int contentIndex)
+    public static ImagePagerViewFragment newInstance(@NonNull IPlaybackControl playbackControl, @NonNull List<ImageContentInfoEx> contentList, int contentIndex)
        {
                ImagePagerViewFragment fragment = new ImagePagerViewFragment();
                fragment.setInterface(playbackControl);
@@ -86,6 +83,7 @@ public class ImagePagerViewFragment extends Fragment
        private void setContentList(@NonNull List<ImageContentInfoEx> contentList, int contentIndex)
        {
                this.contentList = contentList;
+               this.contentIndex = contentIndex;
        }
 
        @Override
@@ -101,11 +99,11 @@ public class ImagePagerViewFragment extends Fragment
        {
                layoutInflater = inflater;
                View view = layoutInflater.inflate(R.layout.fragment_image_pager_view, container, false);
-               viewPager = (ViewPager)view.findViewById(R.id.viewPager1);
+               viewPager = view.findViewById(R.id.viewPager1);
                viewPager.setAdapter(new ImagePagerAdapter());
                viewPager.addOnPageChangeListener(new ImagePageChangeListener());
                
-               return view;
+               return (view);
        }
 
        @Override
@@ -161,51 +159,37 @@ public class ImagePagerViewFragment extends Fragment
        {
                boolean doDownload = false;
         boolean getInformation = false;
-               float downloadSize = 0;
+               boolean isSmallSize = false;
         String specialSuffix = null;
         if ((item.getItemId() == R.id.action_get_information)||(item.getItemId() == R.id.action_get_information_raw))
         {
-            //downloadSize = OLYCamera.IMAGE_RESIZE_1024;
             getInformation = true;
-            doDownload = true;
         }
         else if ((item.getItemId() == R.id.action_download_original_size)||(item.getItemId() == R.id.action_download_original_size_raw))
         {
-                       //downloadSize = OLYCamera.IMAGE_RESIZE_NONE;
-                       doDownload = true;
-               }
-        else if ((item.getItemId() == R.id.action_download_2048x1536)||(item.getItemId() == R.id.action_download_2048x1536_raw))
-        {
-                       //downloadSize = OLYCamera.IMAGE_RESIZE_2048;
-                       doDownload = true;
-               }
-        else if ((item.getItemId() == R.id.action_download_1920x1440)||(item.getItemId() == R.id.action_download_1920x1440_raw))
-        {
-                       //downloadSize = OLYCamera.IMAGE_RESIZE_1920;
                        doDownload = true;
                }
-        else if ((item.getItemId() == R.id.action_download_1600x1200)||(item.getItemId() == R.id.action_download_1600x1200_raw))
+        else if ((item.getItemId() == R.id.action_download_640x480)||(item.getItemId() == R.id.action_download_640x480_raw))
         {
-                       //downloadSize = OLYCamera.IMAGE_RESIZE_1600;
-                       doDownload = true;
-               }
-        else if ((item.getItemId() == R.id.action_download_1024x768)||(item.getItemId() == R.id.action_download_1024x768_raw))
-        {
-                       //downloadSize = OLYCamera.IMAGE_RESIZE_1024;
-                       doDownload = true;
-               }
+            isSmallSize = true;
+            doDownload = true;
+        }
         else if (item.getItemId() == R.id.action_download_original_movie)
         {
-            //downloadSize = OLYCamera.IMAGE_RESIZE_NONE;
             doDownload = true;
         }
         else if (item.getItemId() == R.id.action_download_raw)
         {
             doDownload = true;
-            //downloadSize = OLYCamera.IMAGE_RESIZE_NONE;
             specialSuffix = RAW_SUFFIX;
                }
 
+               if (getInformation)
+        {
+            showFileInformation((contentList.get(contentIndex)).getFileInfo());
+        }
+
+        /*
                if (doDownload)
                {
                        try
@@ -225,10 +209,44 @@ public class ImagePagerViewFragment extends Fragment
                                e.printStackTrace();
                        }
                }
-               return super.onOptionsItemSelected(item);
+*/
+               return (super.onOptionsItemSelected(item));
        }
-       
-       @Override
+
+    private void showFileInformation(final ICameraFileInfo fileInfo)
+    {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                String message = "";
+                try {
+                    String model = fileInfo.getModel();
+                    String dateTime = "";
+                    Date date = fileInfo.getDatetime();
+                    if (date != null) {
+                        dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.US).format(date);
+                    }
+                    String path = fileInfo.getDirectoryPath() + "/" + fileInfo.getFilename();
+                    String shutter = fileInfo.getShutterSpeed();
+                    shutter = shutter.replace(".", "/");
+                    String aperture = fileInfo.getAperature();
+                    String iso = fileInfo.getIsoSensitivity();
+                    String expRev = fileInfo.getExpRev();
+
+                    message = path + "\r\n" + dateTime + "\r\n" + "- - - - - - - - - -\r\n  " + shutter + "  F" + aperture + " (" + expRev + ")" + " ISO" + iso + "\r\n" + "- - - - - - - - - -\r\n" + "  model : " + model + "\r\n";
+                }
+                catch (Exception e)
+                {
+                    e.printStackTrace();
+                }
+                presentMessage(getString(R.string.download_control_get_information_title), message);
+                System.gc();
+            }
+        });
+
+    }
+
+    @Override
        public void onResume()
     {
                super.onResume();
@@ -260,7 +278,6 @@ public class ImagePagerViewFragment extends Fragment
         }
        }
 
-       
        private class ImagePagerAdapter extends PagerAdapter
     {
 
@@ -316,23 +333,7 @@ public class ImagePagerViewFragment extends Fragment
                 ICameraFileInfo file = (contentList.get(contentIndex)).getFileInfo();
                 String path = file.getDirectoryPath() + "/" + file.getFilename();
 
-                /**
-                 try
-                 {
-                 // 試しにコンテンツ情報を取得してみる ... アートフィルターの設定情報はとれる
-                 Map<String, Object> content = camera.inquireContentInformation(path);
-                 for (String key : content.keySet())
-                 {
-                 Log.v(TAG, "INFO: " + key + " " + content.get(key).toString());
-                 }
-                 }
-                 catch (Exception e)
-                 {
-                 e.printStackTrace();
-                 }
-                 **/
-
-                AppCompatActivity activity = (AppCompatActivity)getActivity();
+                AppCompatActivity activity = (AppCompatActivity) getActivity();
                 if (activity != null)
                 {
                     ActionBar bar = activity.getSupportActionBar();
@@ -349,10 +350,27 @@ public class ImagePagerViewFragment extends Fragment
                 e.printStackTrace();
             }
                }
+       }
 
+       private void downloadImage(final int position, final ImageView view)
+       {
+               Thread thread = new Thread(new Runnable() {
+                       @Override
+                       public void run() {
+                               downloadImageImpl(position, view);
+                       }
+               });
+               try
+               {
+                       thread.start();
+               }
+               catch (Exception e)
+               {
+                       e.printStackTrace();
+               }
        }
 
-       private void downloadImage(int position, final ImageView view)
+       private void downloadImageImpl(int position, final ImageView view)
     {
         try
         {
@@ -360,16 +378,25 @@ public class ImagePagerViewFragment extends Fragment
             final String path = file.getDirectoryPath() + "/" + file.getFilename();
 
             // Get the cached image.
-            Bitmap bitmap = imageCache.get(path);
-            if (bitmap != null) {
-                if (view != null && viewPager.indexOfChild(view) > -1) {
-                    view.setImageBitmap(bitmap);
+            final Bitmap bitmap = imageCache.get(path);
+            if (bitmap != null)
+            {
+                if (view != null && viewPager.indexOfChild(view) > -1)
+                {
+                    runOnUiThread(new Runnable()
+                    {
+                        @Override
+                        public void run()
+                        {
+                            view.setImageBitmap(bitmap);
+                        }
+                    });
                 }
                 return;
             }
 
             // Download the image.
-            playbackControl.downloadContentScreennail(path, new IDownloadImageCallback() {
+            playbackControl.downloadContentScreennail(path, new IDownloadThumbnailImageCallback() {
                 @Override
                 public void onProgress(ProgressEvent e) {
                     // MARK: Do not use to cancel a downloading by progress handler.
@@ -379,10 +406,11 @@ public class ImagePagerViewFragment extends Fragment
                 }
 
                 @Override
-                public void onCompleted(final byte[] data, final Map<String, Object> metadata) {
+                               //public void onCompleted(final byte[] data, final Map<String, Object> metadata) {
+                public void onCompleted(final Bitmap bitmap, final Map<String, Object> metadata) {
                     // Cache the downloaded image.
 
-                    final Bitmap bitmap = createRotatedBitmap(data, metadata);
+                    //final Bitmap bitmap = createRotatedBitmap(data, metadata);
                     try {
                         if (bitmap == null)
                         {
@@ -436,18 +464,22 @@ public class ImagePagerViewFragment extends Fragment
      */
        public void saveImageWithDialog(final String filename, float downloadSize, boolean isGetInformationMode)
        {
-               if (filename.endsWith(JPEG_SUFFIX))
-               {
-                       // 静止画の取得
-                       imageDownloader = new MyImageDownloader(filename, downloadSize, isGetInformationMode);
-                       imageDownloader.startDownload();
-               }
-               else
-               {
-                       // 動画・RAWファイルの取得
-            movieDownloader = new MyMovieDownloader(filename);
-            movieDownloader.startDownload();
-               }
+           try
+        {
+            if (filename.endsWith(JPEG_SUFFIX)) {
+                // 静止画の取得
+                MyImageDownloader imageDownloader = new MyImageDownloader(filename, downloadSize, isGetInformationMode);
+                imageDownloader.startDownload();
+            } else {
+                // 動画・RAWファイルの取得
+                MyMovieDownloader movieDownloader = new MyMovieDownloader(filename);
+                movieDownloader.startDownload();
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
        }
 
 
@@ -471,7 +503,6 @@ public class ImagePagerViewFragment extends Fragment
                getActivity().runOnUiThread(action);
        }
        
-       
        private Bitmap createRotatedBitmap(byte[] data, Map<String, Object> metadata)
        {
                Bitmap bitmap;
@@ -647,13 +678,14 @@ public class ImagePagerViewFragment extends Fragment
                @Override
                public void onCompleted(byte[] bytes, Map<String, Object> map)
                {
+/*
             if (isGetInformation) {
                 // Exif情報をダイアログ表示して終わる
                 showExifInformation(bytes);
                 System.gc();
                 return;
             }
-
+*/
             final String directoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath() + "/" + getString(R.string.app_name2) + "/";
             final String filepath = new File(directoryPath.toLowerCase(), filename).getPath();
 
@@ -701,19 +733,23 @@ public class ImagePagerViewFragment extends Fragment
                        {
                                long now = System.currentTimeMillis();
                                ContentValues values = new ContentValues();
-                               ContentResolver resolver = getActivity().getContentResolver();
                                values.put(Images.Media.MIME_TYPE, "image/jpeg");
                                values.put(Images.Media.DATA, filepath);
                                values.put(Images.Media.DATE_ADDED, now);
                                values.put(Images.Media.DATE_TAKEN, now);
-                if ((hasGps)&&(latLong.length >= 2))
+                values.put(Images.Media.DATE_MODIFIED, now);
+                values.put(Images.Media.ORIENTATION, getRotationDegrees(bytes, map));
+                if (hasGps)
                 {
                     values.put(MediaStore.Images.Media.LATITUDE, latLong[0]);
                     values.put(MediaStore.Images.Media.LONGITUDE, latLong[1]);
                 }
-                               values.put(Images.Media.DATE_MODIFIED, now);
-                               values.put(Images.Media.ORIENTATION, getRotationDegrees(bytes, map));
-                               final Uri insertedImage = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+                Activity activity = getActivity();
+                if (activity != null)
+                {
+                    ContentResolver resolver = getActivity().getContentResolver();
+                    final Uri insertedImage = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
+                }
 
                                runOnUiThread(new Runnable() {
                                        @Override
@@ -809,6 +845,8 @@ public class ImagePagerViewFragment extends Fragment
             }
         }
 
+
+
         /**
          *   EXIF情報の表示 (ExifInterface を作って、表示クラスに渡す)
          *
index f18cf72..427f406 100644 (file)
         android:verticalSpacing="2dp" >
     </GridView>
 
-</LinearLayout>
\ No newline at end of file
+    <ProgressBar
+        android:id="@+id/progress_bar"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:visibility="gone"
+        />
+</LinearLayout>
index 39c92b4..a82d8ff 100644 (file)
@@ -26,5 +26,4 @@
         android:scaleType="centerCrop"
         android:src="@null"
         tools:ignore="ContentDescription" />
-
 </RelativeLayout>
\ No newline at end of file
index 5a00c20..5bf556b 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <view xmlns:android="http://schemas.android.com/apk/res/android"
-    class="jp.osdn.gokigen.aira01a.playback.ScalableImageView"
+    class="net.osdn.gokigen.gr2control.playback.detail.ScalableImageView"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
index 86b13c0..9fde3e3 100644 (file)
                        android:id="@+id/action_download_original_size"
                        compat:showAsAction="never"
                        android:title="@string/action_download_original_size"/>
-                   
-                   <item
-                       android:id="@+id/action_download_2048x1536"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_2048x1536"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1920x1440"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1920x1440"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1600x1200"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1600x1200"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1024x768"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1024x768"/>
+
+                       <item
+                               android:id="@+id/action_download_640x480"
+                               compat:showAsAction="never"
+                               android:title="@string/action_download_640x480"/>
 
                        <!--
                        <item
index dde32d2..69a6901 100644 (file)
                        android:id="@+id/action_download_original_size_raw"
                        compat:showAsAction="never"
                        android:title="@string/action_download_original_size"/>
-                   
-                   <item
-                       android:id="@+id/action_download_2048x1536_raw"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_2048x1536"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1920x1440_raw"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1920x1440"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1600x1200_raw"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1600x1200"/>
-                   
-                   <item
-                       android:id="@+id/action_download_1024x768_raw"
-                       compat:showAsAction="never"
-                       android:title="@string/action_download_1024x768"/>
+
+                       <item
+                               android:id="@+id/action_download_640x480_raw"
+                               compat:showAsAction="never"
+                               android:title="@string/action_download_640x480"/>
 
                        <!---->
                        <item
index af595a5..5274a0f 100644 (file)
@@ -64,6 +64,7 @@
     <string name="action_download_1920x1440">1920 x 1440</string>
     <string name="action_download_1600x1200">1600 x 1200</string>
     <string name="action_download_1024x768">1024 x 768</string>
+    <string name="action_download_640x480">Small Size</string>
     <string name="action_download_raw">RAW</string>
     <string name="action_delete_picture">Delete</string>