
android进阶
文章平均质量分 90
MYBOYER
梦想是一定要有的,万一实现了呢?
展开
-
Kotlin DSL Gradle 指南
继承 DefaultTask,Action 的方法需要添加 @TaskAction 注解。注册自定义的 Task然后我们就可以在 AndroidStudio 的 Gradle 工具面板,Tasks -> other 里找到这个 Task,双击执行即可。如果是带构造函数传参的话,可以这样使用 @Inject 注解可以帮助 Gradle 正确地理解带参数的构造函数,并且在创建任务实例时能够正确地调用带参数的构造函数。原创 2024-11-26 14:24:02 · 1838 阅读 · 0 评论 -
Android—统一依赖版本管理
该文件分了四个板块,[versions],[libraries],[bundles],[plugins],bundles的作用是将libraries中你觉得可以绑定到一起的引用绑定到一块,在build.gradle中引用时,只引用bundle的值就行,相当于一次引用多个libraries。引用后的build.gradle文件,可以对照前面的Kotlin DSL,所有的版本号和依赖都引用了libs.versions.toml,以此进行统一管理。优点就是可以动态定义版本名称等。二.config.gradle。原创 2024-11-13 15:55:11 · 1097 阅读 · 0 评论 -
多项目共享gradle依赖管理
gradle官方文档介绍运行 Gradle 时会检查项目中是否存在一个名为 buildSrc 的目录。然后 Gradle 会自动编译并测试这段代码,并将其放入构建脚本的类路径中, 对于多项目构建,只能有一个 buildSrc 目录,该目录必须位于根项目目录中, buildSrc 是 Gradle 项目根目录下的一个目录,它可以包含我们的构建逻辑,与脚本插件相比,buildSrc 应该是首选,因为它更易于维护、重构和测试代码Gradle 官网的描述。原创 2023-12-21 10:57:38 · 2114 阅读 · 0 评论 -
安卓轻量级高效存储数据库MMKV
MMKV 由来在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的 crash,参考文章,文章里面设计的技术方案是在关键代码前后进行计数器的加减,通过检查计数器的异常,来发现引起闪退的异常文字。在会话列表、会话界面等有大量 cell 的地方,希望新加的计时器不会影响滑动性能;另外这些计数器还要永久存储下来——因为闪退随时可能发生。这就需要一个性能非常高的通用 key-value 存储组件,我们考察了 SharedPreferences、NSUserDefaults、SQLite 等常见组件,...原创 2021-09-16 15:28:18 · 421 阅读 · 0 评论 -
Modbus在Android上的应用
简介Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包括ASCII、RTU、TCP三种报文类型。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。ModbusTCP数据帧ModbusTCP的数据帧可分为两部分:MBAP+PDU。报文头MBAPMBAP为报文原创 2021-07-19 10:53:09 · 2128 阅读 · 0 评论 -
PreferenceFragment的使用
PreferenceFragment简介在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,Android专门为这种Activity提供了便捷的基类PreferenceActivity(如果是Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内原创 2020-10-09 14:09:46 · 846 阅读 · 0 评论 -
Android Jetpack使用入门
Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。优点:加速开发 组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin...原创 2020-08-06 16:52:23 · 718 阅读 · 0 评论 -
基于DLNA实现iOS、Android投屏
由于我司需求,需要在iOS和安卓客户端实现DLNA投屏和控制。经过一番折腾,决定由我来研究DLNA。说起来又兴奋又紧张,兴奋希望自己能够弄出来然后跟安卓组讲解原理,紧张是因为怕自己能力不足做不出来。DLNA网上的资料比较笼统不好入门,官方资料直接是每个1000多页的10几个PDF文档,根本无从下手。相关开源项目有名的有Platinum UPnP,但是由于它是基于C++实现的,相关文档并不全面。iOS相关开源项目都三四年没更新的,找来找去只好自己去啃自己去实现了。还好买到一本不错的书《智能家庭网络:技术、原创 2020-08-05 11:22:36 · 5066 阅读 · 0 评论 -
MQTT知识要点
一.MQTT介绍1.简介MQTT(message queuing telemetry transport)是IBM开发的即时通讯协议,是一种发布/订阅极其轻量级的消息传输协议,专门为网络受限设备、低宽带以及高延迟和不可靠的网络而设计的。由于以上轻量级的特点,是实现智能家居的首选传输协议,相比于XMPP,更加轻量级而且占用宽带低。MQTT官网:http://mqtt.org/MQTT介绍:http://www.ibm.comMQTT Android github:https://gith...原创 2020-07-21 10:21:24 · 890 阅读 · 0 评论 -
Android JNI开发入门与实战
简介:涉及到一些算法或者底层驱动的时候,往往需要使用jni来开发。现在官方推荐使用CMake工具来开发jni。使用CMake开发Jni其实挺简单的,要求不高的话只需要简单配置一下就可以使用了。配置环境使用CMake进行Jni开发需要使用CMake插件、LLDB插件、NDK插件,这些都可以通过Android Studio很快地安装。打开SDK Manager,找到Android SDK->SDK Tool选项,安装CMake、LLDB、NDK插件。创建支持C++代码的工程默原创 2020-05-14 11:49:57 · 600 阅读 · 0 评论 -
Gradle高級配置
一、Android Studio的两种模式及签名配置debug模式debug模式使用一个默认的debug.keystore进行签名。这个默认签名(keystore)是不需要密码的,它的默认位置在C:\Users\<用户名>\.Android\debug.keystore,如果不存在Android studio会自动创建它。例如我的debug.keystore就在C:\U...原创 2020-03-28 20:43:11 · 569 阅读 · 0 评论 -
关于android:sharedUserId=“android.uid.system“ 的使用
有时候我们需要在自己的应用中使用一些系统相关权限,比如USB权限,如果我们自己的应用所在进程和系统进程为同一个UID,就会默认拥有该权限,不需要用户自己去授予,很多情况下会方便很多。最近在做的项目,有好大一部分都用到这个权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable ...原创 2020-03-16 16:40:38 · 38559 阅读 · 5 评论 -
Android实现在webview中长按图片弹出菜单保存图片
Android实现在webview中长按图片弹出菜单保存图片在项目中遇到一个保存webview中二维码图片的问题,做个笔记。效果如图: 用到webview的三个方法:getHitTestResult()——Gets a HitTestResult based on the current cursor node getType()——Gets the type of the hit ...原创 2020-03-03 21:33:54 · 2410 阅读 · 0 评论 -
Android 10 中的隐私权及变更
Android 10 引入了大量变更(如改进了系统界面、让权限授予更加严格以及对应用能够使用哪些数据实施了限制),目的是保护隐私权并赋予用户控制权。所有开发者都应查看隐私功能并测试他们的应用。具体影响可能会因每个应用的核心功能、定位和其他因素而异。重大隐私权变更 隐私权变更 受影响的应用 缓解策略 分区存储 针对外部存储的过滤视图,可提供对特定于...原创 2020-02-09 14:00:03 · 1216 阅读 · 0 评论 -
面向开发者的 Android 10 —— Android 10 亮点
2020年已来,虽然2020的开头有些艰难,我们相信国家一定能战胜疫情,战胜困难,中国一定行,中国人民一定能!中国加油!武汉加油!今年Android 10将会普及使用,这就给开发者提出了新的适配要求,更好的了解Android 10的特性和优点,了解更新中对开发适配的需求,已迫在眉睫!Android 10 围绕三个重要主题构建而成。首先,Android 10 以其先进的机器学习和对新兴设备(...原创 2020-02-02 10:36:19 · 945 阅读 · 0 评论 -
如何反编辑Android apk文件
第一:要在你的PC上建立Java的环境,下载JDK并安装即可。第二:下载必要的工具。apktool工具。下载后解压(有三个文件aapt.exe,apktool.bat,apktool.jar),为了方便,解压出来的文件放在cmd模式(win+R)默认的目录下。比如,我的是Windows7 32位我的cmd模式默认目录是C:\users\用户名。第三:如果你是要编译系转载 2013-03-08 09:15:11 · 812 阅读 · 0 评论 -
用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法
http://blog.youkuaiyun.com/jason_wks/article/details/7454823android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式的,转换成bitmap就是本来的大小。在使用模拟器时,出现以上错误,怎么办呢?1.方法一:增大限制:在设置VM的时候,在Hardware选项中,有一项Max VM application he转载 2013-03-08 09:54:08 · 877 阅读 · 0 评论 -
Android http请求例子、Unicode转UTF-8 java代码收藏
http://blog.youkuaiyun.com/wyzxk888/article/details/7337649Android项目经常是C/S模型的,因此需要向服务器发出http请求,收藏一个http请求的例子以便以后可以用。假设发出的请求使用get方法,服务器传回JSON数据,解析代码如下:[java] view plaincopyprint?HttpClient转载 2013-03-08 10:00:34 · 1021 阅读 · 0 评论 -
Android SAX解析XML文件
SAXPersonService.java[java] view plaincopyprint?import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import java转载 2013-03-08 10:15:40 · 606 阅读 · 0 评论 -
Android DOM解析XML
[java] view plaincopyprint?import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.Documen转载 2013-03-08 10:16:40 · 846 阅读 · 0 评论 -
Android SQLite 事物操作
public void payment(){ SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); db.beginTransaction();//开启事务 try{ db.execSQL("update person set amount=amount转载 2013-03-08 10:28:06 · 678 阅读 · 0 评论 -
Android学习--App模块化及工程扩展
http://www.cnblogs.com/qianxudetianxia/archive/2011/05/01/2030232.html这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用。1.需求 无论是在.net还是java平台,合理的分层架构是最普遍的模块化思路之一。 dll,jar文件无不风靡盛行,无处不在。转载 2013-03-07 22:27:11 · 698 阅读 · 0 评论 -
Android利用接口实现航班时刻查询
http://www.chenwg.com/technology/android/59-flight-search.html在网上发现一个接口,是关于航班查询的,http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx ,而这又与web service的知识有关,所以就写一个简单的例子。看看这个接口文档,返回的数据是x转载 2013-03-08 09:41:33 · 1825 阅读 · 0 评论 -
Android PULL解析XML
[java] view plaincopyprint?package cn.itcast.service; import java.io.InputStream; import java.io.OutputStream; import java.io.Writer; import java.util.ArrayList; import java.util转载 2013-03-08 10:18:12 · 539 阅读 · 0 评论 -
Android SQLite数据库增删改查
推荐一个查看SQLite数据库的工具SQLite Developer 3.9.2下载地址:http://www.sqlitedeveloper.com/DBOpenHelper.java[java] view plaincopyprint?package cn.itcast.service; import android.content.Contex转载 2013-03-08 10:24:59 · 846 阅读 · 0 评论 -
Android移动应用界面的模板化设计
http://www.apkbus.com/android-14578-1-1.htmlAndroid没有像苹果开发那样功能强大的界面开发工具,本身ADT插件提供的界面编辑能力有限,没办法刻画所有的界面情况;Android的界面xml代码可以进行人工修改,而Iphone的全部在图形界面上拖动完成,可没提供任何方式的代码级修改。Android的UI设计开发过程非常繁琐,容易出错,需要很长时间调节转载 2013-03-08 09:27:24 · 788 阅读 · 0 评论 -
Android 中Parcelable的作用
http://blog.sina.com.cn/s/blog_78e3ae430100pxba.htmlandroid提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。Parcelable实现要点:需要实现三个东西1)writeToParc转载 2013-03-08 09:47:28 · 513 阅读 · 0 评论 -
Android内存管理
http://my.eoe.cn/bethkede/archive/394.html概述在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在是少的可怜。这样就需要我们在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM错误。JAVA的内存管转载 2013-03-08 09:58:29 · 591 阅读 · 0 评论 -
android 解析json数据格式
json数据格式解析:一种是普通的,一种是带有数组形式的;普通形式的:服务器端返回的json数据格式如下:{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}分析代码如下:[java] view plai转载 2013-03-08 09:49:08 · 678 阅读 · 0 评论 -
JSONException:java.lang.String cannot be converted to JSONObject解决办法
在用org.json.JSONObject 解析从网络获取的json数据时,遇到JSONException: java.lang.String cannot be converted to JSONObject,打印字符串,查看json字符串没有问题,研究了好长时间,终于找到问题,造成问题的原因是在编写json文件的时候,采用utf-8编码,utf8有个BOM格式,去掉这个格式就ok了。如何去掉呢转载 2013-03-08 10:09:52 · 1340 阅读 · 0 评论 -
Android SharedPreferences保存应用参数
[java] view plaincopyprint?import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; impo转载 2013-03-08 10:19:21 · 567 阅读 · 0 评论 -
android内存溢出
Android有效解决加载大图片时内存溢出的问题尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,转载 2013-03-12 17:50:33 · 870 阅读 · 0 评论 -
Android Memory Management(内存管理)
从早期G1的192MB RAM开始,到现在动辄1G -2G RAM的设备,为单个App分配的内存从16MB到48MB甚至更多,但OOM从不曾离我们远去。这是因为大部分App中图片内容占据了50%甚至75%以上,而App内容的极大丰富,所需的图片越来越多,屏幕尺寸也越来越大分辨率也越来越高,所需的图片的大小也跟着往上涨,这在大屏手机和平板上尤其明显。而且还经常要兼容低版本的设备。所以Android的转载 2013-03-14 18:10:53 · 806 阅读 · 0 评论 -
Android Application的作用
原文转载处:http://blog.youkuaiyun.com/lieren666/article/details/7598288学习android挺长时间了,但是对于Appliction还不是很了解。今天花一些时间研究了一下Application。What is ApplicationApplication和Actovotu,Service一样是android框架的一个系统组件,当an转载 2013-03-14 18:39:29 · 704 阅读 · 0 评论 -
Android内存泄露
不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露。其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。如果我们的java运行很久,而这种内存泄露不断的发生,最后就没内存可用了。当然java的,内存泄漏和C/C++是不一样的。如果java程序完全结束后,它所有的对象就都不可达了,系统就可以对转载 2013-03-14 18:42:46 · 758 阅读 · 0 评论 -
Android自定义控件以及控件属性的自定义
自定义控件在android中无处不见,自定义控件给了我们很大的方便。比如说,一个视图为imageview ,imagebutton ,textview 等诸多控件的组合,用的地方有很多,我们不可能每次都来写3个的组合,既浪费时间,效率又低。在这种情况下,我们就可以自定义一个view来替换他们,不仅提升了效率并且在xml中运用也是相当的美观。一、控件自定义属性介绍以下示例中代码均在转载 2013-03-28 19:01:38 · 568 阅读 · 0 评论 -
android ListView和GridView拖拽移位具体实现及拓展
关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例: 2012-12-4 18:16 上传下载附件(49.49 KB) 2012-12-4 18:16 上传下载附件(48.27 KB)转载 2013-03-17 10:23:18 · 950 阅读 · 0 评论 -
Android BaseAdapter(Spinner,ListView,GridView)的使用
我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。 下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是 impl转载 2013-03-17 10:25:51 · 884 阅读 · 0 评论 -
SQLite数据库储存图片信息,GridView显示,基本实现添加、删除图标操作 ... ...
SQLite数据库储存图片信息,GridView显示,基本实现添加、删除图标操作效果图如下:废话不多说,直接上代码:MainActivity.java[代码]java代码:?123456789101112131415161718192021转载 2013-03-17 10:35:52 · 1643 阅读 · 0 评论 -
expandablelistview学习--在listView里面嵌套GridView
在网上看到一个例子,讲android中的expandablelistview,是一种可以扩展的listview,就是那种点击一下可以扩展出子项,再点一下收缩回去的显示list。因为需要查看一堆文件的目录结构,就使用了expandablelist以便于直观地看到结构形式。顶层是group,第二层是child。实现ExpandableListView至少需要下面两个类。 一、Ex转载 2013-03-17 10:41:57 · 1104 阅读 · 0 评论