Skip to content

AiHandler - applications for identifying objects in images

Notifications You must be signed in to change notification settings

honley1/AiHandler

Repository files navigation

Вот пример README файла для вашего приложения AiHandler:


AiHandler

AiHandler — это приложение для идентификации объектов на изображениях. Оно позволяет пользователям выбирать изображения и получать информацию о содержащихся на них объектах.

Описание

AiHandler предоставляет пользователям возможность выбирать изображения из галереи и обрабатывать их для идентификации объектов. В приложении используется ImageView для отображения выбранного изображения и кнопка для проверки, установлена ли фотография. В случае необходимости пользователь получает уведомление с просьбой установить фотографию.

Функции

  • Выбор изображения из галереи.
  • Отображение выбранного изображения в ImageView.
  • Проверка, установлено ли изображение, и отображение соответствующего уведомления.

Как использовать

  1. Запуск приложения:

    • Откройте приложение AiHandler на вашем устройстве.
  2. Выбор изображения:

    • Нажмите на ImageView, чтобы открыть галерею и выбрать изображение.
  3. Проверка изображения:

    • Нажмите на кнопку, чтобы проверить, установлено ли изображение. Если изображение не установлено, появится уведомление с просьбой выбрать фотографию.

Код

Приложение использует следующие компоненты:

  • 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;
    }
}

Установка

  1. Клонируйте репозиторий на ваше устройство:

    git clone https://github.com/honley1/AiHandler.git
  2. Откройте проект в Android Studio и запустите его на вашем устройстве или эмуляторе.

Лицензия

Этот проект лицензирован под MIT License.

Контакты

Если у вас есть вопросы, обратитесь к вашему электронному адресу или контакту.


Этот README файл дает краткое представление о вашем приложении, его функционале и инструкции по использованию. Вы можете дополнить его дополнительной информацией, если это необходимо.

About

AiHandler - applications for identifying objects in images

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages