2015-09-21 4 views
3

Я использую метод getPressure (index) из экземпляра MotionEvent, чтобы получить значение давления, приложенного к экрану.Единица измерения движения Android MotionEvent

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

в Android значение давления представляет собой поплавок от 0 до 1. Мне нужно каким-то образом выразить его в Ньютонах. От того, что я понял, это разные устройства, поэтому невозможно получить действительно точное измерение единицы измерения, но я в порядке с аппроксимацией.

Как что сумма в ньютонах является нормальным для стилуса прикосновения к экрану на полную силу (измерение 1.0f давления устройство)

+1

Я бы не стал полагаться на максимальное значение, так как вы можете получить 1f с разными сильными сторонами. Я бы попытался - поместить объект с известным весом на экран или на ваш палец. – natario

+0

Возможный дубликат [Как определить давление экрана на андроид?] (Http://stackoverflow.com/questions/18538513/how-to-detect-screen-pressure-on-android) –

+0

Это не дубликат, так как это разрешает crash, я ищу способ определить приличный диапазон значений силы при использовании стилуса. Я не забочусь о точности, потому что я знаю, что не могу добиться действительно точного результата. – DArkO

ответ

1

Я думаю, вы можете только догадываться и знать, что на результаты повлияет огромная неопределенность. Резолюции, которые я вижу:

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

  2. Возьмите стилус, и, отлаживая, узнайте, сколько силы вам нужно, чтобы получить результат 0.5f. Затем возьмите масштаб (здесь будет внешний спикер, я имею в виду инструмент, который измеряет веса ...?) И накладывает на него такое же давление с помощью стилуса, и читает результаты.

В обоих случаях, вы можете иметь одну точку на карте (например, 0.5f -> 10 N), а затем предположить линейную зависимость (зная также, что 0f -> 0 N), чтобы заполнить весь диапазон.

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

+0

Я использовал объект 1KG, прикрепленный к стилусу, и держал его поверх экрана, он измерял около 0,5f. Поэтому я предполагаю, что максимальное измеряемое давление на экране составляет 20 ньютонов.Как вы сказали, самый простой способ преобразования любого значения в этом масштабе линейный, поэтому я использовал это. 0.5f -> 10N и т. Д. Я знаю, что это не точно в реальных приложениях, но это действительно реалистичная эталонная шкала для моего варианта использования. – DArkO

+0

Это может быть хорошая оценка. Тем не менее, я бы попробовал объекты 2Kg или 0.5Kg и посмотрел, как выглядит модель. Действительно любопытно, как вы подключили 1 кг к стилу! :-) – natario

+0

Не спрашивайте :) ха-ха. у вилки была дыра на дне. верхняя часть стилуса была внутри. – DArkO

0

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

+0

Мне просто нужно работать на 1 устройстве. 1 конкретная модель устройства Android, мне нужно найти хорошее ссылочное значение и использовать его как шкалу. Надеюсь, что это имеет смысл? В частности, сколько силы делает стилус, когда значение давления равно 1.0f. Какая разумная ценность. Как 1N, 0,1N, 0,001N и т. Д.? – DArkO

+0

В этом случае вам просто нужно выполнить некоторые тесты на этом устройстве. Выведите значение getPressure на экран, когда вы размещаете на экране различные веса. Если вы хотите быть более точным, вам нужно будет учитывать высоту. Масса 1 кг будет притягиваться к Земле силой 9,81 ньютонов на уровне моря. –