Сообщество - Android Developers

Android Developers

51 пост 1 593 подписчика
31

Тесты ПУЭ на Xamarin

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

Ссылки на посты:

Запилил тесты ПУЭ

Выкатил вопросы на 5 группу электробезопасности

Решение на XamarinForms содержит несколько проектов. Главный проект и проекты для каждой выбранной на этапе создания решения платформы.

Здесь была выбрана только одна платформа, поэтому решения два.

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

Каждый вопрос с вариантами ответов хранится в классе QuestCase.

Переменная errors - счётчик до выхода вопроса из списка чаще показываемых вопросов. Когда происходит неправильный ответ, errors становится 5. С каждым правильным ответом errors уменьшается на 1. Когда errors становится 0, вопрос исключается из списка чаще показываемых.

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

Интерфейс IFileWorker нужен для работы с файлом вопросов/ответов.

Этот интерфейс описан в главном проекте

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

а реализован в проекте для Android в классе FileWorker.

Также этот класс содержит вспомогательный метод GetFilePath, который определяет путь к указанному файлу.

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

Текст каждого ответа размещается в MyLabel наследованном от Label.

MyLabel знает какой ответ в нем - верный или неверный - свойство isAnswer,

MyLabel запоминает клик по нему - свойство isClicked.

Я использовал BindableProperty для реализации этих свойств.

Тесты ПУЭ на Xamarin Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Длиннопост

Это первая часть поста. Планирую ещё как минимум две.

Показать полностью 5
6

Тесты ПУЭ на Xamarin часть 3

Часть 1: Тесты ПУЭ на Xamarin

Часть 2: Тесты ПУЭ на Xamarin часть 2

Приложение: https://play.google.com/store/apps/details?id=com.GRText.pue...

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

Да, можно обойтись одним переключателем. )

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

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

Program содержит несколько вспомогательных функций. Через этот класс загружается список вопросов.

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

В сгенерированном при создании проекта классе App в файле App.xaml.cs устанавливается главная страница приложения.

Этот класс после автоматического создания содержит три метода вызывающихся при изменении состояния приложения: OnStart, OnSleep и OnResume.

Я написал два простых метода Open и Save для сохранения или загрузки списка вопросов в зависимости от состояния приложения.

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

При создании решения в проекте для Android генерится файл MainActivity.cs содержащий класс MainActivity. В этом классе определена переменная basename содержащая название файла в котором будут храниться вопросы. Этот файл в ходе работы приложения будет перезаписываться. Т.е. в перезаписываемом файле помечаются вопросы где была допущена ошибка.

Также в переменной XMLname содержится имя XML файла со списком вопросов содержащегося в Assets. Этот файл поставляется с приложением.

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост

Выполнение приложения начинается с функции OnCreate класса MainActivity проекта для Android. Здесь загружается ранее сохранённый файл, если не получается, загружается XML поставляющийся с приложением.

Далее с созданием экземпляра класса App приложение запускается:

LoadApplication(new App(basename));

Тесты ПУЭ на Xamarin часть 3 Xamarin, Csharp, Программирование, Приложение на Android, Разработка, Net, Android разработка, Длиннопост
Показать полностью 7
29

Моё приложение для заметок и задач. Бесплатное, без рекламы

Моё приложение для заметок и задач. Бесплатное, без рекламы Android, Приложение на Android, Android разработка, Заметки, Google Play

Всем привет!


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


Пару интересный функций:

- можно синхронизировать данные между устройствами

- можно добавлять тэги и фильтровать по ним

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

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

- ТЕМНАЯ ТЕМА :D


Установить можно с Google Play тут: https://play.google.com/store/apps/details?id=com.tnstudio.c...


Буду рад любым замечаниям либо комментариям,

спасибо!

468

Навигатор для прокладки интересных пешеходных маршрутов

Уже довольно долгое время я разрабатываю Sight Safari - навигатор, который строит не самые короткие (как Гугл или Яндекс), а самые интересные пешеходные маршруты.


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


Но как узнать, где искать эти достопримечательности? Туристических путеводителей может под рукой не оказаться, да и не для всех городов и районов они есть. Часто они затрагивают только центр города, и вряд ли так уж много путеводителей охватывает спальники, типа условного Купчино. Однако даже там часто есть на что поглядеть по дороге.

Навигатор для прокладки интересных пешеходных маршрутов Приложение на Android, Навигация, Туризм, Android разработка, Длиннопост

Мой навигатор решает эту проблему. Строит маршруты, которые длиннее процентов на 20, чем кратчайшие, зато в разы интереснее.


Долгое время сервис жил в виде веб-версии, но пользователи настойчиво просили Android-приложение. Так что пришлось им наконец заняться.


Алгоритм поиска путей


Сперва пара слов о базовой идее. Алгоритм работы у сервиса такой:

1. Парсим Open Street Map

2. Выдираем оттуда объекты, представляющие потенциальный интерес у туристов, используя теги для фильтрации. Например, здания с тегом historic или tourism, объекты с тегом park или garden и т.п.

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

4. Берем популярную библиотечку для поиска путей GraphHopper

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


Более подробное описание алгоритма можно найти на Хабре.


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


Osmdroid - тормоза и фризы


Сперва встал вопрос выбора картографического движка. Поскольку данные я беру из Open Street Map, логично использовать и их же карты.


По запросу "OSM Android SDK" первым делом выдает библиотечку osmdroid, которая обещает быть полной заменой стандартного гуглового MapView. Поначалу все было хорошо, встроить по туториалам его удалось достаточно быстро.


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


Поскольку для нашего приложения отображение маркеров очень важно - пришлось искать альтернативу.


Mapbox


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


Пришлось немного подхачить отображение маршрутов. Так как их карта ожидает объект в том формате, который возвращает их API, а мы его не используем. Пришлось поковырять структуру их JSON, опытным путем выкинуть все лишнее и завернуть наш собственный маршрут в эту структуру.


В итоге приложение стало выглядеть вот так. Пример показывает, как прямому маршруту по Суворовскому проспекту (он идет под надписью "Пески") приложение предпочло крюк через Таврический сад, где парк и больше всяких памятников и красот:

Навигатор для прокладки интересных пешеходных маршрутов Приложение на Android, Навигация, Туризм, Android разработка, Длиннопост

Немного про UI


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


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

Навигатор для прокладки интересных пешеходных маршрутов Приложение на Android, Навигация, Туризм, Android разработка, Длиннопост

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


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

Пример кругового маршрута по двум паркам на час с небольшим вокруг станции метро "Парк Победы" в Питере:

Навигатор для прокладки интересных пешеходных маршрутов Приложение на Android, Навигация, Туризм, Android разработка, Длиннопост

В Android есть типичная проблема - Activity классы быстро превращаются в этакий God-object, с тысячами строк кода и кучей логики вперемешку с отображением. Бороться с этим призваны всякие хитрые варианты архитектуры. В своем приложении я использовал MVP с помощью библиотечки Moxy. Вкратце - приложение делится на Model (данные), View (отображение, собственно Activity) и Presenter (логика, вынесенная в отдельный класс и работающая с View через интерфейс). На самом деле довольно очевидная вещь, из тех что ты сперва начинаешь сам изобретать, а потом узнаешь что оказывается у нее уже есть какое-то умное название.


Про Moxy есть хорошая статья на Хабре. Главный профит этой библиотечки - что она берет на себя заботу о сохранении состояния приложения и обработку всяких смен ориентации и прочих причин пересоздания Activity. Presenter по сути заполняет очередь команд (на основе бизнес-логики нарисовать то-то там-то, отобразить такой-то поп-ап), которая при необходимости проигрывается заново если Activity была пересоздана.


Заключение


Приложение мы пилили без малого год и все еще продолжаем его допиливать. Работает оно бесплатно и без рекламы, взять можно тут: https://play.google.com/store/apps/details?id=city.sightsafari.android


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


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


Работает пока в 100+ городах России и мира. Оставить заявки на добавление новых городов можно тут в комментариях или в нашей группе ВК.

Навигатор для прокладки интересных пешеходных маршрутов Приложение на Android, Навигация, Туризм, Android разработка, Длиннопост
Показать полностью 4
13

Мое первое Android приложение, Pizza Calculator

Началось все около 2 лет назад я прочитал на Пикабу вот этот пост, в котором расписано, что 2 пиццы по 30см диаметром меньше чем одна на 45см. Почитал комментарии и понял, что людям не хватает в этом вопросе ещё и сравнений веса и длины корочки, вот так у меня и появилось желание написать калькулятор, который все это мог бы посчитать.

На тот момент из опыта в каком-либо программировании у меня были только онлайн курсы по основам C# и пара написанных лаб.

На первую консольную версию приложения я потратил больше месяца, она умела сравнивать любое количество пицц по 4 показателям (площадь, длина корочки, отношение цены к площади и цены к весу), а также умела учитывать едите вы корочку или нет. Сравнение было упрощённым и сопостовляло результаты пиццы к предыдущей в списке (вторую сравниваем с первой, третью со второй и т.д.) Выглядело это вот так:

Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост

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

Если бы я начинал делать приложение сейчас, я бы отказался от идеи Xamarin + C# и выбрал бы Java. Полезной информации, гайдов и примеров готового кода для Java гораздо больше и новичку было бы проще, та и Android Studio в плане мобильной разработки удобнее чем Visual Studio.

Первым успехом было приложение с одной кнопкой, которое просто запускалось на моем телефоне. Добавив поля для ввода данных, я столкнулся с первыми серьезными трудностями, я не мог сделать отображение своих объектов (пицц) в списке ListView. Во многих гайдах было описано как отобразить уже заранее созданный список объектов, а для моей ситуации требовалось переписывать базовый адаптер.

Я на этом остановился и месяца три вообще не занимался приложением, пока не узнал что есть список RecyclerView и гайдов про него гораздо больше. Так я нашел блог одного индуса, который описывал как сделать адаптер для RecyclerView и списка List<T>. Мне потребовалось две недели чтобы адаптировать его пример кода под мои нужды: добавить больше информации про объект в списке и картинку. Я использовал CardView и мой список стал немного похож на фид новостей Google:

Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост

В фотошопе я нарисовал интерфейс, который хотел реализовать:

Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост

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

Проблему удалось решить с помощью ConstraintLayout, он позволял указывать размеры в % и закреплять соотношение сторон в нужных пропорциях. Сейчас приложение смотрит на ширину экрана и делает высоту одной карточки как 70% от этого значения, а все остальные элементы настроены уже на нужный процент от высоты или ширины карточки. Также использовался TextView, который изменял размер шрифта в зависимости от размера самого блока TextView, без этого на больших разрешениях экрана текст был очень мелким.

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

Построить графики по нужным данным вроде бы просто, но как добавить к ним взаимодействия, чтобы сравнивать одну пиццу со всеми остальными, а не только 2 с 1 и т.д. Были найдены графики от Syncfusion (не реклама), которые умеют скролится в сторону и одновременно отображать таким образом любое количество нужных расчетов. Также они позволяют взаимодействовать с конкретным столбцом в графике, что после нескольких дней переписок с тех. поддержкой позволило реализовать текущий функционал, когда мы жмём на нужный столбец и эта пицца сравнивает себя со всеми остальными, но уже в процентах. Таким образом можно понять, что площадь пиццы больше, например, на 10%, а дороже она уже на 20%:

Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост

На этом глобальный функционал был окончен, я также добавил несколько мелочей: кастомный шрифт Google NotoSans, адаптивную иконку приложения, перевод на 6 языков (рус, укр, англ, болгарский, чешский и итальянский), спасибо моим друзьям за переводы.

Наступил самый волнительный момент, подготовка приложения и всех сопутствующих материалов к публикации в Play Market. Было заготовлено 5 скриншотов, с короткими подсказками функционала приложения, а также было написано подробное описание. Все это опять требовалось перевести на все необходимые языки и только потом добавлять.

И вот этот день настал, я отдал честно заработанные 25$ за регистрацию учётной записи разработчика для Google Play Console.

Я залил все скриншоты, описание и прочее и столкнулся с новыми проблемами. Требовалась целевая версия Android API 28 (Android Pie), а мое приложение собиралось для API 27. Ну ничего страшного подумал я и скачав нужное SDK пересобрал приложение. И снова ошибка, с 1 августа Google требует обязательное наличие 64 битной версии приложения, пол часа поиска и этот вопрос был решен. Потом Play Console попросила чтобы приложение было собрано как Android App Bundle, а моя Visual Studio 2017 этого не умела и я потратил ещё пол дня чтобы с этим разобраться.

Не смотря на все описанные трудности и два года времени от идеи до реализации приложения, оно наконец-то доступно для всех желающих в Play Market по ссылке. Приложение абсолютно бесплатное и не содержит рекламу.

Буду рад вашим отзывам и постараюсь ответить на все вопросы в комментариях. Если приложение хоть кому-то будет интересно, то сделаю вторую версию с расширенным функционалом и добавленным в базу меню пиццерий ближайших стран.

И напоследок несколько скриншотов:

Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост
Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост
Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост
Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост
Мое первое Android приложение, Pizza Calculator Пицца, Калькулятор, Android разработка, Приложение на Android, Длиннопост
Показать полностью 9
206

Нужна программа на смартфон с привязкой геометок к контактам

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

Нужна программа на смартфон с привязкой геометок к контактам Помогите найти, Приложение, Android

Когда эти клиенты звонят, самое частое слышу: ну вы же у нас были, у нас красные ворота/синяя крыша/зелёный гараж. Когда в одном поселке или деревне десяток клиентов, тяжело вспомнить, где там железный гараж или красный забор. Навигатор в большинстве деревень улиц и домов не видит, ставить метки на карте неудобно.
Вопрос: может, существует программа на андроид, чтобы можно было привязать геометку к контакту в телефонной книге? Чтобы при первом визите указать метку и в следующий раз не искать по памяти?

16

SOS - моё первое приложение

Всем привет.


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


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

SOS - моё первое приложение Android, Android разработка, Приложение, Java, SOS

Вся работа приложения основана на отправке sms, к которому можно прикрепить текущие координаты.


Кстати, про sms. С этим возникли проблемы при релизе на Google Play, так что пришлось организовать небольшую переписку с саппортом, где я слёзно выпрашивал дать мне право использовать разрешение SEND_SMS.


Конечно, хочется увидеть ваши мнения на счёт моего "продукта", так что ловлю ваши тапки)

243

Разработка видеоредактора под Android. FineFx

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

Идея - перенести возможности десктоп приложений на экран смартфона и планшета и сделать полноценное редактирование "на зверьке". Проект серьезный, долгий и решил его сделать я один, без помощи в разработке. Единственное, мне будет помогать знакомая с UI и дизайном.
Решил делать свой UI, не пользоваться android, делать все через OpenGL и FFMPEG для зачитывания всех форматов медиафайлов, а рендерить видео с помощью нативных средств Android.
Началось все вот с этой картинки:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Затем сделал оконный лог:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Потом начал делать галерею и меню:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Для сканирование и правильной кодировки метатегов и названий песен в галерее звуков и музыки использовал uchardet и iconv

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Потом кто-то заметил, что меню не пальцевое, сделал вот такое выезжающее меню, по реакции на жесты (алгоритм жестов тоже сам разработал)

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Начал делать плеер медиафайлов. Долго изучал тему, в FFMPEG сделать плеер не так-то просто, распечатал даже файл ffplay.c для изучения:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Работал над редактором все свободное время, даже в электричке по пути на работу и домой:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Сделал плеер, даже с выбором звуковой дорожки:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Потом озаботился профилированием и написал свой профайлер, т.к. плеер достаточно медленно проигрывал видеофайлы:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Потом озаботился локализацией и решил написать свою, а не тягать из JAVA строки все время:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Сделал стартовую страницу с созданием нового проекта и видео на фоне:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Затем сделал окно информации о медиафайле:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Потом сделал Bin, как в премьере для промежуточного редактирования

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

И в данный момент делаю таймлайн, в котором много мелких деталей, которые очень ресурсозатратные:

Разработка видеоредактора под Android. FineFx Android, Видеоредактор, Adobe, Premiere, После, Effects, Kinemaster, Длиннопост

Работа идет "медленно, но непрерывно", так что, дай Бог, где-то через полгодика будет mvp и устрою бета-тест в маркете.


На этом все, спасибо за внимание!

Показать полностью 14
20

Кто сколько кому должен?

Привет-привет, Пикабу!


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

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

Вроде бы оно получилось довольно простое и понятное. Заходим в него, затем...


1. Добавляем вечеринку и обзываем её:

Кто сколько кому должен? Android, Разработка, Приложение, Долг, Калькулятор, Длиннопост

2. Вводим категории расходов с названием и стоимостью (в поле суммы можно вводить выражения, все само считается):

Кто сколько кому должен? Android, Разработка, Приложение, Долг, Калькулятор, Длиннопост

3. Тем же макаром вводим плательщиков и указываем, кто что употреблял. А чтобы видеть это всё в свёрнутом виде, закрашиваются прямоугольнички, если категория выбрана:

Кто сколько кому должен? Android, Разработка, Приложение, Долг, Калькулятор, Длиннопост

(там еще четверо плательщиков, просто скриншот слишком длинный)


4. Все готово, результаты автоматически будут выведены ниже:

Кто сколько кому должен? Android, Разработка, Приложение, Долг, Калькулятор, Длиннопост

5. По мере оплаты отмечаем выполнение галочкой и делимся результатами. Вот так выглядит эта вечеринка в текстовом виде:

*** Вечеринка в Хогвартсе ***
Результаты:
Гарри: 0.50 -> Грозный Глаз
Гарри: 58.50 -> Дамблдор
Рон: 40.00 -> Дамблдор
Гермиона: 84.50 -> Дамблдор
Полумна: 30.00 -> Дамблдор
Волдеморт: 199.50 -> Дамблдор

Сюда также можно включить категории и плательщиков.

— Зачем изобретать велосипеды? —  Все приложения с этим же предназначением, которые мне удалось найти показались мне неудобными, с кучей разных функций и возможностей.

— Для иностранных граждан прилагается перевод на english - язык выставляется как на устройстве.


— Скачать можно по ссылке (пока что из-за отсутствия загрузок оно не выводится в поиске Google Play).


— Буду очень благодарен, если найдёте баги, ошибки и опишите их в комментах или пришлёте на почту: marinchenkovalentin@gmail.com


Большое спасибо за внимание!

Показать полностью 3
14

Секретный Санта - Время дарить подарки

Привет, пикабуняне!


Зима уже вовсю наступает на пятки, а значит, пора делится свежими новостями по Новогоднему обмену.


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


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


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


Полетели!

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост

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

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост

Как и упоминалось ранее - основной упор при регистрации (и вообще для аккаунта) сделан на использование мобильного телефона. С его помощью теперь и осуществлются все манипуляции.


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


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


1) Когда обмен? Обмен для мобильных уже запущен (сейчас приложение проверяется в магазине Google Play). Тем, кому не терпится, можно скачать и потыкать напрямую, в дальнейшем в течении недели произойдет обкатка первой версии, и разворачивание основного сайта во вне.


А так, ссылка в маркете вот такая: https://play.google.com/store/apps/details?id=ru.oneclickstudio.secretsanta


2) Обмен платный, стоимость уже установлена - 75р. Зачем платить, скажете вы -  ответ таится в новых особенностях - проверке пользователя, уведомлениях (по СМС / Звонкам / Отправке писем Почтой с кодом подтверждения / Оплата мощностей Firebase). Ну и общий посыл проверки в том, чтобы убедится что ты не верблюд плохой Санта, и не захапаешь только посылку для себя, а сам ничего не отправишь (было и такое в предыдущие года, сам попадал)


3) Мы берем с людей деньги, значит и налоги платим? Да, конечно, и еще чеки выдаем. Тут все серьезно


4) Сколько стран? В этом году 15 стран, в основном это бывший Советский Союз. Сам список ищи в посте

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост

И еще, насчет серьезности.


После прохождения регистрации, каждый будущий Санта обязан согласится с правилами обмена - эта особенность обязательна для РФ (закон о персональных данных), да и в будущем для европы (GDPR как никак).


Сам процесс обмена разбит на небольшие задания. Всего их 6. Столько же уже установлено и на основном сайте. Сами задания не сложные, но на каждое требуется уделить немного времени.


1 - Заполнение анкеты

2 - Оплата

3 - Подтверждение данных

4 - Нажатие кнопки "Готов участвовать", и ожидание распределения

5 - Отправка подарка (ввод сведений о посылке)

6 - Получение подарка (просмотр трека)


Также доступны достижения, за определенные заслуги, или действия. Например, для тестировщиков

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост

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


А еще появился тип обмена. Можно выбирать из двух вариантов:

а) Обычный - распределение случайным образом

б) Знакомство - распределение по половому признаку, но тоже случайным образом. Будет интересно для заведения новых знакомств или друзей

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост

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


Самый же заключительный этап включает в себя обилие красного DANGER текста, который, изначально планировалось выделить для прочтения (будем переделывать, не нравится), а после нажатия "Готов" участие подтверждается.


Остается только дожидаться распределения, и готовить подарок своему Санте


В следующем посте:

- Информация о розыгрыше для всех участников (от администрации)

- Польза и преимущества для тестировщиков

- Блог, и почему его важно периодически читать

- Мои достижения, и возможные награды



Cпасибо, что дочитали. Задавайте вопросы и критику в комменты. Как и было обещано, прилагаю список стран для участия. Ссылок на маркет не дам, не рекламирую

Секретный Санта - Время дарить подарки Новогодний обмен подарками, Тайный Санта, Новый год, Длиннопост
Показать полностью 5
Мои подписки
Подписывайтесь на интересные вам теги, сообщества,
пользователей — и читайте персональное «Горячее».
Чтобы добавить подписку, нужно авторизоваться.
Отличная работа, все прочитано!