文档章节

传感器使用

chenruibing
 chenruibing
发布于 2015/05/26 10:45
字数 478
阅读 11
收藏 0

通过获取系统服务得到SensorManager

注册一个监听器SensorEventListener,数据处理过程就在监听器里面

光线触感器


package com.itheima.sensor;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
	private SensorManager sm;
	private MyListener listener;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取系统服务
		sm = (SensorManager) getSystemService(SENSOR_SERVICE);
		//光线传感器  参数指定获取什么类型的传感器,也可以指定获取所有传感器
		Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
		listener = new MyListener();
		//注册一个监听器
		//第三参数代表采样频率,频率越高,精度越高,越费电
		sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_UI);
	}

	private class MyListener implements SensorEventListener{
		@Override
		public void onSensorChanged(SensorEvent event) {
			//不同类型的传感器,values的意义是不一样的   这里指的是光线的强弱
			float light = event.values[0];
			System.out.println("light:"+light);
		}
		@Override
		public void onAccuracyChanged(Sensor sensor, int accuracy) {
			
		}
	}
	@Override
	protected void onDestroy() {
		//应用程序关掉之后传感器还会一直在工作,所以需要把监听器注销掉并且置为null
		sm.unregisterListener(listener);
		listener = null;
		super.onDestroy();
	}

}


方向传感器


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/zn" />

</RelativeLayout>
package com.itheima.sensor;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private SensorManager sm;
	private MyListener listener;
	private ImageView iv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		sm = (SensorManager) getSystemService(SENSOR_SERVICE);
		iv = (ImageView) findViewById(R.id.iv);
		//方向传感器  虽然过时了,但是为了兼容低版本,还是用这个
		Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
		listener = new MyListener();
		//SENSOR_DELAY_GAME改成游戏模式的采集频率
		sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
	}

	private class MyListener implements SensorEventListener{
		float lastangle = 0;
		@Override
		public void onSensorChanged(SensorEvent event) {
			// 0=North, 90=East, 180=South, 270=West  
			float angle = event.values[0];//手机与正北方向的夹角
			System.out.println("angle:"+angle);
			
			RotateAnimation ra = new RotateAnimation(-lastangle, angle,
					Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
			iv.startAnimation(ra);
			lastangle = angle;
		}
		@Override
		public void onAccuracyChanged(Sensor sensor, int accuracy) {
			
		}
	}
	@Override
	protected void onDestroy() {
		sm.unregisterListener(listener);
		listener = null;
		super.onDestroy();
	}

}





© 著作权归作者所有

上一篇: 动画
chenruibing
粉丝 12
博文 203
码字总数 109101
作品 0
潮州
私信 提问
Android Sensor Development

Android Sensor Development 本文我们说一下Android中的传感器,这对于我们有时候做一些特殊的应用的时候还是需要的,这里我用小米手机下载了一个安兔兔,我们来看下大致的传感器 安兔兔上面...

qq_26787115
2017/04/30
0
0
Android传感器概述(三)

传感器框架 通过使用Android框架,你能够访问这些传感器,并获取原始的传感器数据。传感器框架是android.hardware包的一部分,并且包括以下类和接口: 1. SensorManager 使用这个类来创建一个...

长平狐
2012/10/16
72
0
Android传感器概述(一)

本文译自:http://developer.android.com/guide/topics/sensors/sensors_overview.html 大多数的Android设备都有内置的测量运动、方向、和各种环境条件的传感器。这些传感器具有提供高精度和...

长平狐
2012/10/16
162
0
Android传感器概述(五)

识别传感器和传感器能力 Android传感器框架提供了几个方法,这些方法让你在运行时能够容易判断设备上的传感器。API还提供了几个让你判断每个传感器能力的方法,如最大范围、识别率、功率需求...

长平狐
2012/10/16
83
0
Android Things:用户驱动-传感器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/p106786860/article/details/71076503 一、传感器简介 Android传感器...

1024工场
2017/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AliOS Things 3.0 应用开发指南

目录 应用开发框架介绍 使用条件 快速开始 第一步:下载AliOS Things 3.0源码 第二步:添加AOS_SDK_PATH环境变量 第三步:AliOS Studio中创建应用工程 编译、烧录、调试 其他说明 参考文档 ...

阿里云官方博客
38分钟前
3
0
日期和月份的计算

需求一 根据 【首次任务开始时间】和【任务间隔时间】和【每个任务持续时间】和【任务次数】计算出每个任务的时间 // 数据计算方法 async dateCalculation() { const firstD...

沉迷代码我爱学习
43分钟前
2
0
Spring Cloud Gateway 之请求坑位[微服务IP不同请求会失败]

问题产生背景 在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造成错误。 现象表现 问题定位 认为是...

IsaacZhang
54分钟前
5
0
Vue nodejs商城项目-搭建express框架环境

本文转载于:专业的前端网站➯Vue nodejs商城项目-搭建express框架环境 1.express-project 搭建express框架环境 安装express generator生成器 通过生成器自动创建项目 配置分析 安装 cnpm i -...

前端老手
今天
3
0
maven项目A引入maven项目B的jar包

首先打开 项目B 的 pom 文件,加入如下配置 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin<......

嘴角轻扬30
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部