From c7ccd514adf7abd9757ca8208c5d6fa7ba579428 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 13 Nov 2015 02:18:10 +1300 Subject: [PATCH 01/21] Removed override @Override not allowed when implementing interface method --- .../main/java/fr/free/nrw/commons/upload/UploadService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java index 36090e390..222e38568 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java @@ -68,8 +68,7 @@ public class UploadService extends HandlerService { this.notificationFinishingTitle = notificationFinishingTitle; this.contribution = contribution; } - - @Override + public void onProgress(long transferred, long total) { Log.d("Commons", String.format("Uploaded %d of %d", transferred, total)); if(!notificationTitleChanged) { From 0e9737426d4d7cbf97359f756ef89e9bdbe909f2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Tue, 24 Nov 2015 19:05:15 +1300 Subject: [PATCH 02/21] Tidied up ShareActivity.java Var declarations at top, constructor and other methods below --- .../java/fr/free/nrw/commons/upload/ShareActivity.java | 8 ++++---- .../java/fr/free/nrw/commons/upload/UploadService.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 07339acde..cde78f273 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -30,10 +30,6 @@ public class ShareActivity private SingleUploadFragment shareView; private CategorizationFragment categorizationFragment; - public ShareActivity() { - super(WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE); - } - private CommonsApplication app; private String source; @@ -47,6 +43,10 @@ public class ShareActivity private UploadController uploadController; + public ShareActivity() { + super(WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE); + } + public void uploadActionInitiated(String title, String description) { Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG); startingToast.show(); diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java index 222e38568..388fa1c70 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadService.java @@ -68,7 +68,7 @@ public class UploadService extends HandlerService { this.notificationFinishingTitle = notificationFinishingTitle; this.contribution = contribution; } - + public void onProgress(long transferred, long total) { Log.d("Commons", String.format("Uploaded %d of %d", transferred, total)); if(!notificationTitleChanged) { From ec0fc3b01101cbd0e5b4ef4073e9f6c768984f4a Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Fri, 4 Dec 2015 19:39:14 +1300 Subject: [PATCH 03/21] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f63d4bf04..8aaabdd30 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,14 @@ Community-maintained app, independant from the Wikimedia Foundation. Volunteers **Note**: Currently uses a bunch of dependencies that are staged at `yuvi.in/blog/maven`. Will be migrated to either [Maven Central][4] or a Wikimedia staging server soon. -## Set Up IntelliJ for Commons Android App Development ## +## Set Up Android Studio or IntelliJ for Commons Android App Development ## ### Import and Compile Commons Android App ## -[Download IntelliJ][6] +[Download IntelliJ][6] or [Download Android Studio][7]. 1. Clone the repository. -2. Open IntelliJ. +2. Open IntelliJ/Android Studio. Ensure Maven integration plugin is enabled. 3. Import Project: File -> Import Project or @@ -96,3 +96,4 @@ Thumbnail images are not currently cached. (?) [4]: http://search.maven.org/ [5]: https://www.apache.org/licenses/LICENSE-2.0 [6]: http://www.jetbrains.com/idea/download/index.html +[7]: http://developer.android.com/sdk/index.html From acaea5dadfced2b98c3539ebaf0c7e98b86bba9b Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Fri, 4 Dec 2015 19:44:11 +1300 Subject: [PATCH 04/21] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8aaabdd30..bb84ca0bf 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,14 @@ Community-maintained app, independant from the Wikimedia Foundation. Volunteers **Note**: Currently uses a bunch of dependencies that are staged at `yuvi.in/blog/maven`. Will be migrated to either [Maven Central][4] or a Wikimedia staging server soon. -## Set Up Android Studio or IntelliJ for Commons Android App Development ## +## Set Up IntelliJ or Android Studio for Commons Android App Development ## ### Import and Compile Commons Android App ## [Download IntelliJ][6] or [Download Android Studio][7]. 1. Clone the repository. -2. Open IntelliJ/Android Studio. Ensure Maven integration plugin is enabled. +2. Open IntelliJ/Android Studio. Ensure Maven integration plugin is enabled (File > Settings > Plugins > Maven integration). 3. Import Project: File -> Import Project or From 99b986537f5914e7df8f29b2a2434ce3278e74ea Mon Sep 17 00:00:00 2001 From: misaochan Date: Tue, 15 Dec 2015 17:16:57 +1300 Subject: [PATCH 05/21] Attempt at fixing error in logcat E/ImageLoader(3260): Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{19b604c1 3260:fr.free.nrw.commons/u0a53} (pid=3260, uid=10053) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS --- commons/AndroidManifest.xml | 1 + .../free/nrw/commons/contributions/ContributionController.java | 1 + 2 files changed, 2 insertions(+) diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index 7fed5543f..a12ead2f6 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -17,6 +17,7 @@ + Date: Tue, 15 Dec 2015 20:01:10 +1300 Subject: [PATCH 06/21] Removed upload capability for easier debugging App doesn't actually upload files, so can submit same file over and over. Needed for debugging. Will restore upload functionality prior to release --- .../main/java/fr/free/nrw/commons/MediaWikiImageView.java | 6 +++--- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 1 + .../java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java b/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java index f733edcf3..b1b08e172 100644 --- a/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java +++ b/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java @@ -151,7 +151,7 @@ public class MediaWikiImageView extends ImageView { // from the network. ImageContainer newContainer = mImageLoader.get(mUrl, new ImageListener() { - @Override + public void onErrorResponse(final VolleyError error) { if(!tryOriginal) { post(new Runnable() { @@ -163,7 +163,7 @@ public class MediaWikiImageView extends ImageView { } - @Override + public void onResponse(final ImageContainer response, boolean isImmediate) { // If this was an immediate response that was delivered inside of a layout // pass do not set the image immediately as it will trigger a requestLayout @@ -171,7 +171,7 @@ public class MediaWikiImageView extends ImageView { // the main thread. if (isImmediate && isInLayoutPass) { post(new Runnable() { - @Override + public void run() { onResponse(response, false); } diff --git a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index e7b608938..9f29ab265 100644 --- a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -186,6 +186,7 @@ public class MediaDetailFragment extends SherlockFragment { @Override protected void onPreExecute() { extractor = new MediaDataExtractor(media.getFilename(), licenseList); + Log.i("Image", "Image name is " + media.getFilename()); } @Override diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 0826aef5f..58665dae2 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From ba5fb3bb559ede2f1feb314c48c2f13b8001032e Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 16 Dec 2015 17:31:52 +1300 Subject: [PATCH 07/21] Attempt at implementing exifInterface Modified ShareActivity to try and implement exifInterface on the image file. --- .../commons/media/MediaDetailFragment.java | 3 +- .../nrw/commons/upload/ShareActivity.java | 34 +++++++++++++++++-- .../nrw/commons/upload/UploadController.java | 1 + 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 9f29ab265..af31763bc 100644 --- a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -174,6 +174,7 @@ public class MediaDetailFragment extends SherlockFragment { MediaWikiImageView mwImage = (MediaWikiImageView)image; mwImage.setLoadingView(loadingProgress); //FIXME: Set this as an attribute mwImage.setMedia(media, loader); + Log.d("Volley", actualUrl); // FIXME: For transparent images @@ -186,7 +187,7 @@ public class MediaDetailFragment extends SherlockFragment { @Override protected void onPreExecute() { extractor = new MediaDataExtractor(media.getFilename(), licenseList); - Log.i("Image", "Image name is " + media.getFilename()); + } @Override diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index cde78f273..71173ed9f 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -1,12 +1,17 @@ package fr.free.nrw.commons.upload; import android.content.*; +import android.media.ExifInterface; import android.os.*; import com.nostra13.universalimageloader.core.ImageLoader; import android.net.*; +import android.provider.MediaStore; import android.support.v4.app.NavUtils; import com.actionbarsherlock.view.MenuItem; + +import android.util.Log; import android.widget.*; +import android.database.Cursor; import fr.free.nrw.commons.*; import fr.free.nrw.commons.modifications.CategoryModifier; @@ -19,6 +24,7 @@ import fr.free.nrw.commons.auth.*; import fr.free.nrw.commons.modifications.ModificationsContentProvider; import fr.free.nrw.commons.modifications.ModifierSequence; +import java.io.IOException; import java.util.ArrayList; @@ -34,9 +40,15 @@ public class ShareActivity private String source; private String mimeType; + private String mediaUriString; + private String mediaUriPath; + + private static final String TAG = "Image"; private Uri mediaUri; + private ExifInterface exif; + private Contribution contribution; private ImageView backgroundImageView; @@ -50,7 +62,7 @@ public class ShareActivity public void uploadActionInitiated(String title, String description) { Toast startingToast = Toast.makeText(getApplicationContext(), R.string.uploading_started, Toast.LENGTH_LONG); startingToast.show(); - uploadController.startUpload(title, mediaUri, description, mimeType, source, new UploadController.ContributionUploadProgress() { + uploadController.startUpload(title, mediaUri, description, mimeType, source, new UploadController.ContributionUploadProgress() { public void onUploadStarted(Contribution contribution) { ShareActivity.this.contribution = contribution; showPostUpload(); @@ -154,7 +166,6 @@ public class ShareActivity setContentView(R.layout.activity_share); app = (CommonsApplication)this.getApplicationContext(); - backgroundImageView = (ImageView)findViewById(R.id.backgroundImage); Intent intent = getIntent(); @@ -163,6 +174,9 @@ public class ShareActivity mediaUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); if(intent.hasExtra(UploadService.EXTRA_SOURCE)) { source = intent.getStringExtra(UploadService.EXTRA_SOURCE); + //Bundle bundle = intent.getExtras(); + //String filepath = bundle.getString("file_path"); + //Log.d(TAG, "Filepath: " + filepath); } else { source = Contribution.SOURCE_EXTERNAL; } @@ -170,7 +184,21 @@ public class ShareActivity mimeType = intent.getType(); } - ImageLoader.getInstance().displayImage(mediaUri.toString(), backgroundImageView); + mediaUriString = mediaUri.toString(); + Log.d(TAG, "Uri: " + mediaUriString); + + mediaUriPath = mediaUri.getPath(); + Log.d(TAG, "Path: " + mediaUriPath); + + try { + exif = new ExifInterface(mediaUriPath); + String latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); + Log.d("Image", "Latitude: " + latitude); + } catch (IOException e) { + e.printStackTrace(); + } + + ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); if(savedInstanceState != null) { contribution = savedInstanceState.getParcelable("contribution"); diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 58665dae2..ad0958616 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,6 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); + //temporarily disabled for debugging //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } From c5fd006dd501f768ac6700f0826ea62ec43695d7 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 16 Dec 2015 17:50:09 +1300 Subject: [PATCH 08/21] Successfully displayed latitude of image TODO: Tidy up code and put in coordinate conversion method --- .../nrw/commons/upload/ShareActivity.java | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 71173ed9f..1070b9477 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -5,6 +5,7 @@ import android.media.ExifInterface; import android.os.*; import com.nostra13.universalimageloader.core.ImageLoader; import android.net.*; +import android.provider.DocumentsContract; import android.provider.MediaStore; import android.support.v4.app.NavUtils; import com.actionbarsherlock.view.MenuItem; @@ -42,6 +43,7 @@ public class ShareActivity private String mimeType; private String mediaUriString; private String mediaUriPath; + private String mediaUriAbsPath; private static final String TAG = "Image"; @@ -188,10 +190,37 @@ public class ShareActivity Log.d(TAG, "Uri: " + mediaUriString); mediaUriPath = mediaUri.getPath(); - Log.d(TAG, "Path: " + mediaUriPath); + + // Will return "image:x*" + String wholeID = DocumentsContract.getDocumentId(mediaUri); + +// Split at colon, use second item in the array + String id = wholeID.split(":")[1]; + + String[] column = { MediaStore.Images.Media.DATA }; + +// where id is equal to + String sel = MediaStore.Images.Media._ID + "=?"; + + Cursor cursor = getContentResolver(). + query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, new String[]{ id }, null); + + String filePath = ""; + + int columnIndex = cursor.getColumnIndex(column[0]); + + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } + + cursor.close(); + + Log.d(TAG, "Path 1: " + mediaUriPath); + Log.d(TAG, "Path 2: " + filePath); try { - exif = new ExifInterface(mediaUriPath); + exif = new ExifInterface(filePath); String latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); Log.d("Image", "Latitude: " + latitude); } catch (IOException e) { From e74ead1655225ecc97445d581f663886bcd03dab Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 16 Dec 2015 18:18:45 +1300 Subject: [PATCH 09/21] Attempt at tidying code into a new class getContentResolver() method does not work --- .../nrw/commons/upload/ImageProcessing.java | 66 +++++++++++++++++++ .../nrw/commons/upload/ShareActivity.java | 39 ++--------- 2 files changed, 70 insertions(+), 35 deletions(-) create mode 100644 commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java new file mode 100644 index 000000000..2a491362f --- /dev/null +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -0,0 +1,66 @@ +package fr.free.nrw.commons.upload; + +import android.app.Activity; +import android.database.Cursor; +import android.media.ExifInterface; +import android.net.Uri; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.util.Log; + +import java.io.IOException; + + +/** + * Created by misao on 16-Dec-15. + */ +//Needs to extend Activity in order to call getContentResolver(). Might not be the best way? +public class ImageProcessing extends Activity{ + + private Uri uri; + private ExifInterface exif; + + public ImageProcessing(Uri uri){ + this.uri = uri; + } + + public String getFilePath(){ + String filePath =""; + // Will return "image:x*" + String wholeID = DocumentsContract.getDocumentId(uri); + + // Split at colon, use second item in the array + String id = wholeID.split(":")[1]; + String[] column = { MediaStore.Images.Media.DATA }; + + // where id is equal to + String sel = MediaStore.Images.Media._ID + "=?"; + Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, new String[]{id}, null); + + int columnIndex = cursor.getColumnIndex(column[0]); + + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } + cursor.close(); + + Log.d("Image", "File path: " + filePath); + return filePath; + } + + public String getLatitude(String filePath) { + String latitude = ""; + + try { + exif = new ExifInterface(filePath); + latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); + Log.d("Image", "Latitude: " + latitude); + + } catch (IOException e) { + e.printStackTrace(); + } + return latitude; + } + +} diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 1070b9477..e1cf2a8e5 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -42,8 +42,7 @@ public class ShareActivity private String source; private String mimeType; private String mediaUriString; - private String mediaUriPath; - private String mediaUriAbsPath; + private String filePath = ""; private static final String TAG = "Image"; @@ -189,43 +188,13 @@ public class ShareActivity mediaUriString = mediaUri.toString(); Log.d(TAG, "Uri: " + mediaUriString); - mediaUriPath = mediaUri.getPath(); + ImageProcessing imageObj = new ImageProcessing(mediaUri); + String filePath = imageObj.getFilePath(); + String latitude = imageObj.getLatitude(filePath); - // Will return "image:x*" - String wholeID = DocumentsContract.getDocumentId(mediaUri); -// Split at colon, use second item in the array - String id = wholeID.split(":")[1]; - String[] column = { MediaStore.Images.Media.DATA }; -// where id is equal to - String sel = MediaStore.Images.Media._ID + "=?"; - - Cursor cursor = getContentResolver(). - query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - column, sel, new String[]{ id }, null); - - String filePath = ""; - - int columnIndex = cursor.getColumnIndex(column[0]); - - if (cursor.moveToFirst()) { - filePath = cursor.getString(columnIndex); - } - - cursor.close(); - - Log.d(TAG, "Path 1: " + mediaUriPath); - Log.d(TAG, "Path 2: " + filePath); - - try { - exif = new ExifInterface(filePath); - String latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); - Log.d("Image", "Latitude: " + latitude); - } catch (IOException e) { - e.printStackTrace(); - } ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); From 966ff386cd5795d15896f7db24701e729a07a7dd Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 17 Dec 2015 17:35:24 +1300 Subject: [PATCH 10/21] Fixed refactor problem ImageProcessing class should work now. TODO: Add conversion method --- .../nrw/commons/upload/ImageProcessing.java | 21 ++++++++++++++----- .../nrw/commons/upload/ShareActivity.java | 5 +---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index 2a491362f..c63291ae8 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -1,6 +1,7 @@ package fr.free.nrw.commons.upload; import android.app.Activity; +import android.content.Context; import android.database.Cursor; import android.media.ExifInterface; import android.net.Uri; @@ -15,12 +16,14 @@ import java.io.IOException; * Created by misao on 16-Dec-15. */ //Needs to extend Activity in order to call getContentResolver(). Might not be the best way? -public class ImageProcessing extends Activity{ +public class ImageProcessing { private Uri uri; private ExifInterface exif; + private Context context; - public ImageProcessing(Uri uri){ + public ImageProcessing(Context context, Uri uri){ + this.context = context; this.uri = uri; } @@ -35,7 +38,7 @@ public class ImageProcessing extends Activity{ // where id is equal to String sel = MediaStore.Images.Media._ID + "=?"; - Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{id}, null); int columnIndex = cursor.getColumnIndex(column[0]); @@ -51,14 +54,22 @@ public class ImageProcessing extends Activity{ public String getLatitude(String filePath) { String latitude = ""; + String longitude = ""; + String latitude_ref = ""; + String longitude_ref = ""; try { exif = new ExifInterface(filePath); latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); - Log.d("Image", "Latitude: " + latitude); + latitude_ref = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); + longitude = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); + longitude_ref = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); + + Log.d("Image", "Latitude: " + latitude + " " + latitude_ref); + Log.d("Image", "Longitude: " + longitude + " " + longitude_ref); } catch (IOException e) { - e.printStackTrace(); + Log.w("Image", e); } return latitude; } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index e1cf2a8e5..fd4ce3fca 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -175,9 +175,6 @@ public class ShareActivity mediaUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); if(intent.hasExtra(UploadService.EXTRA_SOURCE)) { source = intent.getStringExtra(UploadService.EXTRA_SOURCE); - //Bundle bundle = intent.getExtras(); - //String filepath = bundle.getString("file_path"); - //Log.d(TAG, "Filepath: " + filepath); } else { source = Contribution.SOURCE_EXTERNAL; } @@ -188,7 +185,7 @@ public class ShareActivity mediaUriString = mediaUri.toString(); Log.d(TAG, "Uri: " + mediaUriString); - ImageProcessing imageObj = new ImageProcessing(mediaUri); + ImageProcessing imageObj = new ImageProcessing(getApplicationContext(), mediaUri); String filePath = imageObj.getFilePath(); String latitude = imageObj.getLatitude(filePath); From 204115de44b9b1b66b528847abf78e987dbfef1d Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 17 Dec 2015 19:10:05 +1300 Subject: [PATCH 11/21] Minor fixes --- .../main/java/fr/free/nrw/commons/upload/ImageProcessing.java | 2 +- .../main/java/fr/free/nrw/commons/upload/ShareActivity.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index c63291ae8..aad2b9508 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -52,7 +52,7 @@ public class ImageProcessing { return filePath; } - public String getLatitude(String filePath) { + public String getCoords(String filePath) { String latitude = ""; String longitude = ""; String latitude_ref = ""; diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index fd4ce3fca..963953517 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -185,9 +185,9 @@ public class ShareActivity mediaUriString = mediaUri.toString(); Log.d(TAG, "Uri: " + mediaUriString); - ImageProcessing imageObj = new ImageProcessing(getApplicationContext(), mediaUri); + ImageProcessing imageObj = new ImageProcessing(this, mediaUri); String filePath = imageObj.getFilePath(); - String latitude = imageObj.getLatitude(filePath); + String latitude = imageObj.getCoords(filePath); From 131b9815afe9ccb37300cc8ecd5a087507f40496 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 17 Dec 2015 19:33:57 +1300 Subject: [PATCH 12/21] Minor fixes 2 --- .../java/fr/free/nrw/commons/upload/ImageProcessing.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index aad2b9508..c28e99760 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.upload; -import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.media.ExifInterface; @@ -15,11 +14,9 @@ import java.io.IOException; /** * Created by misao on 16-Dec-15. */ -//Needs to extend Activity in order to call getContentResolver(). Might not be the best way? public class ImageProcessing { private Uri uri; - private ExifInterface exif; private Context context; public ImageProcessing(Context context, Uri uri){ @@ -52,11 +49,13 @@ public class ImageProcessing { return filePath; } + public String getCoords(String filePath) { String latitude = ""; String longitude = ""; String latitude_ref = ""; String longitude_ref = ""; + ExifInterface exif; try { exif = new ExifInterface(filePath); From 7804546ae39cbca22d5e6382b7a22c980019eb22 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 13:39:06 +1300 Subject: [PATCH 13/21] Added decimal coord conversion --- .../nrw/commons/upload/ImageProcessing.java | 57 ++++++++++++++++++- .../nrw/commons/upload/ShareActivity.java | 6 +- 2 files changed, 56 insertions(+), 7 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index c28e99760..2f7212e66 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -24,6 +24,7 @@ public class ImageProcessing { this.uri = uri; } + //Gets file path of image from its Uri public String getFilePath(){ String filePath =""; // Will return "image:x*" @@ -49,13 +50,15 @@ public class ImageProcessing { return filePath; } - + //Extract GPS coords of image public String getCoords(String filePath) { + + ExifInterface exif; String latitude = ""; String longitude = ""; String latitude_ref = ""; String longitude_ref = ""; - ExifInterface exif; + String decimalCoords = ""; try { exif = new ExifInterface(filePath); @@ -67,10 +70,58 @@ public class ImageProcessing { Log.d("Image", "Latitude: " + latitude + " " + latitude_ref); Log.d("Image", "Longitude: " + longitude + " " + longitude_ref); + decimalCoords = getDecimalCoords(latitude, latitude_ref, longitude, longitude_ref); + } catch (IOException e) { Log.w("Image", e); } - return latitude; + return decimalCoords; + } + + //Converts format of coords into decimal coords as required by API for next step + private String getDecimalCoords(String latitude, String latitude_ref, String longitude, String longitude_ref) { + + Float decLatitude, decLongitude; + + if(latitude_ref.equals("N")){ + decLatitude = convertToDegree(latitude); + } + else{ + decLatitude = 0 - convertToDegree(latitude); + } + + if(longitude_ref.equals("E")){ + decLongitude = convertToDegree(longitude); + } + else{ + decLongitude = 0 - convertToDegree(longitude); + } + + return (String.valueOf(decLatitude) + ", " + String.valueOf(decLongitude)); + } + + private Float convertToDegree(String stringDMS){ + Float result; + String[] DMS = stringDMS.split(",", 3); + + String[] stringD = DMS[0].split("/", 2); + Double D0 = new Double(stringD[0]); + Double D1 = new Double(stringD[1]); + Double FloatD = D0/D1; + + String[] stringM = DMS[1].split("/", 2); + Double M0 = new Double(stringM[0]); + Double M1 = new Double(stringM[1]); + Double FloatM = M0/M1; + + String[] stringS = DMS[2].split("/", 2); + Double S0 = new Double(stringS[0]); + Double S1 = new Double(stringS[1]); + Double FloatS = S0/S1; + + result = new Float(FloatD + (FloatM/60) + (FloatS/3600)); + + return result; } } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 963953517..7292d2c0e 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -187,10 +187,8 @@ public class ShareActivity ImageProcessing imageObj = new ImageProcessing(this, mediaUri); String filePath = imageObj.getFilePath(); - String latitude = imageObj.getCoords(filePath); - - - + String coords = imageObj.getCoords(filePath); + Log.d(TAG, "Coords of image: " + coords); ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); From 5a4251fe551efcffa1c84fb3e6e4c75b9e7cad5b Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 14:53:51 +1300 Subject: [PATCH 14/21] Fixed minor issues --- .../java/fr/free/nrw/commons/MediaWikiImageView.java | 6 +++--- .../fr/free/nrw/commons/media/MediaDetailFragment.java | 1 - .../java/fr/free/nrw/commons/upload/ImageProcessing.java | 9 ++++----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java b/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java index b1b08e172..f733edcf3 100644 --- a/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java +++ b/commons/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java @@ -151,7 +151,7 @@ public class MediaWikiImageView extends ImageView { // from the network. ImageContainer newContainer = mImageLoader.get(mUrl, new ImageListener() { - + @Override public void onErrorResponse(final VolleyError error) { if(!tryOriginal) { post(new Runnable() { @@ -163,7 +163,7 @@ public class MediaWikiImageView extends ImageView { } - + @Override public void onResponse(final ImageContainer response, boolean isImmediate) { // If this was an immediate response that was delivered inside of a layout // pass do not set the image immediately as it will trigger a requestLayout @@ -171,7 +171,7 @@ public class MediaWikiImageView extends ImageView { // the main thread. if (isImmediate && isInLayoutPass) { post(new Runnable() { - + @Override public void run() { onResponse(response, false); } diff --git a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index af31763bc..b6424d728 100644 --- a/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -187,7 +187,6 @@ public class MediaDetailFragment extends SherlockFragment { @Override protected void onPreExecute() { extractor = new MediaDataExtractor(media.getFilename(), licenseList); - } @Override diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index 2f7212e66..60b36aced 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -11,9 +11,6 @@ import android.util.Log; import java.io.IOException; -/** - * Created by misao on 16-Dec-15. - */ public class ImageProcessing { private Uri uri; @@ -23,8 +20,10 @@ public class ImageProcessing { this.context = context; this.uri = uri; } - - //Gets file path of image from its Uri + /** + * Gets file path of image from its Uri + * May return null + */ public String getFilePath(){ String filePath =""; // Will return "image:x*" From 3ffcb8fd575d5ebbf2c2d73720a31f470484d940 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 15:21:00 +1300 Subject: [PATCH 15/21] Converted Floats and Doubles to double where possible --- .../nrw/commons/upload/ImageProcessing.java | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index 60b36aced..bd762e9d7 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -80,7 +80,7 @@ public class ImageProcessing { //Converts format of coords into decimal coords as required by API for next step private String getDecimalCoords(String latitude, String latitude_ref, String longitude, String longitude_ref) { - Float decLatitude, decLongitude; + double decLatitude, decLongitude; if(latitude_ref.equals("N")){ decLatitude = convertToDegree(latitude); @@ -99,27 +99,26 @@ public class ImageProcessing { return (String.valueOf(decLatitude) + ", " + String.valueOf(decLongitude)); } - private Float convertToDegree(String stringDMS){ - Float result; + private double convertToDegree(String stringDMS){ + double result; String[] DMS = stringDMS.split(",", 3); String[] stringD = DMS[0].split("/", 2); - Double D0 = new Double(stringD[0]); - Double D1 = new Double(stringD[1]); - Double FloatD = D0/D1; + double d0 = new Double(stringD[0]); + double d1 = new Double(stringD[1]); + double degrees = d0/d1; String[] stringM = DMS[1].split("/", 2); - Double M0 = new Double(stringM[0]); - Double M1 = new Double(stringM[1]); - Double FloatM = M0/M1; + double m0 = new Double(stringM[0]); + double m1 = new Double(stringM[1]); + double minutes = m0/m1; String[] stringS = DMS[2].split("/", 2); - Double S0 = new Double(stringS[0]); - Double S1 = new Double(stringS[1]); - Double FloatS = S0/S1; - - result = new Float(FloatD + (FloatM/60) + (FloatS/3600)); + double s0 = new Double(stringS[0]); + double s1 = new Double(stringS[1]); + double seconds = s0/s1; + result = degrees + (minutes/60) + (seconds/3600); return result; } From 875e1556f7b5a53d2b9d34444c0f82a1e9b931d0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 15:25:16 +1300 Subject: [PATCH 16/21] More double-related fixes --- .../fr/free/nrw/commons/upload/ImageProcessing.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index bd762e9d7..21562ff6e 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -104,18 +104,18 @@ public class ImageProcessing { String[] DMS = stringDMS.split(",", 3); String[] stringD = DMS[0].split("/", 2); - double d0 = new Double(stringD[0]); - double d1 = new Double(stringD[1]); + double d0 = Double.parseDouble(stringD[0]); + double d1 = Double.parseDouble(stringD[1]); double degrees = d0/d1; String[] stringM = DMS[1].split("/", 2); - double m0 = new Double(stringM[0]); - double m1 = new Double(stringM[1]); + double m0 = Double.parseDouble(stringM[0]); + double m1 = Double.parseDouble(stringM[1]); double minutes = m0/m1; String[] stringS = DMS[2].split("/", 2); - double s0 = new Double(stringS[0]); - double s1 = new Double(stringS[1]); + double s0 = Double.parseDouble(stringS[0]); + double s1 = Double.parseDouble(stringS[1]); double seconds = s0/s1; result = degrees + (minutes/60) + (seconds/3600); From 8f724e461eb45ae24e9ba77af296723d8d865def Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 15:33:25 +1300 Subject: [PATCH 17/21] Altered coord string to format required by API --- .../java/fr/free/nrw/commons/upload/ImageProcessing.java | 2 +- .../main/java/fr/free/nrw/commons/upload/ShareActivity.java | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java index 21562ff6e..9689e19ae 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java @@ -96,7 +96,7 @@ public class ImageProcessing { decLongitude = 0 - convertToDegree(longitude); } - return (String.valueOf(decLatitude) + ", " + String.valueOf(decLongitude)); + return (String.valueOf(decLatitude) + "|" + String.valueOf(decLongitude)); } private double convertToDegree(String stringDMS){ diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 7292d2c0e..ca865a2bb 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -44,8 +44,6 @@ public class ShareActivity private String mediaUriString; private String filePath = ""; - private static final String TAG = "Image"; - private Uri mediaUri; private ExifInterface exif; @@ -183,12 +181,12 @@ public class ShareActivity } mediaUriString = mediaUri.toString(); - Log.d(TAG, "Uri: " + mediaUriString); + Log.d("Image", "Uri: " + mediaUriString); ImageProcessing imageObj = new ImageProcessing(this, mediaUri); String filePath = imageObj.getFilePath(); String coords = imageObj.getCoords(filePath); - Log.d(TAG, "Coords of image: " + coords); + Log.d("Image", "Coords of image: " + coords); ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); From 87b23b8494e931575064e0e578a4677e3798bab6 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 15:43:54 +1300 Subject: [PATCH 18/21] Final changes Re-enabled uploading code (previously disabled for debugging purposes) --- .../main/java/fr/free/nrw/commons/upload/UploadController.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index ad0958616..0826aef5f 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,8 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - //temporarily disabled for debugging - //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From ac834809150b6c4fc91c2a83c3572e6eb5338a55 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 16:21:20 +1300 Subject: [PATCH 19/21] Refactored to put URI conversions in its own class Instead of lumping it with GPS extraction code --- ...ImageProcessing.java => GPSExtractor.java} | 45 +++---------------- .../nrw/commons/upload/ShareActivity.java | 16 +++---- .../nrw/commons/upload/UploadController.java | 2 +- 3 files changed, 11 insertions(+), 52 deletions(-) rename commons/src/main/java/fr/free/nrw/commons/upload/{ImageProcessing.java => GPSExtractor.java} (66%) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java similarity index 66% rename from commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java rename to commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java index 9689e19ae..d8c6b62e7 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ImageProcessing.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java @@ -1,56 +1,21 @@ package fr.free.nrw.commons.upload; -import android.content.Context; -import android.database.Cursor; import android.media.ExifInterface; -import android.net.Uri; -import android.provider.DocumentsContract; -import android.provider.MediaStore; import android.util.Log; import java.io.IOException; -public class ImageProcessing { +public class GPSExtractor { - private Uri uri; - private Context context; + private String filePath; - public ImageProcessing(Context context, Uri uri){ - this.context = context; - this.uri = uri; - } - /** - * Gets file path of image from its Uri - * May return null - */ - public String getFilePath(){ - String filePath =""; - // Will return "image:x*" - String wholeID = DocumentsContract.getDocumentId(uri); - - // Split at colon, use second item in the array - String id = wholeID.split(":")[1]; - String[] column = { MediaStore.Images.Media.DATA }; - - // where id is equal to - String sel = MediaStore.Images.Media._ID + "=?"; - Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - column, sel, new String[]{id}, null); - - int columnIndex = cursor.getColumnIndex(column[0]); - - if (cursor.moveToFirst()) { - filePath = cursor.getString(columnIndex); - } - cursor.close(); - - Log.d("Image", "File path: " + filePath); - return filePath; + public GPSExtractor(String filePath){ + this.filePath = filePath; } //Extract GPS coords of image - public String getCoords(String filePath) { + public String getCoords() { ExifInterface exif; String latitude = ""; diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index ca865a2bb..5ccc55cf8 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -1,18 +1,14 @@ package fr.free.nrw.commons.upload; import android.content.*; -import android.media.ExifInterface; import android.os.*; import com.nostra13.universalimageloader.core.ImageLoader; import android.net.*; -import android.provider.DocumentsContract; -import android.provider.MediaStore; import android.support.v4.app.NavUtils; import com.actionbarsherlock.view.MenuItem; import android.util.Log; import android.widget.*; -import android.database.Cursor; import fr.free.nrw.commons.*; import fr.free.nrw.commons.modifications.CategoryModifier; @@ -25,7 +21,6 @@ import fr.free.nrw.commons.auth.*; import fr.free.nrw.commons.modifications.ModificationsContentProvider; import fr.free.nrw.commons.modifications.ModifierSequence; -import java.io.IOException; import java.util.ArrayList; @@ -42,12 +37,9 @@ public class ShareActivity private String source; private String mimeType; private String mediaUriString; - private String filePath = ""; private Uri mediaUri; - private ExifInterface exif; - private Contribution contribution; private ImageView backgroundImageView; @@ -183,9 +175,11 @@ public class ShareActivity mediaUriString = mediaUri.toString(); Log.d("Image", "Uri: " + mediaUriString); - ImageProcessing imageObj = new ImageProcessing(this, mediaUri); - String filePath = imageObj.getFilePath(); - String coords = imageObj.getCoords(filePath); + FilePathConverter uriObj = new FilePathConverter(this, mediaUri); + String filePath = uriObj.getFilePath(); + + GPSExtractor imageObj = new GPSExtractor(filePath); + String coords = imageObj.getCoords(); Log.d("Image", "Coords of image: " + coords); diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 0826aef5f..58665dae2 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From b16032eb84b664682ce217fa32be0220c0d4c4ea Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 18 Dec 2015 16:21:59 +1300 Subject: [PATCH 20/21] Adding FilePathConverter class (Dunno why this wasn't included in previous commit...) --- .../nrw/commons/upload/FilePathConverter.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java new file mode 100644 index 000000000..f8fff7a8a --- /dev/null +++ b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java @@ -0,0 +1,49 @@ +package fr.free.nrw.commons.upload; + + +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.util.Log; + +public class FilePathConverter { + + private Uri uri; + private Context context; + + public FilePathConverter(Context context, Uri uri) { + this.context = context; + this.uri = uri; + } + + /** + * Gets file path of image from its Uri + * May return null + */ + public String getFilePath(){ + String filePath =""; + // Will return "image:x*" + String wholeID = DocumentsContract.getDocumentId(uri); + + // Split at colon, use second item in the array + String id = wholeID.split(":")[1]; + String[] column = { MediaStore.Images.Media.DATA }; + + // where id is equal to + String sel = MediaStore.Images.Media._ID + "=?"; + Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, new String[]{id}, null); + + int columnIndex = cursor.getColumnIndex(column[0]); + + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } + cursor.close(); + + Log.d("Image", "File path: " + filePath); + return filePath; + } +} From ee2eb417f4d9c00e05c6521a57ca88a24179e60c Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 19 Dec 2015 00:30:58 +1300 Subject: [PATCH 21/21] Final fixes --- commons/AndroidManifest.xml | 1 - .../main/java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index a12ead2f6..7fed5543f 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -17,7 +17,6 @@ -