编辑推荐 S6 z# a. k) Y' V, _/ }
凝聚作者多年开发实战经验,深入解析穿戴设备开发技术手把手传授Android穿戴设备开发经验,大幅提高学习和工作效率超值赠送《Android应用开发基础与实例》电子书,彻底解决零基础学习者的后顾之忧内容简介
% z% P8 h7 P" g- [2 u- W, [. y 《Android智能穿戴设备开发实战详解》通过大量实例,循序渐进地讲解了在Android系统中开发穿戴设备的必备技术和各种开发实战经验与技巧。具体内容包括Android穿戴设备开发技术基础,搭建Android开发环境,开发前的准备工作,让硬件和网络相连,地图定位应用解决方案,利用光线和接近警报提高用户体验,检测设备的运动方向,检测穿戴设备的运动轨迹,检测穿戴设备所处的环境参数,深入挖掘蓝牙技术,深入探索Android蓝牙系统,为可穿戴设备而生的蓝牙4.0 BLE,BLE 4.0 开发秘籍,语音识别应用解决方案,用手势识别提高用户体验,多媒体应用解决方案,户外暴走轨迹记录仪,湿度测试仪。* D5 _$ L) T8 l4 A' u# z9 w
本书适合Android初学者、Android应用开发、Android穿戴设备开发、Android底层开发人员和Android源码分析人员阅读学习,并且也可以作为相关培训学校和大、中专院校相关专业的教学用书。6 M! [9 S$ [. I! `( m/ |1 D
目录% ?3 p6 }7 ^0 D
Chapter 1 Android穿戴设备开发技术基础 1
+ h2 d" N o* ? V/ F: B; [ 1.1 智能手机系统介绍 1" t& a- N+ C7 r; h1 Y- t
1.1.1 何谓智能手机 1) X. t/ F- }9 o' H
1.1.2 看当前主流的智能手机系统 2
\( U$ q) ~) W/ v* J+ q. ` 1.1.3 不只是手机 4$ z, c0 l% F% [
1.1.4 超高的市场占有率 6
. m! ?- i) _6 ` 1.2 Android的巨大优势 6% Y2 A( d! L8 O
1.2.1 系出名门 71 X. ^; \7 S7 M
1.2.2 强大的开发团队 7
) P2 ?# G/ o' X: A% C 1.2.3 诱人的奖励机制 7
7 v% O" X& Y& E: Q 1.2.4 开源 8& ^& y% F+ a. ~$ G- ]
1.3 穿戴设备凶猛来袭 8
/ z. g- X) ^* ]0 i$ U 1.3.1 发展历程 8
. B" A0 A) N. `' B 1.3.2 现状介绍 9 i$ T0 t1 Y/ W4 b" s1 a7 G& S
1.3.3 发展前景分析 12
, |/ A) m9 I& a2 C* U; x, @ 1.3.4 Android对穿戴设备的支持——Android Wear 131.4 Android穿戴设备开发所需要的技术 14
' \' j$ X6 b3 Q& y0 Q Chapter 2 搭建Android开发环境 15
6 O* V1 E% e) \& Q* g' { 2.1 安装Android SDK的系统要求 15/ U3 H3 U3 z. f2 k7 w
2.2 安装JDK 16
: M9 S: o0 D! Y. J3 B+ N1 I5 t 2.3 安装Eclipse和Android SDK 20
/ H, z; |: O. }7 v& Z8 q 2.3.1 获取并安装Eclipse和Android SDK 20
) w7 T/ {# d4 [, H: \" [7 K 2.3.2 快速安装SDK 23; @; }) E* B( E, \& o: L) H9 K S4 I
2.4 安装ADT 24% H6 ^" _# Z8 r* U
2.5 验证设置 26. z0 Q. @1 r# Y* c; f7 {; D
2.5.1 设定Android SDK Home 26
8 Y4 n% l+ q( N 2.5.2 验证开发环境 27
; L, a8 C# Y5 ]( g2 r7 J 2.5.3 创建Android虚拟设备(AVD) 28
# C- n5 c, A% i6 B6 G' A 2.6 启动AVD模拟器 29; Z, L1 |4 F* @: @, N3 e+ r
2.6.1 模拟器和真机究竟有何区别 30: H2 |3 j8 E+ u
2.6.2 启动AVD模拟器的基本流程 302 c! X' q7 B9 K f5 @
Chapter 3 开发前的准备工作 313 @# @3 E7 i' q/ b+ O
3.1 在Linux系统获取Android源码 31
1 n) V" I! i& r" f# K 3.2 在Windows平台获取Android源码 32. {6 j7 R6 c7 A M* i$ H
3.3 分析Android源码结构 37
& \5 w' i; M& t+ o, t' | 3.3.1 应用程序 38
- y2 K& D1 B k 3.3.2 应用程序框架 39
6 z; E7 x( v6 F" c$ k 3.3.3 系统服务 40
8 k9 k/ X& q* C* O F6 ? 3.3.4 系统程序库 42+ d( O% H ^$ k7 F- e+ |$ D5 s2 o
3.3.5 系统运行库 46
" H7 ~" @ s- v. ^0 V0 Y 3.3.6 硬件抽象层 46- o! ~6 i) y. G; u
3.4 编译源码 47
$ M& J- J, B5 }; b8 |: @$ r, d/ j 3.4.1 搭建编译环境 48
+ W) ?0 R# s" l6 a! J+ z& p 3.4.2 开始编译 49
' D5 X5 B/ t& z 3.4.3 在模拟器中运行 50
& x0 S" `2 Y. I' e( j 3.4.4 常见的错误分析 51
9 M. J) J4 Y h! `9 t3 ^ 3.4.5 实践演练——演示两种编译Android程序的方法 523.5 编译Android Kernel 56
1 ]; i# I3 B4 ?8 M 3.5.1 获取Goldfish内核代码 56" k( S! i+ z2 h2 @ U! R
3.5.2 获取MSM内核代码 59" [3 @ Z& e/ `9 B- e
3.5.3 获取OMAP内核代码 59% ]; F$ I4 e5 p5 J s
3.5.4 编译Android的Linux内核 591 p/ D7 I0 c/ s/ y, I0 W/ v# R. S
Chapter 4 让硬件和网络相连 613 ~: b" W& V1 ]' K
4.1 实现网络通信的解决方案 612 R, a6 C6 [. H6 p, }8 y6 g7 T
4.1.1 剖析HTTP的作用 61
- `. }( E. N: l. B; b 4.1.2 Apache接口和标准Java接口的区别 62( B! Q m) ~1 m/ _
4.1.3 Android独有的网络接口 63
: Q, v s. _* M, u 4.1.4 在屏幕中传递HTTP参数的实现技巧 64
- N# a+ I0 @$ i2 Q 4.1.5 如何在运动过程中访问地图 67: Z) f$ \+ ?$ T, Y9 N
4.2 实现数据通信的解决方案 69; U9 ]/ i, i* u- R. @5 T' E' P/ P
4.2.1 使用ServletSocket传递数据 70
4 J- }+ o2 l8 B; v 4.2.2 使用Socket传递数据 70
4 ~$ h2 `" g* h9 X 4.2.3 实现非阻塞Socket通信 70
' e6 Z; p2 F- j1 F7 p9 ? 4.2.4 使用DatagramSocket实现数据交互 72
& Z/ p) p0 N4 s* b9 e+ @ 4.2.5 发送求救信号的实现技巧 73
! d* F1 w N6 \( @9 N' a5 } 4.3 远程数据下载解决方案 74
- J3 N- n& M3 E+ a6 r$ _4 G 4.3.1 获取图片数据的方法总结 74
7 J/ c. S i9 O/ P# s; f; A 4.3.2 JSON数据传输的常见用法 76# g' p( g& z8 H9 w& w
4.3.3 用多线程提升处理效率 81
- H7 z! N7 Y+ K3 D% B 4.4 如何高效的上传数据 86
" o5 x9 s9 F p3 Q 4.4.1 将穿戴设备中的文件上传到远程服务器 864.4.2 使用GET方式上传数据 88
6 P# l+ ]. c# j 4.5 URL数据的处理方法 92
8 T6 e$ [$ T0 Q W3 S* Z. S 4.5.1 URL和URLConnection 92
1 Q- X' @( E' d; K& d! ` m5 `, f 4.5.2 让穿戴设备和社交软件相结合 93
$ b6 s% K. t2 w7 r 4.5.3 充分利用网络资源 94
- |4 _4 }, T) V& r! B 4.5.4 将穿戴设备打造成一个网页浏览器 97
0 ], M5 C" L4 `1 t& x Chapter 5 地图定位应用解决方案 100" b5 x1 x, L* ?. q( _
5.1 位置服务解决方案 1005 Y# u4 @) U5 e" E6 b
5.1.1 android.location功能类 100, n" [( ^7 ?% [; F2 ] q( {
5.1.2 实现Android定位 101* Q, l7 w2 _& y
5.2 随时更新设备的位置信息 1048 L; c9 d% U, q5 V
5.2.1 Maps库类的技巧 104- ]6 g3 l; L2 ^+ A( b" S2 w
5.2.2 LocationManager可以及时监听你 105" k+ @6 \: K- ~3 |- s4 \
5.3 在Android穿戴设备中使用地图 106
- a* D' x* E, S- z 5.3.1 使用地图前的准备工作 106
! F) i# O7 l, ?. @ 5.3.2 使用Map API密钥的流程 109
' p; ~( n2 W" C. i; k! X6 \ 5.4 在穿戴设备中实现GPS定位 111. _4 x8 J" O) D- S0 |9 n' m- Z3 d6 I
5.5 使用谷歌地图实现定位的技巧 114' H" r4 z8 B+ @2 q8 G8 d" y7 A
5.6 在Android穿戴设备中实现地址查询的解决方案 1195.7 打造一个路径导航设备 124
) j7 X* y. }" B3 |% F Chapter 6 利用光线和接近警报提高用户体验 1326.1 挖掘Android中的传感器系统 132* Q v, c! }+ t/ {( t _5 q* p! o P
6.2 检测当前设备所支持的传感器的方法 134
0 B+ }% e1 _" q) j+ Q! E* c 6.3 模拟器测试传感器APP的解决方案 136* n! T( Z5 U- W2 V- i E+ Z s4 ]3 J
6.4 移植一个光线系统 1401 U# s! q7 k! ]8 ]8 t. `. J- n
6.4.1 高效获取设备中的光线值的经验之谈 1406.4.2 显示设备光线强度的方法 141
! ^! F# s# g* C6 { 6.4.3 获取设备中光线传感器的值 142% \4 b" S- M: C+ K# M- i7 I# o9 E
6.4.4 显示设备中光线传感器的强度 144
, V$ f) C. G( Q v7 w7 g' x; f 6.4.5 显示设备名称和光线强度 1461 \* a9 a @$ b# w0 p9 g
6.5 使用接近警报的解决方案 148/ c# t5 X. L B
6.5.1 Geocoder类详解 149' A+ x) _2 c* }& h8 i
6.5.2 Geocoder的主要功能 151. [7 O5 Q6 f- h7 I
6.5.3 地理编码和地理反编码 152
0 i8 u, B, ]' k' O 6.5.4 在穿戴设备地图中快速查询某个位置 156Chapter 7 检测设备的运动方向 1591 k( y& K) M. \+ r4 z
7.1 在设备中加入磁场传感器 159" ~, [1 w8 j, {
7.1.1 磁场传感器基础 159
% m0 S, y! W; r3 o3 k- X 7.1.2 Android系统中的磁场传感器 159( i' p. E5 T6 z6 F- n2 i# s
7.1.3 获取磁场传感器分量的技巧 160) T1 M9 k+ M* p, h2 v
7.2 使用加速度传感器 161
9 `2 {3 Q5 K7 s 7.2.1 加速度传感器基础 161
8 z3 h8 ?& [$ V% @7 `. F5 T9 d- q 7.2.2 Android系统中的加速度传感器 162
& a8 @% ?- f5 P 7.2.3 高效获取加速度值的方法 163- H+ M% Y" W- b
7.2.4 实现抖动效果的技巧 165
& M& ?" T# o# R6 j# }+ P 7.2.5 高级实践——实现仿微信“摇一摇”效果 1667.3 线性加速度传感器 171! e [7 }' V! D7 x+ J- B1 `0 l
7.3.1 线性加速度传感器的原理 171
3 s9 [7 ~- D; U( y% v( f 7.3.2 测试设备运动的技巧 172
1 T; F/ J$ @2 F2 i4 c, U2 X1 X 7.4 使用方向传感器的技巧 175
5 n- u; g& Q, [) d 7.4.1 方向传感器基础 176! q) ?* E3 L) f; P+ i
7.4.2 Android中的方向传感器 176
- ^/ ]) N. ? w 7.4.3 测试方向值的最佳方案 1764 M$ k" l. m+ z' q( C
7.4.4 如何快速开发一个指南针程序 178) f Q$ I$ { i. W
7.4.5 快速确定当前设备方向的技巧 1804 b, F% b/ L) ?* s5 {" v
7.4.6 快速实现一个定位指南针的方法 184
' ^% D/ ~4 r5 ?; L Chapter 8 检测穿戴设备的运动轨迹 195# v: Y, E0 |) n$ C
8.1 测试运动距离 195) d6 x( \0 t) U# a5 Z
8.1.1 加入距离传感器 1951 E' E: ~) n4 c# j0 Z' h. ]! C9 i
8.1.2 Android系统中的距离传感器 195
7 d& x W0 u, D i0 v 8.1.3 实现自动锁屏功能的方法 197
. J$ A5 N* T6 l0 h3 q6 P' i) D% O9 ~ 8.1.4 根据设备距离实现自动锁屏的技巧 202( s9 G" y6 o* q& B X; B
8.2 绘制运动曲线 2041 f6 K+ M' I* Z
8.3 在穿戴设备中开发一个计步器 208
) {5 @( i0 x: T, d( k% ` 8.3.1 系统功能模块介绍 209
( K4 R0 h% ]! ?/ m 8.3.2 系统主界面 209, [( c( q' i" |3 g4 X8 k& N
8.3.3 系统设置模块 216
: F6 \; E6 B. k4 w/ r+ u$ E Chapter 9 检测穿戴设备所处的环境参数 227
- c. [' e: o2 x 9.1 使用气压传感器 227- \: F, T( t+ E3 Y0 m3 w
9.1.1 气压传感器的使用秘籍 227
7 G! N$ S' }. T 9.1.2 气压传感器在智能手机中的应用 228
( j- t; ^: \3 K8 Q 9.1.3 开发一个Android气压计系统 228, H$ F, ]5 x; z4 o
9.2 使用温度传感器 236
1 J& K7 ]4 l+ I4 i- l 9.2.1 温度传感器的使用技巧 236' [" q( K) [) v- E
9.2.2 Android系统中的温度传感器 237
2 V6 v" }' B. }* U0 R K( o4 N X 9.2.3 让穿戴设备变为温度计的经验之谈 239( v0 }6 n e" K; n! C7 R
9.3 使用湿度传感器 241
; y; A3 v& e% q7 h+ } 9.3.1 湿度传感器的使用秘籍 241
+ \4 @; ?7 C; `* V' W; w5 n) g 9.3.2 Android系统中的湿度传感器 242
# u& d6 g- F8 p- @ 9.3.3 获取远程湿度数据的技巧 242
1 V, w- E7 K9 i% W2 r. g" I 9.4 获取相对海拔和绝对海拔数据的方法 248
7 B7 u6 l2 x* C' X5 N8 H6 o7 z Chapter 10 深入挖掘蓝牙技术 259
. h+ d$ U) a6 N: Q" u 10.1 蓝牙的作用 259
8 z3 G- P$ i! V+ u8 c 10.1.1 蓝牙技术的发展历程 259
0 k, f F- v! N- m8 n. ` 10.1.2 蓝牙的特点 259
9 E: \3 }2 G8 O8 L 10.2 使用低功耗蓝牙技术的意义 260- g; r) x! Q P+ Q! E4 q
10.2.1 低功耗蓝牙的架构 260' v3 H! l9 Z' A: q1 P) q) x9 y
10.2.2 低功耗蓝牙分类 261
+ U; m( O$ A7 r4 k; D 10.3 蓝牙规范 262
8 M' \; `! Z8 y* H* S5 I* b( K 10.3.1 蓝牙系统中的常用规范 262. s- ]( c1 Q2 W R- f
10.3.2 蓝牙协议体系结构 2630 g0 Y8 z3 n [4 @
10.3.3 低功耗(BLE)蓝牙协议 264
3 b2 e: k4 s( t" k: ~ 10.3.4 现有的基于GATT的协议/服务 264
" T" o, Z: D* u {- M6 o 10.3.5 双模协议栈 266
6 b- f; c- |% G- U. i6 O 10.3.6 单模协议栈 266
1 _# u& Q5 E0 D/ Z! G# n 10.4 蓝牙协议栈详解 267
* x! t. v+ Q* p5 Y: r 10.4.1 蓝牙协议栈基础 267
1 J ]5 u8 e2 F' g# x. g 10.4.2 蓝牙协议体系中的协议 268
/ [1 x* Z, z/ b$ v0 W+ x. ~5 L 10.5 TI公司的低功耗蓝牙 270: m- R$ f' C$ x1 r
10.5.1 获取TI公司的低功耗蓝牙协议栈 270' T8 }3 `5 }5 k, J( \
10.5.2 分析TI公司的低功耗蓝牙协议栈 2747 |9 ]3 L+ O2 \+ c
10.6 使用蓝牙控制电风扇 280& M. t' O2 p/ [2 f. [7 H
Chapter 11 深入探索Android蓝牙系统 2908 N5 z8 j4 _" t) l
11.1 Android系统中的蓝牙模块 290! V. q. ^# E6 o, z5 T5 g4 q
11.2 深入分析蓝牙模块的源码 292
) H1 w1 {; w8 ?* Z P 11.2.1 初始化蓝牙芯片 292
1 Z7 k$ S( @5 h& Y3 n3 n% \ 11.2.2 蓝牙服务 293& `, s. H( w6 g& x# ^, M
11.2.3 管理蓝牙电源 293
4 X% Y( D4 g0 W, k! f" u7 ?0 ^ 11.3 和蓝牙息息相关的类 293( ?, y2 J3 y; W7 x+ J1 G
11.3.1 BluetoothSocket类 294) g% x+ Z& C- U. u
11.3.2 BluetoothServerSocket类 295! Z. B! ?5 S* ^/ e
11.3.3 BluetoothAdapter类 2969 V3 b7 D. Y$ J. o) \0 ]
11.3.4 BluetoothClass.Service类 302
. l+ Q% X1 m) V# a* g; F8 E 11.3.5 BluetoothClass.Device类 302! l7 K- n5 V, n3 l6 g$ e7 C1 z
11.4 快速开发Android蓝牙应用程序 303+ h( ^8 ?. \2 N
11.4.1 开发Android蓝牙应用程序的基本步骤 30311.4.2 开发一个控制玩具车的蓝牙遥控器 30811.5 在穿戴设备中开发一个蓝牙控制器 313
% X4 j, H$ `& v& | 11.5.1 界面布局 313
# I4 W5 G% B) ^/ M" I8 I8 t 11.5.2 响应单击按钮 314* `* r+ j6 z% u$ i3 F: |+ m1 l
11.5.3 和指定的服务器建立连接 315 f8 g- R' k. r0 @2 n4 R
11.5.4 搜索附近的蓝牙设备 316, Y, m( ~4 p$ b4 J& X, |
11.5.5 建立和OBEX服务器的数据传输 319
2 w0 ?3 v; R3 L, N% ^ 11.5.6 实现蓝牙服务器端的数据处理 322
- @) ]0 d" c+ P( X Chapter 12 为可穿戴设备而生的蓝牙4.0 BLE 32512.1 短距离无线通信技术概览 325
6 w, q1 A; b/ P3 z 12.1.1 ZigBee——低功耗、自组网 325
8 f4 Z2 I' r h. `, Q, g2 F 12.1.2 Wi-Fi——大带宽支持家庭互联 3265 _! j' T% _( P! o4 d
12.1.3 蓝牙——4.0进入低功耗时代 326
2 @2 \4 R6 a; f4 `. M g3 m: L 12.2 蓝牙4.0 BLE基础 327# H, _2 ]1 Q1 b9 A
12.2.1 蓝牙4.0的最杰出表现是低功耗 327 v& }( P: D+ O( a' A
12.2.2 蓝牙4.0的优势 327
: D" u# E3 k# R/ z) v 12.2.3 蓝牙4.0 BLE推动了可穿戴设备的兴起 32812.3 低功耗蓝牙协议栈详解 329
3 h, z6 J) \6 T& k" d; X 12.3.1 低功耗蓝牙协议栈基础 329
]6 U1 y% i5 M6 P$ ^$ m8 l$ s 12.3.2 低功耗蓝牙API详解 330; }( t+ C( g' S# G
Chapter 13 BLE 4.0开发秘籍 346( Z6 X t J/ \
13.1 深入理解BlueDroid架构 3460 A }/ M- G! M+ a1 k
13.1.1 Android系统中BlueDroid的架构 346$ v" W7 T& m2 l+ x
13.1.2 Application Framework层分析 3467 N$ h& N) u" ~
13.1.3 分析Bluetooth System Service层 34913.1.4 分析JNI层 350
$ ?( G2 T% o4 K# n0 R 13.1.5 分析HAL层 350
: E# |9 N. ]/ O Q4 M- C 13.2 Android蓝牙模块的运作流程 3510 w, C4 [; {/ o. D4 a7 C( v. |
13.2.1 打开蓝牙设备 351
7 S. l+ D$ S5 d9 \; ^( o# ^! c 13.2.2 搜索蓝牙 356
/ G; X9 u R, F 13.2.3 传输OPP文件 363' c' M, t8 @ e
13.3 开发一个Android蓝牙通信系统 368. S0 F& d4 n' b. r# h) v
13.3.1 布局文件 369
+ X+ W# E& `& o3 m 13.3.2 实现控制服务类和线程实现类 369
+ [3 y M& D, I6 ~: N; [ 13.3.3 编写测试程序文件 378
# r G- r$ ]. V Chapter 14 语音识别应用解决方案 384
. ~2 F# ]8 ?7 B6 \+ [$ `+ B% b 14.1 语音识别技术的发展进程 384; d* A+ R# }' E2 J0 Q# N& }! ?
14.1.1 语音识别的发展历史 384/ C/ }7 H3 A8 L B0 O- b* Z! ?
14.1.2 技术发展历程 385; `* v0 b+ f% X9 _7 Y& M. |; U$ A
14.2 使用Text-To-Speech技术 3850 T3 l2 b0 C7 G" Z
14.2.1 Text-To-Speech基础 385) p; e* {- W2 A. \# h' @
14.2.2 Text-To-Speech的实现流程 3864 P. t, c0 j! \6 j9 R- Z; t! h
14.2.3 在Android中使用Text-To-Speech实现语音识别 38914.3 谷歌的Voice Recognition技术 3919 i# G, P. t; r9 M- G8 p
14.3.1 Voice Recognition技术基础 391
& b+ R% H3 i# T1 ^2 K( G, y 14.3.2 在Android中使用Voice Recognition实现语音识别 39414.4 开发一个语音识别系统 397
- L. z" I* k v. c/ I0 d" ]3 f4 R Chapter 15 用手势识别提高用户体验 407
4 y/ R- R& |2 A 15.1 手势识别技术基础 407
% Z# ?4 k# B2 `) G; @ 15.1.1 GestureDetector类基础 407# E( g+ W: \& h3 n
15.1.2 使用GestureDetector类 408( ]( f8 W) R) c3 q+ X# u/ p; C
15.1.3 手势识别处理事件和方法 411. D4 s- z; `/ g6 }3 Y
15.2 通过单击的方式移动图片 412
' n6 ]4 I- X* r; D 15.2.1 实例说明 412
( M9 @: r3 l3 @( k 15.2.2 具体实现 412* j0 H) C' L! L* d
15.3 实现各种手势识别 415
# C6 R4 ~6 \% h/ X3 ^7 G 15.4 实现手势翻页效果 4182 k4 E+ c3 [, ?9 z
15.5 实现手势拖动和缩放图片效果 423& w5 J V7 w' L6 e0 R) S& _( {* b4 e
Chapter 16 多媒体应用解决方案 431
* n0 o) c& X3 b' |* b- j4 o% M 16.1 深入底层分析Android多媒体系统 431
* W( L. M% K9 ` ^: m. r 16.1.1 OpenMax框架 433
, N. O- {7 @9 O R! T 16.1.2 OpenCore框架 434# `6 B' f |3 _. c2 ^
16.1.3 Stagefright框架 435/ }: E1 E# |7 L; k$ j
16.2 Graphics类的平面世界 436& @3 y- \6 G$ I. I$ U) s* K+ p
16.2.1 Graphics类基础 436
5 n2 P% P" L y 16.2.2 使用Graphics类 436) w6 I4 Z# f2 u S
16.3 二维动画 438
" o' B1 s! w' H1 R2 B+ L 16.3.1 Drawable类 438
) U( | w' R, O 16.3.2 实现Tween Animation动画 439
. Q" t* f7 d; N* {8 r# ` 16.3.3 实现Frame Animation动画效果 4420 U2 B1 h+ e% c/ p' G3 A7 H/ Z
16.4 OpenGL ES 443" L7 J) y$ t- q
16.4.1 OpenGL ES基础 443
% |2 V" G# ?& A6 ] 16.4.2 Android用到OpenGL ES 443* H' e+ y8 M1 Z# p
16.4.3 OpenGL ES的基本操作 4440 ]* W* Z, |0 ^& e
16.4.4 绘制图形 451
" a, r3 @, X: o 16.5 音频开发 4555 D9 p* ~. B+ m2 v" o1 ^9 g
16.5.1 音频接口类 455
( T+ e4 M$ Q" `9 m" R0 C" t e7 D9 | 16.5.2 AudioManager控制铃声 456
! d% i$ F* |# @. l" b' A. Z4 D 16.6 录音 4630 t5 i) M0 }; T. N/ j$ R
16.6.1 使用MediaRecorder接口录制音频 464
2 n7 G" _$ W( W# z1 h/ M 16.6.2 使用AudioRecord接口录音 464
' q# k$ r) @0 @0 ~8 q7 ]; q' Z 16.7 在穿戴设备中播放音乐 469& a- s# a2 j6 c* e: w# D u5 F
16.7.1 使用AudioTrack播放音频 469
6 V( A& m }; b! A1 I. I" | 16.7.2 使用MediaPlayer播放音频 470# T! @% B0 U1 X3 x- B$ b2 Q* i+ D
16.7.3 使用SoundPool 470! z3 a8 ]# w7 e( n3 l/ s
16.7.4 使用Ringtone播放铃声 471
7 m/ c# D' o; g* q+ U# U1 Q/ L# T1 e0 y 16.8 为穿戴设备实现震动功能 472
( ?7 _+ L0 e+ w* b 16.9 闹钟 473
/ @4 X6 p* p* n Chapter 17 户外暴走轨迹记录仪 475 Q& {- P9 h4 K) I& X
17.1 系统功能模块介绍 475
- e* i. q5 X: t0 ^4 l# w 17.2 实现系统主界面 476* `4 {- `! K: A
17.3 系统设置 484 `- A, @# l _) Y/ `
17.3.1 选项设置 4850 J' y N/ {( n: i3 S" O, i) L
17.3.2 生成GPX文件和KML文件 486
+ K1 L' Y1 @, h# g 17.4 邮件分享提醒 490
- H5 N% v# L4 W, Z- B+ L8 v 17.4.1 基本邮箱设置 491# |) [2 m* L( \* H8 l* y* h& _+ |! p
17.4.2 实现邮件发送功能 491/ C8 j. W) w7 E
17.5 上传OSM地图 491
9 c1 Y8 l6 p) y. M3 `* n: D 17.5.1 授权提示布局文件 492
8 t$ n* k9 a q: H5 ~7 r 17.5.2 实现文件上传 494 `5 o1 S5 U8 G
Chapter 18 湿度测试仪 497. S3 x- N6 g/ M8 r
18.1 实现主界面 497
2 R6 h0 ]# X/ f: I: r 18.2 设置具体值 499
% B* o4 R( h _/ {. [ 18.3 显示当前的值 502
/ c! i' W% P0 A$ R' L+ h& g( x 18.4 保存当前数值 504
! E9 |, }5 \9 }6 z5 a. ` 18.5 图形化显示测试结果 5052 r( n5 B$ W8 b6 z6 m$ W
18.6 湿度跟踪器 5090 M1 q/ N# `/ S, B
游客,本下载内容需要支付 5共享币,购买后显示下载链接立即支付 8 m6 d# n6 b: Q
- i3 o c" x" J; u; |/ D, i( x
|