Android
文章平均质量分 52
tangxl2008008
这个作者很懒,什么都没留下…
展开
-
Android-WiFi打印功能-实现
一、 简介1. 依赖说明1) Android4.4(KitKat,api-19)及以上设备;2) 安装Mopria的“mopriaprint service”打印服务。2. mopria print service介绍“mopria print service”为Mopria联盟推出的一款Android设备打印服务应用,官网为http://mopria.or原创 2017-11-01 17:02:53 · 17268 阅读 · 11 评论 -
android studio Error:(1, 1) 错误: 非法字符: '\ufeff' 解决方案
有时在合并他人代码 或 导入其他代码后,编译提示“非法字符:‘\ufeff’”问题,如下:原创 2016-12-12 11:52:06 · 7933 阅读 · 1 评论 -
Didn't find class "com.android.tools.fd.runtime.BootstrapApplication"
在部分机器上开启开启Instantrun,出现“ClassNotFoundException: Didn't find class"com.android.tools.fd.runtime.BootstrapApplication" on path:DexPathList”问题,可以通过下面的方式解决,在“AndroidManifest.xml”中配置的自定义Application,添加默认构造函原创 2016-09-28 14:56:41 · 1262 阅读 · 0 评论 -
Android Studio中Gradle介绍
AS项目中,有两个build.gradle,分别为项目级 和 module级。//项目级:针对module的全局配置,它的作用域所包含的所有module是通过settings.gradle来配置。./build.gradle//module级:针对此app更细致的配置./app/build.gradle 1、build.gradle原创 2016-10-22 17:34:32 · 2043 阅读 · 0 评论 -
android studio2.2配置uiautomator2
1、 SDK Manager需要安装Android Support Repository。 2、 build.gradle配置(Module中的gradle)defaultConfig { … … testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}原创 2016-10-22 17:23:44 · 2805 阅读 · 0 评论 -
android中使用WebSocket
WebSocket 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是它和 HTTP 最大不同是: Ø WebSocket 是一种双向通信协议,在建立连接后,WebSocket 服务器和 Browser/Client Agent 都能主动的向对方发送原创 2016-09-03 09:45:32 · 20665 阅读 · 0 评论 -
OkHttp使用(二)加载图片及下载文件
加载图片 及 下载文件,用法基本同Get和Post方式,只是在使用返回的Response处理上不同; 通过Get及Post方式直接获取字符数据,通过response.body().string()即获取到了服务端返回的结果;而加载图片 及 文件下载,需要通过response.body().byteStream()得到文件流(InputStream),再保存或得到图片 及 文件原创 2016-06-21 21:20:58 · 8692 阅读 · 2 评论 -
OkHttp使用(一)基本使用
前言 OkHttp是一个高效的HTTP库Ø 支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求;Ø 如果SPDY不可用,则通过连接池来减少请求延时;Ø 无缝的支持GZIP来减少数据流量;Ø 缓存响应数据来减少重复的网络请求。 l 官网地址 http://square.github.io/okhttp/原创 2016-06-21 21:17:45 · 30075 阅读 · 1 评论 -
AAPT err(Facade for): libpng error: Not a PNG file 错误解决
AAPT err(Facade for): libpng error: Not a PNG file 错误解决原创 2016-06-15 14:51:08 · 16910 阅读 · 9 评论 -
chrome 加 Stetho,调试android应用
stetho是Facebook发布的一款调试android应用的工具。可以抓包,查看数据库、SharedPreferences,无须root。 1、配置Gradle依赖dependencies { compile 'com.facebook.stetho:stetho:1.0.1'} 2、在项目的Application中进行配置stetho原创 2016-12-19 10:37:37 · 735 阅读 · 0 评论 -
Chrome加载Android应用,提示“There is no "message" element for key extName”错误问题
Chrome加载Android应用,提示“There is no "message" element for key extName”错误,如: 解决方法: 找到该Crx文件夹下的“_locales\en”目录下的“messages.json”文件,在“extName”节点下,添加“message”字段标签,值对应应用的包名:原创 2017-01-04 08:56:14 · 3567 阅读 · 0 评论 -
Chrome通过ARChon插件加载运行Android应用
新版的Chrome通过ARChon插件,可以加载Crx格式的android应用,需要使用到工具: 1、新版的Chrome(版本37以上) 2、ARChon插件 3、Node.js,用于将apk文件转换为crx文件原创 2016-12-20 10:31:31 · 21444 阅读 · 5 评论 -
Android studio升级3.0,提示“Error:Cannot choose between the following configurations of project”错误
Android studio升级3.0,提示“Error:Cannot choose between the following configurations of project”错误原创 2017-11-01 17:07:55 · 11846 阅读 · 6 评论 -
Android通过系统打印功能实现PDF预览打印
一、 简介 Android4.4(KitKat,api-19)系统内置了打印框架,通过安装对应打印机的打印插件,就可以容易实现打印功能; 关于 图片、webview、layout及截屏相关的打印方式,已有很多相关教程;该篇使用介绍使用简单方式,实现对现成pdf文档进行打印。 二、 实现1. 安装打印插件1) 在应用市场,搜索原创 2017-11-02 14:54:38 · 19535 阅读 · 6 评论 -
Dagger2使用(二)“依赖” “注入” 基本概念
2.1 依赖 如果在 ClassA中,有 ClassB的实例,则称 ClassA对 ClassB有一个依赖。2.2 依赖注入 依赖注入就是非自己主动初始化依赖,而通过外部来传入依赖的方式,简单来说就是不使用 new来创建依赖对象。 如:客户类Client(依赖概念中的ClassA)不用自己来初始化它所原创 2017-04-19 14:23:42 · 396 阅读 · 0 评论 -
Dagger2使用(一)Dagger2 介绍
Dagger2是一个Android依赖注入框架,由Google开发及维护,最早的版本Dagger1由Square公司开发。 Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG——有向无环图(Directed Acyclic Graph)。也就是说,Dagger 是一个基于有向无环图结构的依赖注入库,原创 2017-04-19 14:14:58 · 328 阅读 · 0 评论 -
Android 优化APP 构建速度的17条建议
较长的构建时间将会减缓项目的开发进度,特别是对于大型的项目,app的构建时间长则十几分钟,短则几分钟,长的构建时间已经成了开发瓶颈,本篇文章根据Google官方文档,加上自己的一些理解提供一些提升app构建速度的优化建议。1. 为开发环境创建一个变体有许多配置是你在准备app的release 版本的时候需要,但是当你开发app的时候是不需要的,开启不必要的构建进程会使你的增量构建或转载 2017-04-19 14:06:14 · 348 阅读 · 0 评论 -
Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication
可以正常运行的app,在部分手机(如vivo-x5v)上无法启动,提示“Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication”问题: java.lang.RuntimeException: Unable to instantiate application com.android原创 2017-02-15 10:34:33 · 1473 阅读 · 0 评论 -
Android Studio工程-assets目录
在Android Studio中添加assets目录,目录的位置在: XXX\src\main\assets XXX代表你的项目的路径,assets放在src\main目录下。原创 2017-02-08 15:59:26 · 797 阅读 · 0 评论 -
Chrome加载Android应用,提示【'import' extension is not installed.】错误
Chrome加载Android应用,提示【'import' extension is not installed.】错误,原创 2017-01-06 09:53:12 · 6329 阅读 · 1 评论 -
OkHttp使用(四)拦截器
1、官方对拦截器的定义: Interceptors area powerful mechanism that can monitor, rewrite, and retry calls. 拦截器可以用来转换,重试,重写请求的机制。2、两类拦截器(Interceptors) 拦截器的接口类:public inte原创 2016-07-12 11:24:47 · 17084 阅读 · 2 评论 -
OkHttp使用(三)文件上传
基于Http的文件上传,采用表单方式上传文件。 通过“addFormDataPart”可以添加多个上传的文件。private void uploadMultiFile() { final String url = "upload url" File file = new File("fileDir", "test.jpg"原创 2016-06-28 17:10:49 · 35081 阅读 · 4 评论 -
Android Socket通讯基本用法
Socket可以进行长连接通讯,分为客户端和服务端。 1、客户端//①定义IP地址及端口号private final String dstAddress_ecg = "192.168.1.107";private final int dstPort = 8001; //②打开socketprivateSocketmSoc原创 2016-06-06 08:49:39 · 2139 阅读 · 0 评论 -
Android中error inflating class fragment问题
error inflating class fragmenandroid 6.0原创 2016-03-21 17:20:45 · 4628 阅读 · 0 评论 -
MVC,MVP 和 MVVM 的图示
本文通过图解方式,浅显易懂解析了MVC,MVP 和 MVVM的逻辑及它们之间的差异; 转载信息: 作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html // 另外一篇详细介绍MVC、MVP及MVVM框架的技术文档 http://www.tianmaying转载 2016-04-01 20:10:42 · 421 阅读 · 0 评论 -
Android SQLite数据库升级
版本升级需要数据库升级时,需要保留原有版本的缓存数据;需要对数据库进行增量升级,有几种解决方案:方案一: 先将现有数据库文件复制备份到SD卡,新建好新的数据库后,再将SD卡上的备份数据读取写入到新的数据库。处理繁琐,版本间隔大数据表结构有修改处理麻烦。方案二: 1、 新增表,直接增加表。 2、 针对表结构有修改的数据表;先将原表oldTable修改表名称为“newTable”,新建新表,原创 2016-03-08 09:48:38 · 447 阅读 · 0 评论 -
Android proguard混淆注意事项
在这篇博客中,http://blog.csdn.net/marshalchen/article/details/9928801有更多的关于混淆的一些注意事项;下面是使用过程中碰到的一些问题:1、 在使用总线事件(以OTTO Event为例)时,混淆后发现总线事件无法工作了;主要有下面几个原因。 1) 总线事件注解混淆过程中被删除了,需要增加下面的代码处理。//保留注解-keepattribu原创 2016-03-07 11:30:50 · 736 阅读 · 0 评论 -
Android http连接方式选择,从Volley窥探Google处理方式
Android APP在处理网络连接这块,使用Http请求时,一直一来主要使用这两种方式:一种是HttpClient,另一种是HttpUrlConnection。 关于两者的区别可以参考该文档-http://blog.csdn.net/huzgd/article/details/8712187,对两者做了比较详细的介绍及说明。 而在Android 6.0版本开始,Google正式原创 2016-03-16 17:47:20 · 685 阅读 · 0 评论 -
GSON基本使用
1、GSON为Google的一个开源json解析工具包,Gighub地址:https://github.com/google/gson 2、使用GSON解析json数据,可以大大简化json数据解析过程及避免参数缺少或对应不上问题。 3、GSON基本使用: 1)基本使用原创 2016-03-01 20:25:00 · 2239 阅读 · 0 评论 -
android studio使用-查看类结构及继承关系
下面都是以windows下Android studio为例。 1、 查看类结构 1) 选择左边的“Structure” 2) 快捷键:Alt + 7 2、 查看类继承关系 1) 选择“Hierarchy”项 2) 快捷方式:Ctrl + H原创 2016-03-04 08:34:07 · 16959 阅读 · 0 评论 -
android studio快捷键
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动转载 2016-03-02 10:59:42 · 397 阅读 · 0 评论 -
android-设置状态栏与标题栏背景
通过下面记步,可以设置应用的title与系统的通知状态栏系统的背景颜色: 1、 设置系统Theme<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle"原创 2016-03-11 11:02:55 · 1473 阅读 · 0 评论 -
Android 性能典范:拯救计划
现在的app到处都充斥着华丽的动画、复杂的转化还有自定义View,然而用户体验必须尽可能直观且类似。以下这些范例将会帮助你做出一个流畅的、快速响应的、甚至可能减少电量损耗的app,这些范例由一些可以提升整体应用表现的微优化组成转载 2016-04-07 10:23:57 · 390 阅读 · 0 评论 -
在Eclipse中,使用v7-recyclerview问题
不推荐还在Eclipse中开发android项目, 推荐Google官方的Androidstudio,不管在性能上还是便捷上都Eclipse好很多,而且Google已经中止为Eclipse提供官方支持。 有时候还是有在Eclipse上使用Android新功能的需求,下面就说在使用Eclipse使用RecyclerView过程中的一些问题。 1、直接导入“android-suppo原创 2016-04-09 19:24:36 · 10063 阅读 · 2 评论 -
Android6.0-蓝牙权限问题
在Android 6.0,原来的蓝牙功能,发现扫描蓝牙设备时,无法获取到蓝牙设备;因为在6.0后,蓝牙这块增加一个动态权限;需要在程序中动态申请。1) 在6.0版本前,使用蓝牙功能,只需要配置下面的权限即可: 2) 6.0及后续版本,使用蓝牙扫描,来需要添加如下的权限,且该权限还需要在使用时动态申请:原创 2016-05-06 21:08:21 · 23650 阅读 · 4 评论 -
RxJava使用(四)变换
RxJava 提供了对事件序列进行变换的支持;所谓变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。 不仅可以针对事件对象,还可以针对整个事件队列。 变换部分主要来自《给Android 开发者的 RxJava 详解》1. 事件对象变换-map() map():事件对象的直接变换;它是 RxJava最常用的变换;原创 2016-05-06 20:54:04 · 8998 阅读 · 0 评论 -
RxJava使用(三)Scheduler 线程控制
前言 在默认情况下,即在不指定线程的情况下,RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件。 如果需要切换线程,就需要用到 Scheduler (调度器)。 Schedulers部分主要来自《给Android 开发者的 RxJava 详解》Sche原创 2016-05-06 20:38:16 · 5197 阅读 · 0 评论 -
RxJava使用(二)filter 操作符
filter()操作符是可以对Observable流程的数据进行一层过滤处理,filter() 返回为 false 的值将不会发出到 Subscriber。 基本用法如下,下面的例子是过滤只保留偶数:Observable.just(1, 2, 3, 4) .filter(new Func1() { @Override原创 2016-05-06 20:23:05 · 6289 阅读 · 0 评论 -
RxJava使用(一)基本使用
前言 RxJava及RxAndroid比较详细的介绍可以参考该文档《给 Android 开发者的 RxJava 详解》 基本介绍 ReactiveX 及 RxJava使用大部分来自和参考《给 Android 开发者的 RxJava 详解》和《RxJava 入门》;进行整理及增加了部分自己的理解。什么是 ReactiveX原创 2016-05-06 20:07:49 · 12686 阅读 · 1 评论 -
Retrofit-基本使用
前言 Retrofit 是 Square 公司出品的 HTTP 请求库;官方的介绍:A type-safe HTTP client for Android and Java。 Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO t原创 2016-04-20 14:14:12 · 820 阅读 · 1 评论