Android加速度计鼠标

时间:2010-03-29 07:25:40

标签: android accelerometer

我计划在Android平台上开发基于加速度计的鼠标。我计划使用的移动设备是htc nexus one。移动移动设备时光标应移动是空间。这将很难与重力运动相提并论吗?

2 个答案:

答案 0 :(得分:3)

这很难回答,因为你已经说明了这个问题。

您想要使用鼠标是什么?如果您尝试在计算机上移动鼠标,则还需要创建一个可以运行PC的软件包,该软件包可以设置鼠标的位置。

手机中的加速器显然会检测到加速度,通常在x轴和Z轴上。如果你将手机放在桌子上,你会发现手机的电量低于1g(全部低于或者应该是大写情况?)。这实际上是1g的加速度,即使它没有加速,你仍然拥有它。您可以通过记录此1g的组件在三个轴上的不同来检测手机的滚动。即你在x和z轴上有相等的g力,在y中有零,那么你可以“假设”手机被保持在45度角。

当组件总和不等于1g时,您知道手机实际上正在加速。但是,您需要知道手机的位置。由于数学运算方式令人愉快,如果你计算出手机加速度差异的微分(在每个轴上)你应该有位置。你在加速时确定位置的确切方式比我在早上想到的更多,但关系的转换相当简单,如果你保持一个常数,你可以,TIME!

答案 1 :(得分:1)

老问题,但仍然与较新的硬件相关,所以这里......

你最大的问题是,单独的加速度计无法分辨由于重力和倾斜引起的运动加速度和加速度之间的差异。要隔离运动,您需要第二个传感器。您的问题非常类似于人们构建Segway式平衡机器人所面临的问题,解决方案也几乎相同:

  1. 陀螺仪。我相信三星Galaxy S手机有陀螺仪,但我不确定它们是“真正的”MEMS陀螺仪,还是只是以一种可能无法完成任务的方式进行模拟。

  2. 相机。这是一个未经测试的我的理论,但是如果你能以某种方式用闪光灯(带有LED闪光灯的手机)从桌面反射足够的光线,或者可能使用带有一些黑暗发光模式的鼠标垫,你可以当相机知道它没有聚焦时,强制相机进行低分辨率视频捕捉,你可以对模糊的未聚焦的blob进行模式识别,以确定手机是移动还是静止,并可能获得一定的速度感和/或或方向。将来自实时模糊摄像机视频流的低质量数据与来自加速度计的相对高分辨率的数据相结合,您可能会有一些有用的东西。

  3. 然而,在您甚至打扰1或2之前,请确保您已准备好解决更大的问题:模拟HID蓝牙鼠标。这是可能的(但可能需要一个有根电话),Android Market中至少有一个应用程序可以做到这一点,但这不是一项微不足道的任务。你不打算在一个下午解决这个问题,你可能应该尝试解决它至少足以模拟一个假的鼠标并令人信服地将它配对计算机,期待一个真正的蓝牙鼠标,然后你甚至打扰加速计问题。两者都是高风险的,所以在开始另一项任务之前不要试图完成一项任务,但不要花太多时间,直到你对问题的范围有相当好的控制并知道你是什么进入。

    还有一个替代方案,如果蓝牙HID太多了......有很多开源项目涉及跳过蓝牙HID,只是将它用作与PC上运行的服务器通信的串口(或系留)直接通过usb与ADB)。 AFAIK,它们都没有特别好的手机鼠标功能,除非你考虑将手机用作触摸板作为“鼠标”。