android
wall_j
这个作者很懒,什么都没留下…
展开
-
ERROR: Unknown host CPU architecture: arm64
在编译基于Android.mk构建的android ndk项目时发现,在m1的macbook pro上会出现如下错误ERROR: Unknown host CPU architecture: arm64需要修改ndk根目录下的ndk-build文件 (推测原因是m1属于arm架构)本来故事到这里就应该结束的,奈何我是一个动手能力比较强的人,对于复制粘贴不是很擅长,但是独爱徒手敲代码,结果就敲漏了最后的 "$@",所以有了很多很奇怪的路径不对的问题...原创 2022-06-14 16:22:03 · 4031 阅读 · 3 评论 -
local reference table overflow问题记录
之前一直以为env->NewStringUTF创建的jstring被传递给了java后就可以不用释放了,也在很多手机上反复操作后没有发现什么问题,然后今天在一台android7.1.1的oppo老机器上折戟沉沙了。网上查了一个大佬的文章才知道android8.0做了这么大一个改动,才让我的代码这么久都没有崩溃。特此记录一下。env->NewStringUTF后是需要env->DeleteLocalRef的...原创 2022-05-09 12:22:51 · 696 阅读 · 0 评论 -
内存溢出:native溢出 和 上层溢出
内存溢出有两种,native溢出和上层溢出。native溢出顾名思义,就是native代码出现的内存溢出,图片的存储貌似也是在native的内存中。这种溢出我们是无法从android studio的Monitors中的内存图上看出猫腻来的。这种情况下,可以使用命令“adb shell dumpsys meminfo 包名”,从而在adb上来查看,其中有native heap一项。原创 2016-11-17 10:47:05 · 1074 阅读 · 0 评论 -
终端优化机制:墓碑机制和Doze
终端系统的耗电和发热一直都是一个必须提高180度注意的重点。墓碑机制:ios和wp系统都是采用该机制。当手机上一个任务被迫中断时(如有电话打入),系统记录下当前应用程序的状态后,(像把事件记录在墓碑上一样),然后中止程序。当需要恢复时,根据“墓碑”上的内容,将程序恢复到中断之前的状态。这种机制对于一些需要后台持续运行的程序可能会有些影响,比如即时通信类应用。针对这种问题,两家系统都是通原创 2016-10-17 10:03:58 · 1536 阅读 · 0 评论 -
一种安全的前后端数据交互方案
加密方案:AES + RSA两种加密方式混合使用,能够实现数据的全程加密(无论是上传,还是拉取)。1、从客户端动态生成16位AES密码2、使用第一步生成的AES密码加密要上发的请求数据,由于AES加密后是byte[]数据,所以这里还需要使用base64封装一层以方便传输。格式大概如下:{ "key":"1234567890123456" "data":"5rWL原创 2016-10-13 16:56:56 · 9261 阅读 · 3 评论 -
ApplicationId与PackageName的纠葛(ApplicationId versus PackageName译文)
文档下载地址:http://download.csdn.net/detail/jw20082009jw/9524864在gradle plugin user guide中文版一文中有提到过Application versus PackageName这篇文章,当时只是一个简单的外链,但是个人觉得这篇挺重要的,就翻译了过来。翻译 2016-05-19 11:32:43 · 499 阅读 · 0 评论 -
将gradle更好应用到你的应用开发上面
翻译自gradle官网针对APP DEVELOPER的教程文档下载地址:http://download.csdn.net/detail/jw20082009jw/9505240 针对:App开发者将gradle更好应用到你的应用开发上面Gradle深入浅出以下部分可以让你将一个基于gradle建立的android程序跑起来,并将重点介绍gradle为安卓开发过程中带来的翻译 2016-04-28 12:09:15 · 2935 阅读 · 0 评论 -
推荐几个比较值得深入了解的控件
第一名:Palette从一个图片中提取突出的颜色,提取出来的色值可以用于统一整个页面的颜色风格,原来看到qq空间上下滑动的时候,标题栏会动态变化颜色,个人感觉很酷,一直很好奇是怎么做的,现在想想和这个的效果比较接近。Android L版本中官方新增的控件, 《Material Design》中有提到。具体研究可以参考文章:Android通过Palette来动态决定UI色彩风格原创 2016-03-20 00:46:31 · 415 阅读 · 0 评论 -
高斯模糊的实现
高斯模糊的实现原创 2015-11-17 19:21:45 · 461 阅读 · 0 评论 -
android调用系统播放器播放视频-小坑一个
调用系统播放器播放本地视频,很多没真正实践过的人可能也会觉得so easy,“不过就是个隐式Intent,我没用过还没听过吗”我一开始就是这么想的,以下是我从网上搜索到的调用方式:事实上,以上这种方式也可以调用出市面上某些支持的播放器,比方说我试验过的,优酷是可以被唤起的。但是系统的视频应用,我试过锤子、小米、华为都无法被唤起。原因在于uri的生成方式不对,正确姿势如下。原创 2017-01-17 15:03:50 · 11476 阅读 · 2 评论 -
mac下android studio一直refreshing "xxx" gradle project问题解决
我最近一个项目在行进过程中,由于某些原因,将gradle版本从2.14.1升到了3.3。从我在mac上把代码拉下来后,大概是项目刷新了有一个小时左右时间没有完成,我就把电脑合上睡觉了。第二天到公司后,我就一边工作,一边把mac丢旁边让他刷新项目,结果貌似是进入了某个死循环一样的,一直停留在refreshing "xxx" gradle project的状态,一整天都没有变过。后来我就去原创 2017-01-19 00:33:00 · 4363 阅读 · 0 评论 -
ffmpeg编译faac小结
这两周都在为安卓平台编译带aac编码功能的ffmpeg版本。截止今日,未编译出满意版本,时间已经过去一周有余,顿感无地自容。我的环境,ndk-r10e,ubuntu16.04lts faac1.28 x264(应该是最新版,x264的加入完全没问题),ffmpeg版本还在测试中,唯一成功过的是ffmpeg-n1.2.4。具体编译脚本与环境等我编译成功后再回来加上。希望有大神看到我的环原创 2017-03-21 14:55:11 · 3294 阅读 · 0 评论 -
使用ndk工具链创建在安卓机器上的可执行文件
创建helloworld程序 #include <stdio.h>int main(){ printf("helloworld\n");} 使用工具链里的gcc工具来编译该helloworld可执行文件(需要指定sysroot) /root/android-ndk-r10/toolchains/arm-linux-androideabi-4.9/prebuilt/li原创 2017-04-01 15:18:04 · 520 阅读 · 0 评论 -
svn一次添加所有未添加的文件
最近在linux下使用svn,有个蛋疼的问题就是每次有新文件添加了,但是自己并不能记得所有被添加的路径。也就无法一一的使用svn add命令添加了。然而linux下也并没有像windows中那么友好的界面操作。所幸我在网上找到了大神的遗迹,大神说“我用15分钟写出了这串命令,然后使用了他成百上千次”。我想说的是,没有大神的潇洒与坦荡,渊博的知识,我先花了15分钟迷茫无措,思原创 2017-04-15 15:04:30 · 8193 阅读 · 1 评论 -
java重写equals(Object obj)与重写hashCode()之间的关系
多年前,在我开始学习java语法的时候,我就听到了一条规则。重写equals方法就必须要重写hashcode方法,但是重写equals方法有一些规则,重写hashcode方法却貌似没有什么规则似的,搞的我一直都云里雾里的,总以为是equals方法的底层调用了hashcode方法之类的。时隔多年,我终于理解了为什么会有“重写equals方法就必须要重写hashcode方法”这一规则。是说ha原创 2017-09-20 02:19:56 · 416 阅读 · 0 评论 -
android简单即时聊天sdk
android简单即时聊天sdk切换用户登录的实现联系人列表的实现聊天页的实现消息缓存与排序消息接收和分发——数据库队列和投递队列有序列表的维护切换用户登录的实现由于不同的登录用户需要有不同的联系人以及聊天记录等数据,而切换用户之后再重新登回时也应尽量保持与之前体验一致,所以比较恰当的方式是每一个登录用户建立一个以自己用户id为尾缀的database。每次用户登录成功后即可通过该登录原创 2017-12-08 16:33:47 · 2548 阅读 · 2 评论 -
android视频录制与滤镜(一)
项目需求:包含实时滤镜的视频录制功能接到需求后第一感受就是gpuimage赶快用起来,github上排名第一的c++版本gpuimage是wysaid/android-gpuimage-plus这个库已经帮忙把从GPU管线中取出视频数据并编码的工作都做好了,是一个可以直接用来加滤镜录制视频的项目。唯一不足的是没有加上硬编码,帧率常年性徘徊在20以下。早听说MediaRecorder在新版本中可以s...原创 2018-06-05 19:38:20 · 3350 阅读 · 2 评论 -
android视频录制与滤镜(二)——google官方硬编demo:
视频录制使用android视频录制与滤镜(一)中提到的wysaid/android-gpuimage-plus项目时发现这个项目使用的eclipse时候的ndk编译方式,导致看c++代码时无法自动跳转,以及无法像阅读java代码一样使用快捷键,所以就自己fork了一份,改用了cmake的方式编译jni代码 ,这样阅读起来就方便了不少,但阅读不便这些都是小问题。最大的问题在于编码效率上,这个库由于视...原创 2018-06-06 20:12:44 · 1591 阅读 · 0 评论 -
Tesorflow与安卓(一)
关于tensorflow主要有几个关键点:模型训练,得到一个可用模型原创 2018-06-06 20:20:27 · 299 阅读 · 0 评论 -
android为ImageView使用蒙层
在android中使用ColorFilter为ImageView使用蒙层原创 2015-09-23 19:33:36 · 7164 阅读 · 0 评论 -
安卓的增量更新
作为通用安卓应用,迭代开发是很常见的一种开发模式。谁也不能保证发出去的app永远不会被发现bug,永远不会有新需求,而下载更新成了这一切的前提。原创 2015-11-10 10:40:46 · 520 阅读 · 0 评论 -
关于listView的史上最奇怪的问题
在我的Acitivity中有两个fragment(f1和f2),两个fragment布局很类似,但是也有不同,使用的是不同的初始化代码。每个fragment中都有ListView,每一个ListView都增加了一个footerView,然后在我的smartisan t1上两个ListView尾部都显示正常,在魅族mx3,以及vivo的一款手机上f2显示不了footerview。没有任何异常报错信息,对调两个fragment的显示位置,发现依旧是该fragment上的该ListView的footer无法显示,原创 2015-08-31 18:02:50 · 983 阅读 · 0 评论 -
使用ObjectAnimator或者ValueAnimator来为控件使用动画
如果我要给一个控件做向右移动的动画,可以使用TranstateAnimation来使其向右移动,但是动画执行完成之后控件还是要回到起始位置。如果我需要让一个控件向右移动并且动画执行完成后不回到起始位置,我们可以使用ObjectAnimator或者ValueAnimator来实现。需求:动态的改变某个控件的属性值,已达到动画效果,例如:改变背景颜色值,改变位置,改变透明度等等值。原创 2015-05-12 16:43:00 · 599 阅读 · 0 评论 -
消除 activity 启动时白屏、黑屏问题
默认情况下 activity 启动的时候先把屏幕刷成白色,再绘制界面,绘制界面或多或少有点延迟,这段时间中你看到的就是白屏,显然影响用户体验,怎么消除呢?在 Activity theme 设置style 即可[html] view plaincopystyle name="AppTheme" parent="a转载 2015-03-13 10:40:07 · 575 阅读 · 0 评论 -
如何在网络上方便的查看并下载android源码文件
访问http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.2_r1/;该网站提供便捷的基于类名的文件搜索,下载等原创 2015-03-20 08:21:37 · 536 阅读 · 0 评论 -
不连数据线通过wifi进行的adb调试
网上有一些无线连接手机调试程序的资料,我也是看参照了他们才成功的。不过在这里参照他们我总结一下自己的流程:1,先root手机,不然后期获取不到手机权限;2,下载android手机终端模拟器,(需要键入一些命令)在手机终端模拟器需要键入下面命令:1,)su //获取root权限 ,如果手机没有root,会获取失败2,)setprop se转载 2015-03-16 14:02:06 · 787 阅读 · 0 评论 -
Android中使用handler
在tv.wobo.camera项目的AC_APIPCame.java中的第47行出现Handler的使用。Handler: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button, A原创 2013-12-20 10:08:48 · 641 阅读 · 0 评论 -
Bundle类的作用
Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了Hash原创 2013-12-19 16:32:46 · 832 阅读 · 0 评论 -
startActivityForResult与startActivity
startActivityForResult与startActivity的不同之处在于:1、startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。2、startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activ原创 2013-12-19 14:53:00 · 557 阅读 · 0 评论 -
android:visibility||view.setVisibility(View.VISIBLE)
在\tv.wobo.camera项目ac_internet_ipcame.xml的140行有 “ android:visibility="gone" /> ”可见(visible)VISIBLE:设置控件可见(可见,并且占位)XML文件:android:visibility="visible"Java代码:view.setVisibi原创 2013-12-19 14:39:22 · 1680 阅读 · 0 评论 -
写一个下载播放网络Gif的框架一:设计
写一个下载播放网络Gif的框架一原创 2015-06-19 16:33:04 · 411 阅读 · 0 评论 -
ViewPager的预加载管理:setOffscreenPageLimit
ViewPager的预加载管理:setOffscreenPageLimit原创 2015-06-22 12:25:12 · 15448 阅读 · 6 评论 -
Android控件使用手册:使用WebView打开http://www.baidu.com
WebView的用法相当简单易用,但是也有几个点是必须记住的,要不然使用起来的时候也会无所适从。原创 2015-07-24 16:56:03 · 1165 阅读 · 0 评论 -
android插件化研究
android插件化研究原创 2015-08-30 21:15:06 · 749 阅读 · 0 评论 -
java的初始化研究:android开发中遇到的一个奇怪问题
我有一个Dialog的基类,然后有数个继承于他的子dialog。在基类dialog中写的一个View.OnFocusChangeListener我把它原样复制到子类中,再把其赋值给Edittext引用却发现,无法响应,编译运行都没有出错,就只是单纯的没有响应。经过调试发现并没有运行到其内部代码,但在父类时是可以引用正常的。原创 2015-08-25 11:54:46 · 652 阅读 · 0 评论 -
android annotation注解的浅层次理解
在java中有annotation这个东西,因为平时用的也并不是太多,所以一直不是很理解,今天特意花了几个小时看了下相关的知识点,熟悉了一下annotation的简单用法。原创 2015-08-25 16:57:07 · 616 阅读 · 0 评论 -
多个Fragment时的加载优化,使用懒加载
多个Fragment时的加载优化,使用setUserVisibleHint(boolean isVisibleToUser)懒加载原创 2015-06-14 13:23:21 · 1129 阅读 · 0 评论 -
ListView的item折叠功能实现,使用ExpandableListView
来酷狗面试的时候面试官问过我,如果要显示/隐藏ListView的某个Item项目中的某些内容,我会怎么做。我当时的回答是,做一个布局文件里面把所有要用到的项目都写上,哪个不需要了就将他设为gone就可以了。今天在看代码的时候发现,原来有ExpandableListView这个东西,很明显,当时我的回答是有点浅层次了。类分析中,请稍后。。。原创 2015-06-14 13:45:57 · 2883 阅读 · 0 评论 -
监听ListView的滚动事件
实现一个需求,在滑动ListView到底部时,加载新的List实现ListView的动态加载功能;原创 2015-06-13 20:59:06 · 2015 阅读 · 0 评论 -
自己动手写一个测试Android事件传递机制的demo
亲测安卓事件传递机制,自己对于安卓机制的一次重新理解原创 2015-06-22 21:06:34 · 807 阅读 · 0 评论