文章编号:779时间:2024-02-19人气:
在安卓系统开发中,掌握传感器与设备接口的关键技巧是非常重要的。传感器与设备接口可以让应用程序获取设备的各种传感器数据,比如加速度计、陀螺仪、磁力计等,从而实现更丰富的功能和交互体验。
了解不同传感器的类型和功能是非常必要的。在安卓系统中,常见的传感器包括加速度传感器、陀螺仪、磁力传感器、光线传感器、压力传感器等。每种传感器都有其特定的作用和应用场景,开发者需要根据具体需求选择合适的传感器来获取数据。
熟悉传感器数据的获取和处理方法也是至关重要的。安卓系统提供了相应的API来获取传感器数据,开发者可以通过注册传感器监听器来实时获取传感器数据,并在回调方法中处理这些数据。同时,开发者还可以通过传感器事件来实现特定功能,比如实现摇一摇切换界面、倾斜手机控制游戏等。
理解传感器与设备接口的工作原理也是必不可少的。传感器通过与设备的接口进行通信,将获取的数据传输给应用程序。开发者需要了解传感器与设备的通信协议、数据格式以及传输方式,以确保数据的准确性和稳定性。
优化传感器数据的处理和利用也是提升应用性能的关键。开发者可以通过合理的数据处理算法和优化方案,提高数据的精确度和实时性,从而提升用户体验。同时,需要注意避免频繁获取传感器数据和过度消耗设备资源,以兼顾应用性能和设备耗电量。
最后,持续学习和实践是掌握传感器与设备接口技巧的有效途径。随着技术的不断发展,新的传感器和接口不断涌现,开发者需要保持学习的状态,不断探索新的技术和方法,以应对不断变化的开发需求。
掌握安卓系统开发中传感器与设备接口的关键技巧是提升应用功能和用户体验的重要手段。通过深入了解传感器类型、数据处理方法、工作原理以及优化技巧,开发者可以更好地应用传感器技术,为用户提供更加丰富和便捷的应用体验。
Android 是面向智能手机和其他便携式设备的最受欢迎的操作系统(OS)之一。 它为多种传感器提供了标准的API 接口,包括加速度计。 加速度计的标准API 定义了原始加速度数据的坐标系统。 用户必须将从传感器中读取的原始数据转换为标准单位,并使其符合系统定义的坐标方向。 本文介绍了Android 中的坐标系统是如何定义的,以及如何在Android 系统的驱动代码中对3 轴加速度计数据的方向和坐标进行转换。 本文讨论的示例代码基于飞思卡尔的Android 2.2 和2.3 驱动程序,加速度计则以飞思卡尔的MMA8452Q 加速度传感器为例。 关键词:加速度计,传感器驱动,Android一部智能手机或便携设备应具有Wi-Fi 和互联网功能,能够运行应用软件等诸多特征,而且一定会具有内置传感器。 高端智能手机可能集成接近传感器,环境光传感器,3 轴加速度计,以及磁力计等多种传感器。 Android 2.3 添加了一些支持多种新型传感器的API,包括陀螺仪、旋转向量、线性加速度、重力和气压传感器等。 应用软件可以使用这些新型传感器,将它们组合起来,就可以实现高精确度的高级运动检测功能。 3 轴加速度计或低g 值传感器是Android API 支持的传感器之一,具有特定的坐标系统,可以给应用程序提供标准的接口数据。 坐标空间的定义与手机屏幕的默认方向有关
第一个要点:首先要有良好的编程习惯要成为一名优秀的资源管理员;既要运用常识,还要使用公认的算法和标准的设计模式。 在资源使用方面,如果你打开了资源,要记得关闭资源。 要尽量晚地获取,尽量早地释放。 这些由来已久的编程准则同样适用于你的Android应用程序,如果它们使用底层的设备服务,更是如此。 比如说,假设你编写的一个应用程序依赖基于位置的服务。 除非你绝对有必要,否则不要开始注册、获取位置最新信息;而且要确保,一旦你不再需要这些信息,就要取消获取最新信息的注册。 这将帮助你避免不必要地耗费设备电池电量或占用系统资源。 第二个要点:让阻塞操作远离主用户界面线程想确保你的应用程序运行起来很灵活,就要使用AsyncTask、线程、IntentService或自定义后台服务来处理脏活。 应使用装入器来简化装入时间长的数据(如游标)的状态管理。 你无法容忍你的应用程序在某个操作正在处理的时候出现滞后或停顿。 如果某个操作很费时间和资源,就要卸载这部分操作、对它进行异步处理,那样你的应用程序仍保持响应迅即,用户可以处理他们的事务。 这个原则适用于下列操作:磁盘读写,访问内容提供方、数据库和互联网,以及解析和其他长时间的任务。 第三个要点:使用最新的Android软件开发工具包(SDK)版本、应用编程接口(API)和最佳实践确保你开发的应用程序是最新的,因而要使用Android平台提供的最新工具。 随着Android平台不断发展,它也在不断改进。 一些功能可能已被弃用,或者换成了更好的功能。 核心API得到了修正版(bug fix)和性能改进。 已经引入了装入器等新的API,帮助开发者编写出运行更稳定、响应更迅即的应用程序。 你知道可以启用Android3.0应用程序中的硬件加速功能吗赶紧启用吧!要明白最佳实践会随着时间的变化而变化。 明智的开发者密切关注Android平台的新功能、哪些功能不再被推荐。 第四个要点:考虑使用限制模式(Strict Mode)你可以使用名为限制模式(StrictMode)的AndroidAPI,帮助你查明哪里违反了几个良好的编程习惯。 StrictMode会帮助你确认你的应用程序是不是存在内存泄漏,并且检测你的应用程序是不是在试图执行长时间的阻塞操作,这些操作应该被卸载到线程或别的渠道(参阅第二个要点)。 Android2.3里面引入StrictMode类()。 第五个要点:在发布应用程序之前,禁用或尽量少用调试和诊断如果你的Android应用程序开发起来需要一些时间,你可能已将一些日志和调试代码嵌入到了应用程序中。 写入到日志及其他此类输出系统给性能带来了影响。 确保在发布应用程序之前,尽量少用或完全禁用这些功能。 现在不妨说说如何运用良好的用户界面设计原则,让你应用程序的屏幕更快速地装入:第六个要点:确保你设计的布局简单、简练和浅层简单的屏幕有助于阅读起来最轻松,而简单的布局装入起来最快速。 你不应该过于深层地嵌套你的布局,或者用不必要的过多视图(View)控件塞满屏幕。 花些时间来开发用户可以高效使用的简练用户界面,而不是试图把太多功能塞入到单单一个屏幕上。 这不但有助于提升应用程序的性能,还有助于让你的应用程序对用户来说更高效。 有助于在不影响灵活地针对不同类型的设备进行设计的情况下,划分用户界面功能。 第七个要点:让你应用程序的资源适合目标设备添加适合特定设备配置的资源,那样它们就能尽可能高效地装入。 我们在谈论图形资源时,这点尤为重要。 如果你添加了可利用的庞大图像资源,需要装入和调整大小,就无法有效地使用其他的应用程序资源。 另一个要点就是,如果你准备你的应用程序可以在许多设备上运行,为了让应用程序软件包文件保持合理的大小,应该最初只添加运行应用程序所需要的核心资源,然后让应用程序下载适合该设备的内容。 第八个要点:使用Hierarchy Viewer工具Hierarchy Viewer工具可以帮助你调试你的应用程序布局。 它还提供了宝贵的分析信息,以便了解布局里面的每一个视图控件测量、渲染和绘制要花多少时间。 只有准确找到了问题的根源,问题解决起来才容易。 第九个要点:使用layoutopt工具Layoutopt工具是一款简单的命令行工具,它可以帮助你找到不必要的控件嵌套以及缩减布局资源的其他方法,以便尽量减少资源的使用。 它让你可以了解哪些布局控件可能是多余的或不必要的。 控件越少、布局层次越浅,性能就越好。 最后,你认为你的应用程序做到了最好吗现在该对它测试一下了。 第十个要点:使用Traceview及其他Android工具进行分析Android SDK随带了许多工具,可用来对你的应用程序进行分析。 其中最流行的工具恐怕莫过于Traceview,这款图形化工具可以帮助你调试和找到应用程序中的性能瓶颈。 不妨看看Android说明文档中介绍的一些调试工具。
1 加速度传感器加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。 该数值包含地心引力的影响,单位是m/s^2。 将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。 将手机朝下放在桌面上,z轴为-9.81。 将手机向左倾斜,x轴为正值。 将手机向右倾斜,x轴为负值。 将手机向上倾斜,y轴为负值。 将手机向下倾斜,y轴为正值。 加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。 手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。 这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。 2 磁力传感器磁力传感器简称为M-sensor,返回x、y、z三轴的环境磁场数据。 该数值的单位是微特斯拉(micro-Tesla),用uT表示。 单位也可以是高斯(Gauss),1Tesla=Gauss。 硬件上一般没有独立的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。 电子罗盘传感器同时提供下文的方向传感器数据。 3 方向传感器方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。 为了得到精确的角度数据,E-compass需要获取G-sensor的数据,经过计算生产O-sensor数据,否则只能获取水平方向的角度。 方向传感器提供三个数据,分别为azimuth、pitch和roll。 azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。 0°=北,90°=东,180°=南,270°=西。 pitch:x轴和水平面的夹角,范围为-180°至180°。 当z轴向y轴转动时,角度为正值。 roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。 当x轴向z轴移动时,角度为正值。 电子罗盘在获取正确的数据前需要进行校准,通常可用8字校准法。 8字校准法要求用户使用需要校准的设备在空中做8字晃动,原则上尽量多的让设备法线方向指向空间的所有8个象限。 手机中使用的电子罗盘芯片有AKM公司的897X系列,ST公司的LSM系列以及雅马哈公司等等。 由于需要读取G-sensor数据并计算出M-sensor和O-sensor数据,因此厂商一般会提供一个后台daemon来完成工作,电子罗盘算法一般是公司私有产权。 4 陀螺仪传感器陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。 角加速度的单位是radians/second。 根据Nexus S手机实测:水平逆时针旋转,Z轴为正。 水平逆时针旋转,z轴为负。 向左旋转,y轴为负。 向右旋转,y轴为正。 向上旋转,x轴为负。 向下旋转,x轴为正。 ST的L3G系列的陀螺仪传感器比较流行,iphone4和google的nexus s中使用该种传感器。 5 光线感应传感器光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。 光线感应传感器主要用于Android系统的LCD自动亮度功能。 可以根据采样到的光强数值实时调整LCD的亮度。 6 压力传感器压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。 7 温度传感器温度传感器返回当前的温度。 8 接近传感器接近传感器检测物体与手机的距离,单位是厘米。 一些接近传感器只能返回远和近两个状态,因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。 接近传感器可用于接听电话时自动关闭LCD屏幕以节省电量。 一些芯片集成了接近传感器和光线传感器两者功能。 下面三个传感器是Android2新提出的传感器类型,目前还不太清楚有哪些应用程序使用。 9 重力传感器重力传感器简称GV-sensor,输出重力数据。 在地球上,重力数值为9.8,单位是m/s^2。 坐标系统与加速度传感器相同。 当设备复位时,重力传感器的输出与加速度传感器相同。 10 线性加速度传感器线性加速度传感器简称LA-sensor。 线性加速度传感器是加速度传感器减去重力影响获取的数据。 单位是m/s^2,坐标系统与加速度传感器相同。 加速度传感器、重力传感器和线性加速度传感器的计算公式如下:加速度 = 重力 + 线性加速度11 旋转矢量传感器旋转矢量传感器简称RV-sensor。 旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。 RV-sensor输出三个数据:x*sin(theta/2)y*sin(theta/2)z*sin(theta/2)sin(theta/2)是RV的数量级。 RV的方向与轴旋转的方向相同。 RV的三个数值,与cos(theta/2)组成一个四元组。 RV的数据没有单位,使用的坐标系与加速度相同。
一部智能手机或便携设备应具有Wi-Fi 和互联网功能,能够运行应用软件等诸多特征,而且一定会具有内置传感器。高端智能手机可能集成接近传感器,环境光传感器,3 轴加速度计,以及磁力计等多种传感器。 Android 2.3 添加了一些支持多种新型传感器的API,包括陀螺仪、旋转向量、线性加速度、重力和气压传感器等。应用软件可以使用这些新型传感器,将它们组合起来,就可以实现高精确度的高级运动检测功能。3 轴加速度计或低g 值传感器是Android API 支持的传感器之一,具有特定的坐标系统,可以给应用程序提供标准的接口数据。坐标空间的定义与手机屏幕的默认方向有关,如图1所示。
图 1. 3 轴加速度计的Android 坐标系统
在Android 坐标系统中,坐标原点位于屏幕的左下角,X 轴水平指向右侧,Y 轴垂直指向顶部,Z 轴指向屏幕前方。在该系统中,屏幕后方的坐标具有负的Z 轴值。Android 加速度计数据定义为_ACCELEROMETER 所有数值都采用SI 标准单位(m/s2),测量手机的加速度值,并减去重力加速度分量。 values[0]:x 轴上的加速度值减去Gx values[1]:y 轴上的加速度值减去Gy values[2]:z 轴上的加速度值减去Gz 例如,当设备平放在桌上并推着其左侧向右移动时,x 轴加速度值为正。当设备平放在桌上时,加速度值为+9.81,这是用设备的加速度值 (0 m/s2) 减去重力加速度值 (-9.81 m/s2)得到的。 当设备平放在桌上放,并以加速度A m/s2 朝天空的方向推动时,加速度值等于A+9.81,这是用设备加速度值(+A m/s2)减去重力加速度值(-9.81 m/s2)得到的。 表 1 列出了与设备的各个位置相对应的传感器的加速度值读数。用户可以用下表检查加速度计的方向与系统坐标是否一致。
通过加速度传感器读取3 轴加速度值时,需要假设传感器的3 轴方向与系统坐标是一致的。但是在实际的产品中,可能会使用不同的传感器芯片,或者采用不同的安装方向,因此数据方向也会不同。图2 所示的是飞思卡尔MMA8452Q 3 轴加速度传感器的方向定义。
在图 2 中,我们可以看到当安装芯片时,必须让引脚1 处于右下角的位置(PD),并安装在PCB 的前方,这样才能与Android 坐标系统的默认位置相符。这样安装后,用户可确定数据方向与系统坐标定义是一致的。在任何其他情形下,数据都无法与系统定义保持完全一致,所以需要更改数据方向和坐标。在某些情况下,X 和Y 轴必须交换,或者既要改变方向,也要交换X-Y 轴。判断是否需要改变方向或交换X-Y 轴的方法如下所述: 1. 将设备放置在朝上(UP)的位置,如表1 中所示。 2. 从传感器中读取3 轴的数据。如果Y 轴上的数据为 ±1 g (±9.81m/s2),其他两个轴上的数据大约为0,则不需要交换X-Y 轴。否则,需要交换X 和Y 轴,请转至步骤3。 2.1. 在该位置上,如果Y 轴上读取的数据为+1 g (+9.81m/s2),则Y 轴的方向不需要改变,如果数据为负,则Y 轴的方向需要改变。 2.2. 将设备放置在朝左(LEFT)的位置,如表1 中所示。X 轴上读取的数据应为±1g (±9.81m/s2),其他两个轴上的数据应大约为0。如果X 轴上的数据为正,则其方向不需要改变;否则X 轴的方向需要改变。然后,执行第4 步判断Z 轴的方向。 3. 设备仍然放置在朝上(UP)的位置,并从传感器中读取3 个轴的数据。此时X 轴上的数据应为 ±1 g (±9.81m/s2),其他两个轴上的数据大约为0,需要X-Y 交换。 3.1. 在该位置上,如果X 轴的数据读取为+1 g (+9.81m/s2),则X 轴的方向不需要改变;否则需要改变。 3.2. 将设备放置在向左(LEFT)位置上,如表1 中所示。Y 轴上读取的数据应为±1g (±9.81m/s2),其他两个轴上的数据应大约为0。如果Y 轴上的数据为正,则其方向不需要改变;否则需要改变。然后执行第4 步判断Z 轴的方向。 4. 将设备放置在正面朝上(FRONT-UP)的位置,并从传感器中读取3 轴数据。如果 Z轴上的数据为+1 g (+9.81m/s2),其他两个轴上的数据大约为0,则Z 轴方向无需改变;如果Z 轴数据为-1 g (-9.81m/s2),则Z 轴方向需要改变。 在 Android 系统中,传感器数据由内核空间中的Linux 驱动读取,然后由HAL 层驱动发送至API。分层结构如图3 所示。因此,传感器数据可以在Linux 驱动层或在HAL 层上进行转换。
在 Android HAL 文件中改变 X、Y 和Z 轴的方向在 HAL 文件中,会有一组宏定义,用于把从传感器中读取的加速度数据转换为标准单位(m/s2)。如以下代码: // conversion of acceleration data to SI units (m/s^2) #define CONVERT_A (GRAVITY_EARTH / LSG) #define CONVERT_A_X (-CONVERT_A) #define CONVERT_A_Y (CONVERT_A) #define CONVERT_A_Z (CONVERT_A) 在这个宏定义中,常量GRAVITY_EARTH 是一个标准重力加速度值,即9.81m/s2,LSG为一个重力加速度值的最小有效计数值,例如,MMA8452 在正常模式下的读数为1024。因此,CONVERT_A 用于把从加速度传感器中读取的数据,从数字读数转换为标准重力加速度单位。 通过分别修改CONVERT_A_X、CONVERT_A_Y 和CONVERT_A_Z,我们可以轻松地改变X、Y 和Z 轴的方向。如果该轴的方向与系统定义相反,可以使用(-CONVERT_A)来改变其方向。如果方向一致,就使用(CONVERT_A),则保持方向不变。 这个宏定义位于FSL Android 9 (Android 2.2)驱动程序的HAL文件sensor.c 中。对于FSLAndroid 10 (Android 2.3),您可以在’libsensors’文件夹的HAL 文件Sensor.h 中找到它。 在 Android 2.2 HAL 文件中交换X 轴和Y 轴 在某些情况下,X 和Y 轴必须进行交换,以便使传感器数据的坐标与系统坐标保持一致。 对于 FSL Android 9 (Android 2.2)驱动程序来说,X 轴和Y 轴的交换非常简单。首先,在HAL 文件sensor.c 中,在函数sensor_poll() 中找到以下代码: switch () { case ABS_X: .x = * CONVERT_A_X; break; case ABS_Y: .y = * CONVERT_A_Y; break; case ABS_Z: .z = * CONVERT_A_Z; break; } 然后,根据如下所示修改代码: switch () { case ABS_X: .y = * CONVERT_A_Y; break; case ABS_Y: .x = * CONVERT_A_X; break; case ABS_Z: .z = * CONVERT_A_Z; break; } 在 Android 2.3 的HAL 文件中交换X 轴和Y 轴 在 Android 2.3 的HAL 文件中交换X 轴和Y 轴会更加复杂些,因为它具有更复杂的HAL文件结构。所有HAL 文件都位于文件夹‘libsensors’中。文件 中的两个函数需要修改。 首先,修改函数AccelSensor()的代码,如下所示: if (accel_is_sensor_enabled(SENSOR_TYPE_ACCELEROMETER)) { mEnabled |= 1<
手机上的传感器与主要作用
手机上的传感器与主要作用,智能手机给我们带来了极大的便利,而外现在的手机已经不再是一个简单的通信工具,手机技术的发展速度快得令人难以想象,以下分享手机上的传感器与主要作用?
描述
1、光线传感器(Ambient Light Sensor)
光线传感器类似于手机的眼睛。人类的眼睛能在不同光线的环境下,调整进入眼睛的光线,例如进入电影院,瞳孔会放大来让更多光线进入眼睛。而光线传感器则可以让手机感测环境光线的强度,用来调节手机屏幕的亮度。而因为屏幕通常是手机最耗电的部分
因此运用光线传感器来协助调整屏幕亮度,能进一步达到延长电池寿命的作用。光线传感器也可搭配其他传感器一同来侦测手机是否被放置在口袋中,以防止误触。
2、距离传感器(proximity sensor)
透过红外线 LED 灯发射红外线,被物体反射后由红外线探测器接受,藉此判断接收到红外线的强度来判断距离,有效距离大约在 10 米左右。它可感知手机是否被贴在耳朵上讲电话,若是则会关闭屏幕来省电;距离传感器也可以运用在部分手机支持的手套模式中,用来解锁或锁定手机。
iPhone 4/4s 与 iPhone 5/5s 的距离传感器与光传感器位置
3、重力传感器(G-Sensor)
透过压电效应来实现。重力传感器内部有一块重物与压电片整合在一起,透过正交两个方向产生的电压大小,来计算出水平的方向。运用在手机中时,可用来切换横屏与直屏方向,运用在赛车游戏中时,则可透过水平方向的感应,将数据运用在游戏里,来转动行车方向。
4、加速度传感器(Accelerometer Sensor)
作用原理与重力传感器相同,但透过三个维度来确定加速度方向,功耗小但精度低。运用在手机中可用来计步、判断手机朝向的方向。
5、磁(场)传感器(Magnetism Sensor)
测量电阻变化来确定磁场强度,使用时需要摇晃手机才能准确判断,大多运用在指南针、地图导航当中。
6、陀螺仪(Gyroscope)
陀螺仪能够测量沿一个轴或几个轴动作的角速度,是补充 MEMS 加速度计(加速度传感器)功能的理想技术。事实上,如果结合加速度计和陀螺仪这两种传感器
系统设计人员可以跟踪并捕捉 3D 空间的完整动作,为终端用户提供更真实的用户体验、精确的导航系统及其他功能。手机中的「摇一摇」功能(例如摇动手机就能抽签…)、体感技术,还有 VR 视角的调整与侦测,都是运用到陀螺仪的作用。
地球上方特定轨道上运行着 24 颗 GPS 卫星,它们会不停的向全世界各地广播自己的位置坐标与时间戳(timestamp,指格林威治 奔 1970 年 01 月 01 日 00 00 分 00 秒到现在为止的总秒数),手机中的 GPS 模块透过卫星的瞬间位置来起算,以卫星发射坐标的时间戳与接收时的时间差来计算出手机与卫星之间的距离。可运用在定位、测速、测量距离与导航等用途。
8、指纹传感器
目前主流的技术是电容式指纹传感器,然而超音波指纹传感器也有逐渐流行起来趋势。电容式指纹传感器作用时,手指是电容的一极、另一极则是硅芯片数组,透过人体带有的微电场与电容传感器之间产生的微电流,指纹的波峰波谷与传感器之间的距离形成电容高低差,来描绘出指纹的图形。
而超音波指纹传感器原理也类似,但不会受到汗水、油污的干扰,辨识速度也更为快速。运用在手机中可用来解锁、加密、支付等等。
9、霍尔传感器(Hall Sensor)
作用原理是霍尔磁电效应,当电流通过一个位于磁场中的导体时,磁场会对导体中的电子产生一个垂直于电子运动方向上的的作用力,从而在导体的两端产生电势差。主要运用在翻盖解锁、合盖锁定屏幕等功能当中,苹果的 Smart cover 还有多个品牌的官方手机配件,都运用了这项技术。
10、气压传感器(气压计,barometer)
将薄膜与变组器或电容连接在一起,当气压产生变化时,会导致电阻或电容数值发生变化,藉此量测气压的数据。GPS 也可用来量测海拔高度但会有 10 米左右的误差,若是搭载气压传感器,则可以将误差校正到 1 米左右;也可用来辅助 GPS 定位,来确认所在楼层位置等信息。苹果的 iPhone 6/6s 系列都搭载了气压传感器。
1、地磁传感器
智能手机指南针功能是利用地磁场与手机内置地磁传感器,来实现地理方向定位的,指南针指针方向有变化,说明地磁场与手机内置传达室感器已起作用,只是方向相反,此情况有可能受外界强磁场干扰所致,比如某个位置有强磁场,或其它其它外界因素与地磁场相反,就可能导致受此磁场影响。登山时候可以更换一个位置或者手机平放按8字形移动,以校准指南针。
2、陀螺仪
原理:角动量守恒,一个正在高速旋转的物体(陀螺),它的旋转轴没有受到外力影响时,旋转轴的指向是不会有任何改变的。陀螺仪就是以这个原理作为依据,用它来保持一定的方向。三轴陀螺仪可以替代三个单轴陀螺仪,可同时测定6个方向的位置、移动轨迹及加速度。
用途:体感、摇一摇(晃动手机实现一些功能)、平移/转动/移动手机可在游戏中控制视角、VR虚拟现实、在GPS没有信号时(如隧道中)根据物体运动状态实现惯性导航。
3、光传感器
原理:光敏三极管,接受外界光线时,会产生强弱不等的电流,从而感知环境光亮度。
用途:通常用于调节屏幕自动背光的亮度,白天提高屏幕亮度,夜晚降低屏幕亮度,使得屏幕看得更清楚,并且不刺眼。也可用于拍照时自动白平衡。还可以配合下面的距离传感器检测手机是否在口袋里防止误触。
4、距离传感器
原理:红外LED灯发射红外线,被近距离物体反射后,红外探测器通过接收到红外线的强度,测定距离,一般有效距离在10cm内。距离传感器同时拥有发射和接收装置,一般体积较大。
用途:检测手机是否贴在耳朵上正在打电话,以便自动熄灭屏幕达到省电的目的。也可用于皮套、口袋模式下自动实现解锁与锁屏动作。
5、重力传感器
原理:利用压电效应实现,传感器内部一块重物和压电片整合在一起,通过正交两个方向产生的电压大小,来计算出水平方向。
用途:手机横竖屏智能切换、拍照照片朝向、重力感应类游戏(如滚钢珠)。
6、加速度传感器
原理:与重力传感器相同,也是压电效应,通过三个维度确定加速度方向,但功耗更小,但精度低。
用途:计步、手机摆放位置朝向角度。
7、磁场传感器
原理:各向异性磁致电阻材料,感受到微弱的磁场变化时会导致自身电阻产生变化,所以手机要旋转或晃动几下才能准确指示方向。
手机传感器有哪些?
GPS,有GPS卫星在地球上空的特定轨道上运行,它们会不断地向世界各地广播它们的位置坐标和时间戳。接收时的时间差用于计算手机与卫星之间的距离。可用于定位、测速、测距和导航。
气压传感器
在智能手机中,气压传感器并不太常见,只有高端手机才有。气压传感器测量大气压力。 通过气压传感器,我们可以知道设备所处的高度,从而提高GPS精度。
光传感器
几年前,光传感器还没有现在流行。得益于中国智能手机制造商的努力,光传感器现在开始出现在廉价手机中。光传感器可以检测环境光。当您打开自动调光时,智能手机操作系统不会使用光传感器收集的数据来确定最佳屏幕亮度。
加速度传感器
加速度传感器测量手机相对于自由落体的加速度。当手机在任何方向上发生任何物理移动时,传感器数据都会上升,如果手机静止,传感器数据就会变平。加速度计还根据三轴坐标确定设备的方向。该应用程序使用加速度计数据来确定手机是处于纵向还是横向模式。
陀螺仪
加速度计可以提供方向信息,但陀螺仪在测量方向时更准确。 陀螺仪可以告诉您设备旋转了多少度以及向哪个方向旋转。如果设备没有陀螺仪传感器,就无法观看360度视频,也无法享受VR体验。
磁传感器
顾名思义,磁传感器用于检测磁场。 是的,智能手机可以检测磁场。磁传感器和陀螺仪都是非常常见的传感器,大多数安卓智能手机都配备了磁传感器。指南针应用程序使用磁传感器来指示地球的北极、地图导航,一些应用程序使用磁传感器来检测金属。
温度感应器
内置温度计测量环境温度,几乎每部手机都安装了温度传感器。不同之处在于,其他手机使用温度传感器来测量设备内部的温度,而不是外部温度。当温度数据过高时,系统会关闭设备,防止损坏设备。如果设备的摄像头长时间操作,设备的温度会显着升高。
距离传感器
接近传感器对于任何智能手机都非常重要。几乎所有智能手机都安装了接近传感器。 通常传感器靠近耳机。 接近传感器由红外LED和红外光探测器组成。传感器发射红外光,撞击目标或表面并返回以被光电探测器拾取。因为光速是已知的,传感器可以计算物体、表面和设备的距离。当您拨打电话时,系统会根据测量数据来判断、关闭屏幕或确定手机是否在您的口袋里。
薄膜传感器
计步器
计步器在智能手机中并不常见,实际上相当罕见。计步器是一种传感器,用于计算用户已采取的步数。大多数智能手机使用加速度计来测量步数,但计步器是专业的计步工具,更准确。
指纹传感器
指纹传感器变得越来越流行,几乎在每部智能手机中都能找到。无论是廉价手机还是高端手机,指纹传感器都是必须的。一般来说,指纹传感器用于安全,也可以代替锁屏密码和图案密码。
霍尔传感器
作用原理是霍尔磁电效应,当电流通过位于磁场中的导体时,磁场会对导体中的电子产生垂直于电子运动方向的力,从而在导体两端产生电位差。主要应用为手机壳翻盖解锁,合上时锁屏。
心率血氧传感器
血液中的血红蛋白和氧合血红蛋白对红光的吸收比例不同。同时用红外光和红色LED照射手指,测量反射光的吸收光谱,测量血液中的氧含量。通过高亮度LED灯照射手指返回的光的亮度会因血压从心脏到毛细血管的变化而呈现出周期性的强度变化,可以测量心率。 可用于运动健康数据收集的应用程序。
重力传感器(运动传感器)
重力感应体现在手机横竖屏智能切换、照片方位、重力感应游戏(如滚钢球)等方面。 原理:通过压电效应实现,将传感器内部的重物和压电片集成在一起,水平方向通过两个正交方向产生的电压大小来计算。
基 础 篇第1章 Android开发起步 19本章将要介绍的是Android开发起步的相关知识,首先对Android平台进行简单的介绍,其中包括Android的背景及其应用程序的框架。 然后会向读者讲解如何搭建Android的开发环境、如何在Eclipse中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。 1.1 Android平台简介 191.1.1 Android背景介绍 191.1.2 Android平台架构 201.2 Android开发环境的搭建 221.2.1 相关软件的下载与安装 221.2.2 虚拟设备的创建和使用 251.2.3 创建“Hello Android” 271.2.4 Android应用程序的调试 281.3 小结 31第2章 Android应用程序的构成 32本章主要对Android的基本组件及Android应用程序的构成进行介绍,同时还将对Android应用程序的生命周期进行分析,主要目的是让读者了解Android应用程序的构成,掌握Android基本组件的特性及使用方法。 2.1 Android应用程序的解析 322.1.1 目录结构 322.1.2 资源的管理与使用 332.1.3 简介 362.1.4 应用程序的权限 372.2 Android基本组件的介绍 382.2.1 应用程序的生命周期 382.2.2 Activity简介 392.2.3 Service简介 412.2.4 BroadcastReceiver简介 442.2.5 ContentProvider简介 452.2.6 Intent和IntentFilter简介 462.3 小结 50第3章 Android布局管理器 51本章要介绍的内容为Android平台下的布局管理器。 Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。 下面将分别对每个布局管理器进行详细的介绍。 3.1 控件类概述 513.1.1 View类简介 513.1.2 ViewGroup类简介 523.2 线性布局 523.2.1 LinearLayout类简介 523.2.2 线性布局案例 533.3 表格布局 553.3.1 TableLayout类简介 553.3.2 表格布局案例 563.4 相对布局 603.4.1 RelativeLayout类简介 603.4.2 相对布局案例 613.5 帧布局 633.5.1 FrameLayout类简介 633.5.2 帧布局案例 633.6 绝对布局 653.6.1 AbsoluteLayout类简介 653.6.2 绝对布局案例 663.7 小结 69第4章 Android常用基本控件 70本章将对进行用户界面开发时常用到的Android基本控件进行介绍,主要包括文本框、按钮、单选按钮和复选按钮、状态开关按钮和日期时间控件等。 了解这些基本控件的工作方式有助于学习后面要介绍的Android中的高级控件。 4.1 文本控件的介绍 704.1.1 TextView类简介 704.1.2 EditText类简介 714.1.3 文本框使用案例 714.2 按钮控件 754.2.1 Button类简介 754.2.2 ImageButton类简介 774.2.3 9Patch图片简介 794.2.4 9Patch图片使用案例 804.3 状态开关按钮 814.3.1 ToggleButton类简介 814.3.2 开关按钮的使用 824.4 单选按钮与复选按钮 844.4.1 CheckBox和RadioButton类简介 844.4.2 单选按钮和复选按钮使用案例 844.5 图片控件 874.5.1 ImageView类简介 874.5.2 图片查看器 884.6 时钟控件 914.6.1 AnalogClock和DigitalClock类简介 914.6.2 时钟控件使用案例 914.7 日期与时间选择控件 924.7.1 DatePicker类简介 924.7.2 TimePicker类简介 934.7.3 日期时间控件使用案例 934.8 动画播放技术 954.8.1 帧动画简介 954.8.2 帧动画使用案例 964.8.3 补间动画简介 984.8.4 补间动画使用案例 994.9 小结 101第5章 Android常用高级控件 102上一章已经介绍了Android中的一些基本控件,本章将继续上一章的思路,对Android中常用的高级控件逐一进行介绍。 5.1 自动完成文本框 1025.1.1 AutoCompleteTextView类简介 1025.1.2 自动完成文本使用案例 1025.2 滚动视图 1045.2.1 ScrollView类简介 1045.2.2 滚动视图使用案例 1045.3 列表视图 1055.3.1 ListView类简介 1055.3.2 列表视图使用案例 1055.4 网格视图 1085.4.1 GridView类简介 1085.4.2 网格视图使用案例 1095.5 滑块与进度条 1135.5.1 ProgressBar类简介 1135.5.2 SeekBar类简介 1135.5.3 滑块和进度条案例 1135.6 星级滑块 1155.6.1 RatingBar类简介 1155.6.2 星级滑块使用案例 1155.7 选项卡 1175.7.1 TabHost类简介 1175.7.2 选项卡使用案例 1175.8 画廊控件 1205.8.1 Gallery类简介 1205.8.2 画廊控件使用案例 1215.9 下拉列表控件 1225.9.1 Spinner类简介 1235.9.2 下拉列表使用案例 1235.10 小结 126第6章 菜单与对话框 127在前面的章节中介绍了Android平台下开发用户界面时常用的基本控件与高级控件,但在实际开发中只运用这些控件是不够的。 本章将介绍用户界面中菜单与对话框的开发,同时还会对Android平台下的Toast和Notification进行介绍。 6.1 菜单功能的开发 1276.1.1 选项菜单和子菜单简介 1276.1.2 选项菜单和子菜单使用案例 1296.1.3 上下文菜单 1346.2 对话框功能的开发 1376.2.1 对话框简介 1376.2.2 普通对话框 1386.2.3 列表对话框 1416.2.4 单选按钮对话框 1436.2.5 复选框对话框 1456.2.6 日期及时间选择对话框 1476.2.7 进度对话框 1516.3 消息提示 1536.3.1 Toast的使用 1536.3.2 Notification的使用 1556.4 小结 158第7章 Android事件处理模型 159本章将对Android平台用户界面的各种事件响应进行详细介绍,以加深读者对Android平台的事件处理模型的理解,熟练掌握控件的各种事件处理方法。 Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,接下来会分别对其进行介绍。 7.1 基于回调机制的事件处理 1597.1.1 onKeyDown方法简介 1597.1.2 onKeyUp方法简介 1617.1.3 onTouchEvent方法简介 1627.1.4 onTrackBallEvent方法简介 1647.1.5 onFocusChanged方法简介 1657.2 基于监听接口的事件处理 1677.2.1 Android的事件处理模型 1677.2.2 OnClickListener接口简介 1687.2.3 OnLongClickListener接口简介 1707.2.4 OnFocusChangeListener接口简介 1727.2.5 OnKeyListener接口简介 1767.2.6 OnTouchListener接口简介 1787.2.7 OnCreateContextMenuListener接口简介 1807.3 Handler消息传递机制 1817.3.1 Handler类简介 1817.3.2 Handler使用案例 1817.4 小结 184高 级 篇第8章 游戏与3D应用程序开发 185Android平台下的应用开发,一般来说主要分为商业应用和游戏两种,在开发商业应用时主要会用到本书前面章节曾介绍过的控件和菜单对话框等知识,而开发游戏时就只能自己定义各种控件和界面了。 本章将要介绍如何在Android平台下使用View和SurfaceView开发游戏,在本章的最后还将对Android平台下进行3D场景的开发进行简单的介绍。 8.1 自定义View的使用 1858.1.1 MyView类的开发 1858.1.2 MyThread类的开发 1888.1.3 Activity部分代码的开发 1898.2 SurfaceView的使用 1908.2.1 GameView类的开发 1918.2.2 BallGoThread类的开发 1958.2.3 TimeThread类的开发 1988.2.4 GameViewDrawThread类的开发 1988.2.5 Sample_8_2类的开发 1998.3 GLSurfaceView与3D 2008.3.1 OpenGL ES简介 2008.3.2 3D开发的基本知识 2018.3.3 第一个3D图形示例 2028.3.4 3D谷仓的开发 2068.4 小结 212第9章 消息广播与服务 213本章将对Android的消息广播机制及服务组件进行详细介绍。 在很多应用程序中,都会通过广播形式来发送和接收消息。 当应用程序接收到消息后,一般启动一个Activity或者一个Service进行处理。 本章将对之前介绍过的服务组件Service进行详细介绍,章末通过对一个单机版的音乐播放盒的介绍帮助读者掌握服务组件的使用方法。 9.1 BroadcastReceiver组件 2139.1.1 BroadcastReceiver类简介 2139.1.2 基于广播的案例 2149.2 Service组件 2169.2.1 Service类简介 2179.2.2 基于服务的案例 2179.3 单机版音乐盒的实现 2209.4 小结 228第10章 网络与数据处理 229本章要介绍的内容是Android平台下进行网络编程及数据处理的相关知识,内容包括网络通信的几种方式(如使用Socket、URL、Socket等)、如何使用WebView浏览网页,以及文件的上传和下载。 最后介绍访问手机存储卡的方法及如何在程序中使用SQLite数据库。 10.1 使用Socket进行通信 .1.1 Socket服务端的开发 .1.2 Socket客户端的开发 .2 通过URL和HTTP请求获取网络资源 .2.1 通过URL获取网络资源 .2.2 通过HTTP请求网络资源 .3 使用WebView进行网络开发 .3.1 使用WebView浏览网页 .3.2 使用WebView执行HTML代码 .4 SQLite数据库 .4.1 数据库的基本操作 .4.2 个人通讯录的实现之资源文件的组织和开发 .4.3 个人通讯录的实现之功能代码的开发 .5 访问存储卡 .5.1 获取存储卡容量 .5.2 读取存储卡信息 .6 小结 259第11章 手机通信功能开发 260本章将对Android手机通信功能的开发进行介绍,其中包括短信的收发及状态查询、电话的拨打与接听、来电的过滤和E-mail邮件的收发等,通过本章的学习,读者应该能够对Android平台手机通信功能有一定的了解。 11.1 短信控制 .1.1 短信的发送 .1.2 短消息提示 .1.3 短消息群发 .1.4 查询发送状态 .2 电话控制 .2.1 拨打电话 .2.2 过滤电话 .2.3 查询当前状态 .3 E-mail相关功能开发 .3.1 SMTP协议简介 .3.2 发送E-mail .4 小结 282第12章 手机特有Feature开发 283本章将要介绍的是Android手机特有Feature的开发,主要包括响应系统设置更改事件、设置手机外观和其他的特性。 同时还将介绍如何在程序中获取SIM卡和电池电量等信息,最后将以手机闹钟为例讲述如何自己开发特定功能的手机应用。 12.1 系统设置更改的事件 .1.1 Configuration类简介 .1.2 响应Configuration的变化 .2 手机外观更改和提醒设置 .2.1 手机壁纸的改变 .2.2 手机振动的设置 .2.3 音量调节 .3 TelephonyManager的使用 .3.1 TelephonyManager类简介 .3.2 TelephonyManager的使用案例 .4 手机电池电量 .4.1 原理概述 .4.2 电量提示案例 .5 手机闹钟 .5.1 AlarmManager简介 .5.2 开发闹钟应用 .6 小结 306第13章 桌面组件与多媒体数据采集 307本章将介绍Android中桌面组件及多媒体相关程序的开发,其中包括桌面快捷方式、实时文件夹、桌面控件、声音及图像的采集等。 13.1 桌面组件的介绍 .2 桌面快捷方式 .2.1 通过应用程序创建快捷方式 .2.2 向Launcher添加快捷方式 .3 实时文件夹 .3.1 创建Activity .3.2 创建ContentProvider .4 桌面控件 .4.1 桌面控件概述 .4.2 开发简单的桌面控件 .5 多媒体数据采集 .5.1 录音 .5.2 图像采集 .6 小结 323第14章 传感器应用的开发 324Android系统的一大亮点之一就是对传感器的应用,利用传感器可以开发出很多新奇有趣的程序,小到水平仪、计步器,大到传感器游戏,本章将详细介绍各种传感器的原理及使用方法,并通过一个水平仪的开发向读者介绍传感器应用的开发方法,以及如何在模拟器中模拟各种传感器。 14.1 Android平台下传感器简介 .1.1 加速度传感器Accelerometer .1.2 姿态传感器Orientation .1.3 磁场传感器Magnetic Field .1.4 温度传感器Temperature .1.5 光传感器Light .2 传感器应用案例 .2.1 开发前的准备工作 .2.2 自定义View的开发 .2.3 开发主逻辑代码 .2.4 运行与调试 .3 小结 342第15章 Google服务 343本章将介绍如何在Android平台下开发基于Google服务的应用程序。 Google提供了诸如GPS定位、Google Map、天气预报、网络相册和在线翻译等多种服务,将这些服务融合到应用程序中将会带来非常好的用户体验。 15.1 使用GPS获取位置 .1.1 LocationManager及相关类简介 .1.2 获取位置信息案例 .2 Google Map的使用 .2.1 获取Map API Key .2.2 创建模拟器 .2.3 Google Map地图查询应用 .2.4 Google Map导航应用 .3 天气预报 .3.1 使用SAX解析XML .3.2 使用Google API获取天气信息 .4 口袋词典 .4.1 Google Translate API简介 .4.2 口袋词典的实现 .5 Google街景 .5.1 Android整合Google街景服务的原理 .5.2 在程序中调用Google街景 .6 小结 372案 例 篇第16章 Android游戏开发实践——快乐数独 373益智类游戏是一种比较流行的游戏,其画面大都比较简单,很少有很复杂的游戏特效,但是通常用到人工智能的算法来控制游戏的难度。 而算法的优化是开发该类游戏的难点。 这类游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将、扫雷、五子棋、扑克牌等。 数独就是益智游戏的一种,玩法简单但数字的排列方式千变万化,很多人认为数独是训练头脑的绝佳方式。 本章通过讲解数独游戏在Android平台上的设计与实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的开发。 16.1 游戏的背景及功能概述 .1.1 背景概述 .1.2 功能简介 .2 游戏的策划及准备工作 .2.1 游戏的策划 .2.2 Android平台下游戏的准备工作 .3 游戏的架构 .3.1 各类的简要介绍 .3.2 游戏的框架简介 .4 欢迎界面的设计与实现 .4.1 主类KLSDActivity实现 .4.2 欢迎界面WelcomeView类的实现 .4.3 刷帧线程WelcomeViewDrawThread类的实现 .4.4 动画生成线程WelcomeViewGoThread类的实现 .5 “帮助”与“关于”界面的设计与实现 .5.1 “帮助”界面HelpView类的实现 .5.2 “关于”界面AboutView的实现 .6 游戏界面的框架搭建 .7 计时线程与数字键盘线程的开发 .7.1 计时线程的开发 .7.2 数字键盘线程的开发 .8 数独生成器的开发 .9 游戏界面逻辑方法的实现 .9.1 初始化方法的完善 .9.2 简单逻辑方法的完善 .9.3 屏幕事件处理方法的完善 .10 游戏界面绘画方法的完善 .10.1 数字键盘的绘制方法drawKey ()的完善 .10.2 绘画方法onDraw()的完善 .11 游戏界面刷帧线程的实现 .12 游戏的优化与改进 406第17章 Android地图搜索应用——美食天下 407第15章已经介绍了Google Map的简单使用,本章将通过之前介绍过的知识实现一个美食共享软件,其中包括服务端和手机端,希望通过本章的学习,读者能够掌握Android系统与Tomcat服务器的通信、Google地图的使用及各种控件的综合应用。 17.1 系统背景及功能概述 .1.1 背景简介 .1.2 功能概述 .1.3 开发环境及目标平台 .2 开发前的准备工作 .2.1 数据库的设计 .2.2 表的创建与记录插入 .2.3 数据源的配置 .3 Web端总体架构及功能预览 .3.1 目录结构及系统框架 .3.2 功能预览 .4 Web端登录注册模块的实现 .4.1 首页的搭建 .4.2 用户注册功能的开发 .4.3 用户登录功能的开发 .4.4 用户注销功能的开发 .5 Web端美食上传模块的实现 .5.1 页面的搭建 .5.2 图片上传组件FileUploadServlet的开发 .5.3 DBUtil中相关方法的开发 .6 Android端总体架构及功能预览 .6.1 功能预览 .6.2 总体架构 .7 服务器的设计与实现 .8 Android端登录界面的实现 .8.1 开发前的准备工作 .8.2 框架的搭建 .8.3 监听方法的完善 .8.4 记住密码功能的实现 .8.5 服务器端的完善 .9 Android端注册界面的实现 .9.1 框架的搭建 .9.2 监听方法的完善 .9.3 服务器端的完善 .10 Android端主界面MainActivity的实现 .10.1 布局文件的开发 .10.2 界面框架的搭建 .10.3 初始化方法的完善 .10.4 监听方法的完善 .10.5 网络处理线程的实现 .10.6 服务器端的完善 .11 Android端地图界面的实现 .11.1 布局文件的开发 .11.2 地图界面的开发 .12 美食信息界面的实现 .13 系统的优化与改进 474第18章 Android社交分享平台——口袋微博 475本章将介绍社交分享平台——口袋微博的实现,该社交分享平台包括Web端和Android手机端两个部分。 在介绍了整个系统的背景及功能架构之后,本书将对该系统在Web端和Android手机端的实现进行介绍。 18.1 系统背景及功能概述 .1.1 背景简介 .1.2 功能概述 .1.3 开发环境和目标平台 .2 开发前的准备工作 .2.1 数据库设计 .2.2 表的创建和测试数据的插入 .2.3 数据源的配置 .3 Web端功能预览及总体架构 .3.1 Web端系统功能预览 .3.2 系统目录结构 .3.3 系统总架构 .4 Web端主页的搭建 .5 Web端登录注册模块的实现 .5.1 用户登录功能的开发 .5.2 用户注册功能的开发 .5.3 用户注销功能的开发 .6 查看和管理日志模块的实现 .6.1 发布日志功能的开发 .6.2 显示日志及评论功能的开发 .6.3 编辑和删除日志功能的开发 .7 查看和管理相册模块的实现 .7.1 查看相册功能的开发 .7.2 查看相册相片功能的实现 .7.3 显示照片功能的实现 .8 Android端功能预览及总体架构 .8.1 Android端功能预览 .8.2 Android端总架构 .9 服务器的设计与实现 .9.1 服务器的设计 .9.2 服务器的实现 .10 Android端的准备工作 .10.1 图片资源的准备 .10.2 XML资源文件的准备 .11 登录注册模块的实现 .11.1 登录模块的开发 .11.2 记录账号密码功能的开发 .11.3 服务器验证登录功能的实现 .11.4 注册模块的开发 .12 个人中心模块的实现 .12.1 个人中心界面的开发 .12.2 个人中心界面菜单功能的开发 .13 快速发布模块的实现 .13.1 发布日志和更新心情功能的实现 .13.2 拍照上传界面的开发 .13.3 UploadActivity通信功能的开发 .14 查看联系人模块的实现 .14.1 ContactsActivity界面的开发 .14.2 ContactsActivity通信功能的开发 .15 日志管理模块的实现 .15.1 查看日志功能的开发 .15.2 编辑日志功能的开发 .16 相册管理模块的实现 .16.1 相册查看和修改功能的实现 .16.2 相片查看功能的实现 .17 系统的优化与改进 544
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:https://link.52hwl.com/article/c0d7388ad47283724b5a.html,复制请保留版权链接!
在这个充满浪漫色彩的季节里,安徽的一位男子小张,却骑着一辆独特的两轮车,去往女子家中,想要与女子相亲,当女子穿上拖鞋出现在见面地点时,小张却不禁感叹,拖鞋,怎么看着不合适呢,事情发生在不久前,小张骑着他的两轮车,来到了一位女子的家中,这是一位充满青春活力的女子,一身轻松的打扮,不禁让人眼前一亮,当小张带着礼物走进女子家门时,却发生了一...。
2024-05-29 07:27:21
在情感的纷繁世界里,年龄犹如一幅扑朔迷离的画卷,演绎着复杂而深刻的角色,特别是当这幅画卷聚焦在两性关系的交织中,五十多岁的男性便可能成为某些女性心中的一抹忧虑与不安,这种忧虑并非无风起浪,它往往源于对个人成长的考量、社会期待的束缚以及对未来蓝图的描绘,今天,让我们一同揭开这层面纱,探寻女性为何会对五十多岁的男性心生畏惧,以及这背后所蕴...。
2024-05-29 05:53:58
ICQ是一款自1996年起就开始流行的即时通讯软件,经历了从Mirabilis公司到AOL再到Mail.Ru的多次收购,随着时间的推移,ICQ的用户数量逐渐减少,从鼎盛时期的超过1亿用户锐减到2022年的仅剩1100万用户,ICQ这个名称取自英语Iseekyou的谐音,在中文中意为,我找你,,展现出了其带有情感色彩的用户寻找和沟通的愿...。
2024-05-29 03:34:50
ICQ作为最早的流行即时通讯软件之一,建议用户将于6月26日关闭,ICQ诞生于1996年,最初由以色列公司Mirabilis开发,后被AOL和Mail.Ru收购,现在归属于俄罗斯的VK,ICQ在盛期有超过亿用户,但到2022年月活用户仅剩1100万,显示了其日渐式微,ICQ的名字取自英语Iseekyou的谐音,意为,我找你,,早年提供...。
2024-05-28 15:58:52
对于许多在莫斯科的中国留学生而言,这次恐怖袭击打破了以往他们对这座城市安全的印象,3月22日晚,俄罗斯首都莫斯科近郊一家音乐厅发生了严重恐怖袭击事件,数名武装分子向民众开枪,并投掷燃烧弹引发火灾,据报道,恐袭已造成143人死亡,包括3名儿童,俄紧急情况部表示,现场火势已被扑灭,但搜索行动仍在继续,俄罗斯总统普京宣布拘捕了4名嫌疑袭击者...。
2024-03-24 21:23:19
2023年中超联赛赛程安排定于4月15日开幕,至11月4日收官,该赛季共进行30轮240场比赛,并允许主客场制,开幕式将于4月15日晚在北京工人体育场举行,双方对阵为北京国安对阵梅州客家,2023年中超联赛的一大看点是激烈的竞争,各支球队实力相当,每场比赛都充满悬念,球队间的对抗常常带来精彩绝伦的比赛和激烈的竞争,外援的引进也是联赛的...。
2024-03-11 13:50:43
探索安卓系统开发中的最佳实践与技巧在当今移动应用市场竞争激烈的环境中,安卓系统开发者们需要不断探索最佳实践与技巧,以提高应用的质量、性能和用户体验,针对安卓系统开发中的一些关键方面,我们可以通过以下方式来优化和改进开发流程,1.**遵循最新的安卓开发规范**随着安卓系统不断更新和演变,Google也会发布新的开发规范和最佳实践,开发者...。
2024-02-19 00:30:23
根据36氪的报道,深圳市昂科技术有限公司最近完成了亿元级B轮融资,本轮融资由基石资本、格力金投和广发信德共同投资,融资完成后,昂科技术将加大新产品的研发力度,并加快国际市场的扩张进程,根据美国半导体行业协会,SIA,的数据显示,中国是全球最大的半导体单一市场,占全球总市场的31%,全球约75%的半导体制造能力集中在中国和东亚地区,根据...。
2024-02-15 21:48:02
今年的春节,红花郎以线上和线下的方式给消费者带来了丰富多样的活动,作为一款备受国人喜爱的美酒,红花郎通过强势回归央视春晚、在全国百个城市的地标建筑和多个平台上线的线上互动活动,为消费者送去了最真挚的祝福,串联起了全国各地的年味,红花郎的身影在城市的大街小巷随处可见,装饰有红色元素的万辆红花郎专属巴士已经在上海、杭州、成都、重庆、哈尔滨...。
2024-02-13 16:23:54
2024年央视春节晚会结束后,撒贝宁和尼格买提回到了他们的家乡陪伴家人过年,并开始了短暂的假期,2月11日大年初二,有网友在新疆偶遇到了尼格买提和他的父亲,他们一起外出品尝美食,简单而快乐地过年,在今年的春晚舞台上,尼格买提绝对是最搞笑的人,因为刘谦的魔术失误让尼格买提多次登上热搜,他那抿嘴的表情也迅速走红,每次看到都会忍不住笑,当大...。
2024-02-13 15:37:03
一、前言,RTX4080SUPER主打加量减价索泰同步推出高颜值显卡RTX4080SUPER主打的就是加量减价的路子,建议零售价8099元起的价格,比起9499元起的RTX4080显然要香了不少,非公显卡也第一时间纷纷面世,作为NVIDIA的AIC伙伴之一,索泰也对自家产品线进行了更新,带来了多款新品,比如我们今天要评测的这款索泰RT...。
2024-02-13 12:06:45
考编,历来是不少山东人最理想的就业方向,郭洪凯是个特例,开米线店、做摄影师、卖生鲜产品……郭洪凯尝试过各行各业,最难的时候负债百多万,始终不放弃创业的想法,用他的话说,打工是不可能打工的,一月下旬,郭洪凯举办了一场公司年会,这是他做生意十多年来头一遭,当天有近百人到场,舞台四周扎满了红气球,郭洪凯一身黑色呢子大衣沉稳亮相,眉眼间掩不住...。
2024-02-13 11:17:31