Android
yanglongyyl
Coding
展开
-
单击AutoCompleteTextView后自动提示,无需输入字符,提示信息通过SQLite查询获得
单击AutoCompleteTextView后自动提示,无需输入字符,提示信息通过SQLite查询获得用到的方法 showDropDownAdded in API level 1 void showDropDown () Displays the drop down on screen.原创 2016-10-08 17:57:37 · 507 阅读 · 0 评论 -
实现一个byte[]复用工具类
题目出自qq音乐Android现场笔试题,原题要求记得不太清楚,大概要求如下:public class ByteArrayCache { private int mMaxBytes; private List<byte[]> mBuffers = new ArrayList<>(64); public ByteArrayCache(int c...原创 2019-06-24 11:46:18 · 895 阅读 · 0 评论 -
给定一个正整数数组,返回这个数组元素拼接起来所能组成的最大数
由于最大数可能超过Integer.MAX_VALUE,返回值用String返回: //正整数数组组成最大数 static String maxNum(int [] array) { for (int i = 0;i < array.length;i ++) { for (int j = i;j < array.length;j ++) ...原创 2019-05-16 11:48:33 · 3873 阅读 · 1 评论 -
计算数组里面有多少对数之和等于指定的数,数组元素可以相等(同一个元素重复出现),配对过的index不能再次配对
用例:输入{1,1,99},100;返回1输入{1,1,99,99},返回2输入{5,8,1,9,10,99,2,3,98,98},100,返回2static int countSum(int[] items, int sum) { //key item元素,value 元素的index HashMap<Integer, Integer> has...原创 2019-05-16 00:01:46 · 2492 阅读 · 2 评论 -
腾讯mars xlog源码解析
前言 之前由于公司发展需要,app网络请求日志始终没有一个良好的分析手段,故公司成立了apm项目小组,通过AOP编程获取app网络请求日志并上报到服务端,然后通过网页多维度分析用户网络请求数据,类似听云博睿那样的工具,而日志模块通过调研最终选用了mars xlog,而xlog原有的日志格式并不符合业务需求,故需要通读xlog源码才能在其基础上进行修改,而且为什么选型xlog作为日志存储模块,接...原创 2019-04-11 17:06:59 · 2922 阅读 · 1 评论 -
Android应用内截图,解决ImageView不能截取问题
LinearLayout view = findViewById(R.id.root);ImageView mIvPreview = view.findViewById(R.id.iv);BitmapDrawable drawable = (BitmapDrawable) mIvPreview.getDrawable();Bitmap bm = drawable.getBitmap();...原创 2018-04-12 15:53:39 · 1422 阅读 · 0 评论 -
linux下编译opencv3.3.0 for android
环境:ubuntu 1604,ndk12b,androidsdk 首先下载源码,https://opencv.org/releases.html里面有很多版本的源码,本次使用3.3.0这个版本,所以复制图中的source超链接: 得到https://github.com/opencv/opencv/archive/3.3.0.zip源码地址,在linux的命令行窗口...原创 2018-04-01 11:30:55 · 1473 阅读 · 0 评论 -
android app内动态获取apk签名md5,与keytool获取的一致
首先使用keytool命令行获取: cmd中使用命令行:keytool -list -keystore D:\Desktop\app_key 根据提示输入keystore的密码,回车就可以看到签名的md5,sha1,sha256等信息 然后在app中使用次keystore编译app并打log,app代码:/** * MD5加密 * @param byteStr原创 2018-01-23 10:47:57 · 15973 阅读 · 5 评论 -
android直播app礼物连击动画效果
最近在做公司的直播项目,需要实现一个观看端连击送礼物的控件: 直接上代码:原创 2017-07-12 03:28:50 · 4334 阅读 · 2 评论 -
jni使用openssl AES256位加解密(cbc模式),匹配java后端服务器算法,解决末尾乱码问题
前言:以下代码中统一的AES加密方式为”AES/CBC/PKCS7PADDING”,IV参数为”0102030405060708”(java中转为了byte数组,具体值看代码),之所以用CBC是因为它比ECB更安全 在使用openssl编写AES加解密算法代码时,发现c语言的AES加解密和JAVA的加解密并不能匹配,也就是说c语言加密的用c语言能解密,但是用java却解密不了,反之亦然;仔细对比发原创 2017-11-22 16:17:25 · 4209 阅读 · 0 评论 -
利用openssl crypto进行RSA非对称加密签名
最近公司升级app与后端通信安全机制,需要用到非对称加密RSA算法,需要在native层进行RSA签名,故采用ndk编译openssl的crypto目录下的算法,调用openssl相关函数进行签名。 首先,需要秘密保存私钥,这里在native层读到私钥后由于是在内存中,固需要用到openssl内存相关读取私钥的函数,openssl提供的bio接口读取字符串私钥,在内存中读取私钥有个坑,对私钥的内容原创 2017-08-05 15:29:25 · 1086 阅读 · 0 评论 -
编译ijkplayer,并添加rtsp、rtmp支持,解决无法播放、unknown、延迟问题
最近在研究利用ndk技术,实现FFmpeg解码解码视频文件、视频流,发现了B站的开源播放框架ijkplayer,真是太强大了,基于ijkplayer开发减少了许多移植FFmpeg的步骤。首先当然是配置好环境,我的环境是ubuntu_1604+ndk12e+git,按照官方的步骤,在terminal里输入回车ruby -e "$(curl -fsSL https://raw.githubuserc原创 2017-03-15 02:40:52 · 24370 阅读 · 10 评论 -
SimpleGif,一款使用方法类似Glide但更省cpu、memory的Android ndk gif解码库,cmake方式,android studio项目
Gif文件是由多张静态图片组合而成,每张图片都有自己的显示时间,屏幕通过连续显示这些图片,以达到动态图的目的,由于这些特性,导致如果用java去解码,可能效率不是那么高,因为java能运行速度始终无法匹敌c/c++,所以用jni技术,通过c/c++代码解码gif文件,再将解析得到的单张图片以及对应的显示时间返回到java层,再呈现到view上是比较好的方式。 我通过学习github上一些开源代码,原创 2017-03-01 14:00:16 · 2839 阅读 · 0 评论 -
双重检验锁定单例模式的优化写法(非volatile,全版本jvm通用)
首先介绍下普通的双重检查锁定: 图中这样的代码是有问题的,因为jvm存在无序写入,在代码sInstance = new TestSingleTon() 这一处,有可能在构造函数执行前sInstance变为非null,这时的sInstance指向是一个尚未构造完成的对象,这时其他线程可能会得到一个尚未初始化完成的对象,对这个对象进行操作是会出现问题的; 针对可能出现上述无序写入问题,原创 2017-01-07 00:37:19 · 406 阅读 · 0 评论 -
JAVA死锁的写法(实际工作中要避免)
在java开发中,避免不了要加锁控制程序逻辑,但加锁有可能导致死锁,造成线程永远卡死在等待释放锁,后面的代码得不到执行; 在java里,一般是通过synchronized关键字加锁,在jdk1.5版本中新增了Lock接口显示的加锁,本文讨论用这两种方式实现死锁; 方式一:public static void main(String[] args) { Object lock1 =原创 2017-02-28 16:03:34 · 872 阅读 · 0 评论 -
解决Android与Java web的rsa加密算法的方法
最近想使用Android进行RSA非对称加密,但是发现加解密代码在android与pc上的运行结果不一样,后再发现是因为android的jvm与jdk的jvm实现的rsa不一样导致的,所以在创建Cipher对象时需要指定参数,android代码与标准java代码都用同样的参数:RSA/ECB/PKCS1Padding,原创 2016-12-06 00:38:43 · 712 阅读 · 0 评论 -
Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so
最近在研究Google推荐的cmake方式的ndk开发,遍寻网络居然很难找到如何在c层调用其它动态链接库函数(cmake方式),经过不懈努力,终于找到了可行的方法;本人初次涉及ndk开发,如有失误之处,请指教;原创 2016-11-16 01:30:46 · 1925 阅读 · 0 评论 -
线上环境定位ARouter+Tinker+多渠道打包导致java.lang.IncompatibleClassChangeError问题
由于模块化开发,项目引入了阿里ARouter路由组件,由于需要动态修复线上环境app某些异常问题,项目引入了腾讯tinker热修复组件,但是在项目上线这些组件后,出现了一个难以置信的bug,如下图所示:累计单个版本发生了上万次闪退,单个版本影响用户数千个,但是本地却没法复现,一到线上就有问题,这时就只能依赖bugly记录的线程栈来定位问题了;闪退方法栈如下:可以看到是ARouter在执行...原创 2019-06-27 12:38:43 · 709 阅读 · 0 评论