分类
Android Linux

在 Linux 上安装安卓 8.1 Oreo 来运行应用程序和游戏

android x86 是一个自由而开源的项目,将谷歌制作的安卓系统从 ARM 架构移植到了 x86 架构,可以让用户在他们的桌面电脑上运行安卓系统来享受所有的安卓功能和应用程序及游戏。

在前一段时间,android x86 项目完成了安卓 8.1 Oreo 系统的 x86 架构移植。在这篇文章中,我们将解释如何在你的 Linux 系统上安装它,以便你能够随时使用你的安卓 用程序和游戏。

在 Linux 上安装安卓 x86 8.1 Oreo

准备环境

首先,让我们下载 android x86 8.1 Oreo 系统镜像。你可以从这个页面下载它,只需单击 “android-x86_64-8.1-r1.iso” 文件下的 “View” 按钮。

我们将在我们的 Linux 系统上使用 QEMU 来运行 android x86。QEMU 是一个非常好的模拟器软件,它也是自由而开源的,并且在所有主要的 Linux 发行版存储库中都是可用的。

在 Ubuntu/Linux Mint/Debian 上安装 QEMU:

sudo apt-get install qemu qemu-kvm libvirt-bin

在 Fedora 上安装 QEMU:

sudo dnf install qemu qemu-kvm

对于其它发行版,只需要搜索 “qemu” 和 “qemu-kvm” 软件包,并安装它们。

分类
Android

Android无需ROOT的跨平台投屏工具

前言

之前有提到Vysor,但是这个插件免费版的码率比较低,如果要高清的就要付费。

现在推荐一个Genymotion推出的投屏工具,跨平台,自定义码率,最重要的是开源,简直良心。

Github:https://github.com/Genymobile/scrcpy
下载地址:https://github.com/Genymobile/scrcpy/releases

效果图

gif录制较模糊,实际使用很清晰

分类
Android 笔记

Android 之 FileProvider

实现一个拍照上传的功能,在miui机型上会抛出FileUriExposedException异常。检查后发现是Android API有变化。从Android 7.0开始,不再允许在app中把file://Uri暴露给其他app,否则应用会抛出FileUriExposedException。原因在于,Google认为使用file://Uri存在一定的风险。比如,文件是私有的,其他app无法访问该文件,或者其他app没有申请READ_EXTERNAL_STORAGE运行时权限。解决方案是,使用FileProvider生成content://Uri来替代file://Uri。

FileProvider官方文档:https://developer.android.com/reference/android/support/v4/content/FileProvider.html

在清单文件上声明FileProvider(注意在application标签里声明才有用)。

分类
Android 笔记

一次集成aar的经历

公司和某知名支付公司合作,互相交换渠道。对方使用我们的扫码和公众号、服务窗支付。我们使用对方的支付宝APP支付。一切准备工作弄完后开始接入。
对方扔过来的sdk是aar的,当时就傻眼了。以前只用过jar,没用过aar。于是上网恶补了这部分的知识。不禁感叹到,如果aar早些出来,当时就不用那么辛苦手写布局了。

把对方的pay.aar放到libs目录,在gradle中配置引入:
增加

repositories {
    flatDir { dirs 'libs' }
}

在 dependencies 中增加:

compile(name: 'pay', ext: 'aar')

引入完成后启动工程,本以为一切都很顺利,结果报了一个错误:
uses-sdk:minSdkVersion 15 cannot be smaller than version 19 declared in library [:pay:] D:\Project\android-payadd\PolymerSdk\app\build\intermediates\exploded-aar\pay\AndroidManifest.xml
Suggestion: use tools:overrideLibrary=”com.masget.pay” to force usage

分类
Android

Android使用SOAP调用远程服务

SOAP是一种基于XML的协议规范,最近正好使用到了它。在Android中,可以使用KSOAP2来调用WebService。
KSOAP2相关文档:http://simpligility.github.io/ksoap2-android/
KSOAP2下载地址:https://oss.sonatype.org/content/repositories/ksoap2-android-releases/
下载 ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar,将该jar包放入工程的libs目录中。调用步聚如下:

SoapObject request = new SoapObject("http://service", "getName");

SoapObject类的第1个参数表示WebService的命名空间,可以从WSDL文档中找到WebService的命名空间。第2个参数表示要调用的WebService方法名。
设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步。设置方法的参数值的代码如下:

分类
Android Java 笔记

解析HTTP协议实现文件上传

在J2EE开发中,使用浏览器上传文件很简单,服务器用Apache的Commons FileUpload实现就可以了。但是在开发C/S架构的程序时就需要自己处理。用代码实现文件上传需要对表单的multipart/form-data有所了解,(表单默认情况下使用application/x-www-form-urlencoded)。

在multipart/form-data中Content-Type是这样的:

boundary是表示分隔,用于分隔多个文件。格式是 — 后面可以跟随一串随机数。

分类
Android 笔记

Android 图片压缩

现在的手机动不动就是几千万像素,拍下来的照片一般都有3M-5M,像华为荣耀7拍的有7M左右。这么大的图片上传不仅很慢,还会造成服务器端有很大的压力,所以有必要把图片进行压缩。

压缩图片有两个要点:
1.等比缩小图片大小
2.适当降低图片质量
现在的项目中需要有一个证件上传功能,在保证证件照清晰可辩的情况下要缩减图片大小,所以我写了一个工具类。

分类
Android 笔记

FragmentManager的使用及管理

Fragment的产生与介绍

Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套app,然后拷贝一份,修改布局以适应什么超级大屏的。难道无法做到一个app可以同时适应手机和平板吗?答案是,当然有,那就是Fragment。Fragment出现的初衷就是为了解决这样的问题。

你可以把Fragment当成Activity一个界面的一部分,甚至Activity的界面由完全不同的Fragment组成,更帅气的是Fragment有自己的声明周期和接收、处理用户的事件,这样就不必要在一个Activity里面写一堆事件、控件的代码了。更为重要的是,你可以动态的添加、替换、移除某个Fragment。

分类
Android

MVP架构与MVC架构区别

MVP架构:
MVP就是Model-View-Presenter。
MVP架构
如上图所示可以看见MVP模式需要具备如下三要素:
最左侧的View。也就是Android中的Activity。同时需要创建一个View的抽象接口View interface。需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合。
最右侧的Model。用来操做实际数据(譬如数据存储等)。有时也需要创建一个Model的抽象接口Model interface用来降低耦合。
中间的Presenter。作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。

分类
Android

关于Avoid non-default constructors in fragments的错误

在android开发中,写了一个关于继承Fragment的类时,如果有重载构造函数时,会提示“Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead”的错误。

这时,在类的前面加上@SuppressLint(“ValidFragment”)即可。
这个问题只在Android Studio导出时有,Eclipse中正常。