Я боролся с этой проблемой уже несколько дней и, похоже, не могу ее преодолеть. В основном у меня есть действие, которое имеет 3 просмотра изображений с кнопкой, которая запускает намерение камеры
Проблема в том, что, пока я разрабатываю и запускаю через отладчик, все работает отлично, но не тогда, когда я запускаю приложение в одиночку (без отладчика, только на телефоне) после принятия предварительного просмотра изображения, он просто показывает черный экран и делает ничего после этого.
Все, что нужно, это чтобы изображение отображалось в представлениях изображений и сохранялось в галерее, оно делает все это в режиме отладки, но не когда мне нужно запустить приложение независимо.
Я полностью растерялся из-за этой проблемы - пожалуйста, кто-нибудь / кто-нибудь может мне помочь.
Я думаю, что это может быть асинхронная проблема, но я очень плохо знаком с android и не знаю, как реализовать это, в моей голове и в учебниках, которые я читал / смотрел - это должен быть простой процесс, однако я не могу показаться заставить его работать
Вот мой код на макете для действия:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".PhotoActivity">
<ImageView
android:id="@+id/imgPhoto1"
android:layout_width="236dp"
android:layout_height="136dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/dds_logo" />
<ImageView
android:id="@+id/imgPhoto2"
android:layout_width="236dp"
android:layout_height="136dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgPhoto1"
app:srcCompat="@drawable/dds_logo" />
<ImageView
android:id="@+id/imgPhoto3"
android:layout_width="236dp"
android:layout_height="136dp"
android:layout_marginTop="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgPhoto2"
app:srcCompat="@drawable/dds_logo" />
<Button
android:id="@+id/btnTakePhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="52dp"
android:text="Take Photo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imgPhoto3"
app:layout_constraintVertical_bias="1.0" />
</android.support.constraint.ConstraintLayout>
Вот код для события onClick:
public void onClick(View v) {
try {
//respond to clicks
if (v.getId() == R.id.btnTakePhoto) {
captureImage();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
Вот призыв к намерению:
private void captureImage() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, CAPTURE_IMAGE_REQUEST);
}
Вот onActivtyResult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try{
if (!Debug.isDebuggerConnected()){
Debug.waitForDebugger();
Log.d("debug", "started"); // Insert a breakpoint at this line!!
}
if(numPhotos < 2) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
String savedImageURL = MediaStore.Images.Media.insertImage(
getContentResolver(),
imageBitmap,
"Serial",
"Refresh Verification photo"
);
switch (numPhotos) {
case 0:
imgPhoto1.setImageBitmap(imageBitmap);
break;
case 1:
imgPhoto2.setImageBitmap(imageBitmap);
break;
case 2:
imgPhoto3.setImageBitmap(imageBitmap);
break;
}
numPhotos++;
}
else
{
numPhotos = 0;
Toast.makeText(PhotoActivity.this, "Max # of ohotos reached", Toast.LENGTH_LONG).show();
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
startActivity(i);
finish();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}