forked from upstream-mirrors/OpenTracks
@@ -22,10 +22,8 @@ import android.content.pm.PackageManager;
|
|||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.provider.MediaStore;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
@@ -35,6 +33,7 @@ import android.widget.ArrayAdapter;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.PickVisualMediaRequest;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts;
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
@@ -71,7 +70,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
private Uri cameraPhotoUri;
|
private Uri cameraPhotoUri;
|
||||||
|
|
||||||
private ActivityResultLauncher<Intent> takePictureFromCamera;
|
private ActivityResultLauncher<Intent> takePictureFromCamera;
|
||||||
private ActivityResultLauncher<Intent> takePictureFromGallery;
|
private ActivityResultLauncher<PickVisualMediaRequest> takePictureFromGallery;
|
||||||
|
|
||||||
private MarkerEditViewModel viewModel;
|
private MarkerEditViewModel viewModel;
|
||||||
|
|
||||||
@@ -139,10 +138,10 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
takePictureFromCamera = registerForActivityResult(
|
takePictureFromCamera = registerForActivityResult(
|
||||||
new ActivityResultContracts.StartActivityForResult(),
|
new ActivityResultContracts.StartActivityForResult(),
|
||||||
result -> {
|
result -> {
|
||||||
if (result.getResultCode() == RESULT_CANCELED) {
|
switch (result.getResultCode()) {
|
||||||
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
case RESULT_CANCELED ->
|
||||||
} else if (result.getResultCode() == RESULT_OK) {
|
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
||||||
viewModel.onNewCameraPhoto(cameraPhotoUri,
|
case RESULT_OK -> viewModel.onNewCameraPhoto(cameraPhotoUri,
|
||||||
viewBinding.markerEditName.getText().toString(),
|
viewBinding.markerEditName.getText().toString(),
|
||||||
viewBinding.markerEditMarkerType.getText().toString(),
|
viewBinding.markerEditMarkerType.getText().toString(),
|
||||||
viewBinding.markerEditDescription.getText().toString());
|
viewBinding.markerEditDescription.getText().toString());
|
||||||
@@ -150,12 +149,12 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
});
|
});
|
||||||
|
|
||||||
takePictureFromGallery = registerForActivityResult(
|
takePictureFromGallery = registerForActivityResult(
|
||||||
new ActivityResultContracts.StartActivityForResult(),
|
new ActivityResultContracts.PickVisualMedia(),
|
||||||
result -> {
|
uri -> {
|
||||||
if (result.getResultCode() == RESULT_CANCELED) {
|
if (uri == null) {
|
||||||
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
||||||
} else if (result.getResultCode() == RESULT_OK) {
|
} else {
|
||||||
viewModel.onNewGalleryPhoto(result.getData().getData(),
|
viewModel.onNewGalleryPhoto(uri,
|
||||||
viewBinding.markerEditName.getText().toString(),
|
viewBinding.markerEditName.getText().toString(),
|
||||||
viewBinding.markerEditMarkerType.getText().toString(),
|
viewBinding.markerEditMarkerType.getText().toString(),
|
||||||
viewBinding.markerEditDescription.getText().toString());
|
viewBinding.markerEditDescription.getText().toString());
|
||||||
@@ -256,16 +255,11 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void createMarkerWithGalleryImage() {
|
private void createMarkerWithGalleryImage() {
|
||||||
Intent intent;
|
PickVisualMediaRequest request = new PickVisualMediaRequest.Builder()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
.setMediaType(ActivityResultContracts.PickVisualMedia.ImageOnly.INSTANCE)
|
||||||
intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
|
.build();
|
||||||
intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, 1);
|
|
||||||
} else {
|
|
||||||
intent = new Intent(Intent.ACTION_GET_CONTENT);
|
|
||||||
}
|
|
||||||
intent.setType("image/*");
|
|
||||||
try {
|
try {
|
||||||
takePictureFromGallery.launch(intent);
|
takePictureFromGallery.launch(request);
|
||||||
} catch (ActivityNotFoundException e) {
|
} catch (ActivityNotFoundException e) {
|
||||||
Toast.makeText(this, R.string.no_compatible_gallery_installed, Toast.LENGTH_LONG).show();
|
Toast.makeText(this, R.string.no_compatible_gallery_installed, Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user