Вот пример README файла для вашего приложения AiHandler:
AiHandler — это приложение для идентификации объектов на изображениях. Оно позволяет пользователям выбирать изображения и получать информацию о содержащихся на них объектах.
AiHandler предоставляет пользователям возможность выбирать изображения из галереи и обрабатывать их для идентификации объектов. В приложении используется ImageView
для отображения выбранного изображения и кнопка для проверки, установлена ли фотография. В случае необходимости пользователь получает уведомление с просьбой установить фотографию.
- Выбор изображения из галереи.
- Отображение выбранного изображения в
ImageView
. - Проверка, установлено ли изображение, и отображение соответствующего уведомления.
-
Запуск приложения:
- Откройте приложение AiHandler на вашем устройстве.
-
Выбор изображения:
- Нажмите на
ImageView
, чтобы открыть галерею и выбрать изображение.
- Нажмите на
-
Проверка изображения:
- Нажмите на кнопку, чтобы проверить, установлено ли изображение. Если изображение не установлено, появится уведомление с просьбой выбрать фотографию.
Приложение использует следующие компоненты:
ActivityResultLauncher
для выбора изображения.ImageView
для отображения выбранного изображения.Button
для проверки установки изображения.
package com.honley.aihandler;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;
import com.honley.aihandler.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private final int defaultImageResourceId = R.drawable.add_image;
private ProgressBar progressBar;
private final ActivityResultLauncher<String> pickImageLauncher = registerForActivityResult(
new ActivityResultContracts.GetContent(),
uri -> {
if (uri != null) {
binding.image.setImageURI(uri);
}
}
);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
progressBar = findViewById(R.id.progress_bar);
ImageProcessing imageProcessing = new ImageProcessing();
binding.image.setOnClickListener(view -> pickImageLauncher.launch("image/*"));
binding.button.setOnClickListener(view -> {
if (isImageSet()) {
progressBar.setVisibility(View.VISIBLE);
imageProcessing.getObject(binding.image.getDrawable(), new ImageProcessing.ResultCallback() {
@Override
public void onSuccess(String resultText) {
runOnUiThread(() -> {
progressBar.setVisibility(View.GONE);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage(resultText)
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
alert.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.dialog_button_color, getTheme()));
});
}
@Override
public void onFailure(Throwable th) {
runOnUiThread(() -> {
progressBar.setVisibility(View.GONE);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("Error: " + th.getMessage())
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
alert.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.dialog_button_color, getTheme()));
});
}
});
} else {
Toast.makeText(MainActivity.this, "Please set a photo.", Toast.LENGTH_SHORT).show();
}
});
}
private boolean isImageSet() {
Drawable drawable = binding.image.getDrawable();
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
Bitmap defaultBitmap = BitmapFactory.decodeResource(getResources(), defaultImageResourceId);
return !bitmap.sameAs(defaultBitmap);
}
return false;
}
}
-
Клонируйте репозиторий на ваше устройство:
git clone https://github.com/honley1/AiHandler.git
-
Откройте проект в Android Studio и запустите его на вашем устройстве или эмуляторе.
Этот проект лицензирован под MIT License.
Если у вас есть вопросы, обратитесь к вашему электронному адресу или контакту.
Этот README файл дает краткое представление о вашем приложении, его функционале и инструкции по использованию. Вы можете дополнить его дополнительной информацией, если это необходимо.