标签分类
当前位置:首页 > 移动开发电子书 > Android电子书网盘下载
深入剖析Android系统 深入剖析Android系统
杨长刚

杨长刚 提供上传

资源
12
粉丝
23
喜欢
164
评论
4

    深入剖析Android系统 PDF 扫描版

    Android电子书
    • 发布时间:

    给大家带来的一篇关于Android相关的电子书资源,介绍了关于剖析、Android、系统方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小126.9 MB,杨长刚编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.1,更多相关的学习资源可以参阅 移动开发电子书android视频、等栏目。

  • 深入剖析Android系统 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1yc2aSWSOcumYxD8Z9Cbrgg
  • 分享码:7a76
  • 内容介绍

    深入剖析Android系统》以Android Jelly Bean(3.1)的编码为蓝本,对Android的一部分重要编码开展了注解剖析,并因时制宜很多插画图片,叙述了Android绝大多数分系统中的控制模块和类的静态数据构造,让小读者对Android系统的內部静态数据构造拥有“类”粒度分布这一层层级上的了解和知道。一起,也对重要类和函数的编码启用步骤、运作時刻所坐落于的系统进程和进程语义等动态性运作情景开展了剖析叙述,让小读者深刻领会Android系统內部是怎样运作的。

    《深入剖析Android系统》立即对Source Insight开展截屏,保存了编码的初始行号、英语注解等信息内容并开展了高亮显示,便捷小读者阅读文章;编码中一起加上了创作者所做的汉语注解表明。

    目录

    • 第1章 智能指针 1
    • 第2章 消息队列与线程处理 7
    • 第3章 Binder IPC及其应用 29
    • 第4章 HAL硬件抽象层 59
    • 第5章 Android的启动过程 71
    • 第6章 输入系统 99
    • 第7章 MassStorage 121
    • 第8章 Sensor 137
    • 第9章 RIL 153
    • 第10章 com.android.phone进程 178
    • 第11章 Graphic 196
    • 第12章 OpenGL ES软件层次栈 250
    • 第13章 Multimedia 267
    • 第14章 Audio 293
    • 第15章 Stagefright 331
    • 第16章 OMXCodec 356
    • 第17章 GPS 386
    • 第18章 NFC 399
    • 第19章 USB 418
    • 第20章 Bluetooth和Wi-Fi简析 429
    • 第21章 Debuggerd 441

    读书笔记

    判断iOS、Android以及PC端的示例代码

    前言

    我们在做移动端时,在跨平台、浏览器、移动设备兼容的时候,要根据设备、浏览器做特定调整,想起用navigator.userAgent来对浏览器类型进行判断,查了点资料,在这里总结下

    还有一个就是移动端的缩放问题,在meta标签中进行设置,对部分浏览器进行强制性的限制

    1.navigator的一些常用属性

    navigator为window对象的一个属性,指向了一个包含浏览器相关信息的对象

    navigator.appVersion 浏览器的版本号
    navigator.language 浏览器使用的语言
    navigator.userAgent 浏览器的userAgent信息

    其中userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。

    2.较常见的ios端、Android端及PC端的判断

    简单点的

    /* 判断浏览器类型 */
    let userAgent = navigator.userAgent;
    /* 判断手机型号 */
    let app = navigator.appVersion;
    /* Android 终端 */
    let isAndroid = userAgent.indexOf('Android');
    /* ios终端 */
    let isMac = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

    封装性的

    /* 判断各类型方法 */
    const browser = {
     version: function() {
      const userAgent = navigator.userAgent;
      return {
       /* 判断是否是ios */
       ios: !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
       /* 判断是否是Android */
       android: userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1,
    
       /* 判断是否是移动端 */
       mobilePhone: !!userAgent.match(/AppleWebKit.*Mobile.*/),
    
       /* IE内核 */
       trident: userAgent.indexOf('Trident') > -1,
       /* opera内核 */
       presto: userAgent.indexOf('Presto') > -1,
       /* 苹果、谷歌内核 */
       webkit: userAgent.indexOf('AppleWebKit') > -1,
       /* 火狐内核 */
       gecko: userAgent.indexOf('Gecko') > -1 && userAgent.indexOf('KHTML') == -1,
    
    
       /* 判断是否是IPone手机或者QQHD浏览器 */
       iphone: userAgent.indexOf('iPhone') > -1,
       /* 判断是否是iPad */
       iPad: userAgent.indexOf('iPad') > -1,
    
       /* 判断是否是web应用程序(能够让用户完成某些特定任务的网站),没有头部和底部 */
       webApp: userAgent.indexOf('Safari'),
       /* 是否是微信 */
       weixin: userAgent.indexOf('MicroMessenger'),
       /* QQ */
       QQ: userAgent.match(/\sQQ/i) == ' qq',
      }
     }(),
     /* 判断浏览器使用的语言:navigator.language除IE浏览器外的浏览器使用的语言, 
     * navigator.browserLanguageIE浏览器使用的语言 
     */
     browserLanguage: (navigator.language || navigator.browserLanguage).toLowerCase()
    };
    if(browser.version.ios || browser.version.android || browser.version.mobilePhone) {
     console.log('是移动端');
    }

    3.meta标签设置

    如对浏览器进行强制全屏的设置(UC全屏),webapp模式等

    <meta charset="UTF-8">
    <!-- 视图窗口,移动端特属的标签 -->
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
    <!-- 避免IE使用兼容模式 -->
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <!-- uc强制竖屏 -->
    <meta name="screen-orientation" content="portrait">
    <!-- QQ强制竖屏 -->
    <meta name="x5-orientation" content="portrait">
    <!-- UC强制全屏 -->
    <meta name="full-screen" content="yes">
    <!-- QQ强制全屏 -->
    <meta name="x5-fullscreen" content="true">
    <!-- UC应用模式 -->
    <meta name="browsermode" content="application">
    <!-- QQ应用模式 -->
    <meta name="x5-page-mode" content="app">
    <!-- 是否启动webapp功能,会删除默认的苹果工具栏和菜单栏 -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <!-- 这个主要是根据实际的页面设计的主体色为搭配来进行设置 -->
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <!-- 忽略页面中的数字识别为电话号码,email识别 -->
    <meta name="format-decoration" content="telephone=no,email=no">
    <!-- 启用360浏览器的极速模式(webkit) -->
    <meta name="renderer" content="webkit">
    <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
    <meta name="HandheldFriendly" content="true">
    <!-- 微软的老式浏览器 -->
    <meta name="MobileOptimized" content="320">
    <!-- windows phone 点击无高光 -->
    <meta name="msapplication-tap-highlight" content="no">

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。

    上一篇:C语言编程魔法书:基于C11标准  下一篇:数据分析:企业的贤内助

    展开 +

    收起 -

    Android相关电子书
    学习笔记
    网友NO.844131

    详解将Eclipse代码导入到AndroidStudio的两种方式

    说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。 这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。 OK,进入正题。 Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project. 这里,我们先从兼容模式说起。 兼容模式 这种模式下,保证了Eclipse时代的代码目录结构,整体操作和使用和Eclipse也差不多。 最重要的,当你使用AndroidStudio时,你或者其他人也可以方便的使用Eclipse,互不干扰。 实现步骤 1. 从Eclipse中导出Gradle build files 在Eclipse菜单中 File -- Export--Generate Gradle build files 接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。 选中你的项目工程,包括主工程和库工程(Library)。 确认生成 2. 修改导出文件参数 导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。 为了保证能够讲解的更清晰,下面分情况讲解一下: 没有库工程,只有主工程 这种情况下你看到的目录是这样的 首先需要更改的是 build.gradle 文件 AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,因此需要将图中红框……

    网友NO.900106

    判断iOS、Android以及PC端的示例代码

    前言 我们在做移动端时,在跨平台、浏览器、移动设备兼容的时候,要根据设备、浏览器做特定调整,想起用navigator.userAgent来对浏览器类型进行判断,查了点资料,在这里总结下 还有一个就是移动端的缩放问题,在meta标签中进行设置,对部分浏览器进行强制性的限制 1.navigator的一些常用属性 navigator为window对象的一个属性,指向了一个包含浏览器相关信息的对象 navigator.appVersion 浏览器的版本号 navigator.language 浏览器使用的语言 navigator.userAgent 浏览器的userAgent信息 其中userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。 2.较常见的ios端、Android端及PC端的判断 简单点的 /* 判断浏览器类型 */let userAgent = navigator.userAgent;/* 判断手机型号 */let app = navigator.appVersion;/* Android 终端 */let isAndroid = userAgent.indexOf('Android');/* ios终端 */let isMac = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); 封装性的 /* 判断各类型方法 */const browser = { version: function() { const userAgent = navigator.userAgent; return { /* 判断是否是ios */ ios: !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), /* 判断是否是Android */ android: userAgent.indexOf('Android') -1 || userAgent.indexOf('Adr') -1, /* 判断是否是移动端 */ mobilePhone: !!userAgent.match(/AppleWebKit.*Mobile.*/), /* IE内核 */ trident: userAgent.indexOf(……

    网友NO.971902

    Android token过期刷新处理的方法示例

    token token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。 第一种方案 通过okhttp提供的Authenticator接口,但是只有HTTP返回码为401时才会触发。此种方式局限性很大,要求后台设计必须符合规范。在实际项目中不可能完美实现。此种方式不做详解,百度很多。 第二种方案 根据和后端协商好的返回码处理刷新token步骤。代码如下; public class TokenInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request.Builder request = chain.request().newBuilder(); //添加默认的Token请求头 request.addHeader("Cookie", UserInfo.getInstance().getPhpSessionId()); Response proceed = chain.proceed(request.build()); okhttp3.MediaType mediaType = proceed.body().contentType(); //如果token过期 再去重新请求token 然后设置token的请求头 重新发起请求 用户无感 String content = proceed.body().string(); if (isTokenExpired(content)) { String newToken = getNewToken(); UserInfo.getInstance().setPhpSessionId(newToken); //使用新的Token,创建新的请求 Request newRequest = chain.request().newBuilder() .addHeader("……

    网友NO.511987

    mac上配置Android环境变量的方法

    1.AndroidSDK路径查看 (1)AndroidStudio: 菜单栏AndroidStudio Preferences Appearencesgt; System Settins Android SDK tab中的SDK Location。 (2)Eclipse: 菜单栏Eclipse Preferences Android tab中的SDK Location 2.环境变量配置: Android_HOME:即配置SDK根路径. PATH:PATH环境变量增加tools、platform-tools、build-tools路径。 楼主使用的是zsh,故直接在.zshrc文件配置: 注意PATH中的配置,直接引用$ANDROID_HOME,方便不同版本SDK切换。 #export ANDROID_HOME=/Users/uc/Library/Android/sdkexport ANDROID_HOME=/Users/uc/Library/Android/sdk4eclipseexport PATH=$PATH:$ANDROID_HOME/toolsexport PATH=$PATH:$ANDROID_HOME/platform-toolsexport PATH=$PATH:$ANDROID_HOME/build-tools 总结 以上所述是小编给大家介绍的mac上配置Android环境变量的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复的! ……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明