J2J.RU - cовременная система продвижения сайтов
Меню сайта

Категории раздела

Наш опрос
Меня больше интересуют приложения и игры для:
Всего ответов: 22

Файлы
Новые Популярные Лучшие


Теги
Android (34)
uCoz (8)
mobile (3)
sistem (3)
xml (3)
google (2)
html (2)
Oboi (2)
opera (2)
Rest (2)
soap (2)
action (1)
ajax (1)
App2SD (1)
apps (1)
CSS (1)
Ddms (1)
editor (1)
gmail (1)
gobook (1)
java (1)
legend (1)
Lite (1)
live (1)
mp3 (1)
mrtm (1)
Muse (1)
ninja (1)
pdf (1)
php (1)
Root (1)
sensor (1)
shazam (1)
sql (1)
thread (1)
touch (1)
UI (1)
Widget (1)
Worms (1)
Xplore (1)
Zirco (1)

RSS
  
Новостная лента.

Форумная лента.

Файловая лента.  

Главная » Статьи » Программинг » Программирование [ Добавить статью ]

Использование Floating touch API в своих Android приложениях

В марте этого года компания Sony выпустила смартфон Xperia Sola. Одной из основных фишек смартфонов стала технология Floating touch, которая позволяет определять положение пальца на расстоянии нескольких миллиметров от экрана. В промо ролике телефона показано, как живые обои телефона реагируют на приближение пальца. К сожалению, на момент выход аппарата практически не было программ, использующих эту технологию. Исключение составлял разве что встроенный браузер. Между тем, реализация  поддержки Floating touch в своем приложении - довольно простая задача. Прежде чем приступить к описанию работы с Floating touch API следует сказать, что Floating touch работает, начиная с четвертой версии Android (Ice Cream Sandwich).

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

Программирование андроид приложений с использованием Floating touch API не представляет большого труда. Для отслеживания положения пальца над экраном нужно использовать класс MotionEvent, в котором определено три действия (action): ACTION_HOVER_ENTER, ACTION_HOVER_MOVE, ACTION_HOVER_EXIT. Нам нужно просто переопределить метод View.onHoverEvent или Activity.dispatchGenericMotionEvent. Из соображений совместимости и корректности работы приложения настоятельно рекомендуется проверять действие и отрабатывать как касания, так и перемещения над экраном. 

Помимо привычных координат, задающих положение пальца, при работе с Floating touch нам доступен еще один параметр, определяющий расстояние от экрана. Частая ошибка начинающих разработчиков - указание точной дистанции. На практике пользователь никогда не будет держать палец на расстоянии 2,0мм от экрана. Рука трясётся, и палец то удаляется, то приближается  к экрану, поэтому разумно проверять попадание его в диапазон расстояний. Это можно сделать с помощью метода  InputDevice.getMotionRange. Еще одна особенность Floating touch заключается в том, что она задает расстояние в неких относительных единицах, не привязанных жестко к расстоянию. Дело в том, что в основе Floating touch лежит измерение емкости, а на изменение емкости влияет не только расстояние до экрана, но и толщина пальца, угол, под которым он подносится, температура окружающей среды. Так что физически невозможно определить точное расстояние до пальца. В среднем Floating touch начинает работать где-то на расстоянии одного см от экрана.

Для того, чтобы проверить, поддерживается ли Floating touch телефоном, можно использовать метод PackageManager.hasSystemFeature, которому в качестве параметра передать com.sonymobile.floating_touch.

Следующий пример перехватывает события  Floating touch и выводит сообщения в TextView.

@Override
public boolean dispatchGenericMotionEvent(MotionEvent ev) {
 StringBuffer output = new StringBuffer();
 output.append("action: " + ev.getActionMasked() + "\n");
 output.append("x: " + ev.getX() + "\n");
 output.append("y: " + ev.getY() + "\n");
 MotionRange range = ev.getDevice().getMotionRange(MotionEvent.AXIS_DISTANCE);
 
 if (range != null) {
 output.append("distance: " + ev.getAxisValue(MotionEvent.AXIS_DISTANCE) + "\n");
 output.append("distance min: " + range.getMin() + "\n");
 output.append("distance max: " + range.getMax() + "\n");
 }
 
 if (mHasFloatingtouch == null) {
 mHasFloatingtouch = getPackageManager().hasSystemFeature(
 "com.sonymobile.floating_touch");
 }
 
 output.append("has floating touch: " + mHasFloatingtouch);
 
 if (mTextOutput == null) {
 mTextOutput = (TextView) findViewById(R.id.textView1);
 }
 
 mTextOutput.setText(output);
 return mHasFloatingtouch;
}

Автор: Andreas Sandblad, Software Architect, Sony

Категория: Программирование | Добавил: Virus (29.11.2012)

Похожие темы на пост "Использование Floating touch API в своих Android приложениях"

Схожие темы выбранные по тегам : floating, своих, Android, touch, использование, приложениях
  
Просмотров: 1369 | Рейтинг: 0.0/0

Дорогие пользователи и гости сайта!!! Пожалуйста, если вам не сложно, оставте комментарий или ваше мнение о портале в Гостевой книге. Ваше мнение очень важно для нас и очень поможет в поиске дальнейшего пути развития сайта. С уважением, Администрация сайта AndroBum!



Так же рекомендуем:
Всего комментариев: 0
Информация:
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

[ Регистрация | Вход ]
Поиск

Мини-чат

Block title
Virus
файлов: 69
Постов: 38
Комментов: 1005
Репутация: 0
Ранг:

droid
файлов: 3
Постов: 0
Комментов: 0
Репутация: 100
Ранг:

Serge
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Sergey
файлов: 1
Постов: 0
Комментов: 0
Репутация: 0
Ранг:

Аватар не установлен! Blackfoxxx
файлов: 0
Постов: 0
Комментов: 0
Репутация: 0
Ранг:


Друзья сайта
  • Официальный блог
  • скрипты, шаблоны, html, css
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика Сайта
    Статистика сайта как на сайте

    Пользователей всего: +0
    Материалов всего [?]: +
    Онлайн всего: 4
    Гостей: 4
    Пользователей: 0
    Гости сайта Пользователи

    Яндекс.Метрика




    Пользователи онлайн:


    Flag Counter



    Все материалы размещенные на сайте принадлежат их владельцам.
    Copyright dodomo.do.am © 2010-2012