Android学习笔记-传感器开发之利用传感器和Tween开发简易指南针
本次我们学习Android传感器的开发,前面已经介绍过了,tween的使用,所以,我们可以结合传感器与tween动画,开发简易的指南针。
首先先介绍一下传感器的相关知识,
在Android应用程序中使用传感器要依赖于android.hardware.SensorEventListener接口。通过该接口可以监听传感器的各种事件。SensorEventListener接口的代码如下:
1
2
3
4
5
6
7
8
|
package android.hardware;
public interface SensorEventListener
{
public void onSensorChanged(SensorEvent event);
public void onAccuracyChanged(Sensor sensor, int accuracy);
}
|
onSensorChanged方法只有一个SensorEvent类型的参数event,其中SensorEvent类有一个values变量非常重要,该变量的类型是float[]。但该变量最多只有3个元素,而且根据传感器的不同,values变量中元素所代表的含义也不同。
values[2]:表示手机沿着Y轴的滚动角度。取值范围是-90≤values[2]≤90。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<ImageView
android:id= "@+id/iv"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:src= "@drawable/point" />
<TextView
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:textSize= "50dp" />
<TextView
android:id= "@+id/tv"
android:layout_width= "fill_parent"
android:layout_height= "wrap_content"
android:textSize= "20dp" />
|
其中的图片是在百度中随便找的一个方位的图片,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
tv = (TextView) findViewById(R.id.tv);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//得到方向传感器 光传感器Sensor.TYPE_LIGHT value[0],代表光线强弱
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
listener = new MyListener();
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
}
private class MyListener implements SensorEventListener{
float startangle = 0 ;
//传感器数据变化时,
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float [] values = event.values;
float angle = values[ 0 ];
System.out.println( "与正北的角度:" +angle);
RotateAnimation ra = new RotateAnimation(startangle, angle,Animation.RELATIVE_TO_SELF, 0 .5f,Animation.RELATIVE_TO_SELF, 0 .5f);
ra.setDuration( 100 );
iv.startAnimation(ra);
tv.setText( "与正北方向的角度是:" +angle);
tv.setTextColor(Color.BLACK);
startangle = -angle;
}
//传感器精确度变化的时候
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
@Override
protected void onDestroy() {
// 防止程序在后台运行,消耗内存,在程序退出时,释放资源。
sensorManager.unregisterListener(listener);
sensorManager = null ;
super .onDestroy();
}
|
最后当我们手机的方向发生变化时,图片也在移动,同时下面的文本框,会显示相应的方位值。
Android学习笔记-传感器开发之利用传感器和Tween开发简易指南针相关推荐
- Pro Android学习笔记(一五五) 传感器(5) 磁场传感器和方位(上)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 文章转载 ...
- Android学习笔记之(一)开发环境搭建
Android学习笔记之(一)开发环境搭建 zouxy09@qq.com http://blog.csdn.net/zouxy09 至于说Android是什么之类的俺就不啰嗦了,因为它离我们太近了.直 ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
- Android学习笔记21:ImageView获取网络图片
Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- Pro Android学习笔记(七七):服务(2):Local Service
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Local Service的目的是更容易实 ...
- android jackson xml,[Android学习笔记]jackson库的使用
Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是: 1. Java Object -> Json String 2. Java Object -> Xml String ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
- Android学习笔记:TabHost 和 FragmentTabHost
2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...
最新文章
- C++访问属性和继承属性浅析
- apollo local 模式_Java客户端使用指南 - 五、本地开发模式 - 《携程 Apollo v1.4 开发指南》 - 书栈网 · BookStack...
- html5app微信登陆,基于h5+的微信登陆,hbuilder打包
- python写入文件中文乱码_记一次python写入txt文件正常,但是写入csv文件中文乱码问题...
- JVM内存管理------JAVA语言的内存管理概述
- 天池 在线编程 最大得分(DP)
- 太多产品人死于汇报!
- Vue 学习笔记 — css属性计算的问题
- LINQ to XML 编程基础
- C++调用Go方法的字符串传递问题及解决方案
- java操作redis并发_使用Redis incr解决并发问题的操作
- 如何同时让多台服务器安装系统,如何同时安装多台服务器?
- JavaScript中用var和不用var的区别
- 放之四海皆适用的设计原则(一)
- 网络攻防第七周作业之20189304李小涛
- jquery+thinkphp实现跨域抓取数据的方法
- linux中nmap命令,Linux中nmap命令起什么作用呢?
- 中控指纹仪linux驱动下载,中控zk4500指纹采集器驱动下载_中控zk4500指纹采集器驱动官方下载-太平洋下载中心...
- 搜索及代码在GitHub上查重小技巧
- 如何在Pidgin中为您的域帐户设置Google Talk