android实例开发
⑴ 如何用android studio开发app实例
droid studio作为面市不久的安卓开发工具,越来越受到大家的喜爱,这里我将介绍如何在Android studio中创建一个APP项目,并在以后经验中介绍其他有关Android studio的操作和编程方法。 工具/原料 Android studio 方法/步骤 1 打开软件,在菜单中...
⑵ Android核心技术与实例详解的目 录
基 础 篇
第1章 Android开发起步 19
本章将要介绍的是Android开发起步的相关知识,首先对Android平台进行简单的介绍,其中包括Android的背景及其应用程序的框架。然后会向读者讲解如何搭建Android的开发环境、如何在Eclipse中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。
1.1 Android平台简介 19
1.1.1 Android背景介绍 19
1.1.2 Android平台架构 20
1.2 Android开发环境的搭建 22
1.2.1 相关软件的下载与安装 22
1.2.2 虚拟设备的创建和使用 25
1.2.3 创建“Hello Android” 27
1.2.4 Android应用程序的调试 28
1.3 小结 31
第2章 Android应用程序的构成 32
本章主要对Android的基本组件及Android应用程序的构成进行介绍,同时还将对Android应用程序的生命周期进行分析,主要目的是让读者了解Android应用程序的构成,掌握Android基本组件的特性及使用方法。
2.1 Android应用程序的解析 32
2.1.1 目录结构 32
2.1.2 资源的管理与使用 33
2.1.3 AndroidManifest.xml简介 36
2.1.4 应用程序的权限 37
2.2 Android基本组件的介绍 38
2.2.1 应用程序的生命周期 38
2.2.2 Activity简介 39
2.2.3 Service简介 41
2.2.4 BroadcastReceiver简介 44
2.2.5 ContentProvider简介 45
2.2.6 Intent和IntentFilter简介 46
2.3 小结 50
第3章 Android布局管理器 51
本章要介绍的内容为Android平台下的布局管理器。Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局。下面将分别对每个布局管理器进行详细的介绍。
3.1 控件类概述 51
3.1.1 View类简介 51
3.1.2 ViewGroup类简介 52
3.2 线性布局 52
3.2.1 LinearLayout类简介 52
3.2.2 线性布局案例 53
3.3 表格布局 55
3.3.1 TableLayout类简介 55
3.3.2 表格布局案例 56
3.4 相对布局 60
3.4.1 RelativeLayout类简介 60
3.4.2 相对布局案例 61
3.5 帧布局 63
3.5.1 FrameLayout类简介 63
3.5.2 帧布局案例 63
3.6 绝对布局 65
3.6.1 AbsoluteLayout类简介 65
3.6.2 绝对布局案例 66
3.7 小结 69
第4章 Android常用基本控件 70
本章将对进行用户界面开发时常用到的Android基本控件进行介绍,主要包括文本框、按钮、单选按钮和复选按钮、状态开关按钮和日期时间控件等。了解这些基本控件的工作方式有助于学习后面要介绍的Android中的高级控件。
4.1 文本控件的介绍 70
4.1.1 TextView类简介 70
4.1.2 EditText类简介 71
4.1.3 文本框使用案例 71
4.2 按钮控件 75
4.2.1 Button类简介 75
4.2.2 ImageButton类简介 77
4.2.3 9Patch图片简介 79
4.2.4 9Patch图片使用案例 80
4.3 状态开关按钮 81
4.3.1 ToggleButton类简介 81
4.3.2 开关按钮的使用 82
4.4 单选按钮与复选按钮 84
4.4.1 CheckBox和RadioButton类简介 84
4.4.2 单选按钮和复选按钮使用案例 84
4.5 图片控件 87
4.5.1 ImageView类简介 87
4.5.2 图片查看器 88
4.6 时钟控件 91
4.6.1 AnalogClock和DigitalClock类简介 91
4.6.2 时钟控件使用案例 91
4.7 日期与时间选择控件 92
4.7.1 DatePicker类简介 92
4.7.2 TimePicker类简介 93
4.7.3 日期时间控件使用案例 93
4.8 动画播放技术 95
4.8.1 帧动画简介 95
4.8.2 帧动画使用案例 96
4.8.3 补间动画简介 98
4.8.4 补间动画使用案例 99
4.9 小结 101
第5章 Android常用高级控件 102
上一章已经介绍了Android中的一些基本控件,本章将继续上一章的思路,对Android中常用的高级控件逐一进行介绍。
5.1 自动完成文本框 102
5.1.1 AutoCompleteTextView类简介 102
5.1.2 自动完成文本使用案例 102
5.2 滚动视图 104
5.2.1 ScrollView类简介 104
5.2.2 滚动视图使用案例 104
5.3 列表视图 105
5.3.1 ListView类简介 105
5.3.2 列表视图使用案例 105
5.4 网格视图 108
5.4.1 GridView类简介 108
5.4.2 网格视图使用案例 109
5.5 滑块与进度条 113
5.5.1 ProgressBar类简介 113
5.5.2 SeekBar类简介 113
5.5.3 滑块和进度条案例 113
5.6 星级滑块 115
5.6.1 RatingBar类简介 115
5.6.2 星级滑块使用案例 115
5.7 选项卡 117
5.7.1 TabHost类简介 117
5.7.2 选项卡使用案例 117
5.8 画廊控件 120
5.8.1 Gallery类简介 120
5.8.2 画廊控件使用案例 121
5.9 下拉列表控件 122
5.9.1 Spinner类简介 123
5.9.2 下拉列表使用案例 123
5.10 小结 126
第6章 菜单与对话框 127
在前面的章节中介绍了Android平台下开发用户界面时常用的基本控件与高级控件,但在实际开发中只运用这些控件是不够的。本章将介绍用户界面中菜单与对话框的开发,同时还会对Android平台下的Toast和Notification进行介绍。
6.1 菜单功能的开发 127
6.1.1 选项菜单和子菜单简介 127
6.1.2 选项菜单和子菜单使用案例 129
6.1.3 上下文菜单 134
6.2 对话框功能的开发 137
6.2.1 对话框简介 137
6.2.2 普通对话框 138
6.2.3 列表对话框 141
6.2.4 单选按钮对话框 143
6.2.5 复选框对话框 145
6.2.6 日期及时间选择对话框 147
6.2.7 进度对话框 151
6.3 消息提示 153
6.3.1 Toast的使用 153
6.3.2 Notification的使用 155
6.4 小结 158
第7章 Android事件处理模型 159
本章将对Android平台用户界面的各种事件响应进行详细介绍,以加深读者对Android平台的事件处理模型的理解,熟练掌握控件的各种事件处理方法。
Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,接下来会分别对其进行介绍。
7.1 基于回调机制的事件处理 159
7.1.1 onKeyDown方法简介 159
7.1.2 onKeyUp方法简介 161
7.1.3 onTouchEvent方法简介 162
7.1.4 onTrackBallEvent方法简介 164
7.1.5 onFocusChanged方法简介 165
7.2 基于监听接口的事件处理 167
7.2.1 Android的事件处理模型 167
7.2.2 OnClickListener接口简介 168
7.2.3 OnLongClickListener接口简介 170
7.2.4 OnFocusChangeListener接口简介 172
7.2.5 OnKeyListener接口简介 176
7.2.6 OnTouchListener接口简介 178
7.2.7 OnCreateContextMenuListener接口简介 180
7.3 Handler消息传递机制 181
7.3.1 Handler类简介 181
7.3.2 Handler使用案例 181
7.4 小结 184
高 级 篇
第8章 游戏与3D应用程序开发 185
Android平台下的应用开发,一般来说主要分为商业应用和游戏两种,在开发商业应用时主要会用到本书前面章节曾介绍过的控件和菜单对话框等知识,而开发游戏时就只能自己定义各种控件和界面了。本章将要介绍如何在Android平台下使用View和SurfaceView开发游戏,在本章的最后还将对Android平台下进行3D场景的开发进行简单的介绍。
8.1 自定义View的使用 185
8.1.1 MyView类的开发 185
8.1.2 MyThread类的开发 188
8.1.3 Activity部分代码的开发 189
8.2 SurfaceView的使用 190
8.2.1 GameView类的开发 191
8.2.2 BallGoThread类的开发 195
8.2.3 TimeThread类的开发 198
8.2.4 GameViewDrawThread类的开发 198
8.2.5 Sample_8_2类的开发 199
8.3 GLSurfaceView与3D 200
8.3.1 OpenGL ES简介 200
8.3.2 3D开发的基本知识 201
8.3.3 第一个3D图形示例 202
8.3.4 3D谷仓的开发 206
8.4 小结 212
第9章 消息广播与服务 213
本章将对Android的消息广播机制及服务组件进行详细介绍。在很多应用程序中,都会通过广播形式来发送和接收消息。当应用程序接收到消息后,一般启动一个Activity或者一个Service进行处理。本章将对之前介绍过的服务组件Service进行详细介绍,章末通过对一个单机版的音乐播放盒的介绍帮助读者掌握服务组件的使用方法。
9.1 BroadcastReceiver组件 213
9.1.1 BroadcastReceiver类简介 213
9.1.2 基于广播的案例 214
9.2 Service组件 216
9.2.1 Service类简介 217
9.2.2 基于服务的案例 217
9.3 单机版音乐盒的实现 220
9.4 小结 228
第10章 网络与数据处理 229
本章要介绍的内容是Android平台下进行网络编程及数据处理的相关知识,内容包括网络通信的几种方式(如使用Socket、URL、Socket等)、如何使用WebView浏览网页,以及文件的上传和下载。最后介绍访问手机存储卡的方法及如何在程序中使用SQLite数据库。
10.1 使用Socket进行通信 229
10.1.1 Socket服务端的开发 229
10.1.2 Socket客户端的开发 230
10.2 通过URL和HTTP请求获取网络资源 231
10.2.1 通过URL获取网络资源 232
10.2.2 通过HTTP请求网络资源 235
10.3 使用WebView进行网络开发 239
10.3.1 使用WebView浏览网页 239
10.3.2 使用WebView执行HTML代码 244
10.4 SQLite数据库 246
10.4.1 数据库的基本操作 246
10.4.2 个人通讯录的实现之资源文件的组织和开发 247
10.4.3 个人通讯录的实现之功能代码的开发 250
10.5 访问存储卡 255
10.5.1 获取存储卡容量 255
10.5.2 读取存储卡信息 257
10.6 小结 259
第11章 手机通信功能开发 260
本章将对Android手机通信功能的开发进行介绍,其中包括短信的收发及状态查询、电话的拨打与接听、来电的过滤和E-mail邮件的收发等,通过本章的学习,读者应该能够对Android平台手机通信功能有一定的了解。
11.1 短信控制 260
11.1.1 短信的发送 260
11.1.2 短消息提示 263
11.1.3 短消息群发 267
11.1.4 查询发送状态 271
11.2 电话控制 274
11.2.1 拨打电话 274
11.2.2 过滤电话 279
11.2.3 查询当前状态 279
11.3 E-mail相关功能开发 281
11.3.1 SMTP协议简介 281
11.3.2 发送E-mail 281
11.4 小结 282
第12章 手机特有Feature开发 283
本章将要介绍的是Android手机特有Feature的开发,主要包括响应系统设置更改事件、设置手机外观和其他的特性。同时还将介绍如何在程序中获取SIM卡和电池电量等信息,最后将以手机闹钟为例讲述如何自己开发特定功能的手机应用。
12.1 系统设置更改的事件 283
12.1.1 Configuration类简介 283
12.1.2 响应Configuration的变化 284
12.2 手机外观更改和提醒设置 286
12.2.1 手机壁纸的改变 286
12.2.2 手机振动的设置 290
12.2.3 音量调节 293
12.3 TelephonyManager的使用 296
12.3.1 TelephonyManager类简介 297
12.3.2 TelephonyManager的使用案例 297
12.4 手机电池电量 300
12.4.1 原理概述 300
12.4.2 电量提示案例 301
12.5 手机闹钟 302
12.5.1 AlarmManager简介 303
12.5.2 开发闹钟应用 303
12.6 小结 306
第13章 桌面组件与多媒体数据采集 307
本章将介绍Android中桌面组件及多媒体相关程序的开发,其中包括桌面快捷方式、实时文件夹、桌面控件、声音及图像的采集等。
13.1 桌面组件的介绍 307
13.2 桌面快捷方式 307
13.2.1 通过应用程序创建快捷方式 307
13.2.2 向Launcher添加快捷方式 310
13.3 实时文件夹 311
13.3.1 创建Activity 311
13.3.2 创建ContentProvider 312
13.4 桌面控件 313
13.4.1 桌面控件概述 313
13.4.2 开发简单的桌面控件 314
13.5 多媒体数据采集 315
13.5.1 录音 316
13.5.2 图像采集 319
13.6 小结 323
第14章 传感器应用的开发 324
Android系统的一大亮点之一就是对传感器的应用,利用传感器可以开发出很多新奇有趣的程序,小到水平仪、计步器,大到传感器游戏,本章将详细介绍各种传感器的原理及使用方法,并通过一个水平仪的开发向读者介绍传感器应用的开发方法,以及如何在模拟器中模拟各种传感器。
14.1 Android平台下传感器简介 324
14.1.1 加速度传感器Accelerometer 324
14.1.2 姿态传感器Orientation 329
14.1.3 磁场传感器Magnetic Field 332
14.1.4 温度传感器Temperature 333
14.1.5 光传感器Light 336
14.2 传感器应用案例 337
14.2.1 开发前的准备工作 337
14.2.2 自定义View的开发 337
14.2.3 开发主逻辑代码 339
14.2.4 运行与调试 342
14.3 小结 342
第15章 Google服务 343
本章将介绍如何在Android平台下开发基于Google服务的应用程序。Google提供了诸如GPS定位、Google Map、天气预报、网络相册和在线翻译等多种服务,将这些服务融合到应用程序中将会带来非常好的用户体验。
15.1 使用GPS获取位置 343
15.1.1 LocationManager及相关类简介 343
15.1.2 获取位置信息案例 344
15.2 Google Map的使用 347
15.2.1 获取Map API Key 347
15.2.2 创建模拟器 348
15.2.3 Google Map地图查询应用 349
15.2.4 Google Map导航应用 354
15.3 天气预报 360
15.3.1 使用SAX解析XML 360
15.3.2 使用Google API获取天气信息 360
15.4 口袋词典 364
15.4.1 Google Translate API简介 364
15.4.2 口袋词典的实现 365
15.5 Google街景 369
15.5.1 Android整合Google街景服务的原理 369
15.5.2 在程序中调用Google街景 369
15.6 小结 372
案 例 篇
第16章 Android游戏开发实践——快乐数独 373
益智类游戏是一种比较流行的游戏,其画面大都比较简单,很少有很复杂的游戏特效,但是通常用到人工智能的算法来控制游戏的难度。而算法的优化是开发该类游戏的难点。这类游戏主要包括棋牌类游戏和智力测试类游戏,例如麻将、扫雷、五子棋、扑克牌等。
数独就是益智游戏的一种,玩法简单但数字的排列方式千变万化,很多人认为数独是训练头脑的绝佳方式。本章通过讲解数独游戏在Android平台上的设计与实现,使读者了解此类游戏的开发过程,掌握实用的开发技巧,学会此类游戏的开发。
16.1 游戏的背景及功能概述 373
16.1.1 背景概述 373
16.1.2 功能简介 374
16.2 游戏的策划及准备工作 375
16.2.1 游戏的策划 375
16.2.2 Android平台下游戏的准备工作 375
16.3 游戏的架构 376
16.3.1 各类的简要介绍 376
16.3.2 游戏的框架简介 377
16.4 欢迎界面的设计与实现 378
16.4.1 主类KLSDActivity实现 378
16.4.2 欢迎界面WelcomeView类的实现 380
16.4.3 刷帧线程WelcomeViewDrawThread类的实现 383
16.4.4 动画生成线程WelcomeViewGoThread类的实现 384
16.5 “帮助”与“关于”界面的设计与实现 385
16.5.1 “帮助”界面HelpView类的实现 385
16.5.2 “关于”界面AboutView的实现 386
16.6 游戏界面的框架搭建 388
16.7 计时线程与数字键盘线程的开发 390
16.7.1 计时线程的开发 390
16.7.2 数字键盘线程的开发 391
16.8 数独生成器的开发 392
16.9 游戏界面逻辑方法的实现 394
16.9.1 初始化方法的完善 394
16.9.2 简单逻辑方法的完善 396
16.9.3 屏幕事件处理方法的完善 397
16.10 游戏界面绘画方法的完善 401
16.10.1 数字键盘的绘制方法drawKey ()的完善 401
16.10.2 绘画方法onDraw()的完善 402
16.11 游戏界面刷帧线程的实现 405
16.12 游戏的优化与改进 406
第17章 Android地图搜索应用——美食天下 407
第15章已经介绍了Google Map的简单使用,本章将通过之前介绍过的知识实现一个美食共享软件,其中包括服务端和手机端,希望通过本章的学习,读者能够掌握Android系统与Tomcat服务器的通信、Google地图的使用及各种控件的综合应用。
17.1 系统背景及功能概述 407
17.1.1 背景简介 407
17.1.2 功能概述 407
17.1.3 开发环境及目标平台 408
17.2 开发前的准备工作 409
17.2.1 数据库的设计 409
17.2.2 表的创建与记录插入 414
17.2.3 数据源的配置 415
17.3 Web端总体架构及功能预览 415
17.3.1 目录结构及系统框架 415
17.3.2 功能预览 416
17.4 Web端登录注册模块的实现 418
17.4.1 首页的搭建 418
17.4.2 用户注册功能的开发 424
17.4.3 用户登录功能的开发 428
17.4.4 用户注销功能的开发 431
17.5 Web端美食上传模块的实现 431
17.5.1 页面的搭建 431
17.5.2 图片上传组件FileUploadServlet的开发 435
17.5.3 DBUtil中相关方法的开发 437
17.6 Android端总体架构及功能预览 438
17.6.1 功能预览 439
17.6.2 总体架构 440
17.7 服务器的设计与实现 441
17.8 Android端登录界面的实现 443
17.8.1 开发前的准备工作 443
17.8.2 框架的搭建 445
17.8.3 监听方法的完善 448
17.8.4 记住密码功能的实现 449
17.8.5 服务器端的完善 450
17.9 Android端注册界面的实现 451
17.9.1 框架的搭建 451
17.9.2 监听方法的完善 453
17.9.3 服务器端的完善 455
17.10 Android端主界面MainActivity的实现 456
17.10.1 布局文件的开发 456
17.10.2 界面框架的搭建 457
17.10.3 初始化方法的完善 459
17.10.4 监听方法的完善 460
17.10.5 网络处理线程的实现 463
17.10.6 服务器端的完善 464
17.11 Android端地图界面的实现 468
17.11.1 布局文件的开发 468
17.11.2 地图界面的开发 469
17.12 美食信息界面的实现 472
17.13 系统的优化与改进 474
第18章 Android社交分享平台——口袋微博 475
本章将介绍社交分享平台——口袋微博的实现,该社交分享平台包括Web端和Android手机端两个部分。在介绍了整个系统的背景及功能架构之后,本书将对该系统在Web端和Android手机端的实现进行介绍。
18.1 系统背景及功能概述 475
18.1.1 背景简介 475
18.1.2 功能概述 475
18.1.3 开发环境和目标平台 476
18.2 开发前的准备工作 477
18.2.1 数据库设计 477
18.2.2 表的创建和测试数据的插入 482
18.2.3 数据源的配置 483
18.3 Web端功能预览及总体架构 484
18.3.1 Web端系统功能预览 484
18.3.2 系统目录结构 485
18.3.3 系统总架构 486
18.4 Web端主页的搭建 486
18.5 Web端登录注册模块的实现 488
18.5.1 用户登录功能的开发 488
18.5.2 用户注册功能的开发 491
18.5.3 用户注销功能的开发 494
18.6 查看和管理日志模块的实现 494
18.6.1 发布日志功能的开发 494
18.6.2 显示日志及评论功能的开发 496
18.6.3 编辑和删除日志功能的开发 498
18.7 查看和管理相册模块的实现 499
18.7.1 查看相册功能的开发 500
18.7.2 查看相册相片功能的实现 501
18.7.3 显示照片功能的实现 502
18.8 Android端功能预览及总体架构 503
18.8.1 Android端功能预览 503
18.8.2 Android端总架构 505
18.9 服务器的设计与实现 506
18.9.1 服务器的设计 506
18.9.2 服务器的实现 506
18.10 Android端的准备工作 509
18.10.1 图片资源的准备 509
18.10.2 XML资源文件的准备 510
18.11 登录注册模块的实现 511
18.11.1 登录模块的开发 511
18.11.2 记录账号密码功能的开发 516
18.11.3 服务器验证登录功能的实现 517
18.11.4 注册模块的开发 517
18.12 个人中心模块的实现 521
18.12.1 个人中心界面的开发 521
18.12.2 个人中心界面菜单功能的开发 523
18.13 快速发布模块的实现 524
18.13.1 发布日志和更新心情功能的实现 524
18.13.2 拍照上传界面的开发 527
18.13.3 UploadActivity通信功能的开发 530
18.14 查看联系人模块的实现 534
18.14.1 ContactsActivity界面的开发 534
18.14.2 ContactsActivity通信功能的开发 536
18.15 日志管理模块的实现 536
18.15.1 查看日志功能的开发 537
18.15.2 编辑日志功能的开发 539
18.16 相册管理模块的实现 539
18.16.1 相册查看和修改功能的实现 539
18.16.2 相片查看功能的实现 542
18.17 系统的优化与改进 544
⑶ 《Android6应用开发案例精解第3版》pdf下载在线阅读全文,求百度网盘云资源
《Android6应用开发案例精解第3版》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1VW8BgUrjThIwJQPrSTIPlw?pwd=xglc 提取码:xglc
简介:本书是美国知名编程教材的作者针对Android系统下进行应用开发而编写的一本入门级教程,全书以"应用驱动的方法”为基础,详细讲解了17个完整的Android应用的开发过程,并提供了8个APP应用的完整的源代码。这些应用经过精心挑选,从不同侧面展现了Android系统各个功能模块的编程方法。这些功能包括音频、视频、动画、电话、蓝牙、语音识别、加速度计、GPS、指北针、应用窗件、3D图形等, 它们都是从事Android应用开发所必须熟知的基本技术。
⑷ Android开发之蓝牙(Bluetooth)
在上一篇中有介绍了Wifi与网络连接处理
Android开发之WiFi与网络连接处理
下面,来继续说说Android中蓝牙的基本使用。
Bluetooth是目前使用的最广泛的无线通讯协议之一,主要针对短距离设备通讯(10米),常用于连接耳机、鼠标和移动通讯设备等。
值得一提的是:
android4.2新增了部分新功能,但是对于Bluetooth熟悉的人或许开始头疼了,那就是Android4.2引入了一个新的蓝牙协议栈针BLE。谷歌和Broadcom之间的合作,开发新的蓝牙协议栈,取代了基于堆栈的Bluez。因此市场上出现了老设备的兼容问题,很多蓝牙设备在android4.2手机上不能正常使用。
BluetoothAdapter简单点来说就是代表了本设备(手机、电脑等)的蓝牙适配器对象。
first:we need permission
要操作蓝牙,先要在AndroidManifest.xml里加入权限
**下面来看看如何使用蓝牙。 **↓↓↓****
Demo已就绪:
返回值:如果设备具备蓝牙功能,返回BluetoothAdapter 实例;否则,返回null对象。
打开蓝牙设备的方式:
1.直接调用函数enable()去打开蓝牙设备 ;
2.系统API去打开蓝牙设备,该方式会弹出一个对话框样式的Activity供用户选择是否打开蓝牙设备。
注意: 1.如果蓝牙已经开启,不会弹出该Activity界面。2.在目前大多数Android手机中,是不支持在飞行模式下开启蓝牙的。如果蓝牙已经开启,那么蓝牙的开关 ,状态会随着飞行模式的状态而发生改变。
1. 搜索蓝牙设备
使用BluetoothAdapter的startDiscovery()方法来搜索蓝牙设备
startDiscovery()方法是一个异步方法,调用后会立即返回。该方法会进行对其他蓝牙设备的搜索,该过程会持续12秒。该方法调用后,搜索过程实际上是在一个System Service中进行的,所以可以调用cancelDiscovery()方法来停止搜索(该方法可以在未执行discovery请求时调用)。
系统开始搜索蓝牙设备
^( *  ̄(oo) ̄ ) ^ 系统会发送以下三个广播:
2.扫描设备
3.定义广播接收器接收搜索结果
4.注册广播
获取附近的蓝牙设备
第一步建立连接:首先Android sdk(2.0以上版本)支持的蓝牙连接是通过BluetoothSocket建立连接,服务端BluetoothServerSocket和客户端(BluetoothSocket)需指定同样的UUID,才能建立连接,因为建立连接的方法会阻塞线程,所以服务器端和客户端都应启动新线程连接。
(这里的服务端和客户端是相对来说的)
两个蓝牙设备之间的连接,则必须实现服务端与客户端的机制。
当两个设备在同一个RFCOMM channel下分别拥有一个连接的BluetoothSocket,这两个设备才可以说是建立了连接。
服务端设备与客户端设备获取BluetoothSocket的途径是不同的。
1,服务端设备是通过accepted一个incoming connection来获取的,
2,客户端设备则是通过打开一个到服务端的RFCOMM channel来获取的。
服务端
通过调用BluetoothAdapter的(String, UUID)方法来获取BluetoothServerSocket(UUID用于客户端与服务端之间的配对)
客户端
调用BluetoothService的(UUID)方法获取BluetoothSocket(该UUID应该同于服务端的UUID)。
调用BluetoothSocket的connect()方法(该方法为block方法),如果UUID同服务端的UUID匹配,并且连接被服务端accept,则connect()方法返回。
数据传递,通过以上操作,就已经建立的BluetoothSocket连接了,数据传递无非是通过流的形式
获取流
该类就是关于远程蓝牙设备的一个描述。通过它可以和本地蓝牙设备---BluetoothAdapter连接通信。
好多东西我也不知道怎么描述,下面给出Demo:
刚好有刚学习的小伙伴问我ListView怎么用,那我就用ListView。
源码:
RairDemo
GitHub: https://github.com/Rairmmd/android-demo
Coding: https://coding.net/u/Rair/p/RairDemo/git
⑸ 如何优化SQLite-Android开发实例
SQLite是一个开源的嵌入式关系数据库,由D. Richard Hipp于2000年发布,它能减少应用程序管理数据的开销,可移植性好,很容易使用,高效而且可靠。本文是关于SQLite的优化方法,是比较重要的内容。
SQLite的数据库本质是文件读写操作,频繁操作打开和关闭是很耗时和浪费资源的,有必要进行相关优化。
优化方法事务机制:
这里要注意一点:事务的开启是要锁定DB的,其他对DB的写入操作都是无法成功的。
java代码
db.beginTransaction(); //手动设置开始事务
try {
//这里写你数据操作
db.setTransactionSuccessful();
//设置事务处理成功,不设置会自动回滚不提交
} catch (Exception e) {
} finaly {
db.endTransaction(); //提交
}
项目中不会把项目上万条数据存SQL里的,尽管android有SQLite。
那样处理起来非常慢,而且程序经常出现ANR。
打个比方:有200个城市,每个城市500条城市信息,你怎么创建表?
A:我创建一张表存10000条数据。
B:200张表,每张存500条数据。
C:我创建两张表:
一张存city,其实这张表只有1条数据。
Id(编号),
Version(这200个城市更新版本用)
CityDate(200个城市xml格式字符串数据)。
另一张表存城市信息表:200条数据,每个城市一条数据。
id(CityDate解析出城市对象对应的id)
Version(这500条城市信息更新版本用)
CityMessage(500条城市信息xml格式字符串数据)。
首先你给用户展示200城市(你只取了一条数据 200个城市xml格式字符串数据进行解析)
用户点击一个城市你显示500条记录(通过城市解析ID,取出城市信息表中对应500数据xml格式字符串数据进行解析)
这样做的好处:
(1)统一数据接口,无论你从网络上直接去数据,还是读本地缓存统一数据接口,xml
(2)数据进行排序,内存操作要快一些;
(3)其实这和自己写文件没什么区别,为什么还要用数据库那,这么做有利于程序版本更新升级数据维护!
⑹ 昆明北大青鸟分享Android开发需要学习哪些内容
随着移动互联网的发展,各种智能手机APP接踵而来,在手机APP应用市场中,数量最多的就是Android开发的手机软件了。Android开发也成为当下较热门行业。那么,昆明北大青鸟http://www.kmbdqn.com/就告诉你,想要学习Android开发,需要学习哪些课程?
Java面向对象编程
1、Java基本数据类型与表达式,分支循环。
2、String和StringBuffer的使用、正则表达式。
3、面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收;构造函数、this关键字、方法和方法的参数传递过程、static关键字、内部类,Java的垃极回收机制,Javadoc介绍。
4、对象实例化过程、方法的覆盖、final关键字、抽象类、接口、继承的优点和缺点剖析;对象的多态性:子类和父类之间的转换、抽象类和接口在多态中的应用、多态带来的好处。
5、Java异常处理,异常的机制原理。
6、常用的设计模式:Singleton、Template、Strategy模式。
7、JavaAPI介绍:种基本数据类型包装类,System和Runtime类,Date和DateFomat类等。
8、Java集合介绍:Collection、Set、List、ArrayList、Vector、LinkedList、Hashset、TreeSet、Map、HashMap、TreeMap、Iterator、Enumeration等常用集合类API。
9、JavaI/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应实现类,IO性能分析,字节和字符的转化流,包装流的概念,以及常用包装类,计算机编码。
10、Java高级特性:反射、代理和泛型。
11、多线程原理:如何在程序中创建多线程(Thread、Runnable),线程安全问题,线程的同步,线程之间的通讯、死锁。
12、Socket网络编程。
Javaweb开发
1、Java解析XML文件DOM4J。
2、MySql数据库的应用、多表连接查询的应用。
3、Jsp和Servlet应用。
4、Http协议解析。。
5、Tomcat服务器的应用配置。
6、WebService服务配置应用。
androidUI编程
1、Android开发环境搭建:Android介绍,Android开发环境搭建,先进个Android应用程序,Android应用程序目录结构。
2、Android初级控件的使用:TextView控件的使用Button控件的使用方法EditText控件的使用方法ImageView的使用方法RadioButton的使用方法Checkbox的使用方法Menu的使用方法。
3、Android高级控件的使用:Autocompletion的使用方法ListView的使用方法GridView的使用方法Adapter的使用方法Spinner的使用方法Gallary的使用方法ScrollView的使用方法。
4、对话框与菜单的使用:Dialog的基本概念AlertDialog的使用方法DatePickerDialog的使用方法Menu的使用方法自定义Menu的实现方法。
5、控件的布局方法:线性布局的使用方法相对布局的使用方法表格布局的使用方法。
6、多Acitivity管理:AndroidManifest.xml文件的作用,Intent的使用方法,使用Intent传递数据的方法,启动Activity的方法,IntentFilter的使用方法,ActivityGroup的使用方法。
7、自定义控件实现方法:自定义ListView的实现方法,可折叠ListView的使用方法,自定义Adapter的实现方法,自定义View的实现方法,动态控件布局的上实现方法。
⑺ 如何优化SQLite-Android开发实例
关于SQLite的优化,首先是能用SQL语句的,就不要单笔操作,Cursor就更是能不用就不用。比如成批的DELETE/UPDATE,将条件组装到SQL语句,会比使用CURSOR一条条的查再删效率要高很多(若干年前就曾使用存储过程代替单笔操作,将一次批量计算时间从一晚上缩到了一小时以内)。其次是对操作的优化:对于INSERT/UPDATE操作较多时使用事务,如果SELECT操作较多时,使用索引。结合现在的工作,发现针对操作的优化,下面这篇文章可以翻译出来归档。以下为正文:SQLite有一个简洁的SQL接口,且以低内存占用着称。现如今,SQLite已经在Android及iOS开发中得到广泛的应用。本文主要讨论在Android应用如何优化SQLite的性能和资源占用。1,使用事务(Transaction)在默认情况下每一个SQL语句都被包一个全新的事务内,比如执行一个如INSERT这样基本的数据库操作,就会放到一个新创建的事务中执行。一次只需要操作一次数据库操作时,让SQLite自己来进行事务管理当然是明智的。但如果一次有大量的操作要做时,比如循环调用INSERT添加时,这样就显得开销过大了,因为每一笔操作都要重新打开、写入,最后再关闭journal文件,这个文件是临时用来保存数据操作的中间结果,详细内容看这里(参考)。如果明确地在一系列SQL语句前后以BEGINTRANSACTION及ENDTRANSACTION这样显示地使用事务就可以避免上面的情况。对于那些不会改变数据的操作,这样的方式也同样可以提速(好似数据库操作中单笔的操作效率将远低于批次操作,如果用SQL语句可以搞定的事,就不可使用Cursor进行操作)。注明:除了发起事务外,你必须还要负责对事务的提交和回滚操作。在Android应用开发中可以使用类似如下的方式使用BEGINTRANSACTION及ENDTRANSACTION:db.beginTransaction();try{for(inti=0;i
⑻ Android多线程:实现Runnable接口使用解析(含实例教程)
特别注意:
很多情况下,开发者会选择一种更加方便的方法去创建线程: 匿名类
2种方法本质相同,但是各有优劣势 & 不同的应用场景:
main_activity.xml
MainActivity.java
MainActivity.java
MainActivity.java
不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。
⑼ Android开发之ImageView播放GIF动画实例
Android开发之ImageView播放GIF动画实例
Android的原生控件并不支持播放GIF格式的图片,如果想在Android中显示一张GIF动态图片,可以利用 ImageView控件来完成,但是放进去之后,你会发现,ImageView它只会显示这张图片的第一帧,不会产生任何的动画效果。我们必须通过自定义控件的方式来实现ImageView播放GIF 图片的功能。
首先我们来编写一个PowerImageView控件,让它既能支持ImageView控件原生的所有功能,同时还可以播放GIF动态图片。
先新建一个项目PowerImageViewTest,这里使用Android 4.0+Eclipse。
由于是要自定义控件,会需要一些自定义的控件属性,因此我们需要在values目录下新建一个attrs.xml的文件,在这个文件中添加项目需要的自定义属性。
这里我们目前暂时只需要一个自动播放auto_play属性,XML文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
这个文件完成之后,下面我们来开始编写主类PowerImageView类,由于PowerImageView类需要支持ImageView的所有功能,我们必须要让PowerImageView继承自ImageView,代码如下:
public class PowerImageView extends ImageView implements OnClickListener {
/**
* 播放GIF动画的关键类
*/
private Movie mMovie;
/**
* 开始播放按钮图片
*/
private Bitmap mStartButton;
/**
* 记录动画开始的时间
*/
private long mMovieStart;
/**
* GIF图片的宽度
*/
private int mImageWidth;
/**
* GIF图片的高度
*/
private int mImageHeight;
/**
* 图片是否正在播放
*/
private boolean isPlaying;
/**
* 是否允许自动播放
*/
private boolean isAutoPlay;
/**
* PowerImageView构造函数。
*
* @param context
*/
public PowerImageView(Context context) {
super(context);
}
/**
* PowerImageView构造函数。
*
* @param context
*/
public PowerImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
/**
* PowerImageView构造函数,在这里完成所有必要的初始化操作。
*
* @param context
*/
public PowerImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PowerImageView);
int resourceId = getResourceId(a, context, attrs);
if (resourceId != 0) {
// 当资源id不等于0时,就去获取该资源的流
InputStream is = getResources().openRawResource(resourceId);
// 使用Movie类对流进行解码
mMovie = Movie.decodeStream(is);
if (mMovie != null) {
// 如果返回值不等于null,就说明这是一个GIF图片,下面获取是否自动播放的属性
isAutoPlay = a.getBoolean(R.styleable.PowerImageView_auto_play, false);
Bitmap bitmap = BitmapFactory.decodeStream(is);
mImageWidth = bitmap.getWidth();
mImageHeight = bitmap.getHeight();
bitmap.recycle();
if (!isAutoPlay) {
// 当不允许自动播放的时候,得到开始播放按钮的图片,并注册点击事件
mStartButton = BitmapFactory.decodeResource(getResources(),R.drawable.start_play);
setOnClickListener(this);
}
}
}
}
@Override
public void onClick(View v) {
if (v.getId() == getId()) {
// 当用户点击图片时,开始播放GIF动画
isPlaying = true;
invalidate();
}
}
@Override
protected void onDraw(Canvas canvas) {
if (mMovie == null) {
// mMovie等于null,说明是张普通的图片,则直接调用父类的onDraw()方法
super.onDraw(canvas);
} else {
// mMovie不等于null,说明是张GIF图片
if (isAutoPlay) {
// 如果允许自动播放,就调用playMovie()方法播放GIF动画
playMovie(canvas);
invalidate();
} else {
// 不允许自动播放时,判断当前图片是否正在播放
if (isPlaying) {
// 正在播放就继续调用playMovie()方法,一直到动画播放结束为止
if (playMovie(canvas)) {
isPlaying = false;
}
invalidate();
} else {
// 还没开始播放就只绘制GIF图片的第一帧,并绘制一个开始按钮
mMovie.setTime(0);
mMovie.draw(canvas, 0, 0);
int offsetW = (mImageWidth - mStartButton.getWidth()) / 2;
int offsetH = (mImageHeight - mStartButton.getHeight()) / 2;
canvas.drawBitmap(mStartButton, offsetW, offsetH, null);
}
}
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mMovie != null) {
// 如果是GIF图片则重写设定PowerImageView的大小
setMeasuredDimension(mImageWidth, mImageHeight);
}
}
/**
* 开始播放GIF动画,播放完成返回true,未完成返回false。
*
* @param canvas
* @return 播放完成返回true,未完成返回false。
*/
private boolean playMovie(Canvas canvas) {
long now = SystemClock.uptimeMillis();
if (mMovieStart == 0) {
mMovieStart = now;
}
int ration = mMovie.ration();
if (ration == 0) {
ration = 1000;
}
int relTime = (int) ((now - mMovieStart) % ration);
mMovie.setTime(relTime);
mMovie.draw(canvas, 0, 0);
if ((now - mMovieStart) >= ration) {
mMovieStart = 0;
return true;
}
return false;
}
/**
* 通过Java反射,获取到src指定图片资源所对应的id。
*
* @param a
* @param context
* @param attrs
* @return 返回布局文件中指定图片资源所对应的id,没有指定任何图片资源就返回0。
*/
private int getResourceId(TypedArray a, Context context, AttributeSet attrs) {
try {
Field field = TypedArray.class.getDeclaredField("mValue");
field.setAccessible(true);
TypedValue typedValueObject = (TypedValue) field.get(a);
return typedValueObject.resourceId;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (a != null) {
a.recycle();
}
}
return 0;
}
}
这个类的代码注释已经非常详细了,我再来简单地解释一下。可以看到,我们重写了ImageView中所有的构建函数,使得 PowerImageView的用法可以和ImageView完全相同。在构造函数中,则是对所有必要的数据进行了初始化操作。首先,我们调用了 getResourceId()方法去获取图片资源对应的id值,在getResourceId()方法内部是通过Java的反射机制来进行获取的。得到了图片资源的id后,我们将它转换成InputStream,然后传入到Movie.decodeStream()方法中以解码出Movie对象。如果得到的Movie对象等于null,说明这是一张普通的图片资源,就不再进行任何特殊处理,因为父类ImageView都帮我们处理好了。如果得到的 Movie对象不等于null,则说明这是一张GIF图片,接着就要去获取是否允许自动播放、图片的宽高等属性的值。如果不允许自动播放,还要给播放按钮 注册点击事件,默认是不允许自动播放的。
接下来会进入到onMeasure()方法中。在这个方法中我们进行判断,如果这是一张GIF图片,则需要将PowerImageView的宽高重定义,使得控件的大小刚好可以放得下这张GIF图片。
再往后就会进入到onDraw()方法中。在这个方法里同样先判断当前是一张普通的图片还是GIF图片,如果是普通的图片就直接调用 super.onDraw()方法交给ImageView去处理就好了。如果是GIF图片,则先判断该图是否允许自动播放,允许的话就调用 playMovie()方法去播放GIF图片就好,不允许的话则会先在PowerImageView中绘制该GIF图片的第一帧,并在图片上绘制一个播放 按钮,当用户点击了播放按钮时,再去调用playMovie()方法去播放GIF图片。
下面我们来看看playMovie()方法中是怎样播放GIF图片的吧。可以看到,首先会对动画开始的时间做下记录,然后对动画持续的时间做下记 录,接着使用当前的时间减去动画开始的时间,得到的时间就是此时PowerImageView应该显示的那一帧,然后借助Movie对象将这一帧绘制到屏 幕上即可。之后每次调用playMovie()方法都会绘制一帧图片,连贯起来也就形成了GIF动画。注意,这个方法是有返回值的,如果当前时间减去动画 开始时间大于了动画持续时间,那就说明动画播放完成了,返回true,否则返回false。
完成了PowerImageView的编写,下面我们就来看一看如何使用它吧,其实非常简单,打开或新建activity_main.xml,代码如下所示:
<relativelayout p=""
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.powerimageviewtest.powerimageview p=""
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/anim"
/>
可以看到,PowerImageView的用法和ImageView几乎完全一样,使用android:src属性来指定一张图片即可,这里指定的anim就是一张GIF图片。然后我们让PowerImageView在布局里居中显示MainActivity中的代码都是自动生成的,这里就不再贴出来了。在AndroidManifest.xml中还有一点需要注意,有些4.0 以上系统的手机启动了硬件加速功能之后会导致GIF动画播放不出来,因此我们需要在AndroidManifest.xml中去禁用硬件加速功能,可以通过指定android:hardwareAccelerated属性来完成,代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest p=""
package="com.example.powerimageviewtest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk p=""
android:minSdkVersion="14"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:hardwareAccelerated="false"
>
android:name="com.example.powerimageviewtest.MainActivity"
android:label="@string/app_name" >
现在可以来运行一下代码了,一打开程序你就会看到GIF图片的第一帧,点击图片之后就可以播放GIF动画了。
然后我们还可以通过修改activity_main.xml中的代码,给它加上允许自动播放的属性,代码如下所示:
<relativelayout p=""
xmlns:attr="http://schemas.android.com/apk/res/com.example.powerimageviewtest"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.powerimageviewtest.powerimageview p=""
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/anim"
attr:auto_play="true"
/>
这里使用了刚才我们自定义的属性,通过attr:auto_play来启用和禁用自动播放功能。现在将auto_play属性指定成true后,PowerImageView上就不会再显示一个播放按钮,而是会循环地自动播放动画。不仅如此,PowerImageView还继承了ImageView原生的所有功能,只要指定的不是GIF图 片,PowerImageView表现的结果就和ImageView完全一致,现在我们来放一张普通的PNG图片,修改 activity_main.xml中的代码,如下所示:
<relativelayout p=""
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.powerimageviewtest.powerimageview p=""
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/myphoto"
/>
这里在src属性里面指定了一张名字为myphoto的PNG图片,图片在布局正中央显示出来了,正是普通ImageView所具备的功能。我们还可以在PowerImageView中指定android:scaleType等属性,用法和原生的ImageView完全一样。
⑽ Android核心技术与实例详解的前 言
Android是Google于2007年11月推出的一款开放的嵌入式操作系统平台,由于其完全开源的特性,Android正以空前的速度吸引着大批开发者的加入。为了帮助众多的软件开发人员尽快地掌握Android平台的相关知识,尽快地步入实际项目的开发中来,作者根据多年项目开发经验编写了此书。
本书既介绍了Android应用程序基本框架,也对Android平台的各种控件进行了讲解,还通过三个真实案例向读者介绍了Android应用程序完整的开发步骤。通过本书读者可以尽快地掌握在Android平台下进行开发的相关知识。
本书特点
1.内容饱满,由浅入深
本书内容既包括Android平台下开发的基础知识,也有项目编程的实用技巧,还提供了多个真实案例供读者学习。本书在知识的层次上由浅入深,使读者可以从Android的门外汉平稳、快速地步入Android开发的殿堂。
2.结构清晰、语言简洁
本书中所有案例都是按照笔者的实际开发过程进行介绍的,同时也是按照真实项目的开发流程进行的,结构清晰,语言简洁,便于实际练习。为了帮助读者更好地理解相关知识点,全书穿插了很多实用技巧及温馨提示。
3.实用超值的光盘
为了帮助读者更好地掌握与实践Android平台下应用程序的开发,本书附赠DVD光盘一张,其中包括案例的多媒体视频、电子教案(PPT)和实例源代码等。
4.实际商业案例
本书最后的三个案例都有实际商业价值,如果进行开发,价格要数万元,笔者将其完整地展现给了读者。
本书内容导读
本书共分三篇,第一篇介绍了在Android平台下进行应用程序开发的基本知识,主要对Android应用程序框架及用户界面的开发进行了介绍。章 名 主 要 内 容
第1章 Android开发起步 简要说明Android平台的来历及其特性,同时介绍了在Android平台下开发用户界面的基本知识
第2章 Android应用程序的构成 对Android平台下的应用程序构成进行了介绍,同时还介绍了应用程序基本组件(如Activity等)的相关知识
第3章 Android布局管理器 初步介绍Android平台下用户界面的开发,主要对布局管理器(如线性布局等的用法)进行了介绍
第4章 Android常用基本控件 介绍了Android平台用户界面中基本控件(如按钮和文本框等)的特性及其用法
第5章 Android常用高级控件 继续上一章的内容,对Android平台用户界面中的高级控件的相关知识和用法进行了介绍
第6章 菜单与对话框 介绍了Android平台选项菜单、上下文菜单和子菜单等的相关知识,同时还将各种对话框的用法进行了详细的介绍
第7章 Android事件处理模型 对Android平台下用户界面开发中常用到的事件处理模型进行了介绍
第二篇介绍如何在Android平台下进行高级应用程序的开发,包括游戏和基于OpenGL ES的3D应用程序的开发,以及与针对手机特性和网络服务程序的开发。
章 名 主 要 内 容
第8章 游戏与3D应用程序开发 向读者介绍了在Android平台下进行游戏开发的相关知识,同时还对Android平台下3D应用程序的开发进行了初步介绍
第9章 消息广播与服务 对Android平台下基于Intent的消息广播机制进行了介绍,同时通过一个比较大的案例说明Service组件的用法
第10章 网络与数据处理 简要介绍了在Android平台下进行网络编程的相关知识,同时还对Android平台下的SQLite等数据处理机制进行了介绍
第11章 手机通信功能开发 通过实例对Android平台下基于手机通信功能(如打电话、发短信和E-mail)的开发进行了介绍
第12章 手机特有Feature开发 介绍了如何基于Android平台对手机的特性进行开发,如改变壁纸、控制手机振动和音量等
第13章 桌面组件与多媒体数据采集 简单介绍了如何在Android平台下开发包括快捷方式和实时文件夹等在内的桌面组件的流程,以及如何在程序中对多媒体数据(如音频和图像)等进行采集的步骤
第14章 传感器应用的开发 对Android平台下传感器的相关知识进行了简单介绍,并通过案例来讲解开发基于传感器的应用程序的步骤
第15章 Google服务 介绍了在应用程序中与Google提供的如Google Map等网络服务进行混搭的开发步骤
第三篇以三个比较大的案例来说明Android平台下大型应用的开发流程,通过这三个案例的讲解,读者对Android开发将会有更深层次的理解。
章 名 主 要 内 容
第16章 Android游戏开发实践——快乐数独 介绍了手机游戏《快乐数独》的开发,通过该案例向读者介绍了在Android平台下进行游戏开发的相关知识和基本流程,并对游戏开发中的编程技巧进行了介绍
第17章 Android地图搜索应用——美食天下 介绍了地图搜索应用《美食天下》的开发,该应用包括Web端和Android手机端,通过该案例向读者介绍了在Android平台下开发大型应用的基本步骤
第18章 Android社交分享平台——口袋微博 介绍了社交分享平台《口袋微博》的开发,该平台包括Web端和Android手机端,通过该案例向读者介绍了基于客户端/服务器模式的网络应用程序开发的基本步骤
本书面向的读者
本书的内容十分详细,几乎涵盖了Android相关的所有技术,并向读者介绍了真实项目的开发流程,主要面向以下读者。
Android初学者:本书详细介绍了Android的基础知识及各种控件,并对Android平台下3D程序的开发进行了介绍,Android初学者通过本书可以快速、全面地掌握Android平台相关知识,快速地步入Android开发人员的行列。
有一定Java基础且希望学习Android开发的读者:Android平台下的开发基于Java语言,有一定Java基础的读者通过阅读本书的前半部分便可快速地掌握Android的各种组件及基础控件,然后通过三个真实案例的学习迅速地掌握Android平台下的应用程序开发。
在职的开发人员:本书中的案例都是作者精心挑选的,其中涉及的相关知识均是作者多年来积累的编程经验及心得体会。具有一定开发经验的在职开发人员可以通过本书进一步巩固Android的基础知识,并迅速成为高级的Android开发人员。
本书作者
吴亚峰,毕业于北京邮电大学,后留学澳大利亚卧龙岗大学取得硕士学位。1998年开始从事Java的开发,有十多年的Java开发与培训经验。主要的研究方向为手机游戏、Java EE、搜索引擎,现为手机游戏、Java EE独立软件开发工程师,同时兼任Sun授权Java培训中心认证教师。为数十家着名企业培训了上千名软件开发人员,曾编写过《Java SE 6.0编程指南》、《30天学通Java Web项目案例开发》、《Java程序员职场全攻略:从小工到专家》、《Android 2.0游戏开发实战宝典》等畅销技术书籍。2008年开始关注Android平台下的应用开发,并开发出一系列优秀的Android应用程序。
索依娜,毕业于燕山大学,从业于计算机软件领域9年,在软件开发和计算机教学方面有着丰富的经验。工作期间曾参与省级科研项目2项、市级科研项目1项、发表论文多篇;同时为多个厂矿,企事业单位设计、开发了信息管理系统;从2008年开始关注Android平台下应用的开发,参与开发了多款手机娱乐应用。
另外,昊燃、方振宇、陈冠佐、傅奎、陈勤、梁洋洋、毕梦飞、陈庆、柴相花、陈非凡、陈华、陈嵩、承卓也参与了本书的编写。在此表示感谢!
本书在编写过程中得到了唐山百纳科技有限公司Java培训中心的大力支持,同时 于庭龙、魏鹏飞、王海峰及作者的家人为本书的编写提供了很多帮助,在此表示衷心感谢!
由于编者的水平和学识有限,且书中涉及的知识较多,难免有疏漏之处,敬请广大读者朋友批评指正。
编者