《Android Studio开发实战 从零基础到App上线(第2版)》资源下载和内容勘误

android开发 专栏收录该内容
201 篇文章 13 订阅

资源下载

下面是《Android Studio开发实战 从零基础到App上线(第2版)》一书用到的工具和代码资源:
1、本书使用的Android Studio版本为3.2,最新的安装包可前往Android官网页面下载
2、本书使用的Android NDK版本为r17,最新的安装包可前往Android官网页面下载
3、本书提供所有示例源码的demo工程下载,源码(适配Android4.1到9.0和Android Studio 3.2到3.4)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw。最新的源码也可访问我的github获取,github地址是https://github.com/aqi00/android2,服务端的github地址是https://github.com/aqi00/net_server。(部分地区如新疆既访问不了百度网盘也访问不了github,此时可访问csdn的下载页面获取源码https://download.csdn.net/download/aqi00/11223223)。另外,AS3.4之后默认开了androidx,如需获取适配了androidx的本书源码,可访问这个github页面https://github.com/aqi00/androidx
有的读者反映从github下载本书源码很慢,或者下载不完整,这是国外服务器连接不稳定造成的。建议访问这个代下载网站https://d.serctl.com/,按照网站左上角的“如何下载教程”,找到本书源码的github下载地址并提交,等待几秒后就能在该网站下载完整的源码了。
源码与各章的对应关系表见下图:

4、本书提供配套的ppt课件下载,第二版课件的下载页面为https://www.jianguoyun.com/p/DX7Y1J4QlP6kCBiUoIkD
5、本书第8章使用了一些反编译和重签名工具,这些工具的下载页面是https://pan.baidu.com/s/1EzDMLNdTdh2pDO7NBMiiww (提取码93i5)


参考资料

1、学习本书需要具备Java基础,所谓“零基础”指的是安卓零基础,如果您没学过Java的话,可学习以下系列的Java教程《Java开发笔记》
2、由于篇幅所限,本书只覆盖了较为常见的Android开发技术,其余的Android开发技术可参考以下的Android笔记《Android开发笔记》
3、本书的技术实现采用的是Java编码,若您想进一步了解App开发中的Kotlin编程技术,可阅读以下系列的Kotlin教程《Kotlin入门教程》
4、更多有关本书内容的常见问题参见博文《Android Studio开发实战 从零基础到App上线(第2版)》常见问题解答
5、有关Android8、Android9、Android10的更多代码适配参见博文《Android8.0、9.0、10.0的新特性兼容适配代码修改》。
 

勘误记录

下面对书中的笔误之处进行更正说明:

一、第一批勘误记录(以下的勘误记录在2019年1月的第二次印刷时均已修正):

1、第1页“1.1  Android Studio简介”
该小节第三段第三行“本书使用的Android Studio为2018年4月发布的3.1.2版本”,这里的“4月”改为“9月”,“3.1.2版本”改为“3.2版本”。

2、第428页“10.2.4 HTTP接口访问”
倒数第四行的connect方法,该行后面的“该方法在getOutputStream后调用,在getInputStream前调用。”整个删掉。因为connect方法和getOutputStream方法没有先后调用关系,getOutputStream方法内部会自动调用connect方法。

3、第430页“1. URL串中对汉字的转义处理”
在“具体的转义代码参见本书下载资源的URLtoUTF8.java”这句后面补充“,也可使用系统自带的java.net.URLEncoder和java.net.URLDecoder”。

4、第451页“10.5.1 设计思路”下面的第三行
“于是在打开系统自带的应用宝”,这句前半部分的“”字删掉。

5、第675页“2. 蓝牙设备BluetoothDevice”
表14-6出现了两个BOND_BONDING,要把后面的“BOND_BONDING”改为“BOND_BONDED”。

二、第二批勘误记录(以下的勘误记录在2019年6月的第四次印刷时均已修正):

1、第46页“2.4.1  图形Drawable”
该页中间“开发者拿到一张图片”这段的第二行中“Android Postfix Completion”要改为“Android Drawable Importer”。

2、第447页的“10.4.2  Socket通信”
在“1. Socket”该段下面的方法说明中,“getOutputStream:获取输入流”,这里的“输入流”要改为“输出流”。

3、第650页“14.1.2  网页视图WebView”
该页代码的倒数第七行,把“http://”改为“https://”,也就是添加字母s

4、第654页“14.1.3  简单浏览器”
该页代码的倒数第八行,把“http://”改为“https://”,也就是添加字母s

三、第三批勘误记录(以下的勘误记录在2019年11月的第六次印刷时均已修正):

1、第94页的图3-31,最后一行“2012年07月06日 五年期商贷利率”的数值改为 “6.55%”,原来的6.15%跟2014年的商贷利率重复了。

2、第271页的“7.4.1  循环视图RecyclerView”
该小节第二段第一行的“为了兼容以前的Adnroid版本”,这里的Adnroid拼错了,要改为Android

3、第409页的“10.1.1  消息传递Message”
第6行的注释“// 从布局文件中获取名叫tv_control的文本视图”,这里的“tv_control”改为“tv_message

4、第410页的“10.1.1  消息传递Message”
代码倒数第10行的“下面播放新闻”,这里的“下面”改为“开始”。

四、第四批勘误记录(以下的勘误记录在2020年4月的第八次印刷时均已修正):

1、第225页的“6.5.1  Service的生命周期”
    该节第一段第三行在“App也可以有自己的服务。”后面补充以下红字部分:
App也可以有自己的服务。此时需要在AndroidManifest.xml中添加新服务的Service节点配置,比如:
        <service android:name=".service.NormalService" />

2、第353页的表9-6
    该表最后两行的说明都是“高效率的高级编码”,需要把最后一行AAC_ELD的说明改为“增强型低延时的高级编码”。
3、第430页的“10.2.4  HTTP接口调用”
    该页中间在“下面用一个阶段性的实战小项目练练手”这句前面补充以下红字部分:
除此之外,从Android9开始默认只能访问以https打头的安全地址,不能直接访问http打头的网络地址。如果应用仍想访问以http开头的普通地址,就得修改AndroidManifest.xml,给application节点添加如下属性,表示继续使用HTTP明文地址:
        android:usesCleartextTraffic="true"

下面用一个阶段性的实战小项目练练手

五、第五批勘误记录(以下的勘误记录在2020年9月的第九次印刷时均已修正):

1、第21页的“1.5.5  新建一个Activity页面”
该页第一段在“在res\layout下面生成页面布局activity_main2.xml”后面补充以下红字部分:
在res\layout下面生成页面布局activity_main2.xml,还会在AndroidManifest.xml的application节点增加下面一行配置:
        <activity android:name=".Main2Activity"></activity>

新页面创建之后的工程结构如图1-37所示。

2、第52页的“2.4.4  九宫格图片”
图2-26下面说明文字的第二行,“未拉伸预览”改为“两方向同时拉伸预览

3、第66页的“3.2.2  开关按钮Switch”
表3-2,倒数第二行thumb的说明列改为“设置开关标识的图标”,倒数第一行track的说明列改为“设置开关轨道的背景”,也就是倒数两行的说明文字互换

4、第72页的“3.4.1  文本编辑框EditText”
表3-3,第三行textPassword和第七行numberPassword两行右边的说明列,“星号“*””改为“圆点“•”

5、第83页的“3.5.2  使用Intent传递消息”
表3-5的第六行第三列的“数据类型,用于指定Data类型的定义”,这里的表达比较拗口不易理解,要把“Data类型的定义”改为“消息的数据类型

6、第88页的“3.5.4  向上一个Activity返回参数”
第一段第三行的“如果还要处理一下个页面的应答数据”,这里的“一下个页面”改为“下一个页面

7、第171页的“5.4.2  动态注册/碎片适配器FragmentStatePagerAdapter”
该页第一行“然后在Fragment的onCreateView函数中调用getArguments方获得请求数据”,这里的“getArguments方”改为“getArguments方法”,也就是添加“法”字。

8、第214页的“6.4.1  通知推送Notification”
参数构建方法的第三个方法setUsesChronometer,把“设置是否显示计数器”里面的“计数器”改为“计时器”。

9、第237页的“7.1.1  标签按钮”
该页第二行的“读者还记得第2章”,这里的“第2章”改为“第3章

10、第663页的“14.2.2  创建JNI接口”
“具体的编译配置修改说明如下”这句后面的代码有若干处需要修改,修改之处见下面的红字:
android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "com.example.mixture"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        // 此处说明mk文件未能指定的编译参数
        externalNativeBuild {
            ndkBuild {
                // 说明需要生成哪些处理器的so文件
                // NDK的r17版本开始不再支持ARM5(armeabi)、MIPS、MIPS64这几种类型
                abiFilters "arm64-v8a", "armeabi-v7a"
                // 指定C++编译器的版本,比如下面这行用的是C++11
                //cppFlags "-std=c++11"
            }
        }
    }

    // 下面指定拾取的第一个so库路径,编译时才不会重复链接
    packagingOptions {
        pickFirst 'lib/arm64-v8a/libjni_mix.so'
        pickFirst 'lib/armeabi-v7a/libjni_mix.so'
        pickFirst 'lib/arm64-v8a/libvudroid.so'
        pickFirst 'lib/armeabi-v7a/libvudroid.so'
    }

    // Android Studio 2.2之后才引入externalNativeBuild。此处指定mk文件的路径
    externalNativeBuild {
        ndkBuild {
            // 下面是编译CPU信息、加解密、获取主机名专用的mk文件
            path "src/main/jni/Android.mk"
            //path file("src\\main\\jni\\Android.mk")
        }
    }
}

六、第六批勘误记录(以下的勘误记录在2021年2月的第十次印刷时均已修正):

1、第35页的“2.2.3  滚动视图ScrollView”
该小节示例代码中的两处“线性视图”都改为“线性布局”。

2、第97页的“3.7.2  小知识:提醒对话框AlertDialog”
该小节示例代码第七行的“给建造器设置对话框的信息文本”,把“信息文本”改为“内容文本”。

3、第195页的““6.1.1  声明属性””
表6-1删掉第七行整行(getDimension那行),同时第八行(getDimensionPixelSize那行)的说明列文字改为“尺寸值。单位为px”。

4、第204页的“6.1.5  绘制视图”
在“2. onDraw”的“(1)划定可绘制的区域”下的第一句“虽然本视图内的所有区域都是可以绘制的”,改为“虽然视图内的所有区域都是可以绘制的”,也就是去掉“本”字

5、第233页的“6.5.1  Service的生命周期”
“3. 延迟绑定”小节的第二行,把“因为启动操作在先”改为“因为启动操作在先、绑定操作在后”,也就是补充“、绑定操作在后”这几个字。

6、第335页的“9.2.3  录音与播音”
“1. 媒体录制器MediaRecorder”小节的常用方法列表中,第一行reset后面的文字说明“重置录制资源”改为“重置录制器”,第五行release后面的的文字说明“释放录制资源”改为“释放录制器”。

七、第七批勘误记录:

1、第55页“2.5.2  小知识:日志Log/提示Toast”开始
“2.5.2  小知识:日志Log/提示Toast”和“2.5.3  代码示例”这两个小节共有七处“被除数”要改为“除数”,因为除法运算要检查除数是否为零,而不是检查被除数是否为零。

2、第114页的“4.3.1  SD卡的基本操作”
第三行“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />”改为“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />”,也就是在STORAG末尾加个E变成STORAGE

3、第136页的“4.6.3  代码示例”
该页中间“声明SD卡的操作权限”下面第三行“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAG" />”改为“<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />”,也就是在STORAG末尾加个E变成STORAGE

4、第232页的“6.6.2  小知识:应用包管理器PackageManager”
该小节开始的代码例子第9行的“PackageManager.PERMISSION_GRANTED”改为“PackageManager.MATCH_UNINSTALLED_PACKAGES”。

5、第336页的“9.1.1  表面视图SurfaceView” 
该页第二行的“这个途径便是内部类表面持有者SurfaceHolder外部调用”改为“这个途径便是内部类表面持有者SurfaceHolder外部调用”,也就是在“外部调用”前面增加一个句号。

6、第338页的“9.1.2  使用Camera拍照” 
autoFocus方法的说明文字“参数自动对焦接口AutoFocusCallback的onAutoFocus方法在对焦完成时触发”语句不通顺,改为“输入参数为自动对焦接口AutoFocusCallback的实例,该接口的onAutoFocus方法在对焦完成时触发”。

7、第345页的“9.1.4  使用Camera 2拍照”
该页最后一行,“4. 图像读取器ImageReader”小节中,getSurface的方法说明文字“获得图像读取的表面对象”改为“获得图像读取的表面对象”,也就是增加一个“”字。

8、第349页的“9.2.1  拖动条SeekBar”
该小节第一行“拖动条SeekBar继承自进度条ProcessBar”,把“ProcessBar”改为“ProgressBar”。

9、第353页的“9.2.3  录音与播音” 
setAudioSamplingRate方法后面的描述文字“单位千赫兹(kHz)”改为“单位赫兹(Hz)”。

10、第364页的“9.3.2  摇一摇——加速度传感器”
该小节第二行末尾的“其他类似的应用还摇骰子”改为“其他类似的应用还摇骰子”,也就是增加一个“”字。

11、第381页的“9.5.1  NFC近场通信” 
“2. 启用NFC感应/禁用NFC感应”小节第一段第一行和第三行的两处“重载”改为“重写”。

12、第516页的“11.6.2  小知识:三维图形接口OpenGL” 
该小节第三段第四行的“比如显示生活中黑板的漆面”改为“比如现实生活中黑板的漆面”,也就是把“显示”改为“现实”。

13、第520页的“11.6.2  小知识:三维图形接口OpenGL” 
“此时自定义的渲染器GLRender必须重载onSurfaceCreated”这句里面的“重载”改为“重写”。

14、第553页的“12.3.1  属性动画的用法” 
removeListener的方法说明改为“移除指定的动画监听器”,也就是把“移出”改为“移除”。
removeAllListeners的方法说明改为“移除所有动画监听器”,也就是把“移出”改为“移除”。

15、第557页的“12.3.3  插值器和估值器” 
该小节第二段第一行的“默认是匀速播放”改为“默认是先加速再减速”。

16、第662页的“14.2.2  创建JNI接口”
表14-2  基本数据类型的转换关系,“Java的数据类型”该列的Int和Float要改为小写的intfloat

17、第725页的“15.4.1  文字转语音TextToSpeech”
图例“15-39  小米手机内置的语音引擎”改为“15-39  小米手机内置的语音引擎”,也就是在“15-39”前面加个“”。

8、第725页的“15.4.1  文字转语音TextToSpeech”
表15-5  setLanguage方法的返回值说明,下面表格左侧的标题由“TextToSpeech类的返回值”改为“setLanguage方法的返回值”。

19、第726页的“15.4.1  文字转语音TextToSpeech”
图15-41下方的文字“接下来就可以大胆设置朗读的语音了”改为“接下来就可以大胆设置朗读的语言了”,也就是把“语音”改为“语言”。
 

若对本书内容有任何疑问,可加入QQ群进行咨询,群号是493199768

我要挣钱(http://www.51zhengqian.net)编辑 目录 1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 个人英雄主义再现——得更多人的认可尊重 1.3.4 获得应有的收益——AndroidMarket 1.4 真实体验——Android模拟器 1.4.1 模拟器概述 1.4.2 模拟器真机的区别 1.4.3 模拟器使用注意事项 1.5 更上一层楼——加入Android开发社区 1.6 本章小结 2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、AndroidSDK软件安装 2.2.2 SDK的家在哪里——设定AndroidSDKHome 2.2.3 真的准备好了吗——开发环境验证 2.2.4 创建Android虚拟设备(AVD) 2.3 Linux一族——Ubuntu开发环境搭建 2.3.1 Java、EclipseADT插件安装 2.3.2 设定AndroidSDKHome 2.4 MacOS一族——苹果开发环境搭建 2.5 本章小结 3章 清点可用资本——AndroidSDK介绍 3.1 AndroidSDK基础 3.2 深入探寻AndroidSDK的密码 3.2.1 AndroidSDK目录结构 3.2.2 android.jar及内部结构 3.2.3 SDK文档及阅读技巧 3.2.4 先来热热身——AndroidSDK例子解析 3.2.5 SDK提供的工具介绍 3.3 Android典型包分析 3.3.1 开发的基石——AndroidAPI核心开发包介绍 3.3.2 拓展开发外延——Android可选API介绍 3.4 本章小结 4章 赚钱的市场——AndroidMarket及应用发布 4.1 GoogleMarket产生背景与目的 4.2 体验“选货”的乐趣——在G1上体验Market的使用 4.3 Android开发活动及特色应用 4.3.1 开发应用的领域 4.3.2 AndroidMarket特色应用一览 4.4 你也可以做东家——申请Market账号 4.4.1 卖东西要先入伙——准备工作 4.4.2 入伙过程——申请 4.5 开张了——在Market上发布应用 4.5.1 发布时可能遇的错误 4.5.2 卖东西也要签名——生成签名文件 4.5.3 打包、签名、发布应用 4.6 本章小结 5章 千里之行始于足下——一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 断点调试 5.3 本章小结 6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)运行环境(RunTime) 6.2 Android应用程序组成 6.2.1 Activity介绍 6.2.2 BroadcastIntentReceiver介绍 6.2.3 Service介绍 6.2.4 ContentProvider介绍 6.3 Android应用工程文件组成 6.4 本章小结 7章 良好的学习开端——Android基本组件介绍 7.1 一印象很重要——界面UI元素介绍 7.1.1 视图组件(View) 7.1.2 视图容器组件(Viewgroup) 7.1.3 布局组件(Layout) 7.1.4 布局参数(LayoutParams) 7.2 我的美丽我做主——Android中应用界面布局 7.2.1 实例操作演示 7.2.2 实例编程实现 7.3 不积跬步无以至千里——常用widget组件介绍 7.3.1 创建widget组件实例 7.3.2 按钮(Button)介绍与应用 7.3.3 文本框(TextView)介绍与应用 7.3.4 编辑框(EditText)介绍与应用 7.3.5 多项选择(CheckBox)介绍与应用 7.3.6 单项选择(RadioGroup)介绍与应用 7.3.7 下拉列表(Spinner)介绍与应用 7.3.8 自动完成文本(AutoCompleteTextView) 7.3.9 日期选择器(DatePicker)介绍与应用 7.3.10 时间选择器(TimePicker)介绍与应用 7.3.11 滚动视图(ScrollView)介绍与应用 7.3.12 进度条(ProgressBar)介绍与应用 7.3.13 拖动条(SeekBar)介绍与应用 7.3.14 评分组件(RatingBar)介绍与应用 7.3.15 图片视图(ImageView)介绍与应用 7.3.16 图片按钮(ImageButton)介绍与应用 7.3.17 切换图片(ImageSwitcher&Gallery) 7.3.18 网格视图(GridView)介绍与应用 7.3.19 标签(Tab)介绍与应用 7.4 友好的菜单——menu介绍与实例 7.4.1 实例操作演示 7.4.2 实例编程实现 7.5 Android应用的灵魂——IntentActivity介绍与实例 7.5.1 实例操作演示 7.5.2 实例编程实现 7.6 用好列表,做好程序——列表(ListView)介绍与实例 7.6.1 实例程序演示 7.6.2 实例编程实现 7.7 友好地互动交流——对话框(Dialog)介绍与实例 7.8 温馨的提醒——ToastNotification应用 7.8.1 实例操作演示 7.8.2 实例编程实现 7.9 本章小结 8章 移动信息仓库——Android的数据存储操作 8.1 Android数据存储概述 8.2 轻轻地我保护——SharedPreferences存储 8.3 谁的文件,谁主宰——文件存储 8.4 打造自己的数据库存储——SQLite存储方式 8.4.1 Android中对数据库操作 8.4.2 完整地操作数据库——日记本实例 8.5 我的数据你来用——ContentProvider介绍 8.5.1 初识ContentProvider 8.5.2 使用ContentProvider读取系统数据 8.5.3 使用ContentProvider操作数据日记本实例 8.6 再学一招——网络存储 8.7 本章小结 9章 我来“广播”你的“意图”——IntentBroadcast面对面 9.1 Android应用程序的核心——Intent 9.1.1 Intent基础 9.1.2 用Intent启动一个新的Activity 9.1.3 Intent详细讲解 9.1.4 Android解析Intent实现 9.2 用广播告诉你——利用Intent来广播(BroadCast)事件 9.2.1 实现Android中的广播事件 9.2.2 BroadCastReceiver介绍 9.3 应用实例详解 9.3.1 程序操作演示 9.3.2 实例编程实现 9.4 本章小结 10章 一切为用户服务——Service应用实例 10.1 认识Service 10.2 使用Service 10.3 Service的生命周期 10.4 实例学习Service 10.4.1 精彩实例一——定时提醒 10.4.2 精彩实例二——音乐播放器 10.5 本章小结 11章 循序渐进——开发Android应用的基本步骤 11.1 兵马未动粮草先行——应用规划及架构设计 11.2 应用开发步骤 11.2.1 界面设计始终是一位——实现UI 11.2.2 必备的动力源泉——数据操作存储 11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务——增加Service 11.2.5 细节决定成败——完善应用细节 11.3 成功就在眼前——应用测试发布 11.3.1只欠东风——应用测试 11.3.2 可以赚钱了——发布AndroidMarket 11.4 本章小结 12Android综合案例一——RSS阅读器实例 12.1 RSS介绍 12.1.1 RSS基础 12.1.2 RSS的历史 12.1.3 RSS语法介绍 12.2 SAX介绍 12.2.1 SAX基础 12.2.2 使用SAX的作用 12.2.3 怎样使用SAX 12.3 RSS阅读器设计 12.3.1 RSS阅读器功能设计 12.3.2 RSS阅读器UI交互流程设计 12.4 RSS阅读器的实现 12.4.1 程序实体解析 12.4.2 实现一个自己的ContentHandler 12.4.3 Activity的实现 12.5 本章小结 13章 Android综合案例二——基于GoogleMap开发个人移动地图 13.1 项目UI规划 13.2 数据存储实现 13.2.1 设计数据库及表结构 13.2.2 设计SharePreference存储 13.3 项目实现流程 13.3.1 创建项目工程 13.3.2 项目各功能及界面实现 13.3.3 实现数据存取 13.3.4 实现Service 13.3.5 应用流程整体实现 13.3.6 后续开发完善 13.4 项目程序演示 13.5 项目程序签名、打包发布 13.6 本章小结 14章 Android综合案例三——基于Android的豆瓣网(Web2.0)移动客户端开发 14.1 关于豆瓣网豆瓣网API 14.1.1 豆瓣网介绍 14.1.2 豆瓣网API介绍 14.1.3 豆瓣网API认证 14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网APIJava库介绍 14.2 豆瓣网(Web2.0)客户端设计 14.2.1 客户端功能规划设计 14.2.2 UI交互流程设计 14.2.3 数据存储设计 14.3 豆瓣网(Web2.0)客户端实现 14.3.1 申请APIKey 14.3.2 Activity实现 14.4 本章小结 15章 Android综合案例四——在线音乐播放器 15.1 关于YOBOYOBOAPI 15.1.1 YOBO简介 15.1.2 YOBO功能特点 15.1.3 YOBOAPI介绍 15.2 在线播放器架构设计 15.2.1 在线播放器功能规划设计 15.2.2 在线播放器UI设计 15.2.3 在线播放器数据存储设计 15.3 在线播放器的编程实现 15.3.1 申请APIKey 15.3.2 基础功能实现 15.3.3 实现Activity 15.3.4 实现Service 15.3.5 后续开发展望 15.4 在线音乐播放器应用演示 15.5 在线音乐播放器应用打包、签名发布 15.6 本章小结 16章 Android综合案例五——手机信息查看助手 16.1 手机信息查看助手功能规划可行性分析 16.1.1 手机信息查看助手功能规划 16.1.2 手机信息查看助手可行性分析 16.2 手机信息查看助手功能实现 16.2.1 手机信息查看助手主界面 16.2.2 查看系统信息实现 16.2.3 查看硬件信息 16.2.4 查看软件信息 16.2.5 获取运行时信息 16.2.6 文件浏览器 16.2.7 项目的细节完善 16.3 手机信息查看助手功能展望 16.4 项目的打包、签名发布 16.5 本章小结 17章 芝麻开门——Android底层开发移植概述 17.1 Android原始码下载 17.2 实机测试 17.2.1 NeoFreeRunner介绍 17.2.2 烧录androidfs.jffs2 17.3 Android移植技术概论 17.3.1 Android底层技术的重要性 17.3.2 Android移植项目介绍 17.3.3 Android的技术优点
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值