Имя: Пароль:
IT
Веб-мастеринг
Android приложение где найти процедуру которая вызывается по кнопке
0 breezee
 
12.12.21
16:51
Добрый день. Не нашел более подходящий тег в теме. Скачал отсюда приложение https://habr.com/ru/company/redmadrobot/blog/544318/
а именно пример https://github.com/redmadrobot-spb/android-camerax-mlkit-article
В файле из примера activity_app.xml есть кнопка "mlkitButton". У кнопки нет события онклик и во всех файлах котлин я не нашел обращения к этой кнопке.
Есть ли здесь знатоки андроида? Если есть подскажите пожалуйста, где обработчик события.
Это не рабочая задача, для общего развития хочу библиотеку распознавания изображений попробовать на андроиде
1 Asmody
 
12.12.21
16:56
там написано:

binding.mlkitButton.setOnClickListener { startMlKitRecognitionWithPermissionCheck() }
2 pechkin
 
12.12.21
16:58
Кнопка не в активити, а во фрагменте
3 breezee
 
12.12.21
17:04
(1) Спасибо! Я плохо искал. Сейчас нашел
(2) Да, спасибо (1) , теперь нашел
4 breezee
 
12.12.21
17:08
Подскажите, пожалуйста, я в модуль App.kt в процедуру
override fun onCreate() {
...
пишу  MainFragment.startMlKitRecognition()
И андроид ругается и не собирает приложение. Можете, пожалуйста, подсказать, почему не видит?)
5 Asmody
 
12.12.21
17:26
(4) обычно он достаточно подробно пишет, что ему не нравится. читай внимательно
6 breezee
 
12.12.21
17:27
(5) app\src\main\java\com\redmadrobot\numberrecognizer\App.kt: (12, 22): Unresolved reference: startMlKitRecognition

Не видит модуль. Не знаете случайно почему? Не пишет он подробно)
7 pechkin
 
12.12.21
17:28
А фрагмент то инициализирован?
8 pechkin
 
12.12.21
17:29
Кмк ты андроид видишь в первый раз. Начни с примеров попроще
9 breezee
 
12.12.21
17:38
(7) Ну да, импорт есть
import com.redmadrobot.numberrecognizer.ui.MainFragment

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        
        MainFragment.startMlKitRecognition()  ------> вот сюда ругается

        Timber.plant(Timber.DebugTree())
    }
}
(8) Согласен, придется начать, но может подскажите как сделать вызов этой процедуры пожалуйста? Очень надо. В 1с просто вызываю экспортную процедуру, здесь чет не так
10 Asmody
 
12.12.21
17:59
(9) дело в определении метода

internal fun startMlKitRecognition()
11 Asmody
 
12.12.21
18:00
12 breezee
 
12.12.21
18:16
(11) Большое спасибо, но не попогло)
В модуле поставил паблик видимость
public fun startMlKitRecognition() {
Все равно не видит и класс тоже паблик..
Пойду наверное читать книги по андроиду..
Если кто напишет почему не видит после паблик то буду сильно рад))
13 breezee
 
12.12.21
18:39
пошел читать книги, оказалось сложно, пока ничего не вышло(
14 Asmody
 
12.12.21
18:45
(13) просто андроид - это вам не 1с. за 23 минуты разобраться не получится. надо хотя бы пару часов
15 Asmody
 
12.12.21
18:53
(12) это сильно не поможет. ты вызываешь метод от класса, а надо от экземпляра класса.
16 Конструктор1С
 
12.12.21
18:58
(9) ты не в том классе, должен быть наследованный от Activity или AppCompatActivity
17 H A D G E H O G s
 
12.12.21
19:06
Жесть какая
18 Patriot1C
 
12.12.21
19:18
(17) А мне система фрагментов в Андройде даже понравилась. Внутри активити можете вставлять и менять фрагменты как надо.  А фрагмент как некоторый шаблон который можно вставлять в активити.
В 1С это наверно звучит как вставка формы как кусок в другую форму.
19 H A D G E H O G s
 
12.12.21
19:29
(18) Да не, фрагменты - норм, примерный аналог фреймов Delphi.
Я про проблемы автора и его восприятие к ООП.
20 pechkin
 
12.12.21
21:17
Логично что ничего не запустилось. По нажатию кнопки идет работа с формой, то есть требуется инициализированный, то бишь отображенный на экране фрагмент
21 pechkin
 
12.12.21
21:19
само распознование происходит здесь
https://github.com/redmadrobot-spb/android-camerax-mlkit-article/blob/master/app/src/main/java/com/redmadrobot/numberrecognizer/model/GmsTextRecognition.kt

    fun processFrame(frame: Image, rotationDegrees: Int): Task<List<RecognizedLine>> {
        val inputImage = InputImage.fromMediaImage(frame, rotationDegrees)

        return analyzer
            .process(inputImage)
            .continueWith { task->
                task.result
                    .textBlocks
                    .flatMap { block -> block.lines }
                    .map { line -> line.toRecognizedLine() }
            }
    }
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший