`

android传感器总结

 
阅读更多
基于方向传感器的一个小应用——指北针(高手勿喷)
注释比较多
http://www.iteye.com/topic/737999

android 重力感应的使用

http://blog.csdn.net/pku_android/article/details/7438745
Android的传感器编程小结
http://www.cnblogs.com/nio-nio/archive/2009/10/23/1588610.html
Android方向传感器实践——自己动手做水平尺
http://blog.csdn.net/tinya0913/article/details/6095307
http://disanji.net/2011/08/30/android%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E4%B9%8B%E5%B0%8F%E7%90%83%E9%87%8D%E5%8A%9B%E6%84%9F%E5%BA%94%E5%AE%9E%E7%8E%B0/

http://hi.baidu.com/lieal/blog/item/f8ec3fed7aa8a4ccb21cb128.html

http://hi.baidu.com/huareal/blog/item/c5179bc6ac566021e5dd3bf1.html


Android设备信息获取
android.os.Build 包
		
		Log.d(TAG, "device name : " +Build.MODEL);


HTC a510e 传感器支持情况:
04-22 23:54:43.003: D/debug(12091): BMA150 3-axis Accelerometer
04-22 23:54:43.003: D/debug(12091): AK8973 3-axis Magnetic field sensor
04-22 23:54:43.003: D/debug(12091): AK8973 Orientation sensor
04-22 23:54:43.003: D/debug(12091): CM3602 Proximity sensor
04-22 23:54:43.003: D/debug(12091): CM3602 Light sensor
04-22 23:54:43.003: D/debug(12091): Gravity Sensor
04-22 23:54:43.003: D/debug(12091): Linear Acceleration Sensor
04-22 23:54:43.013: D/debug(12091): Rotation Vector Sensor


st18i 传感器支持情况:
04-23 00:18:25.314: D/debug(8972): BMA150 accelerometer
04-23 00:18:25.314: D/debug(8972): AK8975 Compass
04-23 00:18:25.314: D/debug(8972): AK8975 Compass Raw
04-23 00:18:25.314: D/debug(8972): AK8975 Magnetic Field
04-23 00:18:25.314: D/debug(8972): APDS9702 Proximity
04-23 00:18:25.314: D/debug(8972): Gravity Sensor
04-23 00:18:25.314: D/debug(8972): Linear Acceleration Sensor
04-23 00:18:25.314: D/debug(8972): Rotation Vector Sensor


引用
支持以下六种传感器:

加速度传感器 Accelerometer
地磁传感器 Magnetic field sensor
温度传感器 Temperature sensor
距离传感器 Proximity sensor
方向传感器 Orientation sensor
亮度传感器 Light sensor

http://madgoat.cn/2011/01/%E6%A3%80%E6%B5%8B%E6%89%8B%E6%9C%BA%E4%B8%AD%E7%9A%84sensor%E4%BC%A0%E6%84%9F%E5%99%A8%E7%B1%BB%E5%9E%8B/



Android 重力感应和屏幕旋转关系
http://www.apkcode.com/html/2011/interface_0218/1848.html


关于重力感应系统的详细解释
http://www.eoeandroid.com/thread-3105-1-1.html


Android重力感应模拟器实现与实例开发 
http://wxmijl.blog.163.com/blog/static/13245928201062734631474/
传感器模拟器
http://code.google.com/p/openintents/downloads/detail?name=sensorsimulator-1.1.1.zip&can=2&q=



Android重力感应器Sensor编程
http://www.apkcode.com/html/2011/interface_0218/1848.html

Android opengl 立方体 多纹理
http://blog.csdn.net/one2zero/article/details/5895548
此例:2.3.3报错,解决后,无图

【Android】OpenGL 3D立方体多纹理贴图【附源码】
http://blog.sina.com.cn/s/blog_62f987620100p64x.html


http://www.eoeandroid.com/thread-44154-4-1.html53楼

请教如何在android中画出一个3D的圆球模型啊?
bluefuture 发表于 2010-11-22 21:18




    DrawGlobe extends GLBase
{
    private final float R = 0.5f;
    private final int N = 50;
    private final int T = 6;
    private final int M = 9;
    private final int NT = N * (T + M) - 1;
    private final float Start = (float)Math.PI / 2;
    private final float BASE = 2 * (float)Math.PI / N;
    private final float ADD_1 = (float)Math.PI / T;    
    private final float ADD_2 = (float)Math.PI / (M - 1);
    private final int LEN = 3 * NT;
    private float an = 1; 
     
    private float[] coords; 
    
    FloatBuffer coordBuffer;   
   
    private void setCoords()
    {
        coords = new float[LEN];
        int i, j, k, p, pos;   
        float angle = -ADD_1, rad, x1;
        for(k = 0, p = 0; k < T; k++)
        {
                angle += ADD_1;
                for (i = 0; i < N; i++, p++)
            {
                pos = p * 3; 
                rad = i * BASE + Start;
                
                x1 = R * (float)Math.cos(rad);
                coords[pos] = x1 * (float)Math.cos(angle); 
                coords[pos + 1] = R * (float)Math.sin(rad);
                coords[pos + 2] = x1 * (float)Math.sin(angle);
            }
        }     
        float alpha = Start, beta = 0;
        float y, r;
        int ra = N /((M - 1) * 2);
        
            
        for(k = 1; k < M; k++)
        {
                beta += ADD_2;
                y = R * (float)Math.cos(beta);

                for(j = 0; j < ra; j++,p++)
                {
                        pos = p * 3;
                        rad = alpha - j * BASE;
                         
                        coords[pos] = R * (float)Math.cos(rad); 
                coords[pos + 1] = R * (float)Math.sin(rad);
                coords[pos + 2] = 0;
                }
                alpha -= ADD_2;
                if(alpha == -Start)
                        break;

                for(i = 0; i < N; i++, p++)
                {
                        pos = p * 3;
                        rad = i * BASE;
                        r = R * (float)Math.sin(beta);
                        
                        coords[pos] = r * (float)Math.cos(rad); 
                coords[pos + 1] = y;
                coords[pos + 2] = r * (float)Math.sin(rad);
                }
        }

        alpha = -Start;
        for(i = 0; i < N/2; i++,p++)
        {
                pos = p * 3;
                rad = i * BASE + alpha;
                
                coords[pos] = R * (float)Math.cos(rad); 
            coords[pos + 1] = R * (float)Math.sin(rad);
            coords[pos + 2] = 0;
        }
        
        
    }
    
    public DrawGlobe(Context c)
    {
        super(c);
        
        setCoords();
        coordBuffer = makeFloatBuffer(coords);
    }  

    private void initial(GL10 gl)
    {
            an += 1.0;
            if(an == 360.0)
                    an = 0;
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    }
    
    private void destroy(GL10 gl)
    {
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    }
    
    @Override
    protected void drawFrame(GL10 gl)
    {
        initial(gl);
        draw(gl);        
        destroy(gl);
    }
  
    private void draw(GL10 gl)
    {
            gl.glEnable(GL10.GL_DEPTH_TEST);
        gl.glColor4f(0.5f, 0, 1, 1);
        gl.glViewport(0, 0, 480, 480);
        gl.glRotatef(an, 0, 1f, 0);
        gl.glRotatef(an, 1f, 1f, 0);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, coordBuffer);
        gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, NT);
    } 
}

这样就可以画出一个球了!


android 完整游戏源码(alignbody)
http://wanran.iteye.com/blog/1049401
引用

2.背景音乐的播放
3.mvc设计模式应用
4.sharedPerferenced数据保存
5.手机震动
6.基础的网络传输




浅谈Android中重力感应的实现方式
http://www.itivy.com/android/archive/2011/6/27/android-gravity-sensing.html

引用
在Android应用程序的开发中,占据主要地位的当属游戏的开发。我们在这篇文章中将会针对在游戏中需要用到的重力感应功能,来为大家详细分析Android重力感应的实现方法,以帮助大家解决相关问题。
Android中的很多游戏的游戏都使用了重力感应的技术,但其api demo却并没有重力感应的实例(不知道是不是我没找到,找到的朋友麻烦告诉我一下,谢谢),因为开发的需要,就研究了一下重力感应这方面,因为网上关于这方面的东西比较少,所以写出来跟大家交流一下,算是抛砖引玉吧。(ps.因为重力感应式需要真机才能测试的,所以,下面提供的demo程序只能在真机上跑。)
因为官方说明比较含糊难懂,我用最简单的方式讲一下Android重力感应系统的坐标系
以屏幕的左下方为原点(2d编程的时候,是以屏幕左上方为原点的,这个值得注意一下),箭头指向的方向为正。从-10到10,以浮点数为等级单位,想象一下以下情形:
手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10);
手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10);
手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0);
手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0);
其他的如此类推,规律就是:朝天的就是正数,朝地的就是负数。利用x,y,z三个值求三角函数,就可以精确检测手机的运动状态了。
接下来,用最短的代码完成Android重力感应功能,程序效果就是在title上面输出x,y,z的值。



package com.ray.test;   
import Android.app.Activity;   
import Android.os.Bundle;   
import Android.hardware.SensorManager;   
import Android.hardware.Sensor;   
import Android.hardware.SensorEventListener;   
import Android.hardware.SensorEvent;   
public class SensorTest extends Activity {   
private SensorManager sensorMgr;   
Sensor sensor = sensorMgr.getDefaultSensor
(Sensor.TYPE_ACCELEROMETER);   
private float x, y, z;   
protected void onCreate(Bundle savedInstanceState) {   
super.onCreate(savedInstanceState);   
sensorMgr = (SensorManager) 
getSystemService(SENSOR_SERVICE);   
SensorEventListener lsn = new SensorEventListener() {   
public void onSensorChanged(SensorEvent e) {   
x = e.values[SensorManager.DATA_X];   
y = e.values[SensorManager.DATA_Y];   
z = e.values[SensorManager.DATA_Z];   
setTitle("x="+(int)x+","+"y="+(int)y+","+"z="+(int)z);   
}   
public void onAccuracyChanged(Sensor s, int accuracy) {   
}   
};   
//注册listener,第三个参数是检测的精确度   
sensorMgr.registerListener(lsn, sensor, 
SensorManager.SENSOR_DELAY_GAME);   
}   
}
分享到:
评论

相关推荐

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

    总结,实现Android中的摇一摇小球运动,关键在于正确地使用SensorManager处理加速度传感器数据,设计合适的摇一摇检测算法,以及利用动画技术实现小球的动态效果。通过这个过程,开发者不仅可以掌握基本的传感器应用...

    Android传感器的分析

    总结,Android传感器为开发者提供了丰富的环境感知能力,通过理解和有效利用这些传感器,可以开发出更加智能和互动的应用。在实际开发中,要根据应用需求选择合适的传感器,合理处理和分析数据,同时注意性能和功耗...

    android传感器之指南针开发

    在Android平台上,开发一...总结,开发Android指南针应用涉及了Android传感器API的使用、传感器数据处理、坐标变换以及UI设计等多个方面。通过理解这些知识点并实践,开发者可以构建出一个准确、响应迅速的指南针应用。

    Android 传感器 Sensor 编程

    本章节将深入探讨Android传感器编程的相关知识点。 #### 二、Android传感器的基础概念 Android SDK 提供了一系列与硬件交互的功能,其中包括传感器管理。这些功能使得开发者能够创建出更加智能和响应式的应用。...

    android震动传感器之摇一摇

    在Android平台上,开发...以上就是关于“android震动传感器之摇一摇”的详细讲解,涵盖了Android传感器的使用、摇动检测算法以及震动反馈的实现。通过这些知识,开发者可以构建出一个有趣且实用的“摇一摇”功能应用。

    Android 传感器(Sensor)API教程 (六) 加速度传感器运用实例

    总结来说,Android的Sensor API为开发者提供了丰富的功能,可以利用加速度传感器实现各种创新的应用。通过理解传感器事件的处理机制,我们可以获取设备的实时运动数据,进而实现如“摇一摇”这样的交互功能。在实际...

    Android传感器测试

    总结,"Android传感器测试"项目是一个很好的学习平台,它涵盖了Android传感器的基础知识,包括获取传感器数据、处理传感器事件以及在实际场景中的应用。通过这个项目,开发者可以深入了解Android设备的感知能力,并...

    android硬件传感器.txt

    ### Android硬件传感器知识点详解 #### 一、引言 随着移动技术的发展,智能手机已经成为人们日常生活中不可或缺的一部分。而其中,Android系统因其开放性和灵活性而受到广泛欢迎。Android设备上配备的各种传感器更...

    Android传感器实战-简易指南针

    在Android平台上,开发一款简易指南针应用涉及到的关键技术主要集中在传感器的使用,特别是加速度...通过这个过程,开发者不仅可以学习到Android传感器编程的基础,还能锻炼到对硬件数据的处理和用户界面设计的能力。

    利用android手机自带的加速度传感器和磁场传感器确定手机的姿态

    总结来说,通过Android手机内置的加速度传感器和磁场传感器,结合适当的算法,我们可以精确地确定手机在三维空间中的姿态,这对于实现导航、游戏、虚拟现实等应用场景至关重要。尽管Android 4.0以上版本不再提供方向...

    android传感器

    Android传感器是Android操作系统中一个关键的组成部分,它们使得设备能够感知和处理来自周围环境的各种信息。传感器技术在智能手机和平板电脑等移动设备中扮演着至关重要的角色,为应用程序提供了丰富的功能,例如...

    android 传感器

    总结来说,Android传感器是实现各种创新应用的基础,它们能感知环境变化、设备运动和方向,为用户提供丰富的交互体验。通过深入理解和灵活运用光线传感器、加速度传感器、距离传感器和方向传感器,开发者可以创建出...

    android传感器资料

    总结,Android传感器为开发者提供了丰富的可能性,使得应用能够感知和响应用户的行为和环境变化。通过理解和运用Android的传感器API,开发者可以创建出更加智能和互动的应用程序,提升用户体验。

    android加速度传感器

    在Android平台上,加速度传感器(Accelerometer)是一种重要的硬件组件,它能够感知设备在空间中的移动,通过测量重力和...通过实践和研究这个项目,你可以深入了解Android传感器的使用,并将其应用于自己的项目中。

    Android方向传感器Demo

    通过分析源代码(SenorTest),学习者可以更好地理解Android传感器API的使用,以及如何在实际项目中应用这些概念。 总结来说,这个Demo为Android开发者提供了一个快速入门指南,让他们能够利用方向传感器实现各种...

    Pro Android学习:传感器

    一、Android传感器概述 Android系统通过SensorManager服务提供了对硬件传感器的访问接口。开发者可以通过注册SensorEventListener监听器来获取实时的传感器数据。Sensor类代表了一个传感器,包含了传感器的类型、...

    android姿态传感器源代码

    总结,"android姿态传感器源代码"是一个简单的示例,旨在帮助初学者快速入门Android传感器编程。通过理解并实践这段代码,你可以掌握如何在Android应用中获取和处理姿态传感器数据,从而开启更多创新的可能性。

Global site tag (gtag.js) - Google Analytics