‘壹’ 谁有ckchat 安卓/IOS移动端源码吗可以分享不
所有的android应用程序都要求开发人员用一个证书进行数字签名,Android系统不会安装没有进行签名的程序,签名有一个很重要作用就是防止程序发布后被篡改。
‘贰’ Launcher添加左划负一屏
源码环境是android-API-28,计划在页面处于主页时左划进入负一屏,右滑退出负一屏。从三个方面推进,TouchEvent,Animation 和负一屏View。从Touch的ACTION_DOWN时拦截并处理touch事件,在ACTION_MOVE时拖拽View,在ACTION_UP/ACTION_CANCEL时根据拖拽距离完成剩余动画:返回主页或者前进到负一屏。
‘叁’ 自己可以编译安卓源码吗
用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:
sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”
其中[email protected]为你自己的邮箱.
简要说明
android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.
源码下载
由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)
repo工具下载及安装
通过执行以下命令实现repo工具的下载和安装
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:
我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:
这里写图片描述
执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.
错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:
通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.
结束吧
到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.
‘肆’ 我想找找Android 开发的源码例子,在www.apkbus.com 找到一些,但是我知道除了安卓巴士还有其他的网站
SDK目录下就有很多啊,几乎包含了所有方面的例子.
我用的2.1版SDK,例子就在samples\android-7下面,android-7就是2.1版的.
如果你用的其它版本就找到对应版本就行了.
‘伍’ 为什么华为手机的负一屏好多是支付宝的产品却没有一个是微信的
说到这个问题,我们就不得不重新回顾一下华为和微信关于微信支付指纹存储相关的交涉了。
事件回顾
在 2018 年的时候,有一段时间,华为要求用户的指纹信息必须储存在本地,也就是手机处理器的一个专属模块里。而腾讯却要求把用户指纹信息上传到服务器进行网络比对,才能使用微信支付,并且表示所有手机都是一视同仁,采用这种方式的。
但华为却不同意,认为微信的这种指纹验证方式,似乎侵犯了用户的隐私,并且有可能产生安全问题。于是双方便发生了争执,这个争议就一直没有解决,双方都不让步,结果就是华为手机都不支持微信支付了。
那时候华为应用市场一度下架了微信这个软件,双方吵的不可开交。
据说最后以微信的妥协,而得到解决。
腾讯和华为虽然都在深圳,但是他们之间的关系却一直不好,再往前回顾,也就是 2016 年的时候,关于用户数据的问题,两者也争吵过。事情是这样的:
华为、腾讯双方纠纷起因源于华为旗下互联网手机品牌荣耀在2016年12月发布的荣耀Magic手机,这是荣耀发布的首款概念机,由华为2012实验室耗时近两年时间研发而成。Magic基于Andriod系统重新开发了Magic Live系统,这是华为手机首次尝试人工智能应用。
目前该款手机可根据微信聊天内容自动加载地址、天气、时间等信息;通话、购物等时候也能提示相关服务信息,这些均是华为与科大讯飞、高德、支付宝、携程等APP深度合作研发的结果。
但据消息人士向《华尔街日报》透露,微信的拥有者腾讯指出,华为不仅在获取腾讯的数据,还侵犯了微信用户的隐私。
因此,双方矛盾激化。
为什么是支付宝呢?
看完事件回顾,第一个事件就说明了问题,微信和华为之间虽然最后都妥协了,估计也是华为妥协了,关于指纹存在本地手机还是微信服务器的问题,如果华为一直不支持微信,必定影响销量,那么可能就妥协了。
那么既然这样,我就主推支付宝,让用户都使用支付宝不就完了。
所以,华为的快捷方式上,生活服务上都是跟支付宝相关的服务。
所以,看到这里你就明白,为什么是支付宝了吧?
当然是因为华为和腾讯不对头呀。
开玩笑的!
以下内容来源纯属网络八卦,完全不负责任,且博一笑,不必当真。
游戏 优化事件
约在18年,曾经发生过这样一件事情:腾讯旗下的几款 游戏 在华为手机上运行的时候,会出现花屏,闪退的现象。
对于这件事,网友的猜测是腾讯针对华为手机做了负优化。
而腾讯官方给出的回应是,这个问题是华为更新GPU Turbo导致的,属于厂商问题。
随后华为就推出了补丁包,但是这是首次 游戏 出现BUG由手机厂商修复,而不是 游戏 官方修复的案例。
指纹信息事件
而在更早的16年,华为 PDT 经理李小龙在微博上转发了一篇题为《手机的生物密码暗藏风险》的文章,文章内容主要就手机上包括指纹在内的生物信息的安全性作出讨论。
而李小龙先生转发的附言的大致意思是,华为的某代产品和某厂商合作时,对方提出了上传用户指纹到服务器以做对比,被严词拒绝。
虽然没有明说“某厂商”是谁,但是结合现在华为和支付宝打的火热的情况,各位看官不妨大胆猜测一下。
六一刷屏的短视频《悟空》,你们呢还有印象吗?很多网友看了以后,都非常的感慨与伤感。而且重要的是这部短视频是以竖屏来拍摄的,和我们传统的短视频或者电影是相违背的。
拍摄的手机也是我们的华为手机。对华为手机,你们有具体的了解过它的功能吗?比如有一个负一屏的功能,是可以方便快捷的为我们提供更好的服务。解锁进入到主页面以后,只需要用手指往右滑动。
是可以看到我们的负一屏,点击更多以后。会看到常驻服务、最近使用、推荐服务、生活服务、 娱乐 购物、实用工具。应该说覆盖的范围是非常的广,不用我们再一个一个的取找那些app了。
但是有网友仔细的观察,是会发现这么一个现象。在这些运用当中,支付宝和华为自己的产品是非常多,腾讯的是没有一个。这个估计就会有人不明白了,难道是华为和支付宝联手了,微信是不是又多了一个对手。
对于这个情况,我们是没有必要那么早就下结论的。首先从生态的运用上来看,支付宝的运用要远远多于微信的,淘宝、支付宝、高德打车、蚂蚁庄园等,都是我们用户使用频次较高的app。
把它们收拢到一个页面里,是非常的方便用户选择。除了这些以外,在酒店、住宿、 娱乐 上,阿里更是有着很大的优势。而华为推出的负一屏,宗旨是为用户提供更好更具有智慧的服务。
在负一屏中,我们更是可以看到华为自己的产品。其中的一个智慧识物是我比较喜欢的,虽然扫描的结果并不一定准确,却是给我们带来了新奇的体验。反观腾讯的生态链,它自己有什么呢?
在 娱乐 、购物、生活上,它的涉足远远比不上阿里。投资的京东、拼多多也并没有被多少的人看好。从使用华为手机人群的属性上来看,他们是有着自己的一个认知,非常明白自己需要什么。
可能你们会说, 游戏 是腾讯的重头戏,应该是可以接入到负一屏里面。不过在 娱乐 那一栏,你们有发现 游戏 两个字吗?另外华为自己的运用市场里也是有着 游戏 栏目,干嘛得把腾讯的 游戏 接入到负一屏呢?
因此,负一屏中没有微信的产品,不是正常的吗?
腾讯收集用户信息,早晚会被淘汰,如果阿里开发聊天通讯软件,一定卸载微信。
我只在华为负一屏只有一个微信付款码?反而,数个支付宝的快捷方式。
微信和华为不对付呢?你应该忘不了的是,微信和华为之前因为指纹问题而矛盾重重,虽然后来化解了,可是你可能不得不猜测,华为确实可能考虑到微信的之间的关系,在负一屏中放不多的微信的内容。
那么,事实如此吗?我们先来看看华为负一屏的内容。
在生活服务中,确实微信只有一个付款码,但是支付宝却有付款码,我的快递,蚂蚁森林,信用卡等等。
那么,是不是因为矛盾呢?我觉得这里面并不准确。我们的猜测原因——
其实用过华为或者荣耀手机的网友应该都会发现,华为EMUI系统出厂状态是没有预装微信的,这显然有些不正常。因为微信在国内的用户超过10亿,几乎所有人都在用微信。所以除了华为之外,几乎所有智能手机的系统都自带微信,包括国外品牌苹果。
有网友说华为和腾讯的关系不好,这的确不是空穴来风。除了微信之外,在前两年有一段时间,华为的应用市场里是无法找到腾讯当红手游《王者荣耀》的。这是因为华为对手游运营商非常强势,华为规定通过应用商店下载的手游如果需要帐号登陆的,必须使用华为帐号。这就需要手游专门开通华为的服务器,也就是所谓的华为渠道服,玩家在华为渠道服里的任何氪金消费,华为都可以从中抽成。比如我经常玩的《崩坏3》,如果用华为手机应用商店下载,默认的就是华为渠道服, 游戏 中的数据是不能和官服共通的。
但是腾讯的手游大家应该都了解,从来都只有腾讯官服,没有所谓的渠道服,再说腾讯也不可能忍受华为从自家 游戏 的收益中抽成。这样一来两家就较上劲儿了。2017年的时候,华为就从应用商店中下架了《王者荣耀》这款当时腾讯最火的网友。
好在安卓系统是开源的,尽管华为应用商店里无法下载《王者荣耀》,但是玩家却可以直接在腾讯官网下载APK文件安装 游戏 。而且华为也不可能禁止用户安装腾讯官服下载的《王者荣耀》。所以这件事情还是以双方和解收场。现在华为应用商店是可以下载腾讯所有网友的。尽管如此,双方的“梁子”也算是结下了。
腾讯的另一款手游《刺激战场》(《和平精英》的前身)也搞出过类似的事件。2018年的时候华为推出了GPU Turbo技术,率先在荣耀V10等手机上使用。这项技术是通过优化安卓系统代码来实现的,也改动了一部分 游戏 代码。因此在GPU Turbo技术推出后不久,《刺激战场》的一次更新后, 游戏 画面出现了严重的花屏马赛克问题。当时很多玩家都猜测是因为GPU Turbo与《刺激战场》不兼容导致的。
还有一个比较着名的例子就是华为手机曾经一直都不支持微信的指纹支付,原因是微信的指纹支付方案和华为的不兼容,双方就这个事情吵了很久,所幸最终还是和解了。
说了这么多,主要想说明的就是华为和腾讯两个巨头之间的关系实际上并不好,这也是理所当然的。因为双方都是巨头,谁也压不住谁,很容易就摩擦出火花。但是另一方面,华为手机的市场占有率是国内最高的,腾讯的软件和 游戏 用户也是国内最多的,所以这两家也只能在不断的争斗中不断妥协。至于华为手机负一屏中没有微信产品的问题,只不过是双方竞争中的一个微不足道的方面罢了。若非必要华为和腾讯的产品是不会有什么深度合作的。不过据我观察,现在华为负一屏是可以找到微信服务的,可能是双方再一次妥协了吧!
其实华为跟支付宝之间有很长时间的合作 历史 了,早在指纹支付刚开始流行之前,华为就已经开始了跟支付宝在支付安全方面的合作,中间很长一段时间,也是因为在安全理念上的不同,华为手机一直都不支持微信指纹支付。
最近有关华为跟支付宝之间的关键性合作,是在去年的5月份,两家企业共同成立了“华为-蚂蚁金服联合创新实验室”,而这个实验室的研究领域也是聚焦于移动安全支付方,因为我们都知道目前国内移动支付处于世界前列,但同时也面临着支付安全的问题,因此央行基于条码支付安全性给出了当日限额500的规定,而这次支付宝将依靠华为手机,以麒麟芯片inSE的能力和安全可信执行环境(TEE)为依托,推出了内置手机盾的终端产品,这一技术就打破了电脑转账的制约,在华为手机上,通过支付宝即可随时操作上百万的大额转账。
除此之外,华为跟支付宝之间存在很多理念上的相似性,这无论是对于研发、安全等方面,双方都有很好的共同话题,而反观腾讯这边的话,其主要是做流量、 游戏 ,这跟华为的发展理念还是存在较大的差异的,不单因为用户核心数据存储双方产生过矛盾,即便是后来在 游戏 领域的对华为手机“负优化”、跟华为竞争“荣耀”品牌等等,都使得二者在合作过程中不断出现各种问题,所以来讲,从华为的企业文化来讲,其就是亲阿里疏腾讯的。
目前我们打开华为手机负一屏的话,会看到很多阿里系的产品,当然用户也可以自行选择,但至少从华为的官方态度上来讲,在阿里跟腾讯之间就已经有了明显的倾向性。对于目前的华为来讲,因为受到美国方面的打击,正是其重视各项技术性能、安全的高风险时期,这个时候选择跟自己拥有更多同质化的企业强强联合,也有助于帮助自己尽快摆脱目前的困境。
以上是我对此事的看法,喜欢可以关注下哦~
为什么华为手机的负一屏好多是支付宝的产品却没有一个是微信的?现在的华为手机用户使用数量还是比较多的,比如说有华为较高端的手机mate系列和p系列等,那么为何在华为手机的负一屏却没有一个微信呢?
对于华为和腾讯来说,其实在很多的时间内都是存在一定的问题的,在很早之前的微信指纹识别功能来说,其他的智能手机品牌都是已经支持微信的指纹支付的功能,但是对于华为手机来说却一直都没有进行支持,其实这里面最为主要的原因就是腾讯需要在用户录制指纹的时候,收集用户的信息。
但是华为却认为用户的个人信息是属于用户的,华为是有必要为用户所保证信息安全的,所以就是因为这个原因,华为和腾讯还掐了很长的时候,导致华为手机的用户都是不能够使用微信指纹支付的功能,最后还是因为双方的妥协,华为手机最终支持这个功能。
还有一方面的原因就是,华为和支付宝这两家的理念还是有不少的相似性的,一般情况下,不论是华为的研发还是安全性等方面,华为和支付宝都是能够处到一块的,但是华为和腾讯可能在理念上面存在一定的差异,在加上双方还存在一定的矛盾,所以对于华为来说,都是比较亲近阿里而疏远腾讯。
最后,对于说为何我们打开华为和搜集的负一屏的时候,有很多的支付宝产品,但是却没有微信,从这个简单的事情上面也是能够看出来华为对于阿里的倾向性是更加大的,也是比较重视阿里,那么大家还有什么不同的看法,可以在下方留言,咱们一起探讨!
这个其实就是公司间合作的问题,说明华为和支付宝的合作相对微信要更深入一些。
和交朋友一样,每个公司的价值观都不不同,只要两个公司的价值观出现交叉的时候才是深入合作的开始。华为和支付宝在指纹支付上的合作就证明两家公司合作的不一般。
我也深有体会,很长一段时间指纹支付只支持支付宝,微信不能使用指纹支付,感觉很不方便,后来咨询了华为客服,客服回复说关于微信指纹支付正在和腾讯进行沟通。从网上看到了许多关于华为和微信合作的解读,我无法辨别真假,但两家公司的合作出现分歧是肯定的。
华为是全球第二大、国内第一大手机厂商,微信是国内绝对的即时通讯服务商,两家公司都是各行业的大佬,话语权都比较高,洽谈起来不会很容易。而支付宝只是在支付板块做的很大,而且还受微信支付的追击,在这种情况下加强与华为的合作对利大于弊。这就是竞争和合作共赢的好处。
微信的安全系统太垃圾,我身边有好多人的微信被一个陌生人加了微信,只要一加上,你微信里全有的钱都被洗劫一空。
后来骗子被抓了,我想说的是,微信的安全系统真的太垃圾,随便网上找一木马就能软掉的系统,能有什么好。支付宝在安全系统方面就做的很好。
另外,马化腾的格局太小,踏踏实实的做你的手游吧。
‘陆’ 从Widget到负一屏
负一屏,在MIUI中叫做“智能桌面助理” ,在EMUI中叫做“hiboard” ,微软桌面叫做“卡片页”。苹果在iOS10 上也推出了类似的功能,虽然叫做小组件,但其交互方式与基本功能都与安卓的负一屏如出一辙。
说到负一屏,就必须先要说一下widget,也就是小部件。一般在手机的桌面设置中可以找到并添加,widget通常可分为两大类:控制类和查看类。比如系统中的快捷开关设置、时钟、便签、天气、日历、以及第三方App,如音乐类、即时新闻类。每个应用的小部件又有不同的占位大小可以选择,本质上无差异,只是展示内容多少的差异。
实际使用中,用户一般将widget放置于主屏,因为widget的存在就是为了以最快的速度和最短的操作路径去完成某项功能。而主屏是解锁手机后到达的第一个界面。每个widget中一般只有所属应用最核心和常用的功能,过多的功能设置不仅会增加内存占用率,也不符合widget简洁、高效的目标定位。
然而,安卓系统发展到现在,虽然widget一直存在,第三方应用也做了相应的开发,但似乎并没有什么存在感,第三方应用也没有将其当作产品的重点功能去设计。原因主要有以下几个方面:首先,在第三方 Rom 的定制过程中已经默认将时钟、天气这两个实用性最强,查看频率最高,甚至可以说是两个必有项的小部件默认放置于主屏位置,用户不必自己去寻找、设置,部分用户甚至根本不知道那其实是一个小部件,这样的话用户失去了最可能发现和了解widge的途径。另一方面,系统常用开关设置在下拉列表中的整合已经相当完善,相比作为小部件而添加的快捷设置按钮,也只是多了下滑的一个操作,并不会造成太大的操作与记忆负担。另一类,像音乐类App,用户在使用时,并不会长时间停留在应用内的页面上,但是有时又需要进行频繁的切歌操作。大多数的情况是,一边聊微信、刷微博,一边听音乐。而在这个时候,不论是重新打开应用还是去该应用所拥有的widget操作,都需要打断并推出当前应用,操作过程并没有太大差别,都比较繁琐。特别是频繁操作后,用户容易产生厌烦感。相比而言,用户更为接受的方案是将常用控制按钮整合到下拉通知当中,避免了退出当前页面。另外,大部分用户并不希望自己的主屏被大面积占位。下部Dock,中下部常用应用,顶部时钟+天气可以说是目前最适用、美观的布局方式了。满屏的不同风格的widget摆在一起总显得不那么协调美观。
但是,部分用户对widget的使用还是很忠诚的,年级稍大的父母可能不习惯去下拉通知里打开Wi-Fi开关,也不习惯从多任务界面去释放内存,这个时候在主屏上的快捷操作按钮就是最好的选择了。另外,一些工作事务繁多的用户,都觉得在桌面放置一个事件提醒的widget是很有必要的。总的来说,这些用户不会考虑放置widget后,桌面是不是能够保持统一整洁。更多考虑的是widget的简便快捷与实用性。
总之,widget发展到现在,可以说是一个存在感不强,但从某些方面来讲又是不可或缺的部分。
到后来,各大安卓智能手机厂商先后推出负一屏,甚至对后台和内存使用控制极为严格的ios也推出了类似的功能。MIUI负一屏主要内容和功能有全局搜索(网页、设置、应用、视频、文件、联系人、短信、邮件、应用功能) 快捷入口(付款码、微信扫一扫、微信名片、公交卡、便签、日程) 即时信息及提醒(快递信息、支出信息、通勤路况、打车出行信息、日程信息)关注动态(足球看台、篮球看台、股票信息),可以看出主要定位在日常生活场景。
微软桌面负一屏主要功能和内容有全局搜索(应用、联系人、)最近常用(最近图片、文档、联系人、应用)日程提醒,定位于办公场景,提升办公效率。由于对第三方的支持很少,所以很特别的,系统中原有的widget可以通过卡片的形式添加到负一屏的卡片中。
在iOS 10之前,苹果连widget都没有,iOS 10 中开始出现的负一屏,也与安卓的widget有着极大的相似性,与安卓厂商的做法不同,苹果的负一屏可以说是对安卓widget的致(chao)敬(xi),除最基本的系统组件外,负一屏的小组件由第三方开发,苹果只是负责将它们放置在负一屏的位置上,小组件数目、种类都远超安卓厂商的负一屏。但也正是因为如此,与安卓厂商的负一屏相比,缺少较高的整合度,目前来看,也仅仅是个widget的集合页面,定位并不明确,傻傻分不清。
从表面上来看,负一屏似乎是widget的集合,但从内容上来看,发现两者的设计和定位又有着本质的区别。简单来说:
一、更加明确的定位
这里先不说iOS,安卓上出现的负一屏可以说是根据场景而设计的,就像MIUI的负一屏根据日常生活的使用场景去设计,微软的卡片页根据工作的使用场景去设计,不再是“widget 大杂烩”。这样至少可以抓住有某种使用场景需求的用户人群,针对性的设计也进一步提升了用户体验。
二、交互方式的改变
使用widget时,用户需要先找到小部件页面,选择并添加到屏幕中的某个位置。而负一屏可以直接通过右滑进入,单独开辟新的页面去布局,而不是与应用图标“抢车位”,对用户更加友好。系统默认开启,并且有默认添加的快捷按钮和组件内容。与widge的“默默无闻”不同,负一屏更像是主动吸引着用户去关注和使用。与widget类似,负一屏中,用户可根据使用习惯自行添加、删除内容,也可对排列顺序进行调整。虽然部分用户因误操作而进入自己不常使用的负一屏而吐槽声不断,但对于有真实需求的用户来说,这种进入方式还是比较合理的,在保证快速进入和查看的同时又保证了页面的整洁。
三、更高的信息整合度
不同于widget,负一屏是由系统定制厂商设计和开发的,所以其整合度更高,所拥有的权限也更高。比如MIUI负一屏中的“快捷功能”部分,不仅集合了系统应用,还集合了类似于付款码和微信扫一扫的第三方应用功能快捷入口。不必为某个应用的某个快捷功能开辟新的卡片。这点还体现在相关信息的记录,比如收支情况的记录,会累积所有App内产生的收支情况。同类的控制项与信息的高度整合,不仅获得了占位的最高利用率,也对用户的操作和交互带来了方便。用户对手机的“控制感”更强。
四、更加智能的人性化服务
负一屏中的部分组件根据情景设置和设备获取的位置信息、应用信息,智能化地为用户提供信息。可以说是在基本快捷功能基础上的重大提升。如MIUI 负一屏中可根据实时的位置信息提供到家或公司的路况、打车信息。以及通过读取 购物App的快递信息提供最新的物流信息。通过搜集各种信息、记录,通过更加智能的方式去减少用户的操作过程,提供更加人性化的服务。
单说安卓系统,相对于widget,负一屏确实进步了不少,可以说取其精华,弃其糟粕。从负一屏现在的发展情况来看,功能上的创新仍有,但毕竟是有局限的,也极容易被模仿、抄袭。而如果以类似于智能情景的方式去发展,对设备、应用数据进行获取、分析,结合人工智能,根据用户所处的情景,通过负一屏的组件内容来提供用户某时某刻某地可能或必须的信息、功能服务,仍有不小的进步和发展空间。用机器的智能化给用户带来更便捷的服务和更好的体验。虽然经常看到用户吐槽负一屏,而且四处打听如何关闭,很大程度上,可以说部分用户无法接受新的与应用交互的方式,局限于原有的操作逻辑中,觉得负一屏并没有什么卵用,反而妨碍了自己的正常操作。但从个人的实际使用体验来看,负一屏中的内容对于提升操作效率,提供便捷信息还是有很大帮助的。习惯使用后,甚至会离不开某些快捷功能。相信各大厂商也绝不是“无脑”地去推出负一屏。
‘柒’ 安卓系统是开源的,所谓的开源是什么意思呢
开源意味着Android系统的源代码对用户开放,可以根据开源协议(GNU)使用、编译和重新发布。任何人都可以在GNU的控制下自由使用该软件。
安卓系统开源有什么好处?
显然,用户快速增加开源的市场份额是明智的选择。Android可能会在全球智能手机市场占据最大的市场份额,这与它的开源直接相关。开放Android手机操作系统的源代码不仅允许Android开发者在统一的开放平台上开发程序,同时也解决了当今市场上不同智能手机之间因文件格式不同而导致的信息交换不方便和无法移植程序内容的问题;Android的开源意味着手机用户不再需要被动接受手机制造商的默认设置和环境。用户可以根据自己的需求和想法定制手机的配置。
‘捌’ 安卓底层代码公开了吗
公开,android(安卓)是完全开源的。
Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
‘玖’ 求一个安卓开发小游戏源代码,临时交作业用
package com.fiveChess;
import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
GameView gameView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Display display = this.getWindowManager().getDefaultDisplay();
gameView = new GameView(this,display.getWidth(),display.getHeight());
setContentView(gameView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("重新开始").setIcon(android.R.drawable.ic_menu_myplaces);
menu.add("退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("重新开始")){
gameView.canPlay = true;
gameView.chess = new int[gameView.row][gameView.col];
gameView.invalidate();
}else if(item.getTitle().equals("退出")){
finish();
}
return super.onOptionsItemSelected(item);
}
}
package com.fiveChess;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View {
Context context = null;
int screenWidth,screenHeight;
String message = "";//提示轮到哪个玩家
int row,col; //划线的行数和列数
int stepLength = 30;//棋盘每格间距
int[][] chess = null;//0代表没有棋子,1代表是黑棋,2代表白旗
boolean isBlack = true;
boolean canPlay = true;
public GameView(Context context,int screenWidth,int screenHeight) {
super(context);
this.context = context;
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
this.message = "黑棋先行";
row = (screenHeight-50)/stepLength+1;
col = (screenWidth-10)/stepLength+1;
chess = new int[row][col];
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);//画背景
paint.setColor(Color.BLUE);
paint.setTextSize(25);
canvas.drawText(message, (screenWidth-100)/2, 30, paint);//画最顶层的字
paint.setColor(Color.BLACK);
//画棋盘
for(int i=0;i<row;i++){
canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint);
}
for(int i=0;i<col;i++){
canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint);
}
for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
if(chess[r][c] == 1){
paint.setColor(Color.BLACK);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}else if(chess[r][c] == 2){
//画白棋
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(!canPlay){return false;}
float x = event.getX();
float y = event.getY();
int r = Math.round((y-50)/stepLength);
int c = Math.round((x-10)/stepLength);
if(r<0 || r>row-1 || c<0 || c>col-1){return false;}
if(chess[r][c]!=0){return false;}//若有棋子则不再画棋子了
if(isBlack){
chess[r][c] = 1;
isBlack = false;
message = "轮到白棋";
}else{
chess[r][c] = 2;
isBlack = true;
message = "轮到黑棋";
}
invalidate();
if(judge(r, c,0,1)) return false;
if(judge(r, c,1,0)) return false ;
if(judge(r, c,1,1)) return false;
if(judge(r, c,1,-1)) return false;
return super.onTouchEvent(event);
}
private boolean judge(int r, int c,int x,int y) {//r,c表示行和列,x表示在y方向上的偏移,y表示在x方向上的偏移
int count = 1;
int a = r;
int b = c;
while(r>=0 && r<row && c>=0 && c<col && r+x>=0 && r+x<row && c+y>=0 && c+y<col && chess[r][c] == chess[r+x][c+y]){
count++;
if(y>0){
c++;
}else if(y<0){
c--;
}
if(x>0){
r++;
}else if(x<0){
r--;
}
}
while(a>=0 && a<row && b>=0 && b<col && a-x>=0 && a-x<row && b-y>=0 && b-y<col && chess[a][b] == chess[a-x][b-y]){
count++;
if(y>0){
b--;
}else if(y<0){
b++;
}
if(x>0){
a--;
}else if(x<0){
a++;
}
}
if(count>=5){
String str = "";
if(isBlack){
str = "白棋胜利";
}else{
str = "黑棋胜利";
}
new AlertDialog.Builder(context).setTitle("游戏结束").setMessage(str).setPositiveButton("重新开始", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
chess = new int[row][col];
invalidate();
}
}).setNegativeButton("观看棋局", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
canPlay = false;
}
}).show();
return true;
}
return false;
}
}
PS:五子棋,无需图片,直接在程序里画出来的。注意我发的是两个文件,一个activity,一个类文件,别把它当成一个文件了
‘拾’ 安卓开发如何获取网页html源码
就直接用httpget访问网页,得到的就是源码