Форум ОНИОО «Космопоиск»

Направления => Технический форум. (Приборный). => Тема начата: digimon от 07 апреля 2015 г., 12:00:21

Название: Программирование под Андроид
Отправлено: digimon от 07 апреля 2015 г., 12:00:21
Цитата: digimon от 18 марта 2015 г., 20:51:53
Мне кажется, алгоритм программы детекции мелких НЛО в кадре может быть таким:

1. составляем карту пикселей, цвет которых изменился дальше некоторого порога (чтобы отсеять шум)

2. ищем на карте группы вплотную расположенных пикселей и для каждой группы подсчитываем её "вес" (количество пикселей в группе). Надеюсь, что шумящие пиксели не скапливаются в группы просто так, а шумят по отдельности, т.е. "вес" шумящих пикселей будет низким, около 1.

3. если есть группа у которой "вес" будет больше некоторого порога (например 30 пикселей) и меньше некоторого порога (чтобы отсеять крупные близко расположенные объекты), то срабатывает детектор движения, играется звук и начинается запись видео.
3.1. если в группе пикселей будет преобладать красный или оранжевый цвет, то это точно НЛО или китайский фонарик - тем более начинаем запись.
3.2. можно рассчитать угловые координаты красного НЛО в поле зрения камеры и нацелить на это место USB-рукой робота телескоп с камерой, чтобы сфотографировать в сильном зуме.


Обычные детекторы движения учитывают только процент изменившихся пикселей в кадре. А мы можем реагировать только на мелкие объекты, отсекая шум.
Всё! Я уже сам написал такую программу для Андрейки (Android), которая реализует данный алгоритм: https://play.google.com/store/apps/details?id=com.xfiles.ufodetect (https://play.google.com/store/apps/details?id=com.xfiles.ufodetect)
Аналогов на play маркете нет.
Программа для поиска НЛО с помощью камеры смартфона. Написал всего несколько дней назад. Толком испытать не успел. Пока НЛО не зафиксировал.

Скачивайте, тестируйте. Интересные снимки присылайте мне на мыло (указано на странице приложения в play маркете).

Только пока телескопом программа не руководит. Это будет делать программа для ПК, если эта прога для смартфона покажет хорошие результаты.
Название: Re: Программирование под Андроид
Отправлено: ЛУТ от 07 апреля 2015 г., 12:55:05
Цитата: digimon от 07 апреля 2015 г., 12:00:21
Всё! Я уже сам написал такую программу для Андрейки (Android), которая реализует данный алгоритм: https://play.google.com/store/apps/details?id=com.xfiles.ufodetect (https://play.google.com/store/apps/details?id=com.xfiles.ufodetect)
digimon  в какой среде пишешь по для андроида ? У меня скромный опыт написания ПО на С++ , но необходимость наличия ПК с ХР сильно ограничивает область применения *датчика энтропии*
Что посоветуешь для написания аналога этой программы   http://lodya.net/forum/index.php?topic=12806.0  только для андроида .
Алгоритм достаточно простой 
- генератор шума
- микрофонный вход
- буфер с цифровыми аудио данными ( например каждые 100мс )
- алгоритм получения случайных чисел из цифрового шума
- расчёт энтропии
- вывод на график

Я понемногу осваиваю андроид , уже понял что экран это xml  а ПО java , но вот их взаимосвязь меня пока что напрягает , на С++ всё гораздо проще.

Название: Re: Программирование под Андроид
Отправлено: digimon от 07 апреля 2015 г., 19:17:09
Программы для Андройд пушутся в Android SDK (http://developer.android.com/sdk/index.html). Я пока по привычке использую Eclipse, т.к. он проще в интерфейсе и быстрее компилирует.  В Андройде есть возможность использовать код на c/c++ (http://habrahabr.ru/post/203014/) . Декларируешь функцию в Java-классе, а реализуешь её на c/с++. К тому же функция исполняться будет быстрее раза в 3-4, т.к. сишный код компилируется в нативный код процессора, а Java транслируется в код виртуальной машины. Но на современных смартфонах есть возможность, чтобы при установке приложения, код виртуальной машины транслировался в нативный - это ускоряет приложения где-то в 2.5 раза.

В природе существуют переходники COM to Bluetooth. Поэтому с ГСЧ смартфон сможет общаться дистанционно, через bluetooth.
Можно ГСЧ подключить через вход наушников в качестве микрофона и передавать шум в виде звука.

Для написания программ в Андройд важно уметь формулировать свои вопросы на английском языке и искать ответы в интернете. Очень много хороших ответов встречаются на stackoverflow.com
Также помогут уроки на русском языке: developer.alexanderklimov.ru/android/  и  startandroid.ru/ru/uroki/vse-uroki-spiskom.html
ну и книгу какую-нибудь по программированию на Java нужно прочитать
Название: Re: Программирование под Андроид
Отправлено: ЛУТ от 08 апреля 2015 г., 12:53:44
Цитата: digimon от 07 апреля 2015 г., 19:17:09
Программы для Андройд пушутся в Android SDK (http://developer.android.com/sdk/index.html)...

Примерно таким путём я и начал идти  .
Пока у меня нет конкретных вопросов , но как только освою Android Studio , разберусь с структурой файлов проекта  - будут вопросы .После среды c++ builder , структура проекта для Android - тёмный лес  :(
Может нужно будет сделать отдельную тему , уверен тут найдутся  люди которые тоже хотят научиться писать ПО для  Android.
Первый вопрос будет - доступ к аудио данным ?
Для винды это реализовывается через ай-пи функции , и есть куча примеров  что и помогло мне  освоить работу с аудио данными . Написал простую программку - осциллограф и анализатор спектра .
Для Андроида нашёл это пример http://www.sql.ru/forum/927953/analiz-zvuka-algoritmom-fft  несмотря на синтаксис  отличный от С++ - всё вроде понятно , создание  массива , инициализация аудио устройства, формат WAV - частота дискредитации и разрядность аудио данных . Что мне не понятно так это -  куда и как прикрутить это к проекту в Android Studio , а так-же как использовать упомянутую там библиотеку  JTransforms.jar   как я понял это Быстрое Преобразование Фурье , оно необходимо для анализа спектра шума . Для С++ я использовал готовую функцию БПФ (https://ru.wikibooks.org/wiki/%D0%A0%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2/%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5#C.2B.2B) , просто скопировал эту функцию в проект - вызываешь функцию с передачей массива с данными в формате WAV  и получаешь массив с амплитудами частот .


Название: Re: Программирование под Андроид
Отправлено: digimon от 09 апреля 2015 г., 17:52:15
ЦитироватьПервый вопрос будет - доступ к аудио данным ?
Ну я же тебе говорил, что ищи ответы в интернете. Формируй вопрос на английском языке и ищи. Например, android capture audio to buffer (http://yandex.ru/yandsearch?text=androidcaptureaudiotobuffer). Что ж я должен носиться с каждым твоим вопросом?

В андройде тоже куча документированных API-функций (http://developer.android.com/reference/android/media/AudioRecord.html) и примеров в интернете.
А если документированных возможностей не хватает, тогда есть дорога к недокументированным возможностям, ведь андройд доступен в исходных кодах. Только использование недокументированных функций может породить несовместимость приложения (не правильную работу приложения)на разных версиях Андройд.

ЦитироватьЧто мне не понятно так это -  куда и как прикрутить это к проекту в Android Studio , а так-же как использовать упомянутую там библиотеку  JTransforms.jar   как я понял это Быстрое Преобразование Фурье
Ну ты прочитай уроки на русском языке по программированию в андройд и станет понятней. Можешь повесить запись аудио в буфер на нажатие кнопки. Только в Android Studio обработчики событий не создаются средой разработки в два клика - их нужно самому прописать руками. В проект можно импортировать внешние библиотеки *.jar
Напиши пару простых приложений, тогда и остальное станет легче понять.
Название: Re: Программирование под Андроид
Отправлено: ЛУТ от 09 апреля 2015 г., 19:53:52
Цитата: digimon от 09 апреля 2015 г., 17:52:15
Формируй вопрос на английском языке и ищи. Например, android capture audio to buffer (http://yandex.ru/yandsearch?text=androidcaptureaudiotobuffer). Что ж я должен носиться с каждым твоим вопросом?
И на том спасибо , этот пример (http://www.anddev.org/novice-tutorials-f8/acquire-samples-with-audiorecord-and-maybe-dump-them-t12957.html) многое прояснил . Для полного счастья не хватает подробных  комментариев к коду , и спросить уже не у кого ( зачем носиться с моими вопросами). В своё время мне сильно помог этот пример (http://speechtech-medex.narod.ru/index/0-4) использования WinAPI -функций  для работы с звуковыми данными , без комментариев было-бы сложно переделать код под свои задачи. 
Название: Re: Программирование под Андроид
Отправлено: ЛУТ от 09 апреля 2015 г., 21:03:27
Ура ! нашёл с подробными комментариями и на русском http://habrahabr.ru/post/137708/

Название: Re: Программирование под Андроид
Отправлено: Grey от 31 мая 2015 г., 21:03:01
Есть желающие еще попрактиковаться в программировании? Создать приложение для уфосети.
Название: Re: Программирование под Андроид
Отправлено: ЛУТ от 01 июня 2015 г., 12:04:53
Цитата: Grey от 31 мая 2015 г., 21:03:01
Есть желающие еще попрактиковаться в программировании? Создать приложение для уфосети.

К сожалению - Андроид не потяну ... , но интересно узнать - какие функции и задачи должна выполнять программа ?
Название: Re: Программирование под Андроид
Отправлено: Grey от 01 июня 2015 г., 17:25:47
На сайте есть API.
Приложение должно:
отправлять запрос на сайт,
получить ответ,
обработать ответ,
вывести на экран.
Так же если получиться, так как не поддерживается API, сделать отправку сообщений на сайт.

Могу помочь с обработкой ответа и общей функциональноятью приложения.