diff --git a/plant_tracker-release.apk b/plant_tracker-release.apk index fdfb6e5..79db65c 100644 Binary files a/plant_tracker-release.apk and b/plant_tracker-release.apk differ diff --git a/plant_tracker/build.gradle b/plant_tracker/build.gradle index 085d1c7..4e0248c 100644 --- a/plant_tracker/build.gradle +++ b/plant_tracker/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' android { compileSdkVersion 27 - buildToolsVersion '27.0.2' defaultConfig { applicationId "com.nonsense.planttracker" minSdkVersion 24 @@ -19,7 +18,7 @@ android { } debug { - applicationIdSuffix ".debug" +// applicationIdSuffix ".debug" debuggable true } } diff --git a/plant_tracker/src/main/AndroidManifest.xml b/plant_tracker/src/main/AndroidManifest.xml index ffe2a75..884cc16 100644 --- a/plant_tracker/src/main/AndroidManifest.xml +++ b/plant_tracker/src/main/AndroidManifest.xml @@ -2,11 +2,7 @@ - - - - - + @@ -30,7 +26,7 @@ availableGroups; - private ArrayList mImages = new ArrayList<>(); + private Uri photoURI; + private ArrayList images = new ArrayList<>(); @SuppressWarnings("unchecked") @@ -439,15 +433,16 @@ protected void onActivityResult(int requestCode, int resultCode, Intent returned int selectedItems = returnedIntent.getClipData().getItemCount(); for(int x = 0; x < selectedItems; x++) { - Uri selected = returnedIntent.getClipData().getItemAt(x).getUri(); - File f = new File(selected.getPath()); - String filePath = getExternalFilesDir("camera") + "/" + f.getName() + - ".jpg"; - Log.d("SELECTED_URI_FOO", "Gallery Image Selected: " + filePath); try { + Uri selected = returnedIntent.getClipData().getItemAt(x).getUri(); + File f = new File(selected.getPath()); + String filePath = + getExternalFilesDir(AndroidConstants.PATH_TRACKER_IMAGES) + + "/" + f.getName() + ".jpg"; + InputStream is = getContentResolver().openInputStream(selected); Utility.copyUriToLocation(is, filePath); - mImages.add(filePath); + images.add(filePath); } catch (Exception e) { e.printStackTrace(); @@ -458,23 +453,18 @@ protected void onActivityResult(int requestCode, int resultCode, Intent returned case AndroidConstants.ACTIVITY_PLANT_CAM: if (resultCode == -1) { - mImages.add(photoURI.getPath()); + File f = new File(photoURI.getPath()); + String path = getExternalFilesDir(AndroidConstants.PATH_TRACKER_IMAGES) + "/" + + f.getName(); + images.add(path); dispatchTakePictureIntent(); } break; - -// case AndroidConstants.ACTIVITY_PLANT_CAM: -// if (resultCode == Activity.RESULT_OK) { -// ArrayList selectedFiles = (ArrayList)returnedIntent. -// getSerializableExtra(AndroidConstants.INTENTKEY_SELECTED_FILES); -// -// mImages.addAll(selectedFiles); -// } -// break; } } private void dispatchTakePictureIntent() { + //TODO ask for permission to use camera, otherwise we just get an exception thrown about not having permissions! Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // Ensure that there's a camera activity to handle the intent if (takePictureIntent.resolveActivity(getPackageManager()) != null) { @@ -488,36 +478,28 @@ private void dispatchTakePictureIntent() { } // Continue only if the File was successfully created if (photoFile != null) { + String path = getApplicationContext().getPackageName(); photoURI = FileProvider.getUriForFile(this, - "com.nonsense.planttracker.debug.fileprovider", - photoFile); + path + ".fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, AndroidConstants.ACTIVITY_PLANT_CAM); } } } - private Uri photoURI; - private File createImageFile() throws IOException { // Create an image file name String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; - File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); - File image = File.createTempFile( - imageFileName, /* prefix */ - ".jpg", /* suffix */ - storageDir /* directory */ - ); - - // Save a file: path for use with ACTION_VIEW intents - //mCurrentPhotoPath = image.getAbsolutePath(); + File storageDir = getExternalFilesDir(AndroidConstants.PATH_TRACKER_IMAGES); + File image = File.createTempFile(imageFileName,".jpg", storageDir); + return image; } private void cancelActivity() { if (record.images != null) { - for(String s : mImages) { + for(String s : images) { File f = new File(s); f.delete(); } @@ -542,7 +524,7 @@ private void endActivity() { retInt.putExtra(AndroidConstants.INTENTKEY_GENERIC_RECORD, record); retInt.putExtra(AndroidConstants.INTENTKEY_APPLY_TO_GROUP, applyToGroup); retInt.putExtra(AndroidConstants.INTENTKEY_SELECTED_GROUP, selectedGroup); - retInt.putExtra(AndroidConstants.INTENTKEY_SELECTED_FILES, mImages); + retInt.putExtra(AndroidConstants.INTENTKEY_SELECTED_FILES, images); setResult(Activity.RESULT_OK, retInt); finish(); diff --git a/plant_tracker/src/main/java/com/nonsense/planttracker/android/activities/PlantTrackerUi.java b/plant_tracker/src/main/java/com/nonsense/planttracker/android/activities/PlantTrackerUi.java index 34faa35..0c4e792 100644 --- a/plant_tracker/src/main/java/com/nonsense/planttracker/android/activities/PlantTrackerUi.java +++ b/plant_tracker/src/main/java/com/nonsense/planttracker/android/activities/PlantTrackerUi.java @@ -818,9 +818,9 @@ public boolean onNavigationItemSelected(MenuItem item) { displayOperationInProgressDialog(PlantTrackerUi.this, "Export"); ArrayList files = new ArrayList<>(); - files.add(getExternalFilesDir("settings").getPath()); - files.add(getExternalFilesDir("plants").getPath()); - files.add(getExternalFilesDir("camera").getPath()); + files.add(getExternalFilesDir(AndroidConstants.PATH_TRACKER_SETTINGS).getPath()); + files.add(getExternalFilesDir(AndroidConstants.PATH_TRACKER_DATA).getPath()); + files.add(getExternalFilesDir(AndroidConstants.PATH_TRACKER_IMAGES).getPath()); Zipper.compressTrackerData(files, getExternalFilesDir("archive").getPath() + @@ -833,7 +833,6 @@ public boolean onNavigationItemSelected(MenuItem item) { // Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // intent.setType("application/zip"); // startActivityForResult(intent, AndroidConstants.ACTIVITY_IMPORT_SELECT); - dispatchTakePictureIntent(); break; @@ -874,51 +873,6 @@ public boolean onNavigationItemSelected(MenuItem item) { return true; } - static final int REQUEST_IMAGE_CAPTURE = 98; - - String mCurrentPhotoPath; - - private void dispatchTakePictureIntent() { - Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - // Ensure that there's a camera activity to handle the intent - if (takePictureIntent.resolveActivity(getPackageManager()) != null) { - // Create the File where the photo should go - File photoFile = null; - try { - photoFile = createImageFile(); - } catch (IOException ex) { - // Error occurred while creating the File - ex.printStackTrace(); - } - // Continue only if the File was successfully created - if (photoFile != null) { - photoURI = FileProvider.getUriForFile(this, - "com.nonsense.planttracker.debug.fileprovider", - photoFile); - takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); - startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); - } - } - } - - private Uri photoURI; - - private File createImageFile() throws IOException { - // Create an image file name - String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); - String imageFileName = "JPEG_" + timeStamp + "_"; - File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); - File image = File.createTempFile( - imageFileName, /* prefix */ - ".jpg", /* suffix */ - storageDir /* directory */ - ); - - // Save a file: path for use with ACTION_VIEW intents - mCurrentPhotoPath = image.getAbsolutePath(); - return image; - } - // Individual plant menu @Override public boolean onPrepareOptionsMenu(Menu menu) { @@ -1074,7 +1028,7 @@ private void presentGenericEventDialog(String code, String displayName, final in TabHost.TabSpec attachImagesTab = tabs.newTabSpec("Tab4"); attachImagesTab.setIndicator("Attach Images"); attachImagesTab.setContent(R.id.tab4); - tabs.addTab(attachImagesTab); +// tabs.addTab(attachImagesTab); tabs.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override @@ -1428,24 +1382,6 @@ public void onClick(View view) { protected void onActivityResult(int requestCode, int resultCode, Intent returnedIntent) { super.onActivityResult(requestCode, resultCode, returnedIntent); switch (requestCode) { - - case REQUEST_IMAGE_CAPTURE: - if (resultCode == -1) { - //TODO add image to list of images captured for session - mUriPaths.add(photoURI.getPath()); - dispatchTakePictureIntent(); - } - else { - if (mUriPaths.size() > 0) { - for(String path : mUriPaths) { - Log.d("Saved image paths", "Path: " + path); - } - - mUriPaths.clear(); - } - } - break; - case AndroidConstants.ACTIVITY_GENERIC_RECORD: if (resultCode == Activity.RESULT_OK) { GenericRecord record = (GenericRecord) returnedIntent.getSerializableExtra( diff --git a/plant_tracker/src/main/java/com/nonsense/planttracker/tracker/impl/PlantTracker.java b/plant_tracker/src/main/java/com/nonsense/planttracker/tracker/impl/PlantTracker.java index 0de099f..8dcaa86 100644 --- a/plant_tracker/src/main/java/com/nonsense/planttracker/tracker/impl/PlantTracker.java +++ b/plant_tracker/src/main/java/com/nonsense/planttracker/tracker/impl/PlantTracker.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import com.nonsense.planttracker.android.AndroidConstants; import com.nonsense.planttracker.tracker.exceptions.PlantNotFoundException; import com.nonsense.planttracker.tracker.impl.actions.PlantAction; import com.nonsense.planttracker.tracker.interf.IPlantTrackerListener; @@ -43,7 +44,7 @@ public class PlantTracker implements IPlantUpdateListener, ISettingsChangedListe public PlantTracker() { - this("plants/"); + this(AndroidConstants.PATH_TRACKER_DATA); } public PlantTracker(String plantFolderPath) { @@ -218,9 +219,6 @@ public void savePlant(Plant p) { BufferedWriter bw = new BufferedWriter(new FileWriter(filePath)); Gson g = new Gson(); String json = g.toJson(p.getPlantData()); - - System.out.println("plant json: " + json); - bw.write(json); bw.close(); } catch (Exception e) { diff --git a/plant_tracker/src/main/res/xml/provider_paths.xml b/plant_tracker/src/main/res/xml/provider_paths.xml index d5e7df7..9e4e1ad 100644 --- a/plant_tracker/src/main/res/xml/provider_paths.xml +++ b/plant_tracker/src/main/res/xml/provider_paths.xml @@ -1,7 +1,5 @@ - - - + \ No newline at end of file