Android-акселерометр-мышь - PullRequest
2 голосов
/ 29 марта 2010

Я планирую разработать мышь на основе акселерометра на платформе Android.мобильное устройство, которое я планирую использовать, является HTC Nexus One.курсор должен двигаться, когда мобильный телефон перемещается в пространство.это будет трудно по сравнению с движением с гравитацией?

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

на это сложно ответить из-за того, как вы сформулировали вопрос.

Для чего вы хотите использовать мышь? Если вы пытаетесь навести мышь на компьютер, вам также необходимо создать программный пакет, который может запускать ПК, который может установить положение мыши.

Ускорители в телефонах обнаруживают, очевидно, ускорение, обычно по осям x y и Z. Если вы положите свой телефон на стол, вы заметите, что он весит менее 1 грамма (меньше или заглавные буквы должны быть?). Это на самом деле 1 г ускорения, даже если оно не ускоряется, у вас все еще есть. Вы можете обнаружить рулон телефона, записав, как компонент этого 1g отличается на трех осях. то есть у вас равная сила g на осях x и z и ноль на оси y, тогда вы можете «предположить», что телефон удерживается под углом 45 градусов.

Когда сумма компонентов не равна 1 г, вы знаете, что ваш телефон действительно ускоряется. Тем не менее, вам нужно знать положение вашего телефона. Из-за восхитительно болезненного способа работы математики, если вы работаете с дифференциалом разности ускорения вашего телефона (по каждой оси), у вас должна быть позиция. Точный способ определения позиции из ускорения - это больше, чем я могу представить утром, но корабли отношений довольно просто конвертировать в / из, если вы сохраняете постоянную для них всех, что вы можете, ВРЕМЯ!

1 голос
/ 28 сентября 2011

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

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

  1. Гироскоп. Я считаю, что телефоны Samsung Galaxy S имеют гироскопы, но я не уверен, являются ли они "настоящими" гироскопами MEMS, или просто имитируются каким-то образом, что может не соответствовать задаче.

  2. Камера. Это моя непроверенная теория, но если бы вы могли каким-либо образом отразить достаточно света от стола со вспышкой (на телефонах со светодиодной вспышкой), или, возможно, использовали коврик для мыши с каким-то рисунком свечения в темноте, и вы могли бы Заставьте камеру делать видеоизображение в низком разрешении, когда она узнает, что она не в фокусе, вы, вероятно, могли бы сделать распознавание образов на размытых не сфокусированных каплях достаточно хорошо, чтобы определить, движется ли телефон или неподвижно, и, возможно, получить некоторое чувство скорости и / или или направление. Объедините низкокачественные данные из видеопотока с размытой камеры в реальном времени с относительно высоким разрешением с акселерометров, и у вас может получиться что-то, что работает.

Однако, прежде чем вы начнете беспокоиться о 1 или 2, убедитесь, что вы готовы решить более серьезную проблему: эмуляцию мыши HID bluetooth. Это возможно (но может потребоваться рутированный телефон), и по крайней мере одно приложение в Android Market делает это, но это не тривиальная задача. Вы не собираетесь решать ЭТУ проблему днем, и вам, вероятно, следует попытаться решить ее хотя бы достаточно хорошо, чтобы эмулировать поддельную мышь и убедительно связать ее с компьютером, ожидающим настоящую Bluetooth-мышь, прежде чем вы даже столкнетесь с проблемой акселерометра. , Оба варианта сопряжены с высокой степенью риска, поэтому не пытайтесь полностью завершить одно задание, прежде чем начинать другое, но не тратьте слишком много времени на то, пока вы не получите достаточно хорошее представление о масштабах проблемы и не будете знать, что вы делаете. попасть в.

Существует альтернатива, если bluetooth HID слишком много ... существует довольно много проектов с открытым исходным кодом, которые включают пропуск bluetooth HID и использование его в качестве последовательного порта для связи с сервером, работающим на ПК (или привязанным). напрямую через usb с ADB). AFAIK, ни один из них не обладает особенно хорошими возможностями «телефон как мышь», если только вы не рассматриваете использование телефона в качестве сенсорной панели в качестве «мыши».

...