Pull to refresh

Появилась публичная бета-версия приложения «Яндекс — с Алисой» для Android

Reading time 1 min
Views 2.2K
Development for iOS *Development for Android *Mobile applications testing *IT-companies


В магазине приложений Google Play появилась публичная бета-версия приложения «Яндекс — с Алисой». Тестовая версия приложения стала доступна не только для Android, но и для iOS через сервис дистрибуции мобильных приложений TestFlight.
Читать дальше →
Total votes 4: ↑3 and ↓1 +2
Comments 2

Шаблоны проектирования при разработке под Android. Часть 4 — Сохранение данных. Domain Model, Repository, Singleton и BDD

Reading time 10 min
Views 15K
Development for Android *
Сразу хочу сказать, что в статье я не буду описывать как надо работать с Data Provider-ом. Это можно найти и в документации и в многочисленных статьях в интернете.
Здесь я расскажу про шаблоны проектирования Domain Model, Singleton, Repository, про подход Behavior Driven Development (BDD) и как я их использовал в своей программе.

Шаблон Domain Model используется в тех случаях когда разработка ведется от предметной области, в таких случаях есть понятная предметная область и ее термины просто воплощаются в байтах.

Например, в моей программе предметная область состоит из данных расписания, заданного в виде нескольких будильников, для будильника можно задать дни недели и время, а также признак «будильник включен». Так же есть несколько алгоритмов, например получить будильник, который сработает следующим и дату и время его срабатывания. Поскольку будильник может дремать, получается что у одного будильника есть несколько срабатываний с разными действиями: первое срабатывание, дремание, и последнее дремание, когда кнопка дремать уже не доступна. Поэтому есть еще алгоритм поучения ближайшего абсолютного времени и действия.
Так же есть алгоритмы для создания нового будильника и редактирования/удаления существующих.

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

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

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

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

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

Если бы я использовал отдельный класс для редактирования/сохранения будильников и отдельный класс для вычисления ближайшего будильника, то я конечно бы протестировал их по отдельности, но не смог бы проверить их вместе и не смог бы проверить основные действия пользователя.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 2

Новый Google Chrome в Android — без поддержки flash

Reading time 1 min
Views 40K
Development for Android *
Буквально вчера на хабре появился топик о новой бета-версии гугл хрома под андроид. Однако одну маленькую, но очень важную деталь автор упустил — браузер не поддерживает флеш. Совсем.

И хотя дефолтный браузер по-прежнему поддерживает флеш, «Гугл» планирует (и это очевидно) в будущем заменить его на хром. «Эдоуби», разумеется, говорит «что это всё в рамках их „стратегии“» и что вместо флеша их сотрудничество направлено на HTML5 и пару специфических технологий от «Эдоуби» (например, CSS Regions, которые реализовали в браузере).

В общем, ноябрьское заявление «Эдоуби» о том, что она «убивает» флеш для мобильных устройств теперь получило реальное подтверждение. А ведь помнится, не так давно, «поддержка флеша» позиционировалась одной из ключевых фич андроида по сравнению с iOS.
Читать дальше →
Total votes 159: ↑117 and ↓42 +75
Comments 228

Конфигурация приложения в Android: быстрая разработка

Reading time 12 min
Views 12K
Development for Android *
imageПри разработке мобильных приложений зачастую возникает необходимость хранить настройки приложения (выбранную пользователем цветовую тему, пароль доступа к приложению, параметры синхронизации с сервером и т.д.). Поскольку такие задачи возникают довольно часто, в Google позаботились о разработчиках и создали механизм для быстрой и легкой реализации данного функционала. Этот механизм позволяет легко создавать, сохранять, отображать и производить разные манипуляции с настройками приложения. Мало того он позволяет автоматически создавать пользовательский интерфейс. При описании типа параметра настроек — автоматически генерируется часть пользовательского интерфейса в зависимости от типа параметра (boolean — чекбокс, String — поле ввода, ...) без написания кода. Звучит неплохо для быстрой разработки, не так ли?
Читать дальше →
Total votes 30: ↑22 and ↓8 +14
Comments 0

Обзор первого настольного IP телефона на платформе Android — Grandstream GXP2200

Reading time 5 min
Views 27K
МУК corporate blog Development of communication systems *
Хочу познакомить вас с очередной новинкой от компании Grandstream. Емкостной экран с отличными характеристиками, полнофункциональный Android и возможность установки любых приложений делают из настольного IP телефона устройство с широчайшими возможностями.

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

Настольный телефон с птицами внутри
Total votes 30: ↑29 and ↓1 +28
Comments 29

Aviate — новый адаптивный лаунчер (+инвайт)

Reading time 2 min
Views 43K
Interfaces *
image На днях для андроид был запущен новый проект Aviate — лаунчер способный адаптироваться под потребности владельца телефона и выводить необходимые в данный момент приложения и виджеты.

image

В видеоролике на сайте разработчика коротко говорится о том, что эта замечательная программа которая сделает жизнь удобнее, а управление всем тем скоплением приложений (у многих их десятки) на вашем смартфоне проще и быстрее.
Мне удалось получить инвайт и подкатом небольшой обзор этого проекта.
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Comments 297

Так ли хорош React Native?

Reading time 3 min
Views 25K
Development for iOS *Development of mobile applications *Development for Android *
React Native React Native довольно новая технология которая с первого взгляда кажется серебряной пулей для многих начинающих разработчиков. В статье я хочу развеять этот миф и рассказать что же именно не так с React Native и почему стоит подождать прежде чем его использовать.

И так по порядку, я Full-stack разработчик. Использую последний стандарт javascript на фронетнде и бэкенде. Опыта разработки мобильных приложений нет, но есть 5 лет опыта разработки высоконагруженных проектов на node.js, asp.net mvc. Опробовать React Native я решил при создании простого мобильного приложения — клиента LessPass для Android.
Читать дальше →
Total votes 41: ↑24 and ↓17 +7
Comments 34

Реактивная работа с Bluetooth в реальных условиях

Reading time 11 min
Views 10K
Development for Android *Kotlin *
Tutorial

Небольшое предисловие, или в чем же боль


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


Поскольку я искренний фанат реактивности в приложениях, то такие проблемы приходилось решать собственными силами, поскольку решений в сети просто нет. Совсем. О получившейся архитектуре работы с Bluetooth-устройствами я и хотел бы вам рассказать.


Опасности на пути джедая


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


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

Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 6

Превращаем старый телефон на Android в резервный сервер с помощью UrBackup/Linux Deploy. Часть 1

Reading time 15 min
Views 28K
RUVDS.com corporate blog Configuring Linux *System administration *Development of mobile applications *Server Administration *
Tutorial
Translation


Сегодня я покажу вам, как запустить полноценный резервный сервер на рутованном телефоне Android с помощью UrBackup и Linux Deploy. Пластиковый мусор уже заполонил все вокруг, а в добавок к нему очередной глобальной эко-проблемой становятся еще и электронные отходы. Так зачем выбрасывать прекрасный, пусть даже потрескавшийся и поношенный, телефон?
Читать дальше →
Total votes 57: ↑56 and ↓1 +55
Comments 52

Монтирование и управление LVM-томами на Android Linux Deploy. Часть 2

Reading time 6 min
Views 2.9K
RUVDS.com corporate blog Configuring Linux *System administration *Development of mobile applications *Server Administration *
Translation

В этом руководстве мы рассмотрим создание и монтирование LVM томов на рутованном устройстве Android. Это вторая часть моего проекта «Резервный сервер на Android», но она будет на 80% состоять из работы с LVM и лишь на 20% с UrBackup/Linux Deploy. Первая часть доступна здесь.
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 4