QQ网名大全

请教:安卓手机中电子罗盘是不是就是方向传感器

电子罗盘 其中n、s、w和e分别表示北、南、西和东4个方向。 本例只使用了onsensorchanged**方法及values[0]。由于指南针图像上方是北,当手机前方是正北时(values[0]=0),图像不需要旋转。但如果不是正北,就需要将图像按一定角度旋转。假设当前values[0]的值是60,说明方向在东北方向。也就是说,手机顶部由北向东旋转。这时如果图像不旋转,n的方向正好和正北的夹角是60度,需要将图像逆时针(从东向北旋转)旋转60度,n才会指向正北方。因此,可以使用在11.2.3节介绍的旋转补间动画来旋转指南针图像,代码如下: public void onsensorchanged(sensorevent event) { if (event.sensor.gettype() == sensor.type_orientation) { float degree = event.values[0]; // 以指南针图像中心为轴逆时针旋转degree度 rotateanimation ra = new rotateanimation(currentdegree, -degree, animation.relative_to_self, 0.5f, animation.relative_to_self, 0.5f); // 在200毫秒之内完成旋转动作 ra.setduration(200); // 开始旋转图像 imageview.startanimation(ra); // 保存旋转后的度数,currentdegree是一个在类中定义的float类型变量 currentdegree = -degree; } } 上面的代码中使用了event.values数组中的数据来获得传感器传回的数据。这个values数组非常重要,它的长度为3。但不一定每一个数组元素都有意义。对于不同的传感器,每个数组元素的含义不同。在下面的部分将详细介绍不同传感器中values数组各个元素的含义。 注意:虽然使用sensor.type_all可以获得手机支持的所有传感器信息,但不能使用sensor.type_all注册所有的传感器,也就是getdefaultsensor方法的参数值必须是某个传感器的类型常量,而不能是sensor.type_all。
佚名
2024-05-29 04:33:32
最佳回答
类似问题(10)