forked from upstream-mirrors/OpenTracks
Cleanup: MarkerEditActivity now uses ActivityResultLauncher and implemented onDestroy().
This commit is contained in:
@@ -23,7 +23,6 @@ import android.graphics.BitmapFactory;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
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;
|
||||||
@@ -32,6 +31,8 @@ import android.view.View;
|
|||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
@@ -55,9 +56,6 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
public static final String EXTRA_TRACK_ID = "track_id";
|
public static final String EXTRA_TRACK_ID = "track_id";
|
||||||
public static final String EXTRA_MARKER_ID = "marker_id";
|
public static final String EXTRA_MARKER_ID = "marker_id";
|
||||||
|
|
||||||
private static final int CAMERA_REQUEST_CODE = 5;
|
|
||||||
private static final int GALLERY_IMG_REQUEST_CODE = 7;
|
|
||||||
|
|
||||||
private static final String TAG = MarkerEditActivity.class.getSimpleName();
|
private static final String TAG = MarkerEditActivity.class.getSimpleName();
|
||||||
private Track.Id trackId;
|
private Track.Id trackId;
|
||||||
private Marker marker;
|
private Marker marker;
|
||||||
@@ -68,11 +66,20 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
private boolean hasCamera;
|
private boolean hasCamera;
|
||||||
private Uri cameraPhotoUri;
|
private Uri cameraPhotoUri;
|
||||||
|
|
||||||
|
private ActivityResultLauncher<Intent> takePictureFromCamera;
|
||||||
|
private ActivityResultLauncher<Intent> takePictureFromGallery;
|
||||||
|
|
||||||
private MarkerEditViewModel viewModel;
|
private MarkerEditViewModel viewModel;
|
||||||
|
|
||||||
// UI elements
|
// UI elements
|
||||||
private MarkerEditBinding viewBinding;
|
private MarkerEditBinding viewBinding;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected View getRootView() {
|
||||||
|
viewBinding = MarkerEditBinding.inflate(getLayoutInflater());
|
||||||
|
return viewBinding.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -99,8 +106,8 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
viewBinding.markerEditDone.setText(isNewMarker ? R.string.generic_add : R.string.generic_save);
|
viewBinding.markerEditDone.setText(isNewMarker ? R.string.generic_add : R.string.generic_save);
|
||||||
viewBinding.markerEditDone.setOnClickListener(v -> {
|
viewBinding.markerEditDone.setOnClickListener(v -> {
|
||||||
viewModel.onDone(viewBinding.markerEditName.getText().toString(),
|
viewModel.onDone(viewBinding.markerEditName.getText().toString(),
|
||||||
viewBinding.markerEditMarkerType.getText().toString(),
|
viewBinding.markerEditMarkerType.getText().toString(),
|
||||||
viewBinding.markerEditDescription.getText().toString());
|
viewBinding.markerEditDescription.getText().toString());
|
||||||
finish();
|
finish();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -118,12 +125,43 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
|
|
||||||
hideAndShowOptions();
|
hideAndShowOptions();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
takePictureFromCamera = registerForActivityResult(
|
||||||
|
new ActivityResultContracts.StartActivityForResult(),
|
||||||
|
result -> {
|
||||||
|
if (result.getResultCode() == RESULT_CANCELED) {
|
||||||
|
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
||||||
|
} else if (result.getResultCode() == RESULT_OK) {
|
||||||
|
viewModel.onNewCameraPhoto(cameraPhotoUri,
|
||||||
|
viewBinding.markerEditName.getText().toString(),
|
||||||
|
viewBinding.markerEditMarkerType.getText().toString(),
|
||||||
|
viewBinding.markerEditDescription.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
takePictureFromGallery = registerForActivityResult(
|
||||||
|
new ActivityResultContracts.StartActivityForResult(),
|
||||||
|
result -> {
|
||||||
|
if (result.getResultCode() == RESULT_CANCELED) {
|
||||||
|
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
||||||
|
} else if (result.getResultCode() == RESULT_OK) {
|
||||||
|
viewModel.onNewGalleryPhoto(result.getData().getData(),
|
||||||
|
viewBinding.markerEditName.getText().toString(),
|
||||||
|
viewBinding.markerEditMarkerType.getText().toString(),
|
||||||
|
viewBinding.markerEditDescription.getText().toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected View getRootView() {
|
protected void onDestroy() {
|
||||||
viewBinding = MarkerEditBinding.inflate(getLayoutInflater());
|
super.onDestroy();
|
||||||
return viewBinding.getRoot();
|
|
||||||
|
trackId = null;
|
||||||
|
viewBinding = null;
|
||||||
|
viewModel = null;
|
||||||
|
takePictureFromGallery = null;
|
||||||
|
takePictureFromCamera = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -153,32 +191,6 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
||||||
if (requestCode == CAMERA_REQUEST_CODE) {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
|
||||||
return;
|
|
||||||
} else if (resultCode == RESULT_OK) {
|
|
||||||
viewModel.onNewCameraPhoto(cameraPhotoUri,
|
|
||||||
viewBinding.markerEditName.getText().toString(),
|
|
||||||
viewBinding.markerEditMarkerType.getText().toString(),
|
|
||||||
viewBinding.markerEditDescription.getText().toString());
|
|
||||||
}
|
|
||||||
} else if (requestCode == GALLERY_IMG_REQUEST_CODE) {
|
|
||||||
if (resultCode == RESULT_CANCELED) {
|
|
||||||
Toast.makeText(this, R.string.marker_add_photo_canceled, Toast.LENGTH_LONG).show();
|
|
||||||
return;
|
|
||||||
} else if (resultCode == RESULT_OK) {
|
|
||||||
viewModel.onNewGalleryPhoto(data.getData(),
|
|
||||||
viewBinding.markerEditName.getText().toString(),
|
|
||||||
viewBinding.markerEditMarkerType.getText().toString(),
|
|
||||||
viewBinding.markerEditDescription.getText().toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks and hide/shows all buttons/options about marker photo options.
|
* Checks and hide/shows all buttons/options about marker photo options.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -207,7 +219,7 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
viewBinding.markerEditPhoto.setImageBitmap(bitmap);
|
viewBinding.markerEditPhoto.setImageBitmap(bitmap);
|
||||||
hideAndShowOptions();
|
hideAndShowOptions();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e(TAG, e.getMessage());
|
Log.e(TAG, "" + e);
|
||||||
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,11 +227,12 @@ public class MarkerEditActivity extends AbstractActivity {
|
|||||||
private void createMarkerWithPicture() {
|
private void createMarkerWithPicture() {
|
||||||
Pair<Intent, Uri> intentAndPhotoUri = IntentUtils.createTakePictureIntent(this, getTrackId());
|
Pair<Intent, Uri> intentAndPhotoUri = IntentUtils.createTakePictureIntent(this, getTrackId());
|
||||||
cameraPhotoUri = intentAndPhotoUri.second;
|
cameraPhotoUri = intentAndPhotoUri.second;
|
||||||
startActivityForResult(intentAndPhotoUri.first, CAMERA_REQUEST_CODE);
|
takePictureFromCamera.launch(intentAndPhotoUri.first);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createMarkerWithGalleryImage() {
|
private void createMarkerWithGalleryImage() {
|
||||||
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
|
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||||
startActivityForResult(intent, GALLERY_IMG_REQUEST_CODE);
|
intent.setType("image/*");
|
||||||
|
takePictureFromGallery.launch(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user