Запись звука через микрофонный вход телефона
Андроид много чего умеет в области распознавания речи. Вот только речь необходимо вводить непосредственно с микрофона устройства, распознавать речь входящего звонка или проигрываемого файла уже проблематично. Что если сделать так, чтобы звук воспроизводился на одном устройстве а принимался на другом? В этом случае, можно соединить два устройства проводами через 3.5 миллиметровый разъем. Например, таким способом можно распознавать голосовые заметки, сделанные на утренней пробежке или использовать подобный тандем для тестирования приложений, работающих с голосовыми функциями. В принципе, два телефона которые лежат рядом друг с другом вполне себе друг друга слышат, но хотелось бы чтобы устройства были соединены проводами, чтобы не нарушать тишины помещения.
На выходных спаял небольной концепт подобного устройства. Устройство представляет собой простейший резистивный делитель с резисторами 5К и 1К средняя точка которого присоединена к микрофонному входу через керамический конденсатор в 100 пикофарад. Схема соединения получилась такой:
Делитель спаял на куске макетной платы. Для соединения всех компонентов использовал несколько переходников с коннекторами типа тюльпан и джек.
Решение сработало на удивление хорошо, звук записанный через такой переходник оказался довольно неплох - качества вполне хватает чтобы распознавать голосовые заметки или делать транскрипты видео с Youtube.
Звук можно записывать только в моно режиме, так что для студийной записи такое не подойдет, а вот для маленького проекта по распознаванию речи, автоматизации телефонных звонков или для автоматических тестов голосовых возможностей андроид приложений - вполне.
Новая версия текстового редактора
Выпустил на выходных новую версию Простого Текстового Редактора. Не прошло и десяти лет как в нем, наконец появились функции отмены и повтора последней операции. Причем новая версия зарелизина в Google Play и F-Droid.
На F-Droid версия уже принята но я до сих пор вижу старый релиз, они не быстро обнавляют приложения.
Компилируем Android приложения в Docker
Давно хотел научиться компилировать свои приложения для андроид без необходимости устанавливать и настраивать на компьютере кучи ненужного софта. В самом деле - на дворе двадцать первый век, у нас есть докер и нам совершенно не обязательно для сборки приложения устанавливать весь софт на рабочую станцию чтобы собрать приложение. Это можно сделать в докере.
Посидев пару вечеров, собрал простенький образ, который будет делать за меня всю черновую работу. Теперь, чтобы собрать любое приложение для android, достаточно выполнить вот такую команду из корня проекта:
docker run --rm -v ${PWD}:/var/app maxistar/android:latest bash \
-c "gradle build && gradle compileDebugSources"
Готовый apk файл будет сохранен в папку app/build/outputs/apk/debug/app-debug.apk - его можно сразу скопировать не телефон и установить его (не забудьте разрешить установку приложений из неизвестных источников).
Как был сделан этот образ? За основу взял образ Debian 9.
Установил Java 8 (Java 11 у меня не завелась если знаете как подружить gradle и java 11 поделитесь секретом)
apt-get update
apt-get -y install git wget unzip default-jdk
Для сборки нам нужен gradle установим его
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip
Скачаем Android SDK:
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip
Еще нужно установить переменные окружения.
ENV ANDROID_SDK_ROOT=/opt/android ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3 ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
Теперь нужно скачать инструменты для сборки android приложений.
sdkmanager --update
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30"
sdkmanager --licenses
Готовый Dockerfile выглядит вот так:
FROM debian:9
MAINTAINER Max Starikov <maxim.starikov@gmail.com>
ENV ANDROID_SDK_ROOT=/opt/android
ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3
ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
RUN apt-get update && apt-get -y install git wget unzip default-jdk
RUN wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp && \
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip && \
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp && \
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip && \
sdkmanager --update && \
yes | sdkmanager --licenses && \
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30" && \
yes | sdkmanager --licenses && \
mkdir /var/app
WORKDIR /var/app
Следует заметить, что образ довольно большой (примерно 850Mb) - и для его использования нужно быстрое интернет соединение, но зато, единожды скачав, скачивать повторно docker его больше не будет.
Образ доступен на docker hub. Исходник находится на github.
Super Words Memorizer снова в Google Play!
Super Words Momorizer cнова доступен на Google Play!
Как то у меня снова появилось вдохновение развивать проект - спасибо Dualingo - они так испоганили свой продукт, что захотелось сделать функции которых у них нет и никогда не будет, а мне очень хотелось бы их иметь.
Хотя, конечно, моя программка - совсем не конкурент Dualingo, это скорее такой маленький тул, для пополнения словарного запаса. При помощи него я неплохо прокачал свой английский и итальянский языки. Сейчас изучаю немецкий.
Увы, все что хочется реализовать один я делать не успеваю, и наверно, никогда не успею. Если вдруг, среди читателей моего маленького дневничка есть желающие помочь мне с проектом, я был бы очень этому рад. У меня есть куча идей для новых словарей, новых диалоговых режимов, нового функционала.
Мне можно написать через контактную форму на этом сайте. Буду рад любой помощи.