2021-05-03

Новая версия текстового редактора

Выпустил на выходных новую версию Простого Текстового Редактора. Не прошло и десяти лет как в нем, наконец появились функции отмены и повтора последней операции. Причем новая версия зарелизина в Google Play и F-Droid

На F-Droid версия уже принята но я до сих пор вижу старый релиз, они не быстро обнавляют приложения.

 

Оставить комментарий

 
  2021-03-20

Компилируем 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.

 

Оставить комментарий

 
  2021-02-27

Super Words Memorizer снова в Google Play!

Super Words Momorizer cнова доступен на Google Play!

Как то у меня снова появилось вдохновение развивать проект - спасибо Dualingo - они так испоганили свой продукт, что захотелось сделать функции которых у них нет и никогда не будет, а мне хотелось бы их иметь.

Хотя, конечно, моя программка - совсем не конкурент Dualingo, это скорее такой маленький тул, для пополнения словарного запаса. При помощи него я неплохо прокачал свой английский и итальянский языки. Сейчас изучаю немецкий.

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

Мне можно написать через контактную форму на этом сайте.  Буду рад любой помощи.

 

Оставить комментарий

 
  2021-02-21

Интервальное повторение

Реализовал в своем маленьком пет проекте superwords метод интервального повторения

Superwords это маленькое приложение под android, при помощи которого я изучаю иностранные языки. Что-то типа Anki но с возможностью учить синонимы и варианты переводов - когда я только начинал делать эту программу я был увлечен японским языком и мне нужно было запоминать не только смысл слова но и написание каной и канзи. 

Знание языков мне всегда очень помогало в путешествиях по Европе, в поиске работы и, сейчас, когда я живу в Германии, без них никуда. Хотя, признаюсь, иностранные языки мне всегда давались с большим трудом. Ну нет у меня к ним таланта!

Интервальное повторение - это повторение на основе кривой забывания Эббингауза. Кривая забывания или кривая Эббингауза была получена вследствие экспериментального изучения памяти немецким психологом Германом Эббингаузом в 1885 году.

Эббингауз был увлечён идеей изучения «чистой» памяти — запоминания, на которое не влияют процессы мышления. Для этого им был предложен метод заучивания бессмысленных слогов, состоящих из двух согласных и гласной между ними, не вызывающими никаких смысловых ассоциаций.

В ходе опытов было установлено, что после первого безошибочного повторения серии таких слогов забывание идёт вначале очень быстро. Уже в течение первого часа забывается до 60 % всей полученной информации, через 10 часов после заучивания в памяти остаётся 35 % от изученного. Далее процесс забывания идёт медленно, и через 6 дней в памяти остаётся около 20 % от общего числа первоначально выученных слогов, столько же остаётся в памяти и через месяц.

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

В приложении это работает таким образом - при повторении каждого слова сохраняется количество успешных повторений а также дата последнего повторения, поэтому в следующий раз при выборе слова из списка слов предпочтение отдается тем словам которые уже пора повторять. Удивительно, насколько это повышает качество запоминания!

Первое повторение — через 30 минут, второе повторение — день после первого повторения, третье повторение — через неделю после второго, четвёртое повторение — через месяц после третьего, пятое повторение — через пол года после четвёртого повторения.

Штука оказалась абсолютно убойной, и почему я раньше это не реализовал... 

К сожалению, в GooglePlay приложение в настоящее время недоступно - сейчас новая версия ещё проходит ревью. Но можно установить apk вручную.

 

Оставить комментарий

 
  2020-12-25

Simple Text Editor на F-Droid

Simple Text Editor теперь доступен на F-Droid. Подумал почему бы не выложить его еще и на этот маркет - там много интересных приложений, причем все они исключительно Open Source - неиссякаемый источник вдохновения и примеров кода для Андроид Приложений.

 

Оставить комментарий

 
  2020-11-12

Коммитим в Git из Android

Задался вопросом - можно ли развернуть Git репозиторий на телефоне, редактировать файлы и коммитить изменения в проект? Оказалось, что можно, и оно отлично работает!

Установил Termux, Termux:Api, Termux:Widget. Важно чтобы все три приложения были установлены из одного магазина приложений - они есть в F-Droid и Android Play Market но последнее в Android Play стоит два доллара а в F-Droid - бесплатное.

Запускаем Termux и ставим необходимые пакеты, и разрешаем приложению доступ к файловой системой:


pkg install git openssh termux-api
termux-setup-storage

Cоздаем папку для проекта и инициализируем репозиторий:


mkdir /storage/emulated/0/Documents/work
cd /storage/emulated/0/Documents/work
git init
git remote add origin git@github.com:username/reponame.git
git config --global user.email "your@email.com"
git config --global user.name "Max"
nano readme.md
git add readme.md
git commit -am"first commit"
#cоздаем пару ключей для git репозитория:
ssh-keygen
cat /data/data/com.termux/files/home/.ssh/id_rsa.pub
#полученную строку копируем и вставляем в профайл гитхаба или другой системы которой вы пользуетесь.

Cоздаем папочку со скриптами:


mkdir -p $HOME/.shortcuts
mkdir -p /data/data/com.termux/files/home/.shortcuts/tasks
cd /data/data/com.termux/files/home/.shortcuts/
nano ./push.sh 
chmod +x push.sh

push.sh выглядит так:


#!/data/data/com.termux/files/usr/bin/bash
cd /storage/emulated/0/Documents/work
git add *
git commit -am"autocommit"
git push origin master
termux-toast "Changes successfully pushed" 

Аналогично создаем pull.sh:


#!/data/data/com.termux/files/usr/bin/bash
cd /storage/emulated/0/Documents/work
git pull origin master
termux-toast "Changes successfully pulled"

Осталось лишь добавить виджет на экран и вы можете делать pull и push с вашего телефона кликая на виджет!

Вуаля, теперь можно, например, редактировать заметки и сразу коммитить их в репозиторий, чтобы не потерять историю изменений!

 

Оставить комментарий

 
  2020-08-15

Amazfit Watchface

Установил GreatFit новый циферблат для своих часов Amazfit Stratos. Пока очень нравится.

Вот ссылка на обсуждение на XDA.

Самое интересное, что у этого цифербрата есть богатые настройки - это не просто зазипованная картинка но андроидное приложение с выбором цветов языков и т.д.

Про возможность настрек циферблатов в Амазфит я даже не догадывался. Оказывается, при долгом клике на экран с циферблатом в активном режиме часы переходят в режим настройки циферблата где можно выбрать другой циферблат или настроить текущий.

Исходники доступны здесь. Можно посмотреть как оно сделано, и даже добавить свой функционал.

 
 
 

Оставить комментарий

 
  2020-07-18

Запуск Linux под Android без регистрации и SMS

Давно интересуюсь темой запуска Линукс программ на мобильных устройствах. Все дело в том, что мобильные прогаммы по функционалу сильно проигрывают своим компьютерным аналогам, в то же время современные мобильники имеют железо, которое, по вычислительной мощности лишь незначительно уступает железу персональных компьютеров, а иногда, даже, в чем то у него выигрывает. Почему же я не могу запустить дескопное приложение на мобильном устройстве?

Оказывается, это вполне возможно, правда требует определенного погружения в тему и подходит далеко не всем. Последнее время ситуация значительно улучшилась - уже не нужно перепрошивать железо, получать рут доступ и тому подобное, можно обойтись минимальным набором программ из Google Play.

Необходимое железо

Прежде всего понадобится подходящий телефон с Android. Не все устройства подойдут, так как различные телефоны работают с разными типами процессоров, данный метод сработает если у вас 64 битный ARM процессор. На 32 битных устройствах нужно использовать 32 битный образ Linux.

Желательно использовать физическую клавиатуру и мышь. Работать с програмной клавиатурой можно, но некоторые клавиши типа табуляции и стрелок отсутствуют на виртуальной клавиатуре, поэтому я предпочитаю физическую, благо большинство Bluetooth клавиатур прекрасно работают с Android.

Я использую раскладную клавиатуру с тачпадом - все же мобильное устройство должно оставаться мобильным и не занимать много места. Хотя на раскладной клавиатуре работать немного непривычно, возможно, у меня просто неправильная клавиатура.

Переключение языков по умолчанию происходит комбинацией Contol+Space как на Макинтош. Для этого в настройках Android нужно настроить дополнительные языки для физической клавиатуры.

Необходимые программы

Для полноценного запуска Линукс нам потребуются две программы:

  • Termux - эмулятор Linux под андроид.
  • XServer XSDL - реализация X Server для Андроид.
Установка Linux

В Termux выполняем следующие команды чтобы скачать образ Fedora:


pkg install wget

wget https://raw.githubusercontent.com/nmilosev/termux-fedora/master/termux-fedora.sh

sh ./termux-fedora.sh f32_arm64

startfedora

Если все скачалось успешно вы окажетесь в командрой строке Fedora и получите доступ ко всем программам экосистемы под платформу на процессорах ARM.

Обновим систему и поставим необходимые программы:


dnf update

#установим xfce:
dnf install @xfce 

#программы по вкусу, список можно расширить:
dnf instll mc gimp audacity

Следует отметить что приведенные выше команды скачивают порядка пятисот мегабайт данных и после установки займут раза в три больше места, поэтому перед их вызовом убедитесь, что обладаете достаточным объемом памяти на устройстве.

 

Запускаем XServer XSDL ждем когда появится синий экран с приглашением

	 
export DISPLAY=192.168.0.178:0 PULSE_SERVER=tcp:192.168.0.178:473 

startxfce4 &

Если все установилось нормально то в X Server вы увидите оконный менеджер и сможете запускать GUI программы.

Доступ к файлам устройства.

Файлы устройства видны по адресу /storage/emulated/0 - это не удобно так как родительские папки без доступа на чтение и из GUI программ туда не всегда получается пробраться - проблема решается созданием символической ссылки


ln -s /storage/emulated/0 /mnt/storage

Проблемы

Что пока не работает: звук пока мне не удалось заставить работать - хотя поддержка, вроде бы, заявлена.

Популярные браузеры не запустились. Ни Хромиум ни Firefox запускаться не захотели.

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

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

 

Оставить комментарий

 
  2018-06-13

Запуск Linux GUI приложений из под Android без рута

Обнаружил интересный способ запустить GUI приложение для Linux на Андроид без рута. Есть такой интересный эмулятор Linux окружения под Android - Termux. Эмулятор умеет много чего, например, имеется встроенный пакетный менеджер apt и можно полноценно установить nodejs и использовавать его для своих нужд.

К сожалению, в репозитории приложения нет GUI программ, однако умельцы научились запускать из него docker образ Linux Fedora Dektop, на котором уже можно запускать полноценные GUI приложения. Так как Fedora работает chroot окружении - накладные расходы на виртуализацию не сильно большие. В качестве графического сервера можно использовать XServer XSDL, который является нативным Андроид приложением.

Таким образом получается, что почти на любом телефоне с процессором ARM можно запускать Linux так же эффективно, как и на настольном компьютере или на ноутбуке.  Мне пока удалось запустить таким образом gimp и gedit, однако, в сети полно скриншётов с полными экранами KDE и LXDE - так что имеет смысл попробовать. 

Учитывая, что сейчас телефоны практически такие-же мощные как и настольные компьютеры, тема видится мне весьма интересной.

 

Оставить комментарий

 
  2015-06-09

Новая версия Mono Bluetooth Router с багфиксом и виджетом

Выложил новую версию Monobluetooth Router и Monobluetooth Router Pro

Исправил восстановления подключения после телефонного звонка, исправил баг не позволяющий отключать звуковой сигнал после подключения, и в Pro версии добавил виджет. 

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

Правда, хочу открыть маленькую тайну, хотя это, возможно, и общеизвестный факт, что бесплатная версия приложения мне приносит больший доход чем платная версия. Все дело в том - что пользователей бесплатной версии много больше чем Pro пользователей - а значит, реклама оказывается более эффективной. Значит ли это, что я мог бы добавить виджет и в Pro версию чтобы сказать спасибо и остальным пользователям. Мог бы если бы не одно но...

Реклама же показывается в окне приложения - а значит, если я разрешу всем пользователям использовать виджет - им больше не нужно будет открывать приложение - кликнул на иконку на экране и ок. Соответственно, показы рекламы сразу упадут. Смысла же вешать какую либо еще рекламу в приложение я не вижу - всякие попапы, пуш уведомления и прочая раздражающая хрень мне в приложении не нужна. Только маленький баннер внизу экрана и все. К слову сказать, сам я пользуюсь бесплатной версией, ну как то так получается... реклама меня ничуть не раздражает.

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

Доходы от рекламы и продажи приложения позволяют уделять время на развитие моих мобильных приложений не нагружая очень сильно семейный бюджет. Спасибо всем!

 

Оставить комментарий