好书推荐 好书速递 排行榜 读书文摘

精通Android

精通Android
作者:[印] Satya Komatineni / [美] Dave MacLean
译者:曾少宁 / 杨越
出版社:人民邮电出版社
出版年:2013-01
ISBN:9787115297150
行业:计算机
浏览数:4

内容简介

《精通Android》在上一版的基础上进行了全面改进,不仅在结构上有了相应的调整,内容上更是与时俱进,增加了Android内部构件的相关知识,介绍了线程、进程、长期运行的服务、广播接收程序、闹钟管理器、设备配置变化和异步任务。关于碎片、碎片对话框、ActionBar和拖放等全新内容更是映入大家的眼帘。此外,《精通Android》对服务和传感器的相关章节做了大幅改进。《精通Android》囊括了Android开发人员所需的一切知识,既可为Android开发人员夯实基础,又能提高Android开发人员的技能。

......(更多)

作者简介

Satya Komatineni

印度理工大学电子工程专业硕士。有20多年的程序设计经验,开发过用于Java Web开发的简单开源工具AspireWeb(www.activeintellect.com/aspire)以及开源个人Web 操作系统——Aspire Knowledge Central(www.knowledgefolders.com)。擅长使用Java、.NET和数据库技术进行Web开发,发表过30多篇这方面的文章。他经常在与创新技术相关的行业大会上发言,并为java.net上的网络博客撰稿。

Dave MacLean

加拿大滑铁卢大学系统设计工程专业学士。早在1980年就从事软件开发工作,使用过多种语言进行编程,曾开发机器人自动化、数据仓库、Web自助服务应用程序、EDI事务处理器等系统。Dave曾在Sun、IBM、Trimble Navigation及通用汽车等公司工作。

......(更多)

目录

第1章  Android计算平台简介  1

1.1  面向新PC的全新平台  1

1.2  Android的历史  2

1.3  Dalvik VM剖析  4

1.4  理解Android软件栈  5

1.5  使用Android SDK开发最终用户应用程序  6

1.5.1  Android模拟器  6

1.5.2  Android UI  7

1.5.3  Android基础组件  7

1.5.4  高级UI概念  8

1.5.5  Android Service组件  10

1.5.6  Android媒体和电话组件  10

1.5.7  Android Java包  11

1.6  利用Android源代码  14

1.6.1  在线浏览Android源代码  14

1.6.2  使用Git下载Android源代码  15

1.7  本书的示例项目  16

1.8  小结  16

第2章  设置开发环境  17

2.1  设置环境  17

2.1.1  下载JDK 6  18

2.1.2  下载Eclipse 3.6  19

2.1.3  下载Android SDK  19

2.1.4  命令行窗口  20

2.1.5  安装ADT  21

2.2  了解基本组件  23

2.2.1  View  23

2.2.2  Activity  23

2.2.3  Fragment  24

2.2.4  Intent  24

2.2.5  ContentProvider  24

2.2.6  Service  24

2.2.7  AndroidManifest.xml  24

2.2.8  AVD  25

2.3  Hello World!  25

2.4  AVD  29

2.5  在真实设备上运行  30

2.6  剖析Android应用程序的结构  31

2.7  了解应用程序生命周期  33

2.8  简单调试  35

2.9  参考资料  37

2.10  小结  37

2.11  面试问题  37

第3章  使用Android资源  39

3.1  资源  39

3.1.1  字符串资源  39

3.1.2  布局资源  41

3.1.3  资源引用语法  43

3.1.4  定义资源ID供以后使用  44

3.1.5  已编译和未编译的Android资源  45

3.2  Android关键资源  46

3.3  使用任意XML资源文件  54

3.4  使用原始资源  55

3.5  使用资产  56

3.6  了解资源目录结构  56

3.7  资源和配置更改  56

3.8  参考资料URL  59

3.9  小结  60

3.10  面试问题  60

第4章  ContentProvider  62

4.1  探索Android内置的ContentProvider  63

4.1.1  在模拟器和可用设备上利用数据库  63

4.1.2  快速了解SQLite  66

4.2  ContentProvider的架构  66

4.2.1  Android内容URI的结构  68

4.2.2  Android MIME类型的结构  68

4.2.3  使用URI读取数据  70

4.2.4  使用游标  71

4.2.5  使用where子句  72

4.2.6  插入记录  74

4.2.7  将文件添加到ContentProvider中  75

4.2.8  更新和删除  76

4.3  实现ContentProvider  76

4.3.1  计划数据库  76

4.3.2  扩展ContentProvider  78

4.3.3  履行MIME类型契约  83

4.3.4  实现query方法  83

4.3.5  实现insert方法  83

4.3.6  实现update方法  84

4.3.7  实现delete方法  84

4.3.8  使用UriMatcher来解析URI  84

4.3.9  使用投影映射  85

4.3.10  注册提供程序  86

4.4  练习图书提供程序  86

4.4.1  添加图书  86

4.4.2  删除图书  87

4.4.3  获取图书数量  87

4.4.4  显示图书列表  87

4.5  资源  88

4.6  小结  89

4.7  面试问题  89

第5章  Intent  90

5.1  Android Intent基础知识  90

5.2  Android中可用的Intent  91

5.3  Intent的组成  93

5.3.1  Intent和数据URI  93

5.3.2  一般操作  94

5.3.3  使用extra信息  95

5.3.4  使用组件直接调用活动  96

5.3.5  Intent类别  97

5.3.6  将Intent解析为组件的规则  99

5.4  练习使用ACTION_PICK  101

5.5  练习使用GET_CONTENT操作  103

5.6  挂起的Intent  104

5.7  资源  105

5.8  小结  106

5.9  面试问题  106

第6章  构建用户界面和使用控件  107

6.1  Android中的UI开发  107

6.1.1  完全利用代码来构建UI  108

6.1.2  完全使用XML构建UI  110

6.1.3  使用XML结合代码构建UI  111

6.2  Android中的常见控件  113

6.2.1  文本控件  113

6.2.2  按钮控件  116

6.2.3  ImageView控件  123

6.2.4  日期和时间控件  124

6.2.5  MapView控件  127

6.3  适配器  127

6.3.1  SimpleCursorAdapter  128

6.3.2  了解ArrayAdapter  129

6.4  结合使用适配器和AdapterView  131

6.4.1  基本的列表控件:ListView  131

6.4.2  GridView控件  138

6.4.3  Spinner控件  140

6.4.4  Gallery控件  141

6.4.5  创建自定义适配器  142

6.4.6  Android中的其他控件  146

6.5  样式和主题  147

6.5.1  使用样式  147

6.5.2  使用主题  149

6.6  布局管理器  150

6.6.1  LinearLayout布局管理器  150

6.6.2  TableLayout布局管理器  153

6.6.3  RelativeLayout布局管理器  156

6.6.4  FrameLayout布局管理器  157

6.6.5  GridLayout布局管理器  159

6.6.6  为各种设备配置自定义布局  160

6.7  参考资料  161

6.8  小结  161

6.9  面试问题  161

第7章  使用菜单  163

7.1  Android菜单  163

7.1.1  创建菜单  164

7.1.2  使用菜单组  165

7.1.3  响应菜单项  166

7.2  使用其他菜单类型  168

7.2.1  展开的菜单  168

7.2.2  使用图标菜单  169

7.2.3  使用子菜单  169

7.2.4  使用上下文菜单  170

7.2.5  使用交替菜单  173

7.2.6  动态菜单  175

7.3  通过XML文件加载菜单  175

7.3.1  XML菜单资源文件的结构  176

7.3.2  填充XML菜单资源文件  177

7.3.3  响应基于XML的菜单项  177

7.3.4  4.0版本中的弹出式菜单  178

7.3.5  其他XML菜单标记简介  179

7.4  资源  181

7.5  小结  181

7.6  面试问题  181

第8章  多用途的碎片  183

8.1  什么是碎片  183

8.1.1  何时使用碎片  184

8.1.2  碎片的结构  185

8.1.3  碎片的生命周期  186

8.1.4  展示生命周期的示例碎片应用程序  189

8.2  FragmentTransactions和碎片后退栈  194

8.3  FragmentManager  196

8.3.1  引用碎片时的注意事项  197

8.3.2  保存片段状态  198

8.3.3  ListFragments和<fragment>  198

8.3.4  在需要时调用独立的活动  200

8.3.5  碎片的持久化  201

8.4  碎片之间的通信方式  202

8.5  使用ObjectAnimator自定义动画  203

8.6  参考资料  205

8.7  小结  205

8.8  面试问题  206

第9章  对话框  207

9.1  使用Android对话框  207

9.2  对话框碎片  207

9.2.1  DialogFragment的基础知识  208

9.2.2  构建对话框碎片  208

9.2.3  DialogFragment示例应用程序  212

9.3  使用Toast  220

9.4  旧版本Android的对话框碎片  221

9.5  参考资料  221

9.6  小结  222

9.7  面试问题  222

第10章  ActionBar  223

10.1  ActionBar剖析  223

10.2  选项卡导航操作栏活动  225

10.2.1  实现基础活动类  225

10.2.2  为ActionBar分配统一的行为  227

10.2.3  实现选项卡监听器  229

10.2.4  实现选项卡操作栏活动  230

10.2.5  可滚动的调试文本视图布局  232

10.2.6  操作栏和菜单交互  233

10.2.7  Android描述文件  235

10.2.8  测试选项卡操作栏活动  235

10.3  列表导航操作栏活动  236

10.3.1  创建SpinnerAdapter  236

10.3.2  创建列表监听器  237

10.3.3  设置列表操作栏  237

10.3.4  更改BaseActionBar-Activity  238

10.3.5  更改AndroidManifest.xml  238

10.3.6  测试列表操作栏活动  239

10.4  标准导航操作栏活动  240

10.4.1  设置标准导航操作栏活动  240

10.4.2  更改BaseActionBar-Activity  241

10.4.3  更改AndroidManifest.xml  242

10.4.4  测试标准操作栏活动  242

10.5  工具栏与搜索视图  243

10.5.1  将搜索视图部件定义为菜单项  244

10.5.2  配置搜索结果活动  244

10.5.3  通过可搜索XML文件自定义搜索  245

10.5.4  在配置清单文件中定义搜索结果活动  245

10.5.5  确定搜索视图部件的搜索目标  245

10.6  操作栏和碎片  246

10.7  参考资料  246

10.8  小结  247

10.9  面试问题  247

第11章  高级调试与分析  249

11.1  启用高级调试  249

11.2  Debug透视图  249

11.3  DDMS透视图  250

11.4  Hierarchy View透视图  252

11.5  Traceview  253

11.6  adb命令  254

11.7  模拟器控制台  255

11.8  StrictMode  255

11.8.1  StrictMode策略  255

11.8.2  关闭StrictMode  256

11.8.3  在旧版本Android上使用StrictMode  257

11.8.4  StrictMode练习  258

11.9  参考资料  259

11.10  小结  259

11.11  面试问题  259

第12章  响应配置变化  261

12.1  配置变化过程  261

12.1.1  活动的销毁/创建过程  262

12.1.2  碎片的销毁/创建过程  263

12.1.3  使用FragmentManager保存碎片状态  264

12.1.4  使用碎片的setRetain-Instance  264

12.2  弃用的配置变化方法  264

12.3  参考资料  265

12.4  小结  265

12.5  面试问题  265

第13章  首选项及保存状态  266

13.1  探索首选项框架  266

13.1.1  ListPreference  266

13.1.2  CheckBoxPreference  273

13.1.3  EditTextPreference  275

13.1.4  RingtonePreference及MultiSelectListPreference  276

13.2  组织首选项  276

13.2.1  使用PreferenceCategory  276

13.2.2  创建依赖的子首选项  279

13.2.3  带标题的首选项  279

13.3  以编程方式操作首选项  281

13.3.1  使用首选项保存状态  281

13.3.2  使用DialogPreference  282

13.4  参考资料  283

13.5  小结  283

13.6  面试问题  283

第14章  探索安全性和权限  284

14.1  理解Android安全性模型  284

14.1.1  安全性概念概述  284

14.1.2  为部署签名应用程序  285

14.2  执行运行时安全性检查  290

14.2.1  进程边界上的安全性  290

14.2.2  声明和使用权限  290

14.2.3  理解和使用自定义权限  292

14.2.4  理解和使用URI权限  297

14.3  参考资料  298

14.4  小结  298

14.5  面试问题  299

第15章  构建和使用服务  300

15.1  使用HTTP服务  300

15.1.1  将HttpClient用于HTTP GET请求  300

15.1.2  将HttpClient用于HTTP POST请求(多部分POST请求示例)  302

15.1.3  SOAP、JSON和XML分析程序  304

15.1.4  处理异常  305

15.1.5  解决多线程问题  307

15.1.6  有趣的超时  309

15.1.7  使用HttpURLConnection  310

15.1.8  使用AndroidHttpClient  310

15.1.9  使用后台线程(AsyncTask)  311

15.1.10  使用DownloadManager获取文件  316

15.2  使用Android服务  321

15.2.1  Android中的服务  322

15.2.2  本地服务  323

15.2.3  AIDL服务  329

15.2.4  在AIDL中定义服务接口  329

15.2.5  实现AIDL接口  331

15.2.6  从客户端应用程序调用服务  333

15.2.7  向服务传递复杂的类型  336

15.3  参考资料  345

15.4  小结  345

15.5  面试问题  346

第16章  包  347

16.1  包和进程  347

16.1.1  包规范的细节  347

16.1.2  将包名称转换为进程名称  347

16.1.3  列出安装的包  348

16.1.4  通过包浏览器删除包  348

16.2  包签名过程回顾  349

16.2.1  理解数字签名:场景1  349

16.2.2  理解数字签名:场景2  350

16.2.3  一种理解数字签名的模式  350

16.2.4  数字签名执行方式  350

16.2.5  签名过程的影响  350

16.3  在包之间共享数据  351

16.3.1  共享用户ID的性质  351

16.3.2  共享数据的代码模式  352

16.4  库项目  353

16.4.1  库项目的概念  353

16.4.2  库项目的性质  353

16.4.3  创建库项目  355

16.4.4  创建使用库的Android项目  358

16.4.5  使用库项目的注意事项  365

16.5  参考资料  365

16.6  小结  366

16.7  面试问题  366

第17章  处理程序  368

17.1  Android组件和线程  368

17.1.1  活动在主线程上运行  369

17.1.2  广播接收程序在主线程上运行  369

17.1.3  服务在主线程上运行  369

17.1.4  ContentProvider在主线程上运行  370

17.1.5  单一主线程的影响  370

17.1.6  线程池、ContentProvider及外部服务组件  370

17.1.7  线程实用程序:发现线程  370

17.2  处理程序  371

17.2.1  持有主线程的影响  372

17.2.2  使用处理程序延迟主线程上的工作  373

17.2.3  延迟工作的处理程序源代码示例  373

17.2.4  构造合适的Message对象  375

17.2.5  将Message对象发送给队列  375

17.2.6  响应handleMessage回调  376

17.3  使用工作线程  376

17.3.1  从菜单调用工作线程  376

17.3.2  在工作线程与主线程之间通信  377

17.4  组件和进程寿命  380

17.4.1  活动生命周期  380

17.4.2  服务生命周期  381

17.4.3  接收程序生命周期  381

17.4.4  提供程序生命周期  382

17.5  参考资料  382

17.6  小结  382

17.7  面试问题  383

第18章  AsyncTask详解  384

18.1  实现一个简单的AsyncTask  385

18.1.1  实现AsyncTask的泛型  385

18.1.2  创建AsyncTask子类  386

18.1.3  实现第一个AsyncTask  386

18.1.4  调用一个AsyncTask  388

18.1.5  onPreExecute()回调方法和进度对话框  388

18.1.6  doInBackground()方法  389

18.1.7  触发onProgressUpdate()  389

18.1.8  onPostExecute()方法  390

18.1.9  升级为确定性进度对话框  390

18.2  AsyncTask的性质  392

18.3  设备旋转与AsyncTask  393

18.4  生命周期方法与AsyncTask  393

18.5  参考资料  393

18.6  小结  394

18.7  面试问题  394

第19章  广播接收程序和长期运行的服务  395

19.1  广播接收程序  395

19.1.1  发送广播  395

19.1.2  编写简单的接收程序:示例代码  396

19.1.3  在描述文件中注册接收程序  396

19.1.4  容纳多个接收程序  397

19.1.5  进程外接收程序项目  399

19.2  从接收程序使用通知  399

19.2.1  通过通知管理器监控通知  400

19.2.2  发送通知  401

19.2.3  在广播接收程序中启用活动  404

19.3  长期运行的接收程序和服务  404

19.3.1  长期运行的广播接收程序协议  404

19.3.2  IntentService  405

19.3.3  IntentService源代码  406

19.4  为广播接收程序扩展IntentService  407

19.4.1  长期运行的广播服务抽象  408

19.4.2  长期运行的接收程序  409

19.4.3  使用LightedGreenRoom抽象唤醒锁  411

19.5  长期运行的服务的实现  416

19.5.1  非粘滞性服务的细节  417

19.5.2  粘滞性服务的细节  417

19.5.3  非粘滞性的变体:重传送(redeliver)Intent  418

19.5.4  在onStartCommand中指定服务标志  418

19.5.5  挑选合适的粘滞性  418

19.5.6  从两个位置控制唤醒锁  418

19.5.7  长期运行的服务的实现  419

19.5.8  测试长期运行的服务  420

19.5.9  开发者的职责  420

19.5.10  框架的职责  421

19.6  关于项目下载文件的一些说明  421

19.7  参考资料  422

19.8  小结  422

19.9  面试问题  422

第20章  闹钟管理器  424

20.1  闹钟管理器基本知识:设置一个简单的闹钟  424

20.1.1  获取闹钟管理器人的访问权限  424

20.1.2  设置闹钟时间  424

20.1.3  创建闹钟接收程序  425

20.1.4  创建适合闹钟的PendingIntent  426

20.1.5  设置闹钟  427

20.1.6  测试项目  427

20.2  探索其他闹钟管理器场景  428

20.2.1  设置重复闹钟  428

20.2.2  取消闹钟  429

20.2.3  使用多个闹钟  430

20.2.4  Intent在设置闹钟时的首要职责  432

20.2.5  闹钟的持久化  434

20.3  闹钟管理器事实  434

20.4  参考资料  434

20.5  小结  435

20.6  面试问题  435

第21章  2D动画揭秘  436

21.1  逐帧动画  436

21.1.1  计划逐帧动画  436

21.1.2  创建活动  438

21.1.3  将动画添加到活动  439

21.2  布局动画  441

21.2.1  基本的补间动画类型  442

21.2.2  计划布局动画测试工具  442

21.2.3  创建活动和ListView  443

21.2.4  将ListView制作成动画  445

21.2.5  使用插值器  447

21.3  视图动画  449

21.3.1  理解视图动画  449

21.3.2  添加动画  451

21.3.3  使用Camera实现2D图像的深度效果  454

21.3.4  探索AnimationListener类  455

21.3.5  关于变换矩阵的一些说明  456

21.4  属性动画:新动画API  457

21.4.1  属性动画  458

21.4.2  计划一个属性动画的试验台  459

21.4.3  使用对象动画生成器创建基本视图动画  461

21.4.4  使用AnimatorSet实现顺序动画  462

21.4.5  用AnimatorSetBuilder设置动画关系  463

21.4.6  使用XML加载动画生成器  463

21.4.7  使用PropertyValuesHolder  464

21.4.8  视图属性动画  466

21.4.9  类型求值器  466

21.4.10  关键帧  468

21.4.11  布局转变  469

21.5  参考资料  470

21.6  小结  470

21.7  面试问题  471

第22章  地图和基于位置的服务  472

22.1  地图包  472

22.1.1  从谷歌获取map-api密钥  473

22.1.2  MapView和MapActivity  474

22.1.3  使用覆盖图添加标记  479

22.2  位置包  484

22.2.1  使用Android进行地理编码  484

22.2.2  使用后台线程进行地理编码  487

22.2.3  LocationManager服务  489

22.2.4  使用MyLocationOverlay显示位置  495

22.2.5  使用接近提醒  498

22.3  参考资料  502

22.4  小结  502

22.5  面试问题  503

第23章  电话API  504

23.1  使用SMS  504

23.1.1  发送SMS消息  504

23.1.2  监视传入的SMS消息  507

23.1.3  使用SMS文件夹  509

23.1.4  发送电子邮件  511

23.2  使用电话管理器  511

23.3  SIP  514

23.3.1  体验SipDemo  514

23.3.2  android.net.sip包  515

23.4  参考资料  516

23.5  小结  517

23.6  面试问题  517

第24章  媒体框架  518

24.1  使用媒体API  518

24.2  播放媒体  522

24.2.1  播放音频内容  522

24.2.2  播放视频内容  532

24.3  录制媒体  534

24.3.1  使用MediaRecorder录制音频  535

24.3.2  使用AudioRecord录制音频  538

24.3.3  视频录制  542

24.3.4  MediaStore类  551

24.3.5  使用Intnet录制音频  551

24.3.6  将媒体内容添加到媒体存储  554

24.3.7  为整个SD卡触发MediaScanner  556

24.4  参考资料  557

24.5  小结  557

24.6  面试问题  558

第25章  主屏幕部件  559

25.1  主屏幕部件的架构  559

25.1.1  什么是主屏幕部件  559

25.1.2  主屏幕部件的用户体验  560

25.1.3  部件的生命周期  563

25.2  示例部件应用程序  567

25.2.1  定义部件提供程序  568

25.2.2  定义部件尺寸  569

25.2.3  与部件布局相关的文件  570

25.2.4  实现部件提供程序  571

25.2.5  实现部件模型  573

25.2.6  实现部件配置活动  579

25.3  部件预览工具  582

25.4  部件局限性和扩展  583

25.5  基于容器的部件  583

25.6  资源  583

25.7  小结  584

25.8  面试问题  584

第26章  列表部件  586

26.1  远程视图概述  586

26.2  在远程视图中使用列表  587

26.2.1  准备远程布局  588

26.2.2  加载远程布局  590

26.2.3  创建RemoteViewsService  591

26.2.4  创建RemoteViewsFactory  592

26.2.5  创建onClick事件  595

26.2.6  响应onClick事件  597

26.3  工作样例:测试主屏幕列表部件  598

26.3.1  创建测试部件提供程序  599

26.3.2  创建远程视图工厂  602

26.3.3  编写远程视图服务的代码  604

26.3.4  部件主布局文件  604

26.3.5  部件提供程序元数据  604

26.3.6  AndroidManifest.xml  605

26.4  测试列表部件  605

26.5  参考资料  607

26.6  小结  608

26.7  面试问题  608

第27章  触摸屏  609

27.1  MotionEvent  609

27.1.1  MotionEvent对象  609

27.1.2  回收MotionEvent  619

27.1.3  使用VelocityTracker  619

27.2  多点触摸  621

27.3  触摸地图  627

27.4  手势  629

27.4.1  捏合手势  629

27.4.2  GestureDetector和OnGestureListener  629

27.4.3  自定义手势  632

27.4.4  Gestures Builder应用程序  632

27.5  参考资料  638

27.6  小结  638

27.7  面试问题  638

第28章  实现拖放操作  640

28.1  拖放操作简介  640

28.2  3.0及其以上版本的基本拖放操作  644

28.3  拖放操作示例应用程序  645

28.3.1  文件列表  646

28.3.2  示例拖放应用程序的布局  646

28.3.3  响应Dropzone的onDrag事件  648

28.3.4  创建拖动源视图  650

28.4  测试示例拖放应用程序  653

28.5  参考资料  654

28.6  小结  654

28.7  面试问题  654

第29章  传感器  655

29.1  什么是传感器  655

29.1.1  检测传感器  656

29.1.2  可以了解的传感器信息  656

29.2  获取传感器事件  658

29.3  解释传感器数据  661

29.3.1  光线传感器  661

29.3.2  接近传感器  661

29.3.3  温度传感器  662

29.3.4  压力传感器  662

29.3.5  陀螺仪传感器  662

29.3.6  加速度计  663

29.3.7  磁场传感器  667

29.3.8  结合使用加速度计和磁场传感器  668

29.3.9  方向传感器  668

29.3.10  磁偏角和Geomagnetic-Field  673

29.3.11  重力传感器  673

29.3.12  直线加速度传感器  674

29.3.13  旋转矢量传感器  674

29.3.14  近场通信传感器  674

29.4  参考资料  683

29.5  小结  683

29.6  面试问题  684

第30章  联系人API  685

30.1  账户  685

30.1.1  账户屏幕概览  686

30.1.2  账户与联系人的相关性  688

30.1.3  枚举账户  689

30.2  联系人应用程序  689

30.2.1  个人账号简介  691

30.2.2  显示联系人  692

30.2.3  显示联系人详细信息  692

30.2.4  编辑联系人详细信息  693

30.2.5  设置联系人的照片  694

30.2.6  导出联系人  694

30.2.7  各种联系人数据类型  696

30.3  联系人  696

30.3.1  联系人SQLite数据库  697

30.3.2  原始联系人  697

30.3.3  数据表  699

30.3.4  聚合联系人  700

30.3.5  view_contacts  701

30.3.6  contact_entities_view  702

30.4  联系人API  703

30.4.1  浏览账户  703

30.4.2  浏览聚合联系人  705

30.4.3  浏览原始联系人  712

30.4.4  浏览原始联系人数据  715

30.4.5  添加联系人和它的详细信息  718

30.5  控制聚合  720

30.6  同步的影响  720

30.7  个人账号  721

30.7.1  读取账号原始联系人  722

30.7.2  读取账号联系人数据  722

30.7.3  添加数据到个人账号  723

30.8  参考资料  725

30.9  小结  725

30.10  面试问题  726

第31章  部署应用程序Android Market  727

31.1  成为发布者  727

31.1.1  遵守规则  728

31.1.2  开发人员控制台  729

31.2  准备销售应用程序  731

31.2.1  针对不同设备进行测试  732

31.2.2  支持不同的屏幕尺寸  732

31.2.3  准备上传AndroidManifest.xml  732

31.2.4  本地化应用程序  733

31.2.5  准备应用程序图标  734

31.2.6  付费应用程序需要考虑的因素  734

31.2.7  将用户引导至Market  735

31.2.8  Android授权服务  735

31.2.9  使用ProGuard来优化及对抗盗版行为  736

31.2.10  准备上传.apk文件  737

31.3  上传应用程序  738

31.3.1  图表  738

31.3.2  列出详细信息  739

31.3.3  发布选项  739

31.3.4  联系信息  740

31.3.5  需遵守的规定  740

31.4  Android Market上的用户体验  741

31.5  更多发布途径  742

31.6  参考资料  742

31.7  小结  743

31.8  面试问题  743

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看