(使用Sensor创建指南针应用)

由于真机比较烂,获取所有可用传感器之后发现没有方向传感器和磁场传感器,所以夭折,因此没有进行完全开发,但是根据文档的一些东西添加了使用Sensor的流程,

首先在CustomView中设置一个Getter,就是获取rotateAngle:

    public void setRotateAngle(float rotateAngle) {
        this.rotateAngle = rotateAngle;
        invalidate();
    }

这样我们就可以通过外部调用view的这个方法来设置旋转:

在MainActivity中设置传感器:

 1 package com.example.androidviewtest;
 2
 3 import android.app.Activity;
 4 import android.hardware.Sensor;
 5 import android.hardware.SensorEvent;
 6 import android.hardware.SensorEventListener;
 7 import android.hardware.SensorManager;
 8 import android.os.Bundle;
 9
10 import com.example.androidviewtest.view.CustomView;
11
12
13 public class MainActivity extends Activity implements SensorEventListener{
14
15     private SensorManager mSensorManager;
16     private Sensor mSensor;
17
18     CustomView view1;
19     CustomView view2;
20     CustomView view3;
21
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_main);
26
27         view1 = (CustomView)findViewById(R.id.view1);
28         view2 = (CustomView)findViewById(R.id.view2);
29         view3 = (CustomView)findViewById(R.id.view3);
30
31         mSensorManager =(SensorManager)getSystemService(SENSOR_SERVICE);
32         mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
33     }
34
35     @Override
36     protected void onStart() {
37         super.onStart();
38         mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI);
39     }
40
41     @Override
42     protected void onPause() {
43         super.onPause();
44         mSensorManager.unregisterListener(this);
45     }
46
47     @Override
48     public void onSensorChanged(SensorEvent event) {
49         float[] values = event.values;
50         view1.setRotateAngle(values[0]);
51         view2.setRotateAngle(values[1]);
52         view2.setRotateAngle(values[2]);
53     }
54
55     @Override
56     public void onAccuracyChanged(Sensor sensor, int accuracy) {
57
58     }
59 }

我就不再继续这个View的学习了,下阶段了解CircleImageView的使用和实现。

时间: 2024-10-15 16:09:10

(使用Sensor创建指南针应用)的相关文章

Android传感器-开发指南

大部分Android平台的设备都带有多个传感器,使你能监视其方位和运动状态的变化.很多设备还有其它类型的传感器,让你能感知周围的环境条件,比如温度.压力.湿度和光线.你可以利用Android的传感器框架访问这些传感器,并获取原始的传感器数据. 传感器框架提供了丰富的类和接口,能帮助你完成很多与传感器有关的工作.比如,你可以用传感器框架来进行: 确定设备上可用的传感器 确定某个传感器的性能,比如量程.制造商.能耗.分辨率等. 读取传感器的原始数据并指定最小读取频率 注册及注销监听传感器变化的传感器

Android Sensor感应器介绍(三)获取用户移动方向,指南针原理

最新版的SDK加上了这么一句话“TYPE_ORIENTATION     This constant is deprecated. use SensorManager.getOrientation() instead. ”也就是说,这种方式已经被取消,要开发者使用SensorManager.getOrientation()来获取原来的数据. 实际上,android获取方向是通过磁场感应器和加速度感应器共同获得的,至于具体的算法SDK已经封装好了.也就是说现在获取用户方向有两种方式,一是官方推荐的

Android Sensor Development

Android Sensor Development 本文我们说一下Android中的传感器,这对于我们有时候做一些特殊的应用的时候还是需要的,这里我用小米手机下载了一个安兔兔,我们来看下大致的传感器 安兔兔上面,有很多的传感器对吧,但是他们大致的其实是分三类,在我们的官方文档上,是这样说的 sensors_overview 一.传感器概述 大多数Android设备都具有测量运动,方向和各种环境条件的内置传感器.这些传感器能够以高精度和精确度提供原始数据,如果要监视三维设备移动或定位,或者想要监

21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画

?? 1 关于常见的对话框,主要有: 常见的对话框,单选对话框,多选对话框,进度条对话框(转圈类型的),带进度条的对话框. 案例结构: 完成如下结构的案例,将所有的案例都测试一下: 2 编写MainActivity,代码如下: package com.itheima.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import andro

Android Orientation Sensor(方向传感器)详解与应用

一.前言 本篇blog是我的"Android进阶"的第一篇文章,从初学Android到现在断断续续也有4个多月时间了,也算是有了一些自己的心得体会,也能自己独立做一些东西了,这都要感谢我们公司的安卓开发璟博和无所不能的鸿洋给我的帮助和指点.本系列blog将记录我在开发中.学习中遇到的较为重点的.值得记录的知识点和技巧,简单的说就不再是基础教程了.由于项目中需要用到方向传感器,所以就借此机会来学一学Android的传感器部分的知识了,自然也就是本篇blog的内容了. 二.传感器基础 官方

创建一个Cordova完整应用

本文承接上篇<创建Cordova插件>,通过实现一个简单的应用作为这个Cordova0基础系列的结束. 前边对Cordova编程已经讲了不少了.还没有拿真实应用为例完整的演练一遍构建过程.这里将用一个完整的应用为例从头到尾一步步的演示怎样创建和測试应用. 关于演示样例应用 把全部的API集中在一个样例中展示是一个好办法. 以下我们以实现一个指南针表盘为例. 应用在屏幕上显示一个表示指南针转盘的图像. 当用户沿着水平坐标轴转动设备时.指南针图像也转动.应用效果例如以下图: 这里会用到jQuery

Android传感器应用_指南针(《第一行代码》教程)

1.检测你的手机里有哪些传感器 CheckSensor.java代码架构 1.使用一个ScrollView包裹的TextView把所有的传感器厂家.设备名称.版本.类型编号等打印出来 2.其中为了得到传感器名字,使用了一个静态内部类,这个静态内部类的作用是把(int)Sensor.getType()转化成对应的传感器名字 这个内部类唯一的方法,getSensorTypeName(int type)就是为了起到这个作用 package com.example.checksensor; import

高通sensor库和Linker的死锁问题分析报告

[问题描述] 调试NativeHeap泄露时,我们会用到Android Native Heap调试框架. 在push libc_malloc_debug_leak.so后重启zygote(adb shell stop + adb shell start),会发现系统一直起不来. 用debuggerd打印system_server的调用栈,可以发现system server的大部分线程都在malloc函数里卡死: pid: 4918, tid: 4929, name: Binder_1 >>&g

iOS 开发者旅途中的指南针 - LLDB 调试技术

文章转载于:iOS 开发者旅途中的指南针 - LLDB 调试技术 今天给大家介绍的内容,无关乎任何功能性开发技术,但又对开发的效率影响至深,这就是调试技术. 何为调试呢,比如我们用 print 函数在指定位置进行输出,来定位某些节点的变量内的取值: 12345 let result = parseJSON("[1,2,3]");print(result); result = parseJSON("error");print(result);4 相信我们大家看到类似这