GPRS/NFC/ 红外线/ 传感器/ 串口 ,DLNA/UPnP 等

本文介绍了多种无线通信技术,包括NFC、蓝牙、WiFi及红外线等,并对比了它们的特点和应用场景。此外,还详细探讨了Android平台上的传感器类型及其在游戏开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  移植bluetooth和wifi,bluez移植。
 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]-- http://blog.youkuaiyun.com/Innost/article/list/2
Wifi、蓝牙等进行通信(TCP等)???
  常见的无线网络通讯技术有:WiFi、NFC、ZigBee、Bluetooth、WWAN(Wireless Wide Area Network,包括GPRS、3G、4G、5G等)、NB-IoT、Sub-1GHz等。

-- NFC与红外线
 NFC优于红外和蓝牙传输方式。作为一种面向消费者的交易机制,NFC比红外更快、更可靠而且简单得多,不用向红外那样必须严格的对齐才能传输数据。
 与蓝牙相比,NFC面向近距离交易,适用于交换财务信息或敏感的个人信息等重要数据;蓝牙能够弥补NFC通信距离不足的缺点,适用于较长距离数据通信。 
红外线和NFC的适用场合不同,主要是通讯距离、数据量、协议的区别。红外比较适合类似遥控器等距离比较大的场合,而NFC比较适合刷卡、交换名片等距离近的场合。

  近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。NFC采用主动和被动两种读取模式。
1.读卡器模式(Reader/writer mode),2. 点对点模式(P2Pmode),3.卡模式(Cardemulation)
NFC支持如下3种工作模式:读卡器模式(Reader/writer mode)、仿真卡模式(Card Emulation Mode)、点对点模式(P2P mode)。
  RFID是Radio Frequency Identification的英文缩写,即射频识别,又称电子标签,是一种非接触式的自动识别技术。

android——实现NFC的读写- https://blog.youkuaiyun.com/sky2016_w/article/details/79026596
Android 高级开发——NFC标签开发深度解析- https://www.cnblogs.com/smartbetter/p/7723784.html

> DLNA&UPnP 投屏
  DLNA协议定义了一种通用的行业规范,目的是让电子设备之间可以方便地共享照片、视频、音乐等多媒体内容。而UPnP协议主要用于实现智能设备的互联互通,它定义了局域网内的设备如何互相发现对方,如何提供服务,如何控制对方等一系列的过程。
  UPnP的设备(Device)是通过广播包来通知局域网中的控制点自己的设备信息和服务的,而这些设备信息和服务都必须根据UPnP协议规定的XML文档格式来编写,UPnP提供了标准的模板可以参考,具体的文档地址:http://upnp.org/sdcps-and-certification/standards/sdcps/
  协议的官方文档,http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v2.0.pdf http://upnp.org/specs/av/UPnP-av-AVArchitecture-v1-20020625.pdf

-- DLNA投屏(UPnP),UPnP的工作过程 DLNA基础协议框架
DLNA投屏- https://github.com/azatoth/minidlna
DLNA投屏- https://github.com/KernelCrap/android-dlna
DLNA投屏Demo- https://download.youkuaiyun.com/download/qq_24179679/9738934

-- UPnP AV典型应用架构中,我们知道,要实现一个完整的应用,需要三个主体,一个是MediaServer,一个是MediaRenderer,还有一个是Control Point.
(1)MediaServer,推荐:BubbleUPnP,魔力视频,开心视频(KXPlayer),MediaServer
(2)MediaRenderer,推荐:开心视频(KXPlayer),MediaRender
(3) Control Point,一般集成在MediaServer软件中了,推荐:BubbleUPnP,魔力视频,开心视频(KXPlayer)

(1) 基于CyberGarage库的dlna开发(Android)- https://github.com/geniusgithub/MediaPlayer
(2) 基于Platinum库 PlatinumKit 的DMS实现(Android)-https://github.com/geniusgithub/MediaServer
(3) 基于Platinum库的DMR实现(Android)-https://github.com/geniusgithub/MediaRender

 

> 传感器, 传感器在游戏中运用??
Android传感器- http://blog.youkuaiyun.com/q4878802/article/category/5777997
Android 传感器开发 完全解析- http://blog.youkuaiyun.com/smartbetter/article/details/53161452
Android 传感器(4):陀螺仪、加速传感器- http://blog.youkuaiyun.com/flowingflying/article/details/42557265
Pro Android学习:传感器 - http://download.youkuaiyun.com/detail/flowingflying/8428273

-- 众多传感器(sensor)之一陀螺仪
 陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出实际方向。手机里陀螺仪实际上是一个结构非常精密的芯片,内部包含超微小的陀螺。
 因为手机运动的加速度不高,精确度也没有太大的要求,用加速计替代陀螺仪也可以。但如果做一些精度比较高的游戏的话,最好还是有陀螺仪。
 陀螺仪的XYZ分别代表设备围绕XYZ三个轴旋转的角速度:radians/second。至于XYZ使用的坐标系与gsensor相同。逆时针方向旋转时,XYZ的值是正的。
 陀螺仪(gyroscope Sersor)的定义,是指在上述定义的x y x三个方向的转速,单位是radians/second,正负遵循右手规则。陀螺仪(Gyroscope sensor)测量设备转动的角速度。

-- Android平台支持三大类传感器:动作(Motion)传感器、环境(Environmental)传感器、位置(Position)传感器。
1.运动传感器,这类传感器测量沿着三个轴向的加速度和角加速度(旋转力),这类传感器包括加速度计、重力传感器、陀螺仪、旋转向量传感器、位置(Position)传感器。
2.环境传感器,这类传感器测量各种环境参数,如环境空气温度、气压、照明、潮湿度等。此类别包括气压计,光度计,温度计,湿度(barometer)传感器、光线(photometer)传感器、温度(thermometer)传感器
3.位置传感器,位置传感器测量设备的物理位置,包括方向传感器和磁力计,方向(orientation)传感器、磁力(magnetometer)传感器

Sensor所提供的所有服务:SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);  
int TYPE_ALL,A constant describing all sensor types. //用于列出所有感应器
int TYPE_ACCELEROMETER,A constant describing an accelerometer sensor type. //三轴加速度感应器 返回三个坐标轴的加速度  单位m/s2
int TYPE_GRAVITY,A constant describing a gravity sensor type. //重力感应器
int TYPE_GYROSCOPE,A constant describing a gyroscope sensor type //陀螺仪 可判断方向 返回三个坐标轴上的角度
int TYPE_LIGHT,A constant describing an light sensor type. //光线感应器 单位 lux 勒克斯
int TYPE_LINEAR_ACCELERATION,A constant describing a linear acceleration sensor type. //线性加速度
int TYPE_MAGNETIC_FIELD,A constant describing a magnetic field sensor type. //磁场感应 返回三个坐标轴的数值  微特斯拉
int TYPE_ORIENTATION,This constant is deprecated. use SensorManager.getOrientation() instead. //方向感应器 已过时 可以使用方法获得
int TYPE_PRESSURE,A constant describing a pressure sensor type。//压力感应器  单位 千帕斯卡
int TYPE_PROXIMITY,A constant describing an proximity sensor type. //距离传感器
int TYPE_ROTATION_VECTOR,A constant describing a rotation vector sensor type. //翻转传感器
int TYPE_TEMPERATURE,A constant describing a temperature sensor type。 //温度传感器 单位 摄氏度

横竖屏旋转的一个参数:SCREEN_ORIENTATION_PORTRAIT,SCREEN_ORIENTATION_REVERSE_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);会正常旋转。
 一般情况下,加速度计已足够应付对设备移动情况的监测。几乎所有 Android 平台的手持和桌面终端都带有加速度计,它的能耗比其它运动传感器要少10倍。 不过它有一个缺点,就是你不得不实现低通和高通滤波器,以消除重力影响并减少噪声数据。
 ANdroid SDK加速度传感器的使用方法demo- http://developer.android.com/resources/samples/AccelerometerPlay/index.html

> NFC近场通信 
高级的NFC专题,如多样的NFC标签技术、编写NFC标签、以及前台调度,前台调度允许在前台的应用程序优先调度Intent事件,即使还有其他的过滤同样的Intent事件的应用程序存在。
NFC demo- https://github.com/sadaharusong/AutoNFC/
Android之NFC- http://blog.youkuaiyun.com/bear_huangzhen/article/details/46333421
Android NFC技术(NdefMessage和NdefRecord)- http://blog.youkuaiyun.com/qq_26787115/article/details/50831582
通过NFC自动启动Android应用程序 - https://github.com/sadaharusong/AutoNFC/

> 串口通信
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。串口通信采用一个第三方开源项目,实现串口数据收发。
使用了http://code.google.com/p/android-serialport-api/的项目的serialport api和jni;
关于串口通信,Google已经给出了源码- https://github.com/cepr/android-serialport-api
Android串口通信- http://blog.youkuaiyun.com/q4878802/article/details/52996548
Android串口通信:串口读写- http://blog.youkuaiyun.com/burly/article/details/50512379
Android串口通信- http://blog.youkuaiyun.com/q4878802/article/details/52996548
Android串口开发- https://github.com/HuRuWo/SerialPortHelper

> 滤波器的实现 ,巴特沃斯滤波器
重力加速计低通滤波算法— http://blog.youkuaiyun.com/yangz_xx/article/details/24784619
public void onSensorChanged(SensorEvent event)  {  
         // alpha 由 t / (t + dT)得到  
         // t为滤波器时间常量,为传感器单次采样时间  
         // dT为采样频率  
  
         final float alpha = 0.8;  
  
         gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];  
         gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];  
         gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];  
  
         linear_acceleration[0] = event.values[0] - gravity[0];  
         linear_acceleration[1] = event.values[1] - gravity[1];  
         linear_acceleration[2] = event.values[2] - gravity[2];  
}  

高通滤波算法,C++ 高通滤波器实现边缘增强- http://blog.youkuaiyun.com/u011731135/article/details/52541199
Kalman滤波器,卡尔曼滤波算法- http://blog.youkuaiyun.com/xiahouzuoxin/article/details/39582483

-- 十大滤波算法程序大全- http://www.yunti.io/forum.php?mod=viewthread&tid=401
1、限幅滤波法(又称程序判断滤波法)
2、中位值滤波法
3、算术平均滤波法
4、递推平均滤波法(又称滑动平均滤波法)
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
6、限幅平均滤波法
7、一阶滞后滤波法
8、加权递推平均滤波法
9、消抖滤波法
10、限幅消抖滤波法
11、新增加 卡尔曼滤波 ( 非扩展卡尔曼 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值