diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 8b07640..b90f28e 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -92,9 +92,12 @@ import org.osmdroid.views.overlay.OverlayItem; import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -148,7 +151,9 @@ public static SimpleDateFormat df_full; private static Resources res; + private static Context context; private FloatingActionButton fab; + private static String currentImagePath; private static DatabaseHandler dbHandler; private static PoiHandler poiHandler; @@ -203,6 +208,7 @@ setContentView(R.layout.activity_main); res = getResources(); + context = getApplicationContext(); pathMarkers = new ArrayList<>(); cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); @@ -827,6 +833,17 @@ return name; } + public static File createImageFile() throws IOException { + String ts = new SimpleDateFormat("yyyMMdd_HHmmss").format(new Date()); + String fileName = "JPEG_" + ts + "_"; + File dir = context.getExternalFilesDir(null); + File image = File.createTempFile(fileName, + ".jpg", + dir); + currentImagePath = image.getAbsolutePath(); + return image; + } + public static Drawable convertByteArrayToDrawable(byte[] b, float scaleTo) { if(scaleTo <= 0) return new BitmapDrawable(res, BitmapFactory.decodeByteArray(b, 0, b.length)); Bitmap bitmap = new BitmapDrawable(res, BitmapFactory.decodeByteArray(b, 0, b.length)).getBitmap(); @@ -971,7 +988,6 @@ @Override public void onLocationUpdate(Location location) { - Log.d(TAG, "isInteractive? " + pm.isInteractive()); if(mLocation != null && pm.isInteractive()) { Location oldLocation = new Location(mLocation); long currentTime = System.currentTimeMillis(); @@ -1024,7 +1040,10 @@ break; case RequestCodes.TAKE_ENDANGERED_IMAGE: if(resultCode == RESULT_OK) { - AddBiotaDialog.addImage((Bitmap) data.getExtras().get("data")); + BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); + bitmapOptions.inJustDecodeBounds = false; + Bitmap b = BitmapFactory.decodeFile(currentImagePath, bitmapOptions); + AddBiotaDialog.addImage(b); } break; } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java index a245a24..ab91e52 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/adapters/EndangeredListAdapter.java @@ -37,6 +37,8 @@ import android.widget.LinearLayout; import android.widget.TextView; +import java.io.File; +import java.io.IOException; import java.util.List; import de.apps4ics.mountainnavigation.MainActivity; @@ -126,7 +128,18 @@ imagePosition = position; currentHolder = holder; Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - context.startActivityForResult(cameraIntent, RequestCodes.TAKE_ENDANGERED_IMAGE); + if(cameraIntent.resolveActivity(context.getPackageManager()) != null) { + File image = null; + try { + image = MainActivity.createImageFile(); + } catch (IOException e) { + e.printStackTrace(); + } + if(image != null) { + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image)); + context.startActivityForResult(cameraIntent, RequestCodes.TAKE_ENDANGERED_IMAGE); + } + } } }); diff --git a/app/src/main/res/layout/endangered_dialog_item.xml b/app/src/main/res/layout/endangered_dialog_item.xml index 59852d0..1b23e53 100644 --- a/app/src/main/res/layout/endangered_dialog_item.xml +++ b/app/src/main/res/layout/endangered_dialog_item.xml @@ -51,11 +51,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/endangered_add_image" - android:src="@android:drawable/ic_menu_gallery"/> + android:src="@android:drawable/ic_menu_gallery" + android:background="#00000000"/> + android:src="@android:drawable/ic_menu_camera" + android:background="#00000000"/> \ No newline at end of file