Java 大作业回忆--day05-- 手机能不能做到和激光笔一样?

来源:互联网 发布:淘宝长尾词2017 编辑:程序博客网 时间:2024/04/30 11:02

Day05 ---- 我能不能把手机做的像激光笔一样?


    那天睡觉之前,我在遐想~~想着想着,一个想法突然冒了出来:我能不能用手机的上下晃动控制鼠标呢?就是做的像激光笔一样,向上指就能向上走,这样岂不是非常好。但这个怎么做呢?  诶? 对了,手机不是有传感器么,没准可以通过手机的传感器做出来响应的功能。   算了,先睡觉,明天试试去。

   第二天起来,查了查一半手机都有哪些传感器:加速度传感器,重力传感器,温度传感器,方向传感器...... 有好多啊~ 我要实现我想要的功能,用哪种比较好呢? 我觉得没准是重力传感器~ 因为重力传感器在手机上下偏离的时候x,y轴的重力加速度会有变化。 那我就试试吧~~~

   说着,我就打开了一个教学神器:极客学院。在上面的所有的Android课程中,找到了一个关于手机硬件传感器开发的一个教程,就把它看了。

   学明白了之后,打开AndroidStudio,说写就写~ 写了一会,就把这部分写完了。因为以前已经搭建好了网络传输协议,所以很轻松的就把手机的x,y参数发送给了电脑。  那么问题来了,电脑怎么处理这个加速度才能让鼠标动的比较自然呢? 试试直接把(x,y)传递给电脑的鼠标移动模块。   都写完了,一试效果,不是很好。因为只要手机放的位置不平,指针就会来回动来动去的,一点也不好用。

   那怎么办嘞?要不换个传感器试试?

   上网查了每个传感器的细节,我决定用方向传感器。感觉应该这个传感器比较靠谱。方向传感器传输的是当前x,y的角度。

    改完测试的时候,发现了一个问题,就是方向传感器的0度角的位置随着你的位置不一样也不尽相同。想了想,那也简单,我再加一个button,就可以先通过这个button进行初始角度的定位,然后再在这个角度的基础上进行角度的偏转。  

   试了试,效果一般,但比之前有了一点意思了。

   后来的几天,调试了好久这个模块,但还是没法达到想要的灵敏度和效果,所以不知道最后能不能达到自己梦想中的效果。


   这里还有一点点小问题,就是电脑控制鼠标移动只有移动到指定的(x,y),但我们更加需要的是增量移动,就是给一个x,y的增量,进行移动。针对这个问题,我写了一个增量移动的方法。但后来有一个小bug就是说当鼠标移动到屏幕范围以外的时候,就会回到(0,0)这个位置,所以后来又加了一个判断从而保证指针不会出去屏幕范围。

   另一个问题就是当数据传输的时候由于有时候会有一点延迟,所以鼠标移动会有卡顿现象,为了解决这种用户不友好的现象,我把鼠标增量这个函数中加了一个小tip,就是让鼠标一个一个像素的进行移动,这样可以通过电脑端的处理使得鼠标看起来移动的非常平滑。

 


    上面就是传感器部分的工作,希望我能在这几天把这个功能调的更完美一点~~~~~

0 0