`
wanglu271991027
  • 浏览: 90655 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android 传感器

 
阅读更多
Android中支持的几种传感器:


Sensor.TYPE_ACCELEROMETER:加速度传感器。
Sensor.TYPE_GYROSCOPE:陀螺仪传感器。
Sensor.TYPE_LIGHT:亮度传感器。
Sensor.TYPE_MAGNETIC_FIELD:地磁传感器。
Sensor.TYPE_ORIENTATION:方向传感器。
Sensor.TYPE_PRESSURE:压力传感器。
Sensor.TYPE_PROXIMITY:近程传感器。
Sensor.TYPE_TEMPERATURE:温度传感器。

使用传感器最关键的一些知识是:SensorManager是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。我们可以通过getSystemService方法来取得一个SensorManager对象。使用传感器时,需要通过registerListener函数注册传感器,使用完后需要通过unregisterListener取消注册。
百闻不如一见,还是直接讲代码:
新建一个Sensors的工程,创建一个Sensors.java,内容如下:

 package me.sigma.sensors;

import android.app.Activity;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class Sensors extends Activity {
    TextView myTextView1;//t
    //gen
    TextView myTextView2;//x
    TextView myTextView3;//y
    TextView myTextView4;//z
    //acc
    TextView myTextView5;//x
    TextView myTextView6;//y
    TextView myTextView7;//z
   //ori
    TextView myTextView8;//x
    TextView myTextView9;//y
    TextView myTextView10;//z
    //Light
    TextView myTextView11;//z
    SensorManager  mySensorManager;//
    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myTextView1 = (TextView) findViewById(R.id.myTextView1);
        myTextView2 = (TextView) findViewById(R.id.myTextView2);
        myTextView3 = (TextView) findViewById(R.id.myTextView3);
        myTextView4 = (TextView) findViewById(R.id.myTextView4);
        myTextView5 = (TextView) findViewById(R.id.myTextView5);
        myTextView6 = (TextView) findViewById(R.id.myTextView6);
        myTextView7 = (TextView) findViewById(R.id.myTextView7);
        myTextView8 = (TextView) findViewById(R.id.myTextView8);
        myTextView9 = (TextView) findViewById(R.id.myTextView9);
        myTextView10 = (TextView) findViewById(R.id.myTextView10);
        myTextView11 = (TextView) findViewById(R.id.myTextView11);
        mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);


    }


    private SensorListener mySensorListener = new SensorListener(){

        @Override
        public void onAccuracyChanged(int sensor, int accuracy) {}  


        @Override
        public void onSensorChanged(int sensor, float[] values) {       

            if(sensor == SensorManager.SENSOR_TEMPERATURE){
                myTextView1.setText("Current Temprature:"+values[0]);   

            }else if(sensor == SensorManager.SENSOR_MAGNETIC_FIELD){

                myTextView2.setText("Current Magnetic x:"+values[0]);
                myTextView3.setText("Current Magnetic y:"+values[1]);
                myTextView4.setText("Current Magnetic z:"+values[2]);

            }else if(sensor == SensorManager.SENSOR_ACCELEROMETER){

                myTextView5.setText("Current Accelero x:"+values[0]);

                myTextView6.setText("Current Accelero y:"+values[1]);

                myTextView7.setText("Current Accelero z:"+values[2]);

            }else if(sensor == SensorManager.SENSOR_ORIENTATION){


                myTextView8.setText("Current Oraenttation x:"+values[0]);


                myTextView9.setText("Current Oraenttation y:"+values[1]);


                myTextView10.setText("Current Oraenttation z:"+values[2]);


            }else if(sensor == SensorManager.SENSOR_LIGHT){


                myTextView11.setText("Current Oraenttation x:"+values[0]);


            }


        }


    };


    @Override


    protected void onResume() {


        mySensorManager.registerListener(


                mySensorListener, 


                SensorManager.SENSOR_TEMPERATURE | 


                SensorManager.SENSOR_MAGNETIC_FIELD | 


                SensorManager.SENSOR_ACCELEROMETER | 


                SensorManager.SENSOR_LIGHT |


                        SensorManager.SENSOR_ORIENTATION,


                SensorManager.SENSOR_DELAY_UI


                );


        super.onResume();


    }   


    @Override


    protected void onPause() {


        mySensorManager.unregisterListener(mySensorListener);


        super.onPause();


    }


} 


更改res/layout/下面的main.xml,为如下内容:






 <?xml version="1.0" encoding="utf-8"?>       


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"


    android:orientation="vertical"


    android:layout_width="fill_parent"


    android:layout_height="fill_parent">


    <TextView  


        android:id="@+id/title"


        android:gravity="center_horizontal"


        android:textSize="20px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/title"/>


    <TextView  


        android:id="@+id/myTextView1"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView1"/>    


        <TextView  


        android:id="@+id/myTextView2"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView2"/>


        <TextView  


        android:id="@+id/myTextView3"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView3"/>


        <TextView


        android:id="@+id/myTextView4"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView4"/> 


        <TextView  


        android:id="@+id/myTextView5"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView5"/>


        <TextView  


        android:id="@+id/myTextView6"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView6"/>


        <TextView  


        android:id="@+id/myTextView7"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView7"/>


        <TextView  


        android:id="@+id/myTextView8"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView8"/> 


        <TextView  


        android:id="@+id/myTextView9"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView9"/> 


        <TextView  


        android:id="@+id/myTextView10"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView10"/>    


        <TextView  


        android:id="@+id/myTextView11"


        android:textSize="18px"


        android:layout_width="fill_parent" 


        android:layout_height="wrap_content" 


        android:text="@string/myTextView11"/> 


</LinearLayout>





更改res/values/strings.xml为如下内容:






 <?xml version="1.0" encoding="utf-8"?>


<resources>


    <string name="hello">templator!</string>


    <string name="app_name">templator</string>


    <string name="title">Sigma Sensors</string>


    <string name="myTextView1">Current Temprature:</string>


    <string name="myTextView2">Current Magnetic x:</string>


    <string name="myTextView3">Current Magnetic y:</string>


    <string name="myTextView4">Current Magnetic z:</string>


    <string name="myTextView5">Current Accelero x:</string>


    <string name="myTextView6">Current Accelero y:</string>


    <string name="myTextView7">Current Accelero z:</string>


    <string name="myTextView8">Current Oraenttation x:</string>


    <string name="myTextView9">Current Oraenttation y:</string>


    <string name="myTextView10">Current Oraenttation z:</string>


    <string name="myTextView11">Current Light:</string>


</resources>
分享到:
评论

相关推荐

    ANDROID传感器开发.pdf

    ANDROID 传感器开发概述 Android 是一个面向应用程序开发的丰富平台,它拥有许多具有吸引力的用户界面元素、数据管理和网络应用等优秀的功能。Android 还提供了很多颇具特色的接口。本文我们将分别介绍这些吸引...

    Android传感器高级编程

    《Android传感器高级编程》是专为开发者深入理解并掌握Android平台上的传感器技术而编写的一本专业书籍。在Android系统中,传感器是设备与环境交互的关键组件,它们收集各种物理和环境数据,如加速度、陀螺仪、磁力...

    Android传感器开发与智能设备案例实战

    Android传感器开发与智能设备案例实战 --朱元波,包含了Android传感器分析,地图定位,接近警报,光线、磁场、加速度、陀螺仪、方向、旋转向量、距离、气压、温度、湿度传感器等,以及蓝牙系统、语音识别、手势识别...

    Android传感器高级编程 中文版 带书签 PDF

    《Android传感器高级编程》这本书是针对Android平台的传感器技术进行深入探讨的专业著作,旨在帮助开发者理解和利用Android系统中的传感器功能,提升应用的创新性和实用性。这本书由清华大学出版社出版,共481页,...

    android传感器使用方法

    "Android传感器使用方法" Android传感器是指安卓系统中用来感知外部环境、设备状态和用户行为的硬件组件。 Android系统提供了多种类型的传感器,包括动作传感器、环境传感器、姿态传感器等。下面将详细介绍Android...

    android传感器高级编程源码+apk

    这个“android传感器高级编程源码+apk”资源正是针对这一主题,帮助开发者深入理解和实践Android传感器的高级用法。 首先,我们要理解Android传感器的基本概念。Android系统通过SensorManager服务提供了对各种...

    Android传感器、无线传输、与媒体硬件功能开发

    Android课程,蓝牙,android传感器,无线传输与媒体硬件功能开发

    Android 传感器高级编程高清中文pdf

    《Android传感器高级编程》利用你所需的知识和代码来武装你,帮助你很好地利用Android中的传感器。从确定智能手机的位置和解释物理传感器,到处理图像、音频和识别语音,你将学会如何有效地调用传感器相关的API。...

    利用android传感器实现手机摇一摇解除闹铃

    在Android平台上,我们可以利用内置的传感器系统来实现各种创新的功能,比如本文提到的"手机摇一摇解除闹铃"。这个功能允许用户在闹钟响起时,通过简单地摇动手机来停止闹铃,而无需触摸屏幕。接下来,我们将深入...

    极客学院Android传感器源码及PPT

    极客学院的Android传感器课程涵盖了多个方面的内容,包括蓝牙、照相机和NFC(近场通信)等核心功能的源码分析。通过学习这些源码,开发者可以深入理解Android系统如何与硬件交互,以及如何利用这些硬件功能来构建更...

    Android传感器应用实例

    "Android传感器应用实例"是一个专为学习Android传感器开发而设计的项目,通过两个具体的Activity,深入浅出地展示了如何利用Android的传感器API。 第一个Activity的主要目标是展示手机中的传感器数量和类型。在...

    Android传感器应用之摇一摇小球运动实现

    在Android平台上,传感器应用是移动开发的一个重要领域,它允许开发者创建各种有趣和实用的交互式功能。"摇一摇"动作就是一个常见的用户交互模式,常用于游戏、抽奖或者清理缓存等场景。本篇文章将深入探讨如何在...

    android传感器_android_

    在Android平台上,传感器技术是移动应用开发中的一个重要组成部分,它为开发者提供了与设备硬件交互的能力,从而实现各种创新的功能。本示例源码主要涵盖了三种常见的传感器:加速度传感器、方位传感器和光线传感器...

    android传感器总结

    以下是对"android传感器总结"这一主题的详尽解析。 一、Android传感器类型 Android系统支持多种传感器类型,包括: 1. **加速度传感器**(Accelerometer):测量设备在X、Y、Z轴上的线性加速度,通常用于识别设备...

Global site tag (gtag.js) - Google Analytics