Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Управляйте маятником, чтобы построить самую высокую (и устойчивую) башню из падающих сверху постов. Следите за временем на каждый бросок по полоске справа: если она закончится, пост упадет мимо башни.

Башня

Аркады, Строительство, На ловкость

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Android + Linux

С этим тегом используют

Игры Смартфон Приложение iOS Телефон Google Play iPhone Windows IT Программирование Ubuntu IT юмор Компьютер Программист Все
148 постов сначала свежее
37
mozaroc
1 год назад
Лига Сисадминов
Серия X-ray и компания

Настройка 3xui. part 2⁠⁠1

В прошлой статье мы говорили об установке и настройке 3xui панели для Xray, сегодня внесем еще некоторые настройки которые позволят использовать панель чуть более удобно, а так же разрулим трафик, что бы не гонять лишний через прокси.

Подписка(Subscription)

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

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

Для собственных нужд подойдет бесплатный саб домен третьего уровня, как его получить я рассказывал в одной из прошлый статей на пикабу, если коротко то:

- идем на сайт duckdns.org

- авторизуемся/регистрируемся

- добавляем домен и закрепляем за ним IP вашего сервера.

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

По этому доменному имени сразу станет доступна и сама панель. Теперь нам нужно выпустить для него сертификат, для этого нужно зайти по доменному имени и порту,(https://ваш_домен:ваш_порт) и веб сервер получит его автоматически. При заходе будет небольшая задержка.

Веб сервер caddy хранит сертификаты по следующему пути, зайдите на сервер по ssh и проверьте что все на месте, т.к. они нам понадобятся:
/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/ваш_домен/

Проверили - продолжаем. Идем в панель, авторизуемся и заходим в Настройки -> Подписка

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

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

Указываем путь до SSL сертификата, лежит в указанной выше директории, называется ваш_домен.crt и его ключа в той же директории ваш_домен.key.

Даллее нужно открыть порт на фаерволе сервера

ufw allow ПОРТ_КОТОРЫЙ_ВЫ_ВЫБРАЛИ_ДЛЯ_ПОДПИСКИ/tcp

Далее сохраняем конфиг панели и перезапускаем ее.

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

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

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

Ссылку можно посмотреть и скопировать в разделе Информация у каждого пользовательского подключения

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

К сожалению т.к. подписка сделана напрямую без реверспроксирования, x-ui нужно будет переодически перезагружать, сделать это можно по крону или добавив пару строк в systemd юнит x-ui. Я уже плотно перешел на использование юнитов и таймеров systemd поэтому покажу пример для нее

Открываем файл /etc/systemd/system/x-ui.service

nano /etc/systemd/system/x-ui.service

и в секцию [Service] добавляем строчку
RuntimeMaxSec=86400s

а строчку Restart меняем на

Restart=always

Сохраняем, выходим и говорим systemd перечитать изменения и перезапускаем x-ui

systemctl daemon-reload
systemctl restart x-ui

Теперь ссылку на подписку можно скармливать клиентам, для некобокс это делается так же копипастом в интерфейс, возможно потребуется удалить уже настроенный профайл, в мобильных клиентах это отдельные разделы. Для nekoray - Копируем ссылку в панели для пользователя, запускаем приложение, и просто по Ctrl+V вставляем, нажимаем ОК

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост
Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Наше подклчение получено по подписке, можно запускать и пользоваться

Для FoXray - Заходим в раздел Subscriptions и добавляем по плюсику, переслать и скопировать ссылку можно через какой-либо мессенджер.

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост
Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Теперь про Android - я немного опростоволосился, и не смог добавить ни подписку ни правила маршрутизации(о которых ниже) в приложении NecoboxForAndroid, решил попробовать в приложении v2rayNG и там все получилось в пару нажатий. Это приложение можно поставить из магазина напрямую. Поэтому далее инструкция для него. В панели открываем QR-код пользователя, его можно скопировать и отправить на телефон, или сразу же отсканировать устройством, после активации подписки будет показываться два кода, один для подключения, один для подписки.

Далее открываем приложение v2rayNG на телефоне, в правом верхнем углу тыкаем на плюсик и выбираем Импорт профиля из QR-кода

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Далее выбираем отсканировать или открыть код из файла

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Сканируем QR-код подписки, но сразу подключение не добавится, нужно дать команду на обновление подписки. Жмем по трем точкам в правом верхнем углу и выбираем Обновить подписку

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

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

Маршрутизация

Теперь хорошо бы сделать что бы трафик до российских доменов напрямую, для этого открываем nekoray, идем в Preferences - Routing settings - Simple route - Custom route

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

И в появившемся окне Json Editor прописываем следующее:
{
"rules": [
{
"domain_suffix": [
".ru"
],
"outbound": "direct"
}
]
}

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Сохраняем, проверяем, например сайт https://2ip.ru должен теперь показывать ваш домашний адрес, а https://whatismyipaddress.com/ адрес вашего сервера

Для FoXray все чуть проще, нужные правила там уже есть, осталось их только активировать. В самом верху главной страницы приложения заходим в Routing & DNS

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

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

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост
Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Далее активируем набор правил и сохраняем

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Можно активировать и подключение и проверить опять же на сайтах https://2ip.ru и https://whatismyipaddress.com/

Для v2rayNG все так же не сложно

Идем в настройки, и мотаем до блока с маршрутизацией, сразу меняем Доменную стратегую на AsIs и заходим в Пользовательские правила

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

В правилах переходим на вкладку Прямые и вводим domain:ru и не забываем сохранить нажатием на галочку

Настройка 3xui. part 2 Гайд, Linux, Android, iOS, VPN, X-ray, Длиннопост

Далее возвращаемся на главный экран, перезапускаем подключение и проверяем.

На этом на сегодня все, спасибо за внимание

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

https://t.me/crazy_day_admin

И копия статьи в телеграф

А если вы хотите сказать спасибо за статью, вы можете приобрести сервер по моей реферальной ссылке у компании veesp https://secure.veesp.com/?affid=860 со скидкой 15% по промокоду OCTOBER2023

Показать полностью 19
Гайд Linux Android iOS VPN X-ray Длиннопост
26
LotusEnjoer
LotusEnjoer
1 год назад

Microsoft заблокировала возможность активировать новые сборки Windows 10/11 рабочими ключами Windows 7/8⁠⁠

В конце сентября 2023 года Microsoft заблокировала возможность активации новых сборок Windows 10/11 рабочими ключами от старых версий операционных систем Windows 7/8/8.1.

В настоящий момент активация стабильных сборок Windows 10/11 рабочими ключами Windows 7/8/8.1 ещё доступна, но как долго это будет продолжаться непонятно.

Профильные эксперты пояснили, что при попытке активировать старыми ключами последние предварительные сборки Windows 11 Canary и тестовые сборки Insider Preview возникает ошибка после ввода ключа.

По словам представителей Microsoft, ключи продуктов Windows 10 по-прежнему могут активировать Windows 11, если клиенты используют Windows 11 на ПК, официально поддерживающих эту ОС.

«Предложение Microsoft по бесплатному обновлению до Windows 10/11 завершилось 29 июля 2016 года. Путь установки для получения бесплатного обновления с помощью ключей Windows 7 и Windows 8 теперь удалён. Обновление с Windows 10 до Windows 11 остаётся бесплатным», — уточнили в Microsoft.

Windows Linux Android Хакеры Взлом Текст
5
8
ardublock
ardublock
1 год назад
ArduBlock

Установка приложения Enjoy Block⁠⁠

Установка приложения Enjoy Block на Mac OS

Установка приложения Enjoy Block на Windows 10

Показать полностью 1
[моё] Arduino Windows Android Linux Ardublock Электроника Видео YouTube
0
649
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения⁠⁠

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Размер экрана — краеугольный камень мира современных смартфонов. Кто-то считает, что дисплеи должны становиться только больше, а рамки — меньше, кто-то любит «средние» дисплеи диагональю в 5+", ну а кто-то остаётся ярым поклонником и приверженцем компактных смартфонов с крошечными дисплейчиками. В наше время, купить новый смартфон с относительно небольшим дисплеем за приемлемые деньги почти нереально — самые бюджетные модели будут слишком тормозными для современного пользователя. Некоторое время назад, я купил себе бюджетный крошечный смартфон 2012 года выпуска — Samsung Galaxy Pocket, причём всего за 100 рублей. Конечно же мне захотелось довести его до ума — а доводить пришлось руками и навыками прожженного программера! Какой смартфон можно получить за 100 рублей? Читаем в статье!

Минутка предыстории

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

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Однако несмотря на всеобщее засилие больших «лопат», в мире всё ещё оставались поклонники маленьких и компактных телефонов, которыми очень удобно пользоваться одной рукой. Сейчас подобные устройства представляют только небольшие бренды, известные достаточно в узких кругах — в основном, их можно купить на маркетплейсах, в обычных салонах связи их не найти. Мне известно о нескольких подобных устройствах, которые сейчас присутствуют на рынке. Первый из них «закос» под iPhone — Soyes XS11:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Но тут уж, если честно, хочется назвать такой смартфон не просто компактным, а совсем малюсеньким. На нём вполне удобно выполнять задачи звонилки, но совсем неудобно набирать текст — поэтому под наши задачи, он не особо подходит. Кроме того, эти девайсы работают на базе бюджетного смартфонного железа 6-7 летней давности, поэтому их производительность будет достаточно невысокой по меркам современного пользователя. Конечно же есть и более серьёзные варианты — например, компания Unihertz (да, тот самый продолжатель идей BlackBerry) делает смартфоны Jelly 2: дисплей с диагональю 3", Helio P61 под капотом и Android 11 на борту. Вот только цена, мягко говоря, кусачая — 18 тысяч рублей на момент написания статьи. Это слишком дорого!

Но если душа прямо таки лежит к компактным смартфонам, почему бы не обратиться к рынку Б/У устройств и не присмотреть что-то из… прошлого десятилетия? А вариантов ведь реально много — тут и LG Optimus L3 (3.2"), и Samsung Galaxy Pocket Neo (2.8"), Samsung Galaxy Star (3"), Samsung Galaxy Fame (3.5"), Samsung Galaxy Young. Все перечисленные девайсы стоят реально копейки — можно купить живой вариант до 400-500 рублей!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Я решил взять себе целых два смартфона: Samsung Galaxy Mini и Samsung Galaxy Pocket первого поколения. Оба достались мне в одном лоте за 2.000 рублей (с 20 телефонами) и обошлись мне по сто рублей, причём оба смартфона были рабочими! Чуть позже я докупил отдельно Galaxy Star (250 рублей), Galaxy Fame (250 рублей) и Galaxy Pocket Neo (~400 рублей) для полноты коллекции — вышло совсем недорого. Итак, что за характеристики мы получаем в смартфоне за 100 рублей:

  • Android: 2.3 Gingerbread.

  • Чипсет: Broadcom BCM21553 с одним ядром Cortex-A5 на частоте 832мгц. Видеочип: VideoCore IV, он же использовался в Raspberry Pi.

  • ОЗУ: 256 мегабайт (предположительно — DDR1).

  • Встроенная память: 3 гигабайта + слот для SD.

  • Дисплей: 2.8", 240x320, емкостной тачскрин.

  • Сеть: Поддержка 2G/3G. Об LTE и речи не идёт.



Выглядит не особо густо, да? И разрешение весьма низкое — большинство софта не запустится, а о клиентах современных сервисов и мечтать не приходится… или приходится?

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



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

Разработка под старые версии Android

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

Даже сейчас нет никакой проблемы скачать последнюю версию Android Studio, подключить смартфон с включенной отладкой и отлаживать приложение прямо на девайсе — logcat тоже есть. Единственный нюанс — поиск драйверов и ручное закрытие приложений в таскменеджере, если вы деплоите под Android 2.x (Android Studio не умеет сам закрывать приложение, чтобы переустановить пакет).


В целом, за всё время разработки под старые устройства, я пришёл к следующим выводам:

  • Поскольку большинство устройств имеет одно ядро, для плавности интерфейса нужно минимизировать любую работу в фоне.

  • Взаимодействие с современными веб-сервисами может быть осложнено из-за отсутствия поддержки TLS1.2 и устаревших сертификатов (проверка сертификатов легко обходится специальным костылем, а вот TLS — нет).

  • У Android до 3.0 вся отрисовка интерфейса программная и она опять же, будет сказываться на скорости работы фоновых служб. Чем менее интерфейс комплексный, тем лучше.

  • Пушей нет — да, вообще. Однако это ничуть не помешает нам сделать уведомления практически в реальном времени с помощью… очередного костыля!



Допиливаем ВК

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

Честно сказать, вся концепция интерфейса требовала полной переработки — боковое меню банально очень неудобно использовать на подобных устройствах из-за малых размеров каждой строчки. Поэтому я решил не изобретать велосипед, а обратился к дизайнерам Apple и первоисточнику: официальному клиенту ВК для iOS 6, родом из 2012 года!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Приложение для Android выглядело +- также в те годы. Видите вкладки с разделами снизу? Они то нам и нужны — это самый удобный способ навигации на таких смартфонах! Накидав макет в layout'е, я приступил к реализации:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Изначально мне хотелось, чтобы всё приложение было плавным и анимированным: для этого я обратился к фреймворку анимаций Android. Суть очень простая — это обычный интерполятор значений от a до b за определенный промежуток времени. При этом мы не можем анимировать произвольное свойство — только те, который уже реализованы в системе (переход, поворот, масштабирование, альфа-канал). Более наглядно это можно представить вот так:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Да, это всё анимация :) Получаем примерно такой результат:

Обратите внимание, что запуск большого количества анимаций будет вызывать перерисовку даже в том случае, если элемент не видно на экране — от чего у нас будут дикие тормоза! Осторожнее с этим.

После этого, я решил доработать раздел с музыкой: я все еще пользуюсь грязными хаками для получения доступа к API музыки, поскольку «левым» клиентам такой возможности не дают. Публично его расписывать не буду, поскольку это скорее всего нелегально, да и сами ребята из ВК об этом знают (но не думаю, что будут применять какие-то санкции по отношению к «маленьким» разработчикам) — но если нужно, пишите в личку, расскажу всю концепцию.

Во первых, мне хотелось добавить возможность скачивать треки на внутреннюю память/флэшку. А во вторых, мне хотелось добавить фоновое воспроизведение — до этого возможность свернуть приложение и послушать музыку уже была, однако Android мог в любой момент прибить окно с музыкой и оставить нас с носом, остаётся только реализация в виде foreground-сервиса:

В Android есть два типа служб: background (фоновые) и foreground (видимые пользователю). Первый тип служб система может прибить когда угодно — например мало памяти или экономия заряда АКБ. А вот второй тип служб система не прибивает практически никогда, поскольку они обозначают выполнение важной операции в фоне — например скачивание файла или обновление системы. Однако у них есть одно ограничение — они должны быть привязаны к собственному уведомлению, которое нельзя закрыть. В процессе реализации возникло еще пару проблем — Wakelock'и (механизм, предотвращающий уход девайса в «сон») и WiFiLock'и (тоже самое, но для WiFi).

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Точно таким же способом я реализовал механизм уведомлений — как я уже говорил раньше, пушей на старых смартфонах нет вообще ни в каком виде, поэтому пришлось реализовывать свой механизм «обновления»: каждые 3-5 секунд запрашиваем список последних 5 диалогов с сервера и сравниваем с предыдущим результатом, если есть новые сообщения — создаём нотификацию (листинг слишком длинный - пришлось перезалить на pastebin):

private NotificationCompat.Builder createMessageNotification(String sender, Stri - Pastebin.com

После этого, я начал рутинную работу по реализации интерфейса для данных с сервера — паблики, друзья, профили, лента и.т.п. В некотором смысле, реализация лента весьма занимательна: вообще, для очень больших списков существуют т.н виртуализация ListView — это когда ListView отображает только видимый пользователю кусок датасета (набора данных — например, список записей на стене) и на старых версиях Android она доступна. Однако мне было интересно реализовать вариант, который потреблял бы минимальное количество ОЗУ и где я точно знал бы, когда пользователь видит тот или иной фрагмент приложения. Поэтому я реализовал… пагинацию свайпами! Вот так привет из нулевых!

Для этого я использовал GestureDetector — встроенный в систему класс для обнаружения простых жестов — свайпов и.т.п. ВК при запросе ленты отдаёт специальную метку для получения следующей страницы новостей (поскольку она может динамически меняться и нужно хранить её стейт), мы эти метки просто сохраняем и переключаемся по странницам новостей с помощью обычных свайпов вправо-влево:

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост


Выглядит весьма забавно.

Юзабельно ли всё это на деле?

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

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Работает весьма шустренько, учитывая что это бюджетник 2012 года. Как насчет нашего самопального клиента ВК? Смотрим:


Работает весьма бодро. Не сказать что также плавно, как последний айфон, но и совсем плохим результат явно не назвать!

Смартфонный функционал у девайса тоже вполне ничего: 1-2 SIM (в зависимости от версии), нормальная синхронизация контактов с ПК (однако Kies вроде-бы не работает на Windows 10, но есть vcf):

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Встроенный почтовый клиент продолжает работать без каких либо проблем. Однако настраивать некоторые почтовые сервисы нужно вручную и с помощью «паролей приложений» — напрямую залогинится возможности нет. В случае «покета», придется поставить стоковый клиент из Android 2.3 вручную.
Мультимедийные возможности тоже радуют: встроенный плеер тачвиза мне всегда очень нравился. Есть и настройки эквалайзера.

Единственное, что откровенно подводит — браузер. Последним вариантом осталась Opera Mini 7 — она позволяет смотреть сайты, но не поддерживает динамический контент, только статику. Ну, зайти на википедию или почитать статью на Хабре хватит. Родной браузер уже не в состоянии что либо загрузить :(

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост



Ну а в общем, производителньость смартфона весьма радует, согласитесь? Нельзя сказать, что он уж слишком тормозной — по крайней мере, современные ультрабюджетные смартфоны (до 4-5 тысяч рублей) зачастую показывают себя гораздо хуже чем и флагманы прошлых лет, и даже бюджетники!

Заключение

И всё таки, я считаю что мне удалось в каком-то смысле вдохнуть новую жизнь в старенький девайс. Если использовать подобный девайс как второй — на случай, если сел основной смартфон, то такой миниатюрный красаввчик может неождианно выручить даже в довольно сложной ситуации. Кроме того, эти смартфоны всеядны к аккумуляторам — достаточно подпаять + и — и они будут работать хоть от BL-4C.

Главная ценность Galaxy Pocket — в его компактных размерах. А поскольку по настоящему дешевых, маленьких и шустрых смартфонов становится всё меньше и меньше, то нам остаётся лишь продлять жизнь моделям прошлых лет! Есть ли в этом смысл и получил ли смартфон новую жизнь? Пишите в комментариях!

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения Гаджеты, Android, Смартфон, Покупка, Galaxy, Samsung, Java, Программирование, Самопал, ВКонтакте, Ретро, Девайс, Ништяки, Мобильные телефоны, Электроника, Телефон, Linux, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост


Клиент ВК можно сказать на 4pda. Там лежит самая последняя версия (для скачивания нужна регистрация на форуме). Если по каким-то причинам не хотите регистрироваться на форуме — я выложил актуальную версию в комментариях.


Эта статья поддерживается командой ITGLOBAL.COM

Мы — первый облачный провайдер в России, а также интегратор, поставщик ИТ-услуг, продуктов, сервисов и разработчик собственного ПО.

• Наш сайт
• Наш блог про виртуализацию и Enterprise IT
• Истории успеха наших клиентов

Показать полностью 13 2
[моё] Гаджеты Android Смартфон Покупка Galaxy Samsung Java Программирование Самопал ВКонтакте Ретро Девайс Ништяки Мобильные телефоны Электроника Телефон Linux Видео Без звука Вертикальное видео YouTube Длиннопост
91
laomillerv
1 год назад
Компьютер это просто

СДЕЛАТЬ ЛЮБОЙ КОМПЬЮТЕР, СМАРТФОН и т.д. БЫСТРЕЕ. + ПОВЫСИТЬ УРОВЕНЬ БЕЗОПАСНОСТИ⁠⁠

Нетривиальный способ который работает лучше остальных! Используй фаервол. Запрети системе и самому фаерволу в том числе, знать о существовании сети. исключительно как пример а не реклама, одни из самых простых: для windows - simplewall, для android - AFWall+

[моё] Компьютер Ремонт компьютеров Smart Скорость Скорость интернета Скорость работы Гаджеты Windows Компьютерная помощь Мобильные телефоны Сборка компьютера Ноутбук Ремонт ноутбуков Ремонт телефона Linux Android Смартфон Нужна помощь в ремонте Текст
15
ShuricU
ShuricU
1 год назад

Orange PI PC: Установка операционной системы (Android, Ubuntu)⁠⁠

В этом видео показан процесс установки операционных систем Ubuntu, Android на одноплатный компьютер Orange Pi PC.

В этом видео показан процесс установки операционных систем Ubuntu, Android на одноплатный компьютер Orange Pi PC.

Ссылка на образы операционных систем

http://www.orangepi.org/html/serviceAndSupport/index.html

логин и пароль на OS ubuntu: user: root , password: orangepi

Ссылка на группу где Вы можете задать вопросы об Orange Pi PC, а также технические вопросы

https://vk.com/public211863062

Ссылки на программы, которые используются в этом видео

https://www.7-zip.org

https://www.balena.io/etcher/

https://chinagadgetsreviews.com/download-latest-version-of-p...

https://www.sdcard.org/downloads/formatter/sd-memory-card-fo...

Все программы, Вы используете на свой страх и риск

Показать полностью
Linux Raspberry pi Orange pi Orange Android Гаджеты Видео YouTube
4
5670
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля⁠⁠

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!

Мотивация


Честно сказать, идея попытаться реализовать свою прошивку мне пришла ещё давно. Однако, дабы не завлекать опытного читателя кликбейтом, я сразу поясню, в чём заключается «прошивка с нуля»:

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

  2. Мы не используем библиотеки AOSP: наша прошивка без необходимости не использует никаких библиотек уже имеющегося образа Android. Вся работа с железом происходит с помощью низкоуровневого API Linux. Это значит, что отрисовка графики, звук, управление ресурсами и питанием ложится полностью на нас.

  3. Прошивка может запускать только нативные программы: да, это тоже камень в сторону Android. Изначально, наша прошивка умеет запускать только нативные программы, написанные на C. Причём она экспортирует собственное C API — дабы приложения могли использовать всю мощь нашего смартфона в виде простого и понятного набора методов.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Проектов по выкидыванию Android из, собственно, Android-смартфонов как минимум несколько: UBPorts — бывший Ubuntu Touch, FireFox OS и его наследник Kai OS и конечно же, postmarketOS. Отчасти можно сюда отнести и Sailfish OS — но там образы имеются в основном на смартфоны от Sony. Все эти проекты объединяет сложность портирования и невозможность их завести на устройствах без исходного кода ядра. Даже если у вас есть исходный код ядра, но, например, устройство использует ядро 2.6 — навряд-ли вы сможете завести современный дистрибутив на нём.

Другой вопрос в том, что можно использовать полу-baremetal подход, когда от Linux берется практически минимальный функционал. Всё, что мы имеем — busybox, libc и низкоуровневый доступ к железу, благодаря API самого ядра. Как под это всё программировать — я рассказывал впрошлойстатье. Этот же подход мы будем использовать и сейчас — как иллюстрация реального применения подобного способа.

Итак, что наша прошивка должна уметь:

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

  • Уметь звонить и работать с модемом: общение с модемом происходит посредством AT-команд — общепринятого в индустрии стандарта. Однако в случае нашего устройства, есть м-а-а-а-ленький нюанс, о котором я расскажу позже.

  • Иметь механизм приложений: мы ведь не будем хардкодить все «экраны» в прошивке в виде кучи стейтов, верно? Для этого у нас должен быть простой и понятный механизм слинкованных с прошивкой приложений.

  • Обрабатывать ввод: обработка тачскрина и жестов — это задача подсистемы ввода.

  • Реализовывать анимированный UI: здесь всё очевидно, наша прошивка должна иметь готовые элементы пользовательского интерфейса для будущих приложений: кнопки, текстовые поля и т. д. О деталях реализации этой подсистемы, я расскажу ниже (а реализовал я её очень необычно для такой системы).


Начинаем мы с хардварной части. Именно здесь я покажу вам, как использовать внешние шины вашего устройства.

Аппаратная часть


В качестве смартфона для нашего проекта, я выбрал популярную бюджетную модель из 2012 года — Fly IQ245 Wizard. Это простенький китайский смартфон, который работал на базе популярного в прошлом 2G-чипсета: MediaTek MT6573, да и стоил около 2х тысяч рублей новым. Однако вот в чём суть: мне удалось заставить работать «медиатековский» модем и даже позвонить с него на свой основной телефон, но… только ввод и вывод данных из звукового тракта модема происходит через звуковую подсистему Android — к которой доступа у нас нет!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Именно поэтому, мы идём на очень хитрый и занимательный костыль: мы распаяем внешний модем сами! В качестве радиомодуля у нас выступит модуль SIM800 от компании SIMCOM. И даже он очень близок к нашему смартфону в аппаратном плане: ведь в основе этого модуля лежит популярнейший чипсет из кнопочников тех лет: MediaTek MT6261D. Преимущество SIM800 в его цене — он стоит пару сотен рублей, так что по карману выбор модема не влияет.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


На весу паять крайне неудобно. В финальном варианте перепаяю нормально.

Но как его подключать? SIM800 общается с другими устройствами посредством протокола UART — универсальный асинхронный приемо-передатчик. И вот тут мы включаем смекалочку. Разбираем устройство и видим то, что я пытаюсь долгое время донести до моих читателей — аж два канала UART: один практически посередине, второй справа. Нам нужны пятачки TXD4 и RXD4:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Обычно на этот канал UART летят логи ядра, которые можно без проблем отключить минорной правкой U-Boot в HEX-редакторе. Впрочем, модем никак не реагирует на «мусор» из консоли и просто отвечает ошибками — хватит лишь очистить буфер сообщений для того, чтобы все работало нормально. Подпаиваемся к UART'у с помощью преобразователя — у меня оным выступает ESP32 с выпаянным чипом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост
Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


Увидели логи? Замечательно, пора попытаться что-то отправить на ПК и с ПК. UART работают без тактовых сигналов и зависит исключительно от старт/стоп битов и бодрейта, который на устройствах MediaTek равен 921600. TXD4 и RXD4 обнаруживаются в системе на консоли/dev/ttyMT3. Пробуем что-то отправить: всё работает!

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Вот теперь-то можно подключить наш внешний модем и попытаться пообщаться с ним, отправив тестовую командуAT. Модем отвечаетOK! На этот раз я работаю с смартфоном из режимаFactory mode— практически тоже самое, что и режим recovery, но позволяющий, например, получить доступ к камере устройства. Простая и понятная схема, поясняющая что и куда подключать:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



На этом модификация аппаратной частипоказакончена. Пора переходить к реализации софта! Я решил разделить материал на каждый модуль, который я реализовывал — дабы вам был понятен процесс разработки и отладки прошивки!

Заставляем смартфон запускать нашу прошивку


На этот раз я решил загружать смартфон из режима рекавери. Однако никто не мешает в будущем просто прошить раздел recovery вместо boot и получить прямую загрузку прямо в нашу прошивку. Время такой загрузки будет заниматься ~3-4 секунды с холодного старта. Очень даже ничего.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Я взял уже готовый образ TWRP для своего смартфона и пропатчил его, дабы сам рекавери не мешал своим интерфейсом. Для этого я распаковал образ recovery.img с помощью MtkImgTools и убрал в init.rc запуск службы /sbin/recovery. После этого, я залил прошивку обратно на устройство и получил подобную свободу действий — консоль через USB и чистый холст в виде смартфона! Старые смартфоны на чипсетах MediaTek шьются через USB только после замыкания тест-поинта — на моем аппарате его местонахождение очевидно. Замыкаем контакты между собой, подключаем смартфон без АКБ к ПК и ждем прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Теперь можно деплоить программы! Важный нюанс: в отличии от Makefile из прошлой статьи, для Android 2.3 параметр -fPIE нужно убрать — иначе динамический линкер (/sbin/linker) будет вылетать в segmentation fault.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

❯ Графическая подсистема


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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



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

В случае с этим устройством (и большинством старых устройств), формат пикселя оказался RGB565 — т. е. 5 бит красный, 6 бит синий, 5 бит зеленый. Конвертация форматов пикселей всегда была занозой в заднице для программных рендереров, поскольку занимает дополнительное время, которое обратно зависимо от размера дисплея. Изначально я решил выделить буфер в том же формате, что и фреймбуфер, но затем решил сделать классический и самый портативный формат — RGB888 (24х-битный цвет), а при копировании кадра на экран, на лету делать преобразования цвета:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Очень важный нюанс, который я не упомянул в предыдущей статье: на устройствах прошлых лет для обновления фреймбуфера необходимо послать структуру var_screeninfo, где хотя бы что-то изменено, иначе никаких изменений мы не увидим. Этот же костыль используется в родном recovery для отрисовки, а судя по исходникам драйвера fb, «правильный» способ обновить экран — послать драйверу ioctl (который я пока что не пробовал).

После того, как я смог управлять дисплеем, я решил загрузить и отобразить какую-нибудь картинку. Пусть это будут обои для нашей прошивки:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Загрузчик TGA сильно не поменялся: я таскаю его в неизменном виде из проекта в проект. Он поддерживает любые форматы пикселя, кроме палитровых, но я его искусственн ограничиваю на RGB888 и RGBA8888 — для поддержки обычных картинок и картинок с альфа-каналом. После этого, я написал не очень шустрые, но достаточно универсальные методы для отрисовки картинок. Для больших участков кода, я буду использовать pastebin, поскольку на Пикабу до сих пор не добавили ни подсветки синтаксиса, не нормальный перенос форматирования табов :(

__inline void __ClipPrimitive(CFrameBuffer* fbDesc, int* dw, int* dh){ if - Pastebin.com

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

Сразу же реализовываем методы для рисования шрифтов: они у нас будут совсем простенькими — только моноширинные (все символы имеют одинаковую ширину) и растровыми (для каждого размера придется «запекать» несколько шрифтов). Для этого я написал маленькую программку, которая рисует виндовые шрифты прямо в наш самопальный формат:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Формат примитивнейший:

1 байт говорит нам о размере шрифта и далее идут 255 изображений символов. Да, это не очень эффективно т.к попадают пустые символы из ASCII-таблицы, но в будущем это можно поправить.

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

Теперь у нас есть отображение картинок и текста! Что с этим можно сделать?

❯ Обработка ввода

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост
Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Пока что здесь не хватает обработки «хардварных» кнопок — домой, меню, назад и т. п. Однако в будущем это всё можно реализовать!

❯ Анимация


Не забыл я и про анимации. Ну кому с такими ресурсами нужен неанимированный топорный интерфейс? Пусть лучше будет анимированный, пусть и примитивный!

Аниматор напоминает оный из ранних версий Android: он имеет фиксированный набор свойств, которые умеет интерполировать в промежутках определенного времени. Если простыми словами: то он оперирует линейными отрезками времени a и b, в промежутке которых мы имеем значение «прогресса» — которое даёт нам результат от 0.0f (начало анимации) до 1.0f (конец анимации). Пока время тикает до необходимого интервала (duration), аниматор интерполирует заранее назначенные ему поля до нужных значений.

Именно так и получается плавность! Похожим образом реализованы анимационные системы во многих играх и мобильных ОС, только там они гораздо более комплексны: есть сериализация/десериализация из файлов, поддержка кейфреймов (несколько последовательных состояний на одном промежутке времени), поддержка кастомных свойств и т. п.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост


❯ Модем


Как я уже говорил раннее, работа с модемом происходит посредством AT-команд. Лучше всего обрабатывать ввод-вывод модема из отдельного потока, поскольку он может отвечать довольно медленно и тормозить UI-поток основной программы, вызывая лаги. В SIM800 уже реализован весь GSM-стек, в том числе декодирование и вывод звука через встроенный усилитель с фильтром — остается только подключить динамики и микрофон от нашего телефона. Пока что я подсобрал аудиотракт на том, что было под рукой — микрофон от нерабочего смартфона и динамик от планшета, но для проверки этого хватает:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

Важный нюанс: по умолчанию, tty-устройства в Linux работают по терминальному принципу — т. е. дробят транзакции по символу окончания строки (\n), имеют ограниченный буфер и т. д. Для нормальной работы в условиях модема — когда фактически длина ответа неизвестна, а в сам ответ могут «вклиниваться» Unsolicited-команды (своеобразные флаги о состоянии от модема, которые могут прийти в произвольное время — т. е. при входящем звонке, модем начнёт флудить RING в терминал), необходимо иметь возможность точно прочитать весь буфер до конца и парсить данные «по месту». Для этого используется raw-режим терминала:

tcgetattr(modemFd, &tio);

tio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);

tio.c_oflag &= ~(OPOST);

tio.c_cflag |= (CS8);

tio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);

tcsetattr(modemFd, TCSAFLUSH, &tio);

После чего можно запросить состояние модема:

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост

И продолжить работу дальше. После этого, можно переходить к реализации самой прослойки между модемом и вашей программой:

void CModem::Dial(char* number){ if(strlen(number) > 32) return; cha - Pastebin.com

Пытаемся позвонить с помощью метода Dial и видим, что всё работает! Это очень круто! А теперь, конечно же, самое время переходить к реализации того, чего вы ждали — пользовательского интерфейса!

❯ Главный экран


К выбору концепции для интерфейса, я поступил максимально просто — «слизал» дизайн первых версий iOS. Как по мне, это одни из самых красивых версий iOS вообще — все эти приятные градиенты и переливания. Конечно, я не так крут, как инженеры Apple, да и мощного UI-фреймворка у меня пока что нет, поэтому я приступил к реализации с «минимальным» функционалом.

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Начал я с разделения главного экрана на модули и продумывания архитектуры основного «лаунчера». У нас есть статусбар, который рисуется поверх всех приложений, полка с приложениями — AppDrawer и сами экраны приложений, унаследованные от суперкласса CScreen.

class CScreen{protected: CAnimator* windowAnimator;public: CScreen(); - Pastebin.com

На данный момент, отрисовка достаточно примитивная: сначала рисуются фоновые обои, затем, если нет никаких активных экранов — AppDrawer и в самом конце рисуется статусбар и всевозможные оверлеи.

void CLauncher::DrawAppDrawer(){ for(int i = 0; i < sizeof(Apps) / sizeof(CA - Pastebin.com

Практически сразу я решил обкатать анимационную «систему» и добавить первые анимашки — выезжающий статусбар и анимация а-ля айфон:

animator = new CAnimator();

animator->SetTranslation(0, -imFiller->Height, 0, 0);

animator->Run();

Выглядит симпатичненько. Если я смогу поднять хардварный GLES, то это получится сделать в разы плавнее и шустрее — не хуже айфонов тех лет! Реализация самого статусбара примитивненькая, но вполне рабочая:

gLauncher->Graphics->DrawImage(imFiller, animator->X, animator->Y);

gLauncher->Graphics->DrawImage(imBattery[(int)gLauncher->PowerManager->GetBatteryLevel()], imFiller->Width - imBattery[0]->Width - 5, animator->Y + 5);

char timeFmt[64];

time_t _time = time(0);

tm* _localTime = localtime(&_time);

strftime((char*)&timeFmt,

sizeof(timeFmt), "%R", _localTime);

gLauncher->Graphics->DrawString(gLauncher->Font, (char*)&timeFmt, 0, 0);

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

Обратите внимание на удобство примененного подхода Immediate GUI. Нам понадобился новый элемент интерфейса, который описывает кнопку номеронабирателя? Мы просто реализовываем ещё один метод, который берет за основу стандартную кнопку и дорисовывает к ней текст. Всё крайне просто и понятно, хотя на данный момент слишком захардкожено. :)

❯ Звоним!


Пришло время совершить первый звонок с нашей по настоящему кастомной прошивки. Набираем номерок и…

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля Гаджеты, Смартфон, Телефон, Покупка, Китайцы, Fly, Моддинг, Программирование, 2D, Своими руками, Одноплатный компьютер, Raspberry pi, Orange pi, Инженерия, Электроника, Android, Linux, Unix, iPhone, Мобильные телефоны, Видео, Без звука, YouTube, Длиннопост



Да, всё работает и мы без проблем можем дозвониться :)

❯ Заключение


Конечно же, это далеко не весь функционал, необходимый любому современному смартфону. Здесь много чего еще нужно реализовать хотя бы для соответствия уровню бюджетных кнопочных телефонов: телефонную книгу, поддержку СМС/ММС, мультимедийный функционал с играми. Однако начало уже положено и самая необходимая часть модулей реализована. Этот проект очень занимательный для меня и я горд, что смог не на словах, а на деле показать вам, моим читателям, возможности моддинга совершенно NoName-устройств, без каких либо опознавательных знаков…

Моя задача заключается в том, чтобы показать вам возможности использования старых телефонов не только в потребительских, но и в гиковских DIY-сферах. Судите сами: огромный классный дисплей, емкостной тачскрин, готовый звук, камера — и всё это за каких-то пару сотен рублей. Главное показать людям, как всю эту мощь использовать в своих целях и делать совершенно новые устройства из существующих, а не выбрасывать их на помойку!
Сейчас смартфоны, подобные Fly из этого поста стоят копейки, а портировать на них прошивку можно без каких-либо трудностей. Я очень надеюсь, что после этого поста читатели попытаются сделать что-то своё из старых смартфонов, благо свои наработки я выкладываю на GitHub!

Показать полностью 23 2
[моё] Гаджеты Смартфон Телефон Покупка Китайцы Fly Моддинг Программирование 2D Своими руками Одноплатный компьютер Raspberry pi Orange pi Инженерия Электроника Android Linux Unix iPhone Мобильные телефоны Видео Без звука YouTube Длиннопост
442
8
Panda.news
Panda.news
1 год назад
TECHNO BROTHER

Представлен российский «аналог iPhone» — смартфон Р-ФОН⁠⁠

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

И всё же это не значит, что не нужно пытаться. Нужно, ещё как нужно.

НО!!! Жирнющее НО!

Я очень надеюсь, что всё же инфа об этом фейк, потому что... Р-ФОН? Серьёзно? Ну то есть, да, я прекрасно понимаю, что у нас теперь есть кейс "Вкусно и точка", который наглядно демонстрирует, что с неймингом у нас беда, но я думал, что после этого меня уже ничто не удивит. Р-ФОН, хоспаде... Р-ФОН!

Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Представлен российский «аналог iPhone» — смартфон Р-ФОН IT, Техника, Смартфон, Гаджеты, Мобильные телефоны, Информационная безопасность, Linux, Android, Apple, Электроника, Длиннопост
Показать полностью 6
[моё] IT Техника Смартфон Гаджеты Мобильные телефоны Информационная безопасность Linux Android Apple Электроника Длиннопост
82
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии