
Android开发
文章平均质量分 57
dfqin
这个作者很懒,什么都没留下…
展开
-
Android下拉框WIFI图标更新
这个值的含义可以理解为当前的网络的数据传输类型是不是本类型(以太网、WIFI、蜂窝)。inetCondition的赋值是在updateConnectivity()函数中实现的,通过代码可以得知只要服务端(ConnectivityService)返回的当前网络类型等于以太网或WIFI,此类型的inetCondition就为true,但是蜂窝网络不一样,返回类型类型如果不对,但是当前状态不是默认时也会赋值为true(不为默认的含义?在Android10上面inetCondition为false时的图标为。原创 2023-03-07 15:59:16 · 496 阅读 · 0 评论 -
RK3399 Android10 移除应用权限(包含USB)申请弹框
修改framework,指定的app不需要弹框申请权限原创 2022-11-30 16:18:24 · 1412 阅读 · 0 评论 -
Android源码编译备忘
主要是编译环境配置,1、我本来JAVA环境是配置好的,所以这一步可以跳过了2、终端运行 . build/envsetup.sh3、终端运行 lunch 提示找不到xcode.app的目录,我理解应该只需要安装依赖xcode tool就行了,但没找到相关资料我直接安装了xcode4、终端运行 lunch 提示需要在bash下执行,我默认使用的zsh,切换到bash终端执行,提示 /bin/bash: python: command not found,安装python3后在.bash_profile对pyth原创 2022-06-14 00:20:37 · 334 阅读 · 0 评论 -
Android源码下载
最近想下载Android源码学习,发现由于墙的原因直接从官网下载比较麻烦,后面找到了清华的镜像完成了下载原创 2022-06-05 23:40:32 · 480 阅读 · 0 评论 -
Android架构组件之ViewModel和LiveData
关于应用架构,Google官方现在主推MVVM架构,官方推出的JetPack库提供了一系类支持MVVM架构,其中最核心的两个类是ViewModel和LiveData。在MVVM架构中,View通常指Activity和Fragment,主要用来根据数据渲染UI,而Model主要负责数据的获取,这里通常包含获取网络数据和本地缓存数据,而ViewModel作为View和Model的桥梁,主要负责UI数据的处理,官方提供了ViewModel类作为一种实现。LiveData作为一种可观察的数据存储类,可以很好在支原创 2022-04-03 00:23:14 · 3939 阅读 · 0 评论 -
leakcanary原理分析
1、无代码集成原理目前最新版本是2.8.1,看文档从2.0版本集成时就不需要修改任何代码了,只需要在build.gradle里面添加一行引用:debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.xxxx'debugImplementation保证了只在debug环境引入,关于初始化,我们在源码中看到在AndroidManifest.xml中配置了一个provider: <provider原创 2022-03-13 17:03:24 · 3550 阅读 · 0 评论 -
Android WebView与H5交互汇总
目前APP中内嵌Web页面非常常见,为了Web网页可以和原生进行交互,需要设计一套js-bridge,而这个桥接的设计底层都还是依赖系统提供的Webview与H5的交互,现有交互方式汇总如下:1、原生调用JS原生调用JS即在原生代码中调用执行当前网页中js代码,现有两种方法1)WebView#loadUrl("javascript:func('" + arg + "')")2) WebView#evaluateJavascript(String script, @Nullable Value原创 2022-03-13 16:20:20 · 7430 阅读 · 0 评论 -
React Hooks相关
一、React在16.8推出了Hooks特性,React Native是在0.59版本开始支持,官方解释了推出Hooks的原因(官方文档):1、组件间状态逻辑难以复用。之前通常使用高阶组件来解决这种问题,但是这种方式通常需要改变你的组件结构,并且会导致组件嵌套地域,导致代码难以追踪。使用Hooks可以从组件中抽取状态逻辑,可以单独测试,也可以复用。Hooks可以让你在不改变组件结构的情况下实现状态逻辑复用(Hooks allow you to reuse stateful logic without .原创 2022-01-14 16:28:13 · 299 阅读 · 0 评论 -
Kotlin协程简介
1. 什么是协程关于协程的定义有很多,在Kotlin语言中,协程比较合理的定义应该是一个线程框架(扔物线)或者说是一种并发设计模式(官方)。它是由官方设计的一套API方便开发者进行多线程开发。2. 协程能干什么协程主要用途总结下来就是可以用更优雅的代码实现多线程代码。主要体现在可以用同步的方式完成原来需要异步加回调才能完成的工作。举个简单例子,从服务器获取用户信息然后显示出来,常规写法如下: api.sendRequest(object : Callback { .原创 2021-10-06 00:10:53 · 3092 阅读 · 0 评论 -
解决滑动冲突
ScrollView中的View是可以点击的,但是又能拖动滑动,可以推测首先事件是传递到子View的,但是滑动事件被ScrollView拦截了,翻看源码可以证实此推测 @Override public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getAction(); if ((action == MotionEvent.ACTION_MOVE) &&am原创 2021-09-20 22:18:20 · 421 阅读 · 0 评论 -
Android事件分发
1. 当手触摸屏幕,会产生一个事件,此事件由PhoneWindow的DecorView处理,它首先会调用当前Activity的dispatchTouchEvent,如果Activity不处理,事件会交由 DecorView去派发给子view去处理,如果子view不处理,则会调用activity的onTouchEvent事件。2. 当事件被交给ViewGroup处理时,会调用dispatchTouchEvent()方法,它首先调用onInterceptTouchEvent()看当前ViewGroup是否要原创 2021-09-20 13:18:27 · 130 阅读 · 0 评论 -
一个简单的Android Native(C/C++)网络数据加密方案
网路数据安全思考见过一些系统和应用在裸奔,也见过一些简单的应用设计了极其复杂的安全机制,不仅团队成员很难掌握,而且还影响到业务开发。所以我经常会想,什么样的网络请求才是合理的? 1. 一个APP或者网站,怎么区分当前用户是谁呢?我可以在请求参数里附带UserID,通过UserID我可以知道返回什么样的数据或者展示什么样的内容。这时只要我在请求时修改一下UserID,就能看到其他用户的信息了,别笑,原创 2017-05-04 11:03:02 · 4210 阅读 · 4 评论 -
一行代码搞定Android 6.0动态权限申请
从Android 6.0(API 23)开始,对系统权限做了很大的改变。这里介绍了授权机制和一个封装库-- PermissionGrantor,可以通过一行代码搞定动态权限申请。原创 2017-02-15 10:37:22 · 36604 阅读 · 7 评论 -
Android修改keystore文件用来调试微信SDK
很早在用的方法了,把正式的keystore做成一个假的debug.keystore,替换系统默认的debug.keystore。写这里备忘一下吧。1、修改keystore密码为android: keytool -storepasswd -keystore [path]/your.keystore2、修改别名密码为android:keytool -key原创 2016-03-17 14:52:26 · 2299 阅读 · 0 评论 -
Android手机录屏并制作Gif
做效果展示时经常需要一些Gif图来显示动态效果,我目前使用的方法是手机录屏生成视频文件,再通过第三方软件用视频文件生成动图。刚才制作了一个动图效果图如下:这里我使用的是adb的screenrecord命令,它是API Level 19以上才支持的,官方文档原文如下: The screenrecord command is a shell utility for recording the dis原创 2016-01-20 15:47:39 · 8883 阅读 · 3 评论 -
Gradle In Action
前言从2013年Google推出Android Studio(后面以AS简称)开始,到现在已经历经3年,版本也发展到了2.x版本,目前Android开发者基本上已经没有再用Eclipse开发的了。从Eclipse切换到AS,项目组织结构和环境变动很大,不过上手AS还是很简单的,新建一个项目,选择API版本,选择一个默认的空Activity,然后点击确定一个项目就创建好了,直接点击运行就可以把项目运行原创 2017-01-23 17:03:59 · 1395 阅读 · 0 评论 -
Android Design Support Library实践之Snackbar
Google在2014年发布了Material Design语言,紧接着第二年发布了官方support包,可以支持在低版本上手机使用这些控件。但是这么长时间过去了,国内主流app几乎都没有遵循这种规范,原因也很好理解了,这篇文章分析的比较到位(http://www.leiphone.com/news/201512/zJq6fwytkjssHEig.html?UpdatedPage=aGlqYWNr原创 2016-01-20 20:07:07 · 1643 阅读 · 0 评论 -
关于设备唯一标识
首先结论是令人失望的,对于android来说,这是一个没有完美方案的问题。大家只能努力提高它的准确性,对于大的公司来说,可以自己开发出一套自己的机制,例如我上家公司成立过一个手机指纹的项目,专门处理设备唯一性的问题防止用户刷单,原来很简单,就是尽可能的把手机能读取到的信息获取到上传到后台,甚至令人发指的连当前电量都上传了,然后后台动态调整算法得出结论。如果目前对设备唯一标志敏感度不高,可以参考友盟原创 2015-05-06 11:19:24 · 12895 阅读 · 0 评论 -
Android service 总结
这两天研究了下service,把文档好好研读了一下,也看了些例子,先把文档中有用的介绍摘录贴出来,以后有空了再重新整理总结一下。服务是一个系统组件,它不提供用户界面,可以长期运行在后台执行某些操作。服务有两种形式: started, bound,当然也可以同时以两种形式运行。主要由你是否实现onStartCommand()允许组件去启动一个服务和是否实现onBind()允许去绑定一个服务。原创 2012-04-30 15:33:59 · 2594 阅读 · 0 评论 -
Windows环境下android平台native调试,从java debug 到 C++ (NDK DEBUG)
在linux环境下调试native代码环境搭建成功后,紧接着又测试了在Windows环境下debug native代码,发现只有一两步不一样,别的步骤跟在linux环境完全一样,所以,这里这里只做差异化介绍了,细节可以参考上一篇(http://blog.youkuaiyun.com/dfqin/article/details/6901506)。 首先要说明的是,在windows环境下,一样可原创 2011-10-26 13:28:12 · 6351 阅读 · 5 评论 -
手机横竖屏切换处理
Android手机运行时候,一般用户都是竖屏的,但是经常不经意间会旋转手机,这时候程序就会出现异常,以为在选在屏幕时候重新装载了Acitivity,那么如何解决这个问题呢,总结如下三条:1: 在AndroidManifest.xml中设置Activity的方向属性。 1.1. 固定为竖屏activity android:name="MyActivity" android转载 2012-02-29 18:52:35 · 4761 阅读 · 0 评论 -
ListView的优化
1. ListView需要设置adapter,它的item是通过adapter的方法getView(int position, View convertView, ViewGroup parent)获得的。2. ListView中只有第一屏的item需要新建,它的引用会被存在RecycleBin对象内,在拖动时后面的item实际上是重从了之前创建的item。3. 根据上述,ListView原创 2012-04-13 17:56:33 · 31708 阅读 · 3 评论 -
android模拟器也疯狂
前一段天天加班,很久没有写总结了,今天分享一个小技巧,可以让模拟器跑的比真机还流畅。android的模拟器一直以来是它的一大败笔,启动需要很长时间,运行起来也超慢,虽说可以通过创建模拟器时更改参数,但速度还是不理想。所以,以前开发时,一直用真机调试,可它的接口又是那么的脆弱,用不了多久,就接触不良了,这个问题一直困扰很多人。之前发现过一种方法,可以通过WIFI调试,但是需要有无线路由器,而且很原创 2012-08-07 22:04:33 · 3366 阅读 · 0 评论 -
ImageView 的 scaleType 小结
官方文档中很简略的介绍了一下,具体用法不是很清楚,这里做个小结:MATRIX 用图片的矩阵从左向开始来画,不做任何拉伸。如果一个100*100的ImageView,它的src是10*10的小图,则图显示在左上角,如果scr是200*200的大图,则截取它左上的100*100做显示。CENTER 不做任何拉伸,以居中的方式显示图片。如果是一个100*100的ImageVi原创 2012-08-31 18:09:16 · 7149 阅读 · 1 评论 -
Android NDK 使用入门
新开通了MSDN博客,第一篇先写下今天做的一个NDK的例子吧。因为也是几个月前才转做JAVA,所以对JNI也不是很熟悉,个人感觉NDK跟JNI区别主要是NDK直观来讲,就是个工具集,可以很方便的生成.so文件.常规步骤。一、安装cygwin.因为android是基于linux的系统,处理器是ARM的,所以在window平台上开发android程序,需要一个交叉编译器。cygwin可以模原创 2011-03-30 22:02:00 · 6673 阅读 · 1 评论 -
Android crash 日志捕获
为了对已发布程序进行跟踪,通常会对程序的行为做一些记录并上传到server,一般会记录用户行为已方便更好的发进设计流程和记录程序crash日志,以便在后续版本中改正程序的错误,看了些文章也做了几个Demo,把自己的理解简单写一下。1. 给线程设置一个自己的异常处理函数(Thread.setDefaultUncaughtExceptionHandler(MyHandler))。这个方原创 2012-09-05 14:24:13 · 8329 阅读 · 3 评论 -
获取window状态栏和标题栏的高度
1.获取状态栏高度: decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。于是,我们就可以算出状态栏的高度了。 [java] view plaincopy转载 2012-10-09 12:10:32 · 1596 阅读 · 0 评论 -
Android中高效的显示图片之一 ——加载大图
在网上看了不少文章,发现还是官方文档介绍最详细,把重要的东西简单摘要出来。详细可看官方文档地址 ( http://www.bangchui.org/read.php?tid=9 ) 。在应用中显示图片,如果不多加小心,很容易就会使应用因为异常“java.lang.OutofMemoryError:bitmap size exceeds VM budget”而导致crash。在andro翻译 2012-09-29 11:00:22 · 9430 阅读 · 1 评论 -
singleTask 与 taskAffinity 缠绵的那些事
这里说的也适用于其它Activity启动时Intent中设置了FLAG_ACTIVITY_NEW_TASK标志。今天没事翻看android sdk的文档,发现在网上关于launchMode的一些介绍,很多都不是太正确,尤其是关于singleTask,甚至官方文档的介绍都有些问题,自己也写了小demo做了测试,把对singleTask的理解做下总结,如有错误,欢迎拍砖交流。首原创 2012-04-20 15:44:49 · 4134 阅读 · 0 评论 -
Android中高效的显示图片之二——在非UI线程中处理图片
在“加载大图”文章中提到的BitmapFactory.decode*方法,如果源数据是在磁盘、网络或其它任何不是在内存中的位置,那么它都不应该在UI线程中执行。因为它的加载时间不可预测且依赖于一系列因素(磁盘读写速度、图片大小、CPU频率等)。如果在主线程中执行这个操作,一旦它阻塞了主线程,就会导致系统ANR。本节介绍使用AsyncTask在后台处理图片和演示怎么处理并发问题。一、使用一个As翻译 2012-10-21 01:22:16 · 4095 阅读 · 1 评论 -
Android显示图片避免OOM和ANR小结
看完了文档里关于图片介绍的几篇文章,结合项目和一些网上的文章,谈下在android平台显示图片的一些个人想法。1.从设计角度,最好不要让手机显示大于手机屏幕数倍的大图片,如果源图是个大图,加载时把图片缩小到屏幕大小,使用在decode图片时使用option选项,直接加载缩小后的图片。网上不少人说先读取图片InputStream流,再通过BitmapFactory.decodeStrea原创 2012-10-30 13:12:14 · 7503 阅读 · 1 评论 -
把android.jar 和 android-support-v4.jar源文件引入工程
做Android开发时,有时避免不了要查看源码,为了确定问题所在,经常需要跟踪调试代码到源代码,这就需要你把源代码引入工程。如果想查看Activity.java代码,默认会看到如下页面:一、如果想查看到android.jar的源文件,有两种方法:1是直接为android.jar附加源代码。可以点上面的“Attach Source..."按钮,指向android sdk中的源码文原创 2012-10-23 21:08:47 · 9888 阅读 · 1 评论 -
Android中高效的显示图片之三——缓存图片
加载一张图片到UI相对比较简单,如果一次要加载一组图片,就会变得麻烦很多。像ListView,GridView,ViewPager等控件,需要显示的图片和将要显示的图片数量可能会很大。 为了减少内存使用,这类控件都重复利用移出屏幕的子视图,如果你没有持用引用,垃圾回收器也会回收你加载过的图片。这种做法很好,但是如果想要图片加载快速流畅且不想当控件拖回来时重新运算获取加载过的图片,通常会使转载 2012-10-22 20:47:04 · 5767 阅读 · 0 评论 -
Android View 绘制过程解析
学习过window编程的人都知道,在屏幕上绘制视图控件很原理很简单,指定屏幕上一块区域,在里面去绘制你想要的内容,其他的系统实现原理也大同小异,但真正实现起来,还是相当复杂的。这几天看了下Android 的View的代码,觉得里面内容还是相当多的,把自己理解学习的再此罗列一下,大家共同交流学习。 屏幕的绘制可以理解为由类ViewRoot(4.0版本以前)或ViewRootImpl(4.0原创 2013-06-23 15:56:17 · 1237 阅读 · 0 评论 -
Android自定义拖拉窗控件
在项目中有这样一个需求,一张全屏的地图,上面覆盖一个窗口显示路线列表,而这个窗口是个拖拉窗,可以全屏,半屏,和不显示,这个跟IOS7和android中的消息栏有点像,只不过可以拖到中间。Android中有一个SlidingDrawer控件,但无法满足上面说的三个状态,自己就写了一个,把demo简单介绍一下。 实现原理还是比较简单,一个FrameLayout做容器,里面直接显示地图,然原创 2013-12-11 14:26:00 · 2564 阅读 · 0 评论 -
Linux环境下android平台调试native代码, 从java debug 到C++ (NDK DEBUG)
研究了两天,今天终于成功,拿来分享,其中还有些东西知其然却不知其所以然,在以后的学习中再慢慢研究吧。如果你还不了解android NDK开发,可以参考我的另外一篇文章(http://blog.youkuaiyun.com/dfqin/article/details/6290095) 现在的android工程,常会将一些核心代码用C++实现,原因各异,防止反编译、运行效率、老代码重用等等,这些原创 2011-10-25 11:07:41 · 8291 阅读 · 0 评论