System gesture что это в смартфоне
Крупные производители смартфонов редко балуют нас по-настоящему долгоживущими смартфонами, а если такие гаджеты и встречаются в продаже, то чаще всего представляют собой неказистые «кирпичи». Новый гаджет от Oukitel рушит этот стереотип: девайс имеет огромную ёмкость аккумулятора и, в то же время, выглядит достаточно привлекательным. Помимо, большой батареи, смартфон получил ещё одну специфичную функцию — режим powerbank. В обзоре мы расскажем, как это работает, и на что ещё способен аппарат.
Технические характеристики Oukitel K6000
- Экран: TFT IPS, 5,5", 1280x720, ёмкостный, мультитач
- Процессор: четырёхъядерный Mediatek MT6735P, 1 ГГц
- Графический ускоритель: ARM Mali-T720
- Операционная система: Android 5.1 Lollipop
- Оперативная память: 2 ГБ
- Встроенная память: 16 ГБ
- Поддержка карт памяти: microSDHC, до 32 ГБ
- Связь: GSM 850/900/1800/1900 МГц || UMTS 900/2100 МГц || LTE 1,3,7,20
- SIM: 2 х micro-SIM, Dual SIM Dual Standby (DSDS)
- Беспроводные интерфейсы: Wi-Fi 802.11b/g/n, Bluetooth 4.0, HotKnot, FM-радио
- Навигация: GPS
- Камеры: основная — 8 Мп (вспышка, автофокус), фронтальная — 2 Мп
- Датчики: приближения, освещённости, акселерометр
- Аккумулятор: 6000 мАч
- Габариты: 154,2х76,8х9,9 мм
- Вес: 211 граммов
Упаковка и комплектация
Oukitel K6000 поставляется в оранжевой картонной коробке с минималистичным дизайном: на упаковку нанесено только тиснёное название производителя. Внутри находятся сам смартфон, блок питания, кабель micro-USB, стереогарнитура, кабель USB OTG и конверт с документацией, в котором также находится скрепка для открывания карточного лотка.
Внешний вид
На тестирование попал смартфон в белом корпусе, но в продаже также есть модель тёмно-серого цвета. Большая часть смартфона выполнена из металла, включая рамку по периметру устройства. Пластиковыми оказались только вставки сверху и снизу на задней панели и окантовка дисплея. В целом, дизайн гаджета получился одновременно строгим и привлекательным благодаря удачному сочетанию стекла, металла и небольшого количества пластика.
На задней панели сверху находятся объектив основной камеры и двойная светодиодная вспышка, а внизу — основной динамик.
Клавиша включения и качелька регулировки громкости находятся на правой грани смартфона, а комбинированный слот для SIM-карт и карты памяти — на левой.
На верхнем торце устройства размещён 3,5-мм аудиоразъём, на нижний вынесены порт micro-USB и микрофон.
Эргономика
Экран
5,5-дюймовый экран Oukitel K6000 выполнен по технологии IPS и имеет разрешение 1280х720 пикселей. По современным меркам HD-разрешение для такой диагонали уже не кажется достаточным. Тем не менее нельзя сказать, что это мешает комфортному использованию устройства: изображение на экране чёткое, хорошо читается даже мелкий текст.
Что касается других характеристик, экран смартфона имеет вполне неплохую цветопередачу и хороший запас яркости, позволяющий без проблем использовать гаджет практически при любых условиях. Смартфон поддерживает функцию адаптивной регулировки яркости, датчик правильно реагирует на изменение внешнего освещения, подстраивая уровень подсветки дисплея. Углы обзора экрана максимальны, картинка не искажается даже при сильных наклонах, единственное, что можно заметить — небольшую потерю контрастности.
Интерфейс
Новинка Oukitel работает под управлением Android 5.1 Lollipop. Производитель внёс некоторые изменения в интерфейс операционной системы, но они коснулись только рабочих столов (на них находятся ярлыки всех установленных программ, а панель приложений отсутствует) и дизайна иконок. Все стандартные приложения Android в смартфоне были оставлены без изменений. Это касается, в том числе, номеронабирателя и клавиатуры.
Сторонних программ на устройстве предустановлена буквально пара: это мессенджер WhatsApp и приложение для настройки энергосбережения Power Saver.
Зато в настройках смартфона появилось сразу несколько функций, предназначенных для быстрого управления. Одна из них — Gesture Motion. Во время звонка Gesture Motion позволяет выполнять некоторые действия без касаний дисплея. Например, для отключения звука входящего звонка смартфон достаточно положить на поверхность экраном вниз, а для отключения динамика при разговоре по громкой связи — поднести гаджет к уху. В остальных режимах пользователю предлагается для быстрого выполнения различных действий выполнять специальные свайпы или касания экрана. Например, с помощью свайпов вверх и вниз можно регулировать громкость, а дважды нажав на кнопку «Домой» — заблокировать смартфон.
Ещё одна похожая функция — Gesture Unlock, она предназначена для быстрой разблокировки смартфона и запуска различных программ. Часть свайпов, вроде свайпа вверх для разблокировки или свайпа вниз для запуска камеры, не настраивается — их можно только активировать или отключить. Другие настройки управления при помощи жестов предлагают задать соответствие между буквой, рисуемой пальцем на экране, и приложением для быстрого запуска.
Последняя функция, Smart somatosensory, предназначена для управления смартфоном при помощи взмахов ладонью над дисплеем. Таким образом можно листать страницы, делать фотографии, переключаться между треками и выполнять некоторые другие действия.
Аппарат в работе
Гаджет работает на платформе Mediatek MT6735P, это 64-битный чипсет с четырьмя ядрами ARM Cortex A53, работающими на тактовой частоте 1 ГГц, графическим ускорителем ARM Mali-T720 и 2 ГБ оперативной памяти. Внутренней памяти в смартфоне всего 16 ГБ, из неё для пользователя доступно примерно 12 ГБ. Память можно расширять с помощью карт памяти microSD объёмом до 32 ГБ, но тогда придётся отказаться от одной из SIM-карт — в устройстве используется комбинированный слот. Зато смартфон поддерживает USB-хост, причём OTG-кабель идёт к устройству в комплекте — можно без проблем подключать как внешние накопители, так и периферические устройства.
Производительность у смартфона средняя. Впрочем, это незаметно при повседневном использовании устройства: анимация интерфейса работает плавно, программы запускаются и работают быстро — не хуже, чем на любом другом смартфоне. То же самое касается как web-сёрфинга, так и проигрывания офлайн- и онлайн-видео.
Ресурсоемкие игры могут иногда подтормаживать, потому не получится с головой уйти в игровой процесс. Например, Godfire и World of Tanks: Blitz могут подвисать.
С казуальными играми, вроде Relic Run или Doodle Jump, никаких проблем нет: анимация выполняется плавно, нехватки производительности не ощущается.
Результаты смартфона в бенчмарках оказались вполне ожидаемые:
Основной динамик у смартфона средней громкости, уведомление о звонке вы не пропустите, но послушать музыку без наушников получится разве что в тихой комнате.
Камера
Разрешение основной камеры — 8 Мп, снимки делаются с интерполяцией до 13 Мп. На качество фотографий такая уловка, увы, никак не влияет. Днём фотографии чёткие, но баланс белого иногда определяется неверно, что делает снимки розоватыми. В сумерках, не говоря о ночной съёмке, получить качественные фотографии очень сложно: они выходят смазанными, а если и получилось сделать чёткий снимок, то вы, скорее всего, столкнётесь с неправильной экспозицией или высоким уровнем шумов. Камера устройства может пригодиться, чтобы сфотографировать бумаги или для подобных деловых целей, но художественные снимки в приличном качестве получить будет весьма затруднительно.
Часто ситуацию помогает спасти режим HDR: снимки с ним выходят намного более чёткими и равномерно освещёнными, хотя и с большим количеством шумов. Проблем с наложением изображений, если аппарат при съёмке держать ровно, не возникает.
Режим HDR выключен Съёмка с HDR
Включение вспышки при предметной съёмке позволяет показать скрытые в тенях детали, но хорошо освещённые части объектов при этом высветляются. Такой результат при съёмке без вспышки
Разрешение фронтальной камеры смартфона — 2 Мп с интерполяцией до 5 Мп. Суперкачественных сэлфи от этой камеры ожидать не стоит, но при хорошем освещении вполне можно работать.
Максимальное разрешение видеозаписи — 1280х736 пикселей. Изображение получается не слишком чётким, но вполне приемлемым, без заметных подёргиваний.
Беспроводные интерфейсы
Oukitel K6000 поддерживает одновременную работу с двумя SIM-картами в попеременном (DSDS) режиме — если вы решили отказаться от использования карты памяти в пользу второй «симки». Аппарат может передавать данные в сотовых сетях LTE, российские частоты поддерживаются.
Из других беспроводных соединений гаджет получил привычный «джентльменский набор» — Wi-Fi 802.11b/g/n, Bluetooth 4.0 и FM-радио. Кроме того, смартфон Oukitel имеет поддержку HotKnot — фирменного аналога NFC от Mediatek.
Из группировок навигационных спутников смартфон работает только с GPS, «холодный» старт до точного определения координат занимает примерно 15 секунд, а «горячий» — около пяти.
Автономная работа
Как было сказано в самом начале, главная особенность Oukitel K6000 — рекордная ёмкость несъёмного литий-полимерного аккумулятора, 6000 мАч. Такая ёмкость и «начинка» с невысоким энергопотреблением позволяют смартфону, по заявлению производителя, работать до 40 дней в режиме ожидания. При повседневном использовании (2–3 часа работы экрана в день) срок работы составит около четырёх дней. Это превосходит результаты большинства современных смартфонов.
При воспроизведении видео на полной яркости в режиме «Полёт» аппарат смог проработать больше 11 часов, а в режиме игр на средней яркости — больше 10 часов. При web-сёрфинге на средней яркости аппарат продержался около 20 часов, а тест GFXBench GL показал 7,6 часа автономной работы при просчёте сложных графических сцен.
Если высокая автономность смартфона окажется невостребованной, зарядом энергии всегда можно поделиться с другими гаджетами через комплектный USB OTG кабель. За 30 минут зарядки Samsung Galaxy Note 3 получил 5% заряда аккумулятора ёмкостью 3200 мАч, в то время как батарея Oukitel K6000 опустела на 7%. С учётом различающейся почти в два раза ёмкости батарей устройств, в качестве страховочного варианта такая функция будет очень полезной.
Несмотря на то, что разряжается девайс медленно, зарядить его можно довольно быстро: комплектный блок питания на 9 В и 2 А позволяет устройству полностью восполнить заряд меньше, чем за три часа, а всего пять минут зарядки будет достаточно для двух часов разговоров.
Итоги
Если высокая игровая производительность не стоит для вас на первом месте, то Oukitel K6000 окажется удачным и сбалансированным выбором. Производитель предлагает выполненный из качественных материалов смартфон с отличным дизайном, поддержкой LTE и двух SIM-карт за довольно небольшие деньги.
Ну, и не стоит забывать о главном преимуществе аппарата — воистину огромном аккумуляторе, который не только может обеспечить до 20 часов автономной работы при активном использовании, но и позволит подзарядить другие гаджеты. Всё это делает Oukitel K6000 необычным и, несомненно, достойным внимания.
Вы читаете вторую статью из серии об управлении жестами. Первую часть вы можете найти здесь.
В первой части серии мы узнали, как расположить ваше приложение «от края до края» экрана. К сожалению, такой способ отображения может привести к тому, что некоторые из ваших view будут располагаться, заходя границами на области системных панелей, тем самым скрывая их от пользователя. В этой статье мы разберемся, как добавлять view таким образом, чтобы не нарушать работу системных панелей.
В этой статье я буду ссылаться на такую вещь, как «UI системы». Именно так называется любой из интерфейсов системы, расположенный на экране, будь то панель навигации или строка состояния. Также в него входит панель уведомлений.
Insets
Insets показывают какие составляющие экрана пересекаются с интерфейсом системы, например, панели навигации или строка состояния. Пересечение может означать просто отображение поверх вашего контента, однако здесь можно получить информацию и о системных жестах. Мы можем использовать inset, чтобы попытаться устранить любые конфликты, например, переместив view подальше от краев.
В Android insets представлены классом WindowInsets, а в AndroidX -классом WindowInsetsCompat. Начиная с Android Q у нас появляются 5 типов insets, которые мы можем использовать при создании экранов приложения. Какой именно тип inset использовать зависит от ситуации, поэтому давайте рассмотрим каждый тип по отдельности и разберемся.
System window inset
System window inset – наиболее распространенный тип inset на сегодняшний день. Они существуют с API 1 в различных формах и оказываются в иерархии view всякий раз, когда UI системы отображается поверх вашего приложения (по оси z). Частые примеры – строка состояния и панель навигации, а иногда и экранная клавиатура (IME).
Давайте рассмотрим пример, в котором вам придется использовать system window insets. У нас уже есть FloatingActionButton (FAB), которая расположена в нижнем углу экрана с отступом в 16dp (в соответствии с гайдлайнами).
FAB в приложении Google I/O, прежде чем оно преобразится в edge-to-edge
После того, как мы выполним 1 и 2 шаги из прошлой статьи, наши view окажутся за панелью навигации:
FAB в приложении Google I/O, после растягивания на весь экран
Теперь вы видите, что ваше расписание конференций располагается за панелью навигации, и это именно то, чего мы добиваемся – создание более иммерсивного опыта. Более подробно о том, как работать со списками/сетками мы рассмотрим позже.
Вернемся к примеру. Теперь вы видите, что FAB спрятана, а это в свою очередь значит, что пользователь не сможет на нее нажать. Именно этого конфликта отображения мы хотим избежать. Пример выглядит яснее, когда мы используем кнопочную навигацию (как на картинке), поскольку так панель располагается выше. В навигации жестами с динамической адаптацией цвета это сработает, но помните, что система может переключиться на полупрозрачный scrim в любой момент времени, что может нарушить опыт взаимодействия.
Сейчас хороший момент, чтобы сказать вам о том, как важно тестировать свое приложение во всех режимах навигации.
В приведенном выше примере FAB располагается рядом с нижним правым краем, поэтому мы можем использовать значения systemWindowInsets.bottom и systemWindowInsets.right , чтобы увеличить отступы view с каждой стороны, дабы переместить его подальше от панели навигации.
Как только мы это сделаем, мы получим следующее:
О том, как это реализуется мы поговорим немного позже.
TL; DR: System window insets лучше всего подходят для перемещения/создания отступов интерактивных views , которые не должны быть закрыты системными панелями.
Tappable element insets
Дальше по списку у нас tappable element insets, которые только появились в Android Q. Они очень похожи на system window insets выше, однако они реагируют на варьирующуюся видимость панели навигации.
TL;DR: что касается tappable element insets : вы можете вообще их проигнорировать и использовать вместо них system window insets . Вы можете перейти к разделу Gesture Insets ниже или продолжить чтение.
Tappable element insets определяют минимальные insets, которые нужно применить в интерактивным (tappable) view. «Минимальные» в этом случае означает, что примененное значение все еще может привести к конфликту с системными панелями. Этим они и отличаются от system window insets, которые всегда нацелены на избежание конфликтов с системными панелями.
Давайте используем наш пример с FloatingActionButton, чтобы показать разницу в значениях:
Розовым цветом показаны границы панели навигации. Зеленым – границы FAB с конкретным отступом от нижнего поля.
Помните о том, что никогда нельзя жестко задавать значения из таблицы выше, поскольку панель навигации может менять размер. Во избежание конфликтов используйте insets.
Мы могли заметить, что tappable element insets и system gesture insets ведут себя одинаково, когда устройство находится в режиме кнопочной навигации. Ключевая разница становится видна, когда устройство использует управление жестами и у него включена динамическая адаптация цвета. В этом случае панель навигации прозрачна, а это значит, что в ней теоретически можно расположить интерактивные views , поэтому отступ от низа равен 0.
Несмотря на то, что insets не имеют представления о том, где должны быть расположены views, поэтому используя tappable element insets в теории вы можете получить нечто подобное:
Получилось не идеально, поскольку view располагается очень близко к панели навигации, что будет не очень удобно пользователю.
На практике же почти все варианты использования tappable element insets лучше обрабатываются с помощью system window insets.
Gesture insets
Следующий тип insets , который мы рассмотрим – это gesture insets , добавленные в версии Android Q. Напоминаю, что Android Q представляет новый режим управления жестами, который позволяет пользователю управлять устройством с помощью двух сенсорных жестов, которые можно выполнить следующим образом:
- Проведите пальцем горизонтально от одного из краев дисплея. Это запустит действие возврата.
- Проведите пальце вверх от нижнего края дисплея. Это позволит пользователю перейти на свой домашний экран или к последним использованным приложениям.
Демонстрация управления жестами в Android Q
System gesture insets отражают области окна, в которых системные жесты имеют приоритет над жестами-касаниями в вашем приложении. Возможно, вы заметили, что выше я указал два метода. Это связано с тем, что на самом деле существует два типа system gesture insets: один из них хранит все области жестов, а второй – подмножество, содержащее обязательные из system gesture insets.
System gesture insets
Для начала у нас есть system gesture insets. Они содержат все области на экране, где системные жесты имеют приоритет над жестами вашего приложения. В Android Q это значит, что insets будут выглядеть примерно так, то есть содержать отступ от нижнего края для жеста возврата к домашнему экрану, отступы слева и справа для жеста «назад»:
Когда вам пригодятся system gesture insets? Эти insets указывают, где жесты системы имеют приоритет, поэтому вы можете использовать их для проактивного перемещения любых view , которым требуется жест свайпа.
Примерами могут послужить выдвигающийся снизу экран, свайпы в играх, карусели (по типу ViewPager). В целом, вы можете использовать эти insets для перемещения/создания отступов от краев экрана.
Обязательные system gesture insets
Обязательные system gesture insets являются подмножеством system gesture insets и содержат только области, которые нельзя убрать из приложения (например, название). Мы заглянули немного вперед в тему следующей статьи, где мы будем говорить об обработке конфликтов жестов, но в целях понимания текущей статьи просто знайте, что приложения могут убрать системные жесты из некоторых областей экрана.
Обязательные system gesture insets указывают на области экрана, в которых системные жесты имеют приоритет всегда и являются обязательными. На Android Q единственной обязательной областью на данный момент является область жеста возврата на домашний экран в нижней части экрана. Это нужно, чтобы пользователь всегда мог выйти из приложения.
Взглянув на пример gesture insets устройства на Android Q, вы увидите следующее:
Видно, что system gesture insets содержат отступы слева, справа и снизу, тогда как необходимые содержат только отступ снизу для того, чтобы жест возврата на домашний экран отрабатывал нормально. Подробнее об удалении областей жестов мы поговорим в следующей статье.
Stable insets
Stable insets – это последний тип insets, имеющийся в Android. Они не особо важны для управления жестами, но я решил, что о них тоже стоит рассказать.
Stable insets относятся к system window insets, но они обозначают, где интерфейс системы может отображаться поверх вашего приложения, а не где он отображается в принципе. Stable insets в основном используются, когда интерфейс системы настроен таким образом, что его видимость может быть включена либо выключена, например, при использовании режимов lean back или immersive (например, игры, просмотр фотографий и видеоплееры).
Обработка insets
Надеюсь, что у вы получили лучшее понимание того, что представляют из себя различные типы insets, поэтому теперь давайте посмотрим, как вы можете использовать их в своих приложениях.
Основным методом доступа к WindowInsets является метод setOnApplyWindowInsetsListener. Давайте посмотрим на пример view , к которому мы хотим добавить отступы, чтобы он не отображался за панелью навигации:
Здесь мы просто настраиваем нижний отступ view на значение отступа от низа system window inset.
Примечание: Если вы делаете это на ViewGroup, вероятно, вы захотите установить android:clipToPadding="false" . Это связано с тем, что все виды clip drawing по умолчанию без отступов. Этот атрибут обычно используется с RecyclerView, который мы рассмотрим подробнее в следующей статье.
Убедитесь, что ваша функция прослушивания идемпотентична. Если она вызывается несколько раз с одинаковыми insets, результат каждый раз должен быть идентичным. Пример неидемпотентичной функции приведен ниже:
Здесь не следовало увеличивать (ala +=) в отступе view каждый раз, когда вызывается функция прослушивания. Передача insets окна может случиться в любой момент и несколько раз в течение жизни иерархии views.
Jetpack
Еще одна вещь, которую я рекомендую помнить про insets, это использование класса WindowInsetsCompat из Jetpack, независимо от вашей минимальной версии SDK. WindowInsets API улучшалось и расширялось на протяжении многих лет, а версия compat обеспечивает согласованность API и поведение на всех уровнях API.
Пойдем еще дальше
Методы о которых я упоминал выше – это самый простой способ использования WindowInsets[Compat] API, но они могут сделать ваш код слишком длинным и шаблонным. Ранее я уже писал статью, в которой подробно описывал методы, позволяющие резко повышать эргономику обработки оконных insets с помощью биндинга адаптеров. Здесь вы можете прочитать ее.
В следующей статье мы узнаем, как обрабатывать любые конфликты, которые могут возникнуть между жестами вашего приложениями и системными жестами.
На этом все. Ждем всех на бесплатном вебинаре, в рамках которого наш специалист подробно расскажет о курсе.
Что же происходит в системе, когда пользователь касается экрана? И самое главное — как с этим обращаться? Пора разобраться с этим раз и навсегда. Вашему вниманию представляется заметка об обретенном понимании и опыте использования Android Touch System.
1. Внешность обманчива
Недавно передо мной встала задача разработать FrescoImageViewer — библиотеку для просмотра фотографий, загружаемых при помощи Fresco. Помимо этого необходимо было реализовать «pinch to zoom», переключение посредством ViewPager, а так же некое подобие «swipe to dismiss» — возможность закрыть изображение вертикальным свайпом. Собрав вместе основные компоненты я столкнулся с основной проблемой — конфликтом жестов.
Поскольку у меня был довольно скромный опыт в этой сфере, то первое решение, которое пришло мне в голову было таким: анализировать события в onTouchEvent() внутри моего CustomView и в нужный момент передавать управление. Но на деле поведение оказалось не таким очевидным, как я того ожидал.
В документации указано, что onTouchEvent() должен возвращать true, если событие было обработано, и false в противном случае. Однако, по каким-то причинам, там не указано, что если вернуть true, а потом изменить значение обратно на false — поведение не изменится до окончания жеста. Т.е. сообщив системе из onTouchEvent(), что элемент заинтересован в происходящем — это решение неизменно. Именно этот нюанс заставил меня потрепать себе нервы, а после открыть Google и погрузиться в изучение, как оказалось, целого фреймворка управления жестами.
Итак, для понимания происходящего, предлагаю шаг за шагом разобрать, что происходит внутри этого нехитрого механизма на примере Activity с ViewGroup и дочерним View внутри, на который мы только что опустили палец:
- Событие ввода оборачивается системой в объект MotionEvent, в котором находится вся полезная информация (тип действия, текущие и предыдущие координаты касания, время события, количество пальцев на экране и их порядок и т. д.).
- Сформированный объект попадает в Activity.dispatchTouchEvent() (который всегда вызывается первым). Если активность не возвращает true (не заинтересована в обработке события на своем уровне), то событие отправляется корневому View.
Так же во ViewGroup и View перед вызовом onTouchEvent() проверяется наличие OnTouchListener. Если он был задан — вызовется OnTouchListener.onTouch(), в противном же случае — onTouchEvent().
*Здесь есть одна оговорка — у ViewGroup после dispatchTouchEvent() дополнительно вызывается onInterceptTouchEvent(), давая возможность перехватить событие, не оповещая вложенные элементы, тем самым изменив поведение ViewGroup на идентичное View:
- Если при перехвате жеста ViewGroup сообщит о своей заинтересованности — все дочерние элементы получат ACTION_CANCEL.
- В случае, когда внутри View нужно избежать перехватывания родительским контейнером и его предками, необходимо вызвать requestDisallowInterceptTouchEvent(true) у ViewGroup.
3. Системные детекторы жестов и касаний
Благо, при работе с жестами не нужно изобретать велосипеды и обрабатывать все вручную. Во многом помогает зашитый в SDK GestureDetector. Он включает в себя интерфейсы OnGestureListener, OnDoubleTapListener и OnContextClickListener для уведомлений о произошедшем событии и его типе. Вот как они выглядят:
Как видно из названий методов, с помощью GestureDetector мы можем распознать singleTap, doubleTap, longPress, scroll и fling (подробное описание каждого из методов можно найти в Javadoc или официальной документации Android).
Но этого мало! Есть еще ScaleGestureDetector и у него всего лишь один listener:
public interface OnScaleGestureListener
Он распознает жест «щепок» (или «pinch») и оповещает о его начале, конце и продолжительности. Кроме слушателя присутствуют вспомогательные методы для получения всей необходимой информации (см. документацию).
Со встроенными классами мы теперь знакомы, но как же их использовать? Да очень просто! Необходимо просто создать экземпляр нужного нам детектора:
scaleDetector = new ScaleGestureDetector(context, listener());
@Overridepublic boolean onTouchEvent(MotionEvent event)
Готово! Все распознаваемые жесты будут попадать в переданный listener.
4. Свой детектор жестов
К сожалению, стандартными средствами мы можем узнать только о касании и о движении указателя (MotionEvent.ACTION_DOWN и MotionEvent.ACTION_MOVE), но иногда (хотя, мне кажется, намного чаще), при обработке жестов, необходимо знать их направление. В этом нам не в силах помочь даже стандартные детекторы, а потому придется написать собственный.
Назовем его SwipeDirectionDetector. Его задача единоразово оповестить слушателя о выявлении направления свайпа. Логика простая: запоминаем координаты события на ACTION_DOWN, а после измеряем длину до точки на ACTION_MOVE. Как только дистанция достаточная для определения направления — вычисляем угол и на его основании получаем направление.
Для начала определим метод onTouchEvent(), принимающий MotionEvent, и опишем в нем логику вычислений:
Объект Direction мы определим как enum и добавим туда методы get() для определения направления в зависимости от угла и inRange() для проверки его попадания в заданный диапазон.
Float gesture что это в смартфоне?
Всем привет. Gesture Unlock это приложение для идентификации пользователя при помощи жеста. В приложении можно записать жест и потом его проверить, сможете ли вы повторно сделать такой же жест или нет, ну типа тест.. Все жесты удобно визуализируются на графиках. Короче Gesture Unlock это серьезная прога тут вопросов нет.
Вот читаю на форуме что вроде как при помощи Gesture Unlock можно повесить на жест какое-то приложение. То есть например вы сделали жест и приложение включилось. Ну что тут можно сказать? Круто одним словом.
Так, вот еще читаю, что суть Gesture Unlock в том, что если она будет включена, то телефон с выключенным экраном будет принимать жесты! Еще вроде есть такой эффект, вы сделали жест на экране, через секунду жест будет нарисован на мгновенье, ну а потом уже будет действие.
Также читаю что Gesture Unlock позволяет двойным кликом по экрану разбудить телефон и разблокировать его. Это вроде бы жест встроенный, то есть который существует по умолчанию.
Маленький минус приложения Gesture Unlock заключается в том, что оно немного кушает батарею =(
Настройки приложения увы, на английском:
Теперь посмотрим на само приложение Gesture Unlock:
Правда не особо понятно как им пользоваться. И еще мне непонятен тип жеста, что имеется ввиду под словом жест? Жест на экране нарисованный или жест телефоном в воздухе? Скорее всего имеется первый вариант…
Короче ребята что за программа Gesture Unlock мы разобрались. А вот как пользоваться этой программой, то я это не смог понять и найти инфу об этом тоже не смог, так что извините. Удачи!
Крупные производители смартфонов редко балуют нас по-настоящему долгоживущими смартфонами, а если такие гаджеты и встречаются в продаже, то чаще всего представляют собой неказистые «кирпичи». Новый гаджет от Oukitel рушит этот стереотип: девайс имеет огромную ёмкость аккумулятора и, в то же время, выглядит достаточно привлекательным. Помимо, большой батареи, смартфон получил ещё одну специфичную функцию — режим powerbank. В обзоре мы расскажем, как это работает, и на что ещё способен аппарат.
Технические характеристики Oukitel K6000
- Экран: TFT IPS, 5,5″, 1280×720, ёмкостный, мультитач
- Процессор: четырёхъядерный Mediatek MT6735P, 1 ГГц
- Графический ускоритель: ARM Mali-T720
- Операционная система: Andro >Oukitel K6000 поставляется в оранжевой картонной коробке с минималистичным дизайном: на упаковку нанесено только тиснёное название производителя. Внутри находятся сам смартфон, блок питания, кабель micro-USB, стереогарнитура, кабель USB OTG и конверт с документацией, в котором также находится скрепка для открывания карточного лотка.
Внешний вид
На тестирование попал смартфон в белом корпусе, но в продаже также есть модель тёмно-серого цвета. Большая часть смартфона выполнена из металла, включая рамку по периметру устройства. Пластиковыми оказались только вставки сверху и снизу на задней панели и окантовка дисплея. В целом, дизайн гаджета получился одновременно строгим и привлекательным благодаря удачному сочетанию стекла, металла и небольшого количества пластика.
На задней панели сверху находятся объектив основной камеры и двойная светодиодная вспышка, а внизу — основной динамик.
Клавиша включения и качелька регулировки громкости находятся на правой грани смартфона, а комбинированный слот для SIM-карт и карты памяти — на левой.
На верхнем торце устройства размещён 3,5-мм аудиоразъём, на нижний вынесены порт micro-USB и микрофон.
Эргономика
Экран
5,5-дюймовый экран Oukitel K6000 выполнен по технологии IPS и имеет разрешение 1280х720 пикселей. По современным меркам HD-разрешение для такой диагонали уже не кажется достаточным. Тем не менее нельзя сказать, что это мешает комфортному использованию устройства: изображение на экране чёткое, хорошо читается даже мелкий текст.
Что касается других характеристик, экран смартфона имеет вполне неплохую цветопередачу и хороший запас яркости, позволяющий без проблем использовать гаджет практически при любых условиях. Смартфон поддерживает функцию адаптивной регулировки яркости, датчик правильно реагирует на изменение внешнего освещения, подстраивая уровень подсветки дисплея. Углы обзора экрана максимальны, картинка не искажается даже при сильных наклонах, единственное, что можно заметить — небольшую потерю контрастности.
Интерфейс
Новинка Oukitel работает под управлением Android 5.1 Lollipop. Производитель внёс некоторые изменения в интерфейс операционной системы, но они коснулись только рабочих столов (на них находятся ярлыки всех установленных программ, а панель приложений отсутствует) и дизайна иконок. Все стандартные приложения Android в смартфоне были оставлены без изменений. Это касается, в том числе, номеронабирателя и клавиатуры.
Сторонних программ на устройстве предустановлена буквально пара: это мессенджер WhatsApp и приложение для настройки энергосбережения Power Saver.
Зато в настройках смартфона появилось сразу несколько функций, предназначенных для быстрого управления. Одна из них — Gesture Motion. Во время звонка Gesture Motion позволяет выполнять некоторые действия без касаний дисплея.
Например, для отключения звука входящего звонка смартфон достаточно положить на поверхность экраном вниз, а для отключения динамика при разговоре по громкой связи — поднести гаджет к уху. В остальных режимах пользователю предлагается для быстрого выполнения различных действий выполнять специальные свайпы или касания экрана.
Например, с помощью свайпов вверх и вниз можно регулировать громкость, а дважды нажав на кнопку «Домой» — заблокировать смартфон.
Ещё одна похожая функция — Gesture Unlock, она предназначена для быстрой разблокировки смартфона и запуска различных программ. Часть свайпов, вроде свайпа вверх для разблокировки или свайпа вниз для запуска камеры, не настраивается — их можно только активировать или отключить. Другие настройки управления при помощи жестов предлагают задать соответствие между буквой, рисуемой пальцем на экране, и приложением для быстрого запуска.
Последняя функция, Smart somatosensory, предназначена для управления смартфоном при помощи взмахов ладонью над дисплеем. Таким образом можно листать страницы, делать фотографии, переключаться между треками и выполнять некоторые другие действия.
Аппарат в работе
Гаджет работает на платформе Mediatek MT6735P, это 64-битный чипсет с четырьмя ядрами ARM Cortex A53, работающими на тактовой частоте 1 ГГц, графическим ускорителем ARM Mali-T720 и 2 ГБ оперативной памяти. Внутренней памяти в смартфоне всего 16 ГБ, из неё для пользователя доступно примерно 12 ГБ.
Память можно расширять с помощью карт памяти microSD объёмом до 32 ГБ, но тогда придётся отказаться от одной из SIM-карт — в устройстве используется комбинированный слот.
Зато смартфон поддерживает USB-хост, причём OTG-кабель идёт к устройству в комплекте — можно без проблем подключать как внешние накопители, так и периферические устройства.
Производительность у смартфона средняя. Впрочем, это незаметно при повседневном использовании устройства: анимация интерфейса работает плавно, программы запускаются и работают быстро — не хуже, чем на любом другом смартфоне. То же самое касается как web-сёрфинга, так и проигрывания офлайн- и онлайн-видео.
Gesture unlock что это в смартфоне?
В наш век информационных технологий безопасность персональных данных стоит превыше всего, и наша жизнь буквально «нашпигована» различными паролями – от сетей Wi-Fi, банковских карт, учетных записей, социальных сетей, приложений, экранов смартфонов.
Неудивительно, что постоянно держать все пароли в голове достаточно трудно, и время от времени нам приходится восстанавливать доступ к тому или иному сервису по причине забытого пароля. Данная статья предназначена для тех, кто хочет узнать, как разблокировать смартфон Android, если забыл пароль или рисунок блокировки экрана.
Шаг 1. Подключите смартфон к Вашему ПК и запустите программу 4uKey for Android.
Шаг 2. В открывшемся меню нажмите «Удалить».
Шаг 3. После проверки данных начнется удаление блокировки экрана смартфона. Программа сообщит Вам о необходимости стирания всех данных устройства – для продолжения работы нажмите «ОК».
Шаг 4. Дождитесь окончания удаления блокировки, а затем переведите Ваш смартфон в режим восстановления согласно подсказкам на экране компьютера.
Топ 2 :iSkysoft Toolbox
iSkysoft Toolbox — Unlock (Android) – программа для разблокировки смартфонов на Android с достаточно простым алгоритмом использования. Стоит учитывать, что данное приложение поддерживает версии Android не выше 6.0. К недостаткам можно отнести также отсутствие русскоязычной поддержки.
Шаг 1. Запустите программу и подключите Ваше устройство к ПК.
Шаг 2. Выберите из предлагаемого списка модель и название Вашего телефона. Затем нажмите «Далее».
Шаг 3. Запустите процесс удаления блокировки экрана с помощью кнопки «Старт». Дождитесь завершения процесса, после чего блокировка смартфона будет снята.
Google Gesture Search позволяет найти на телефоне практически любые данные, написав пару символов пальцем на экране. Программа бесплатна и полностью переведена на русский язык.
Первый раз я пользовался похожим приложением несколько лет назад. Сейчас уже даже не вспомню, был это сам Google Gesture или что-то из его аналогов. Тогда программа оставила после себя довольно неприятное впечатление – мало того, что русские буквы распознавались плохо, так еще и само приложение работало нестабильно. Но после недавнего комментария читателя David я решил взглянуть на Google Gesture Search еще раз.
Краткий обзор
При первом запуске приложение просит принять условия лицензионного соглашения и указать области поиска. Это могут быть установленные на телефоне программы, контакты из адресной книги, музыка, закладки браузера и даже пункты настроек. Индексация содержимого телефона занимает буквально пару десятков секунд, после чего перед пользователем открывается главный экран программы.
Дизайн программы чем-то неуловимо напоминает знаменитую картину К. Малевича «Черный квадрат». Или поиски черной-черной кошки одной темной-темной ночью. Когда я запустил эту программу в первый раз, то мне показалось, что она просто зависла. Все-таки пустой черный экран смартфона очень мало напоминает работающее приложение. Впрочем, разработчики решили не слишком издеваться над новичками. Через 5-6 секунд бездействия на экране появляется надпись, предлагающая нарисовать на экране первый символ.
Символы могут состоять из нескольких штрихов. Уже введенные символы отображаются на строке в нижней части экрана. Свайп справа налево позволяет стереть последний символ, свайп слева направо – поставить пробел.
На мой взгляд, рукописный текст распознается отлично. Некоторые пользователи жалуются на частые ошибки при распознавание некоторых русских букв (таких как «Ф» или «Ю»), но я с такими проблемами не сталкивался. Возможно, просто почерк оказался подходящим.
В настройках программы можно задать комфортную скорость рисования, выбрать области поиска и очистить историю поиска. Кроме того, в настройках можно активировать функцию «включение двойным поворотом», позволяющую запустить Google Gesture Search поворотом смартфона вокруг оси. Разработчики уверяют, что такой метод прост и интуитивно понятен – поворот смартфона напоминает поворот ключа в замке. Мне же эта функция кажется совершенно надуманной.
Итоги
На мой взгляд, реализована идея «поиска жестом» просто отлично. Я много лет не пользовался рукописным вводом текста и ожидал, что распознаваться введенные символы будут в лучшем случае через раз. Но на практике никаких проблем с этим вопросом теперь нет – все работает быстро и четко.
Для меня лично это приложение оказалось такой же забавной, но не слишком полезной игрушкой, как голосовой запуск приложений или S-Voice. Пару раз попробовать было забавно, но пользоваться им в реальной жизни я совершенно не готов. Но при этом я знаю нескольких людей, которые действительно пользуются Google Gesture на постоянной основе. Что лишний раз доказывает, что о вкусах не спорят. Попробуйте – возможно программа понравится и вам.
Читайте также: