- 博客(99)
- 资源 (12)
- 收藏
- 关注
转载 Android build.gradle配置教程 史上最全的Android build.gradle配置教程
从Android Studio3.0后compile引入库不在使用,而是通过api和implementation,api完全等同于以前的compile,用api引入的库整个项目都可以使用,用implementation引入的库只有对应的Module能使用,其他Module不能使用,由于之前的项目统一用compile依赖,导致的情况就是模块耦合性太高,不利于项目拆解,使用implementation之后虽然使用起来复杂了但是做到降低偶合兴提高安全性。如果这样,Gradle在打包时就会提示错误(警告)。
2024-01-24 14:59:14 721
原创 GLES学习笔记---OpenGL绘制到ImageReader
ImageReader 之前经常使用在camera应用里面,创建一个ImageReader,然后获取surface,配流和下发request时候将surface下发给framework,中间具体对ImageReader做了什么没有具体研究过,等到Hal层camera回帧的时候,ImageReader的onFrameAvailable就会回调上来,通过reader就可以获取图片了。虽然使用上很简单,但是其实ImageReader里面要学习的东西还是很多的。
2023-12-25 09:23:28 603
原创 GLES学习笔记---EGLImage绑定纹理
为啥需要glFinish暂时还不清楚,没有glFinish的话ptrReader里面的像素值还是输入的inBuffer的值。还有就是不清楚为啥绘制完了,绘制的结果就到了HardwareBuffer里面了,HardwareBuffer是输入啊。绘制完了glFinish一下,AHardwareBuffer_lock就能将绘制好的内容读出来。离屏渲染,绘制到fbo对应的纹理上(不是屏幕)绑定EGLImage到纹理。创建EGLImage。
2023-12-21 20:45:35 735 1
原创 GLES学习笔记--glReadpixels 读取数据全是0
textureId 和 bitmap绑定,offTexture和fbo绑定,通过绑定fbo实现离屏渲染,将textureId对应的纹理渲染到offTexture上,最后将offTexture绘制到屏幕。所有流程都正常,最后也绘制到屏幕了 ,但是当我想通过glReadPixel读取一下buffer看看的时候,发现buffer内容是0,找了半天没找到问题所在。通过循环遍历看看buffer里面有没有非0的,然后重这非0的地方开始输出像素看看,发现确实和传入的一样,所以猜想是对的。
2023-12-20 09:50:15 422
原创 Android Camera FW 里的requestId和frameId
安卓相机frameworks里面经常出现requestId和frameId,最近简单看了一下代码,发现相关流程还是很复杂的,总结来看requestId 就是上层(java)发送的repeating(capture)请求的id,是从0开始递增的。所以综上看 requestId就是一个标记上层下发request的作用,回调metadta的时候方便找到对应的回调接口,所以requestId的作用仅仅是联系APP和FW的,对于HAL来说没有作用。
2023-10-07 17:35:08 350
原创 Android 监听当前网络状态是否可以访问Internet
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Hand...
2019-11-14 17:42:26 217
原创 copy DB to sdcard
public static void copyDB(){ File dbFile = new File(Environment.getDataDirectory().getAbsolutePath()+"/data/com.hozo.easypanorama/databases/easypano.db"); FileInputStream fis = null; File...
2019-09-23 15:00:38 145
转载 JNI_OnLoad简介
一、JNI_OnLoad简介Java JNI有两种方法,一种是通过javah,获取一组带签名函数,然后实现这些函数。这种方法很常用,也是官方推荐的方法。还有一种就是JNI_OnLoad方法。当Android的VM(Virtual Machine)执行到C组件(即*so档)里的System.loadLibrary()函数时,首先会去执行C组件里的JNI_OnLoad()函数。它的...
2019-08-15 15:21:55 829
转载 Android Studio 3.0 JNI的实现
https://blog.csdn.net/ziyoutiankoong/article/details/79696279
2019-08-15 14:47:54 103
转载 Android touch 事件分发
1. 效果图下面布局中用到的控件都是自定义的,我们可以通过对自定义控件的相关事件方法添加log。练习图2.主要代码Activity @Override public boolean onTouchEvent(MotionEvent event) { Log.i(TAG,"Activity's onTouchEvent returns su...
2019-08-08 11:40:03 129
原创 camera api2 open camera
CameraManager 属于 App 进程CamseraService CameraDeviceClient Camera3Device CameraProviderManager 属于 cameraserver 进程CameraProvider CameraDevice 属于 camera hal 进程...
2019-07-30 14:41:02 255
转载 Android自定义控件三部曲文章索引
https://blog.csdn.net/harvic880925/article/details/50995268
2019-04-28 15:03:23 136
转载 Android ImageView 的scaleType 属性图解
ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性。该属性指定了你想让ImageView如何显示图片,包括是否进行缩放、等比缩放、缩放后展示位置等。Android 提供了八种scaleType的属性值,每种都对应了一种展示方式,下面就对每一种scaleType属性值进行图文解释。首先,这个是测试放到ImageV...
2019-04-12 10:09:50 156
原创 dispatchTouchEvent onInterceptTouchEvent onTouchEvent
https://blog.csdn.net/qq_30379689/article/details/53967177dispatchTouchEvent 事件分发onInterceptTouchEvent 事件处理onTouchEvent 事件响应1、 如果所有都返回 superdispatchTouchEvent (Activity)dispatchTou...
2019-03-22 16:39:22 276
原创 StatusBar 和 NavigationBar 的 隐藏与浸透式
/** * View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。 * View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态栏遮住。 * * View.SYSTEM_UI_FLAG_HIDE_NAVIGATI...
2019-02-28 17:42:58 402
转载 invalidate和requestLayout
总述:View有两个很重要的方法:invalidate和requestLayout,常用于View重绘和更新。Invalidate:To farce a view to draw,call invalidate().——摘自View类源码从上面这句话看出,invalidate方法会执行draw过程,重绘View树。当View的appearance发生改变,比如状态改变(en...
2019-02-28 11:48:44 423
转载 android布局中几个距离单位的区别:px、dp、sp
一、px像素,我们经常说的400*800这种的就是像素,这个比较好理解。二、dp要理解dp,首先要先引入dpi这个概念,dpi全称是dots per inch,对角线每英寸的像素点的个数,所以,它的计算公式如下:比如height和width即为长宽的像素,平方和即为对角线的像素个数,size即我们常说的5寸手机、4寸手机中的5和4,即对角线的长度。显然,一样是5寸的手机...
2019-02-28 11:46:50 456
转载 Thread.currentThread()与this的区别
转载自: https://blog.csdn.net/yezis/article/details/57513130 希望博主见谅在自定义线程类时,如果线程类是继承java.lang.Thread的话,那么线程类就可以使用this关键字去调用继承自父类Thread的方法,this就是当前的对象。另一方面,Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程...
2018-12-18 19:52:10 237
原创 Android Studio 中的个人习惯设置
1、方法参数名提示的取消方法默认情况下 Android Studio 中字符串前面有个 hint,看着不习惯2、设置默认展开方法3、默认文件编码建议使用 utf-8,中国的 Windows电脑,默认的字符编码为 GBK。Settings--> File Encodings。建议将 IDE Encoding、 Project Encoding、 Properties F...
2018-12-11 10:29:38 515
原创 Activity传递的Parcelable并不是同一个对象
网上清一色的说Activity之间通过parcel传递对象,但是其实这并不是同一个对象。我不知道是我理解错了还是怎么回事?希望看到文章的人点评一下class MyParcelable implements Parcelable { private static final String TAG = "TestActivity"; private String userna...
2018-10-24 15:07:30 488 1
转载 eclipse 中 NDK 配置
一、关于NDK:NDK全称:Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要
2017-03-16 10:45:58 368
原创 文件句柄申请太多导致异常 Too many open files
最近做一个压力测试,打开关闭,打开关闭相机应用,当打开到200次左右的时候总是抛出下面的异常03-06 11:48:03.220 5794 5908 E Parcel : dup() failed in Parcel::read, i is 1, fds[i] is -1, fd_count is 2, error:Too many open files03-06 11:48
2017-03-07 10:45:31 10283 1
转载 Android模拟屏幕点击,滑动等事件
模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ... input text input keyevent input tap input swipe 1. keyevent指的是Android对应的keycode,比如home键的
2017-03-02 10:00:22 4775
转载 android 内置默认输入法
方法一: 修改文件如下: frameworks\base\packages\SettingsProvider\res\values\defaults.xml frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\
2017-01-11 16:47:40 5128 1
原创 虚拟机Linux 添加磁盘容量
(1)打开VMware,选择Edit Virtual mache settings,Utilities下拉框中找到Expand如下图(2)将磁盘空间扩大到50G,点击Expand即可,随后进入一个较长的Expand过程,完成后这是新的空间已经增加,但linux环境下还不可见。(3)启动VMware环境下的Linux操作系统,添加新分区,需要root账号身份。
2016-11-29 22:02:32 2369
原创 Linux 常用命令
1、图形界面下面 ctrl+alt+t 可以调出 命令行终端2、xrandr 查看支持的屏幕分辨率 , 带有"*"是当前屏幕分辨率 xrandr -s XX 切换分辨率,"XX"是尺寸列表的位置
2016-11-24 20:21:38 261
转载 RGB与YCbCr颜色空间的互相转换公式
Y:明亮度(Luminance或Luma),也就是灰阶值。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。Cb:反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异。Cr:反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。在以下两个公式中RGB和YCbCr各分量的值的范围均为0-255。RGB转换为YCbC
2016-10-25 10:41:43 5800
Linux 下的 Wireshark
2013-05-05
打开perfetto网站报错
2023-10-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人