![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android应用开发实战
文章平均质量分 74
Android应用开发实战,日常的经验积累,总结,沉淀。
特立独行的猫a
csdn技术男猫哥,高级嵌入式软件工程师、c++软件工程师、全栈工程师。专注分享c++、QT、嵌入式linux、Android、HarmonyOS、前端小程序、AIoT(物联网+人工智能)、单片机、通信技术、开发工具等相关内容。
展开
-
Android通过jni调用本地c/c++接口方法总结
网上有网友问android的原生应用,上层java代码如何通过jni调用本地的c/c++接口或第三方动态库?之前搞过android应用开发和底层c/c++接口开发都是一个人搞定,觉得还是蛮简单的。其实没啥难度,如果觉得难只是因为你没有经历过,只要搞过一遍基本就记住了。这里总结下方法留作备忘,同时分享给有需要的小伙伴。原创 2022-11-18 21:15:00 · 4246 阅读 · 0 评论 -
Android智能平板应用,界面适配的另一种轻量级方法
Android的界面适配,很常见的需求。各种设备种类和尺寸那么多,基于一种原型设计好的界面,换到另一种设备上去若不适配全乱套了。好在还是有很多方案的,这减少了不少的开发工作量。最流行的就是头条的方案了,使用也超级简单。然而,它也不是万能的,同样有失真的情况存在。这里介绍的是在另外场景下的另一种武器,使用起来也很简单。原理就是转换设备的显示像素密度Density。用在哪种场景最美?就是智能平板UI尺寸虽然不一样,但是长宽比例差不多。比如基于1920*1080的界面尺寸设计的应用,现在新的设原创 2022-02-16 09:45:30 · 2524 阅读 · 0 评论 -
Windows下成功安装Repo和下载Android源码方法总结
repo是什么? 官方的定义:Repo是谷歌用python脚本写的调用git的一个脚本,可以实现管理多个git库。Android的源代码使用Repo 命令行工具来管理多个git仓库,大概有百多个。要想克隆和管理百多个 Git 仓库,不是一件简单的事情。Repo 命令行工具对 Git 部分命令封装,将百多个 Git 库有效的进行组织。Windows下Repo安装repo原本是谷歌搞的一个方便下载AOSP的工具基于git,但由于种种原因不能直接在Windows上使用。但好在有wi...原创 2021-10-08 19:10:51 · 6089 阅读 · 1 评论 -
Android自定义ProgressBar,实现漂亮的进度提示框
在android智能平板设备应用中,一项耗时的操作总要有个提示进度的框来提高用户的操作体验,操作进度提示框就显得很常用了。系统自带的有进度条ProgressBar,一般用于显示一个过程,例如数据加载过程,文件下载进度,音乐播放进度等。但是样式太单一不好看,因此有必要自定义一个方便使用。以下记录下封装的进度展示对话框ProgressDialog。先来展示下效果图:需要准备好素材。如上图中的那个旋转的圈圈,素材图是一张png图片,分辨率114x114:如何实现自动旋转的效果呢,使用a原创 2021-09-15 12:27:52 · 3283 阅读 · 0 评论 -
使用Android的Service实现后台定时检测并重启应用
Android的Service使用一例,后台任务定时检测并定时重启应用。Service简述:Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。原创 2021-06-25 18:09:00 · 2133 阅读 · 2 评论 -
Android应用实现开机自启动的一种较好的方式
在一些智能设备中,实现应用的开机自启动是一个很实用的功能。一般怎么做呢,可能是简单的在AndroidManifest.xml中,里面的第一个启动的Activity中,如MainActivity中这样写一下,加上了"android.intent.category.HOME和DEFAULT属性:<activity android:name=".activitys.MainActivity" android:label="@string/app_na原创 2021-06-25 12:53:27 · 1512 阅读 · 0 评论 -
Android操作配置文件封装类,使用json序列化的方式实现
保存应用的一些配置信息是很常用的功能。SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,好用且强大,但是某些情况下不是很好用。比如只支持JAVA基本数据类型,不支持自定义的数据类型。以XML文件的形式保存在/data/data/PACKAGE_NAME/shared_prefs目录下,应用一旦卸载就跟着卸载了,没法保留配置或者把配置文件拷贝出来。(这在一些智能终端设备上保留配置信息和能够拷贝出来是常用的功能需求。)虽然改变存储位置为其他目录.原创 2021-06-24 20:10:14 · 839 阅读 · 0 评论 -
Android使用SoundPool播放语音,并实现按顺序延时播放
项目中有一个需求需要实现播报一连串的语音叫号。如果有免费的tts文字转语音功能就好了,但是这些功能都是收费的,于是只能一个个有限的语音拼接起来。使用SoundPool原创 2021-06-11 12:43:15 · 999 阅读 · 3 评论 -
Android的LitePal数据库ORM使用总结(避坑指南)
LitePal是Android《第一行代码》作者郭神的开源ORM框架,一个很好用的ORM,虽然好用,但是如果不加注意,会遇到很多坑。这不能算是bug吧,但是在教程也好,示例demo中也罢,很少提到。zhis原创 2021-06-04 19:41:59 · 1164 阅读 · 1 评论 -
Android的room数据库使用小结(kotlin)
还在使用原生的sqllite吗?有这么清爽且稳如狗的room为啥不用呢?这里总结下使用room数据库的过程和遇到的问题,以及如何稳定的进行数据库的迁移和升级。这里代码以kotlin为例,java也类似差不多的。首先准备,引入依赖,在app文件夹下的build.gradle中增加: //ROOM数据库 implementation "android.arch.persistence.room:runtime:1.1.1" kapt "android.arch.persistenc原创 2021-05-24 18:30:31 · 2651 阅读 · 5 评论 -
Android 动态权限 permission 操作类简单封装
自Android6.0系统之后,出来了个动态权限。本来也没啥难度,说是为了更安全和保护隐私。但是使用起来如果不做个封装,这权限问题也着实闹心。于是乎,做个简单的权限操作封装。后续再遇到需要动态权限的就简单了。以下为封装的工具类,使用也很简单。先介绍下如何使用://在Activity中定义成员变量声明需要的读写权限String[] permissions = new String[]{ Manifest.permission.CAMERA,原创 2020-11-27 19:24:40 · 517 阅读 · 1 评论 -
Android 照相机 camera 操作封装
项目中经常用到Android自带的camera拍照功能。于是做了个封装,CameraUtil.java类。再次用到就简单啦,可以最大限度的复用提高效率。我最喜欢对常用的功能模块进行封装,因为优秀的代码思想就是要追求最大化的复用和高效率。推荐《重构》和《程序员修炼之道》书籍。不要觉得这类书籍有些理论比较空洞,不如看某某实战之类的书籍。其实这类书籍影响的是人的思想,思想改变远比你多学几行代码重要。好的封装,能使你做事事半功倍,像搭积木一样快速的实现应用。为啥有的大牛做东西很快?原因无他,肯定是沉淀积累了原创 2020-11-27 19:10:22 · 1150 阅读 · 1 评论 -
android 自定义登陆对话框基类封装,且随着软键盘的弹起自动移动位置
像对话框这种常用的组件,用过一次最好做个封装。再次用到时就很简单啦。直接拿过来复用即可。以下是工作中用到的管理员登录框,由于是双屏异显,在后屏弹出的对话框,没法调用系统软键盘,于是自己实现了个系统软件盘。但一弹出来软键盘,对话框就被该住了!这怎么破?方法是有的。就是本文介绍的,随着软键盘的弹起自动移动位置的对话框。先封装实现个baseDialog基础类,把通用的操作封装一下。package com.newcapec.visitorsystem.dialog;import androi原创 2020-11-27 18:50:25 · 592 阅读 · 0 评论 -
Android自定义实现漂亮的软键盘
工作中遇到了自定义软键盘的场景,虽然简单很快就实现了,但对个别的细节不太满意。因为细节决定成败,所以细节之处也不能忽视。先来张效果图吧:我对这个自定义软键盘做了个简单的封装,使用起来也很简单。以下是我的自定义软键盘View类:package com.newcapec.visitorsystem.diyview;import android.app.Activity;import android.inputmethodservice.Keyboard;import android原创 2020-11-25 18:05:29 · 2458 阅读 · 8 评论 -
Android 的 Presentation 双屏异显,遇到的问题总结
工作中用到了Android的 Presentation 双屏异显,本以为很简单的,结果真实项目中还是遇到了一些问题。而这些问题呢,网上能查到的寥寥,群里也没人会告诉你。好在我尝试过程中一一解决了。这里记录下来。遇到的问题有:1.Presentation中弹出的对话框,显示像素密度会变。跟前屏的像素密度不一致。2.Presentation的异步显示,当屏幕的配置信息改变时,会自动dismiss,提示Presentation is being dismissed becausedisplay .原创 2020-10-13 20:00:26 · 2415 阅读 · 22 评论 -
Android应用之Hybird混合开发,集成web页面的方法尝试
总结下要点:1.在Android项目代码目录的app/src/main目录下面创建个assets文件夹。再在里面创建个web目录。把web的代码放进去。如:2.Android应用中,activity布局界面上放置一个webview。并做相关的配置:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView原创 2020-06-24 19:34:39 · 1988 阅读 · 0 评论 -
webapp打包为Android的apk包的一种方法
开发了个纯web的app小demo,想着最终集成到公众号上做个小功能,并测试下如何跨平台的运行在Android上。关于如何打包为Android的安装包,总结了下其中的一种方法,使用cordova把webapp打包为apk包。先看下在电脑web浏览器上的运行效果:首先需要安装cordova。假设已经具备的nodejs是环境,可以执行npm下载安装。npm install -gcordovanpm默认的下载有点儿慢,更改为淘宝的镜像源,方法如下。npm config set .原创 2020-06-24 19:16:52 · 3011 阅读 · 0 评论 -
Android的热修复技术--阿里的hotfix试用
热修复技术就是不重新启动APP和用户无感知的情况下,对应用进行增量的补丁更新。好处就不说了,好处太多了。即便有些功能无法做到不重启应用,但是这种增量只更新补丁包的方式还是很赞,只需要应用冷启动一下就自动完成了更新包的加载。至少不用再升级发布一次了。Android的热修复框架有很多。如阿里的andfix,hotfix,微信的tinker和美团的Robust等。要说哪个最简单最好用,...原创 2020-03-04 18:34:34 · 2692 阅读 · 0 评论 -
借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM吗
要做到应用的代码逻辑清晰,且避免重复的造轮子,最大限度的复用和提高生产力,没有好的应用架构怎么行。在Android应用开发中,目前流行MVP和MVVM架构的风格,让UI层也业务逻辑层,数据层充分解耦。这本来是好事, 本文要探讨的本意非是摒弃MVP或MVVM架构,而是意在说明,一切都是根据需要为目的,而不是死搬的像做物理题一样的套用公式。且意在突出一种模块化和组件化的软件...原创 2020-02-22 13:50:18 · 1974 阅读 · 1 评论 -
使用logcat让Android应用支持查看实时日志并输出至界面显示功能
不使用USB线接Android设备连接电脑,也不用电脑上装Android studio和logcat工具,如何查看应用的实时日志呢?方法还是有的。先附图:看这功能是不是很赞?机器强大了就是好啊,有好多创新可以派上用场了。后续继续探索新鲜的新功能。运维的兄弟们可以松口气了,给你们减减压。日志排查获取从此如此简单。甚至可以给手机互通,日志显示到你手机上也能。且日志还是实时输出的...原创 2020-02-21 18:26:19 · 5154 阅读 · 1 评论 -
Android配置文件操作模块封装,全互联网最简单好用的封装
Android中虽然提供了SharedPreference类方便的对配置文件进行操作。但是好用吗?假如有成百上千的参数需要存储,这样一个个分散的写法累死个人啊。本来几分钟能搞定的活,你可能得几个钟头。效率能是一个等级?且到处分散的写法,也容易让人看晕,给维护造成困难。先来看结果:原来的使用方式是这样的:SharedPreferences sp = PreferenceManager...原创 2020-01-31 12:25:56 · 2072 阅读 · 0 评论 -
Android中protobuf的使用
日常的总结,留作备忘。Protobuf是一种灵活高效可序列化的数据协议,相于XML,具有更快、更简单、更轻量级等特性。支持多种语言,只需定义好数据结构,利用Protobuf框架生成源代码,就可很轻松地实现数据结构的序列化和反序列化。一旦需求有变,可以更新数据结构,而不会影响已部署程序。使用Android studio3.2,在gradle中中配置:在project的bulid.grad...原创 2019-10-18 11:46:41 · 1602 阅读 · 0 评论 -
Android的配置文件操作的完美封装(使用注解 反射让配置文件操作如此清晰和简单)
我本意就是想简化下配置参数的读取和存储。原来的方式太繁琐了。比如我存个IP,就得单独调put("ip","127.0.0.1"),开机时还得先Stringip=get("ip")去加载。在Android项目应用中,经常会用到读取和保存配置文件。Android提供了SharedPreference类方便的对配置文件进行操作。但是,项目中到处穿梭着类似这样的代码:...原创 2019-10-16 17:44:05 · 649 阅读 · 0 评论 -
重新构建711的Android项目(一),巧妙的小屏菜单查询框架实现
结合前两篇,Android数据库存储模块封装,让操作记录更好用可复用Android的配置文件操作封装,摒弃SharedPreference操作配置漫天乱飞,至此已经有了数据存储模块和操作配置管理模块。这里介绍下A711的小屏管理框架实现,让设计出来的小屏界面菜单更简单,更好用。看过原来A711上的小屏菜单代码,感觉有点儿复杂,不好用。要想用除非得把代码仔细分析一下,看懂才可以。...原创 2018-08-12 16:56:54 · 576 阅读 · 0 评论 -
详解Android中AsyncTask的使用
http://blog.csdn.net/liuhe688/article/details/6532519在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在转载 2016-08-21 22:39:17 · 550 阅读 · 0 评论 -
使用 Go 语言开发 Android 应用的正确姿势探索
Android系统是基于linux,但开发框架和系统api是基于java语言的。因此使用java或是kottin开发Android应用是自然的,是原生的应用且速度也是很快的。考虑到需要支持其他系统如IOS苹果系统需要重复开发APP,或是基于java原生的app不能很好的支持热更新,或如电商APP等前端业务复杂的场景,于是又出现了如Weex,React Native等使用node,htm...原创 2019-10-09 18:27:10 · 10153 阅读 · 2 评论 -
Java版银联8583报文解析库(想法)
我想业余时间搞一套在android能方便使用的银联8583报文组包解析库。网上找的的别人的看起来都太麻烦了,也不能说麻烦,没人一套风格吧,新人用总要花时间熟悉,用起来不溜。我这已经有一套c语言的8583解析库,用起来很简单,很溜,想着以后有时间了,做个java版的吧,跟银联打交道的项目还是很多的,有用。这里先留个序,后续有时间了整。。。。。。...原创 2018-06-15 15:32:04 · 2283 阅读 · 0 评论 -
让android支持https访问银联后台,测试成功
根据XX公网前置接入规范,XX后台支持公网接入。但必须走https协议加密传输。java很强大,在java上调用http接口以及解析json之类的应该很容易,有很多现成的接口和第三方库如httpclinet,okhttp,volley,retrofit等。但是,XX的这套接口涉及到加载本地公钥证书,以及定制http协议报文头,并且post的是16进制数据。网上查资料,大多都是讲如何post提交js...原创 2018-06-15 11:54:59 · 1345 阅读 · 3 评论 -
调试支付宝脱机认证接口遇到的问题总结
通过 android的JNI调用支付宝脱机认证库本地接口时,我欲返回一个类的实例,但是却报了几个错,最后查出来了原因。在此总结下。 错误一 :E/dalvikvm﹕JNI ERROR (app bug): accessed stale local reference,jclass is an invalid local reference AllocObject 错误二: E/原创 2017-07-27 12:17:06 · 1871 阅读 · 0 评论 -
支付宝二维码脱机认证库在android的app下测试过程记录
今天收到了第三方库(支付宝的二维码脱机认证库,用来脱机验证支付宝的支付二维码),于是兴奋着调用一下试试,如果测试成功,那么做应用自然也没太大问题。以下为测试过程记录。正好又练手一下在android平台调用动态库及调用第三方动态库的过程。说明:第三方库要放置于:eclipse工程下libs-armeabi目录下:包括:libalipayqrcode.so和libposoffline.原创 2017-07-04 17:01:05 · 2107 阅读 · 0 评论 -
支付宝二维码脱机认证库测试过程记录(andorid平台adb shell验证)
最近在调试支付宝给提供的二维码脱机认证库,他们给提供了几个文档和 libposoffline.so库文件。要想在Android或Linux上做支持支付宝扫码付的应用,必须会调用他们给的二维码脱机认证库。以下是一个在Android调用成功的例子:记录下过程及注意事项。如图:以下是过程记录,makefile文件:NDK_ROOT=D:/ADT/android-ndk-r原创 2017-07-04 15:02:44 · 2062 阅读 · 0 评论 -
浅析Android中的消息机制
浅析Android中的消息机制转自:http://blog.csdn.net/liuhe688/article/details/6407225在分析Android消息机制之前,我们先来看一段代码:[java] view plain copypublic class MainActivity extends Ac转载 2016-08-21 22:38:03 · 445 阅读 · 0 评论 -
Android之Handler用法总结
Android之Handler用法总结方法一:(java习惯,在android平台开发时这样是不行的,因为它违背了单线程模型)刚刚开始接触android线程编程的时候,习惯好像java一样,试图用下面的代码解决问题 new Thread( new Runnable() { public void run() { myVi转载 2016-08-04 14:47:36 · 600 阅读 · 0 评论 -
java调用JNI总结
工作中需要用到java调用DES加密解密算法进行通信加密、MAC计算等,原来直接有C语言版的DES算法库可以用,但是java用的不熟,懒得从网上找了,就想到把C语言的DES算法库编译成DLL,然后通过java的JNI调用。网上java调用jni的例子挺多,本以为挺简单的,但是实践了一下才知道,好多地方容易出错,这里总结一下容易出错的地方。java调用JNI,按步骤,首先需要建一个类,声明本原创 2016-03-09 10:45:02 · 954 阅读 · 0 评论 -
Java解析xml的主要解析器: SAX和DOM的选择
Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器。SAX的包是org.xml.saxDOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需转载 2016-03-16 15:43:15 · 637 阅读 · 0 评论 -
一种MVVM风格的Android项目架构浅析
前几天接触公司一Android项目,刚看代码时,一团晕。不知道这么多层级的代码都是干嘛的,程序的流程都没看清楚。要知道只有清楚了流程,结构,才能够在浩瀚的代码里游刃有余。先不管局部的功能是什么,从全局上去把握才能把一件事情看清楚。从整体和宏观上把握,由整体到局部,这是一种哲学和做事的方法论。就好比盲人摸象,即便再摸也不知道他摸的是一头大象。即使不是盲人,把一小孩带过去摸,也未必分得清那就是大象。只...原创 2018-07-05 12:07:36 · 7452 阅读 · 1 评论 -
protobuf在java, Android下的使用总结
protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。后面将会有简单的demo对于这两种格式的数据转化效率的对比。但这个库目前使用还不是太流行,据说谷歌内部很多产品都有使用。Protobuf的优点1,性能好,效...原创 2018-07-21 17:25:58 · 4373 阅读 · 0 评论 -
WebService接口调试如此简单
WebService,老技术了。现在也还在用。我这边的Android终端调试webservice接口,一开始想看日志,用的方法真笨啊。装了个WireShark抓包工具在那看收发的报文,看着真费劲。又改进,让终端打印出日志来看,使用的是ksoap2框架。 if(resultSoapObject == null){ Log.d(TAG...原创 2019-06-20 09:11:10 · 8284 阅读 · 0 评论 -
重新构建711的Android项目(二),架构的选择与实现
看过太多的关于Android架构方面的文章,也深知一个好架构的重要性。如果一开始代码没有好多架构,就是前人挖坑,后人掉坑里。因为随着代码和业务的增多,看到的混乱与不合理,会让人进入进退两难的境地,无法取舍。弃之可惜,从头来没精力。这里选择了Android项目中流行的MVVM架构。使用Android官方最新的LiveData和ViewModel,再加上Databinding。单纯的使用D...原创 2018-08-12 17:14:54 · 613 阅读 · 0 评论 -
Android的MvVM模式探讨: Databinding 与 ViewModel+LiveData+Repository对比
Mvvm模式: Databinding 与 ViewModel+LiveData+Repository作者:Yagami3zZ,转自:https://www.jianshu.com/p/e7628d6e6f61感谢原作者精彩的分析。方便更多人参考学习。前言:本文主要是对常见设计模式的一些分析,以及讲述在Android项目中实现Mvvm模式的两种方式。通过Databinding或者V...转载 2018-08-03 08:39:06 · 8148 阅读 · 3 评论