Программирование под Андроид

Автор digimon, 07 апреля 2015 г., 12:00:21

« назад - далее »

digimon

Цитата: 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
Аналогов на play маркете нет.
Программа для поиска НЛО с помощью камеры смартфона. Написал всего несколько дней назад. Толком испытать не успел. Пока НЛО не зафиксировал.

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

Только пока телескопом программа не руководит. Это будет делать программа для ПК, если эта прога для смартфона покажет хорошие результаты.

ЛУТ

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

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

Если вы увидели в этом мире красоту значит вы поняли смысл всего.

digimon

Программы для Андройд пушутся в Android SDK. Я пока по привычке использую Eclipse, т.к. он проще в интерфейсе и быстрее компилирует.  В Андройде есть возможность использовать код на c/c++ . Декларируешь функцию в 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 нужно прочитать

ЛУТ

Цитата: digimon от 07 апреля 2015 г., 19:17:09
Программы для Андройд пушутся в Android SDK...

Примерно таким путём я и начал идти  .
Пока у меня нет конкретных вопросов , но как только освою Android Studio , разберусь с структурой файлов проекта  - будут вопросы .После среды c++ builder , структура проекта для Android - тёмный лес  :(
Может нужно будет сделать отдельную тему , уверен тут найдутся  люди которые тоже хотят научиться писать ПО для  Android.
Первый вопрос будет - доступ к аудио данным ?
Для винды это реализовывается через ай-пи функции , и есть куча примеров  что и помогло мне  освоить работу с аудио данными . Написал простую программку - осциллограф и анализатор спектра .
Для Андроида нашёл это пример http://www.sql.ru/forum/927953/analiz-zvuka-algoritmom-fft  несмотря на синтаксис  отличный от С++ - всё вроде понятно , создание  массива , инициализация аудио устройства, формат WAV - частота дискредитации и разрядность аудио данных . Что мне не понятно так это -  куда и как прикрутить это к проекту в Android Studio , а так-же как использовать упомянутую там библиотеку  JTransforms.jar   как я понял это Быстрое Преобразование Фурье , оно необходимо для анализа спектра шума . Для С++ я использовал готовую функцию БПФ , просто скопировал эту функцию в проект - вызываешь функцию с передачей массива с данными в формате WAV  и получаешь массив с амплитудами частот .


Если вы увидели в этом мире красоту значит вы поняли смысл всего.

digimon

ЦитироватьПервый вопрос будет - доступ к аудио данным ?
Ну я же тебе говорил, что ищи ответы в интернете. Формируй вопрос на английском языке и ищи. Например, android capture audio to buffer. Что ж я должен носиться с каждым твоим вопросом?

В андройде тоже куча документированных API-функций и примеров в интернете.
А если документированных возможностей не хватает, тогда есть дорога к недокументированным возможностям, ведь андройд доступен в исходных кодах. Только использование недокументированных функций может породить несовместимость приложения (не правильную работу приложения)на разных версиях Андройд.

ЦитироватьЧто мне не понятно так это -  куда и как прикрутить это к проекту в Android Studio , а так-же как использовать упомянутую там библиотеку  JTransforms.jar   как я понял это Быстрое Преобразование Фурье
Ну ты прочитай уроки на русском языке по программированию в андройд и станет понятней. Можешь повесить запись аудио в буфер на нажатие кнопки. Только в Android Studio обработчики событий не создаются средой разработки в два клика - их нужно самому прописать руками. В проект можно импортировать внешние библиотеки *.jar
Напиши пару простых приложений, тогда и остальное станет легче понять.

ЛУТ

Цитата: digimon от 09 апреля 2015 г., 17:52:15
Формируй вопрос на английском языке и ищи. Например, android capture audio to buffer. Что ж я должен носиться с каждым твоим вопросом?
И на том спасибо , этот пример многое прояснил . Для полного счастья не хватает подробных  комментариев к коду , и спросить уже не у кого ( зачем носиться с моими вопросами). В своё время мне сильно помог этот пример использования WinAPI -функций  для работы с звуковыми данными , без комментариев было-бы сложно переделать код под свои задачи. 
Если вы увидели в этом мире красоту значит вы поняли смысл всего.

ЛУТ

Ура ! нашёл с подробными комментариями и на русском http://habrahabr.ru/post/137708/

Если вы увидели в этом мире красоту значит вы поняли смысл всего.

Grey

Есть желающие еще попрактиковаться в программировании? Создать приложение для уфосети.
Двое смотрят в лужу.
один видит лужу, а второй отражающиеся в ней звёзды.

ЛУТ

Цитата: Grey от 31 мая 2015 г., 21:03:01
Есть желающие еще попрактиковаться в программировании? Создать приложение для уфосети.

К сожалению - Андроид не потяну ... , но интересно узнать - какие функции и задачи должна выполнять программа ?
Если вы увидели в этом мире красоту значит вы поняли смысл всего.

Grey

На сайте есть API.
Приложение должно:
отправлять запрос на сайт,
получить ответ,
обработать ответ,
вывести на экран.
Так же если получиться, так как не поддерживается API, сделать отправку сообщений на сайт.

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