
android
文章平均质量分 75
峻峰飞阳
每一分钟让思维跳跃驰骋,多警醒,少麻木,多联想,少沉思,多类比,少钻尖,多读书,多总结。
展开
-
Android 绘图机制
一:前言一直对Android绘图机制比较感兴趣,虽然从书和博客中对SurfaceFlinger稍微有些了解,但是没有往下去深究。刚好最近项目中设计openGL相关的需求,于是便研究了下Android的绘图机制(基于7.0源码)。二:App的画板Surface回想一下如果我们小时候画画的时候,老师总会给我们发一张纸,让我们画在上面,同样App如果想要绘制图形,也总得给它一个画板吧,在Android中,这块画板就是Surface。那么问题来了,这块画板是何时给我们的呢?换句话说,App的Surf转载 2021-07-12 21:18:07 · 474 阅读 · 0 评论 -
android c++ 打印调用堆栈
cpp1. 头文件#include#include#include2.源文件android::CallStackstack;stack.update(1, gettid());stack.log("satcklog", ANDROID_LOG_ERROR, "stackdump:");或stack.log("satcklog",(android_LogPriority)6, "stackdump:");CallStack 的具体定义见: system/core/l...转载 2021-05-21 17:43:51 · 1064 阅读 · 0 评论 -
项目中adb shell am 常见用法
am startC:\Users>adb shell am startusage: am [subcommand] [options]usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>] [--sampling INTERVAL] [-R COUNT] [-S] [--opengl-trace] [--user <USER_ID>...转载 2021-05-13 14:07:22 · 1259 阅读 · 0 评论 -
Android 图形架构相关的概念
图形架构本文介绍在Android中与图像架构相关的概念或类Surface、SurfaceHolder、EGLSurface、SurfaceView、GLSurfaceView、SurfaceTexture、TextureView、SurfaceFlinger 和 Vulkan 的知识。本页将介绍 Android 系统级图形架构的基本元素,以及应用框架和多媒体系统如何使用这些元素。我们会重点介绍图形数据的缓冲区是如何在系统中移动的。 如果您想了解 SurfaceView 和 TextureView .原创 2021-05-12 12:52:37 · 395 阅读 · 1 评论 -
LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_JAVA_LIBRARIES 区别
LOCAL_STATIC_JAVA_LIBRARIESLOCAL_STATIC_JAVA_LIBRARIES表示把引用的外部Java库直接编译打包到本模块中,在runtime时可以直接从本模块中找到相关的东西。LOCAL_JAVA_LIBRARIESLOCAL_JAVA_LIBRARIES表示引用的外部Java库在编译时可以找到相关的东西,但并不打包到本模块,在runtime时需要从别的地方查找,这个别的地方就是在编译时将引用的外部Java库的模块名添加到PRODUCT_BOOT_JARS,例如An转载 2021-05-11 19:12:58 · 2016 阅读 · 0 评论 -
Android Camera内存问题剖析
本文通过一类 Android 机型上相机拍摄过程中的 native 内存 OOM 的问题展开,借助内存快照裁剪回捞和 Native 内存监控工具的赋能,来深入剖析此类问题。背景Raphael 是西瓜视频 Android 团队开发的一款 native 内存监控工具,在字节跳动内部产品(如西瓜、抖音、头条等)上广泛用于监控 native 内存泄漏问题。在抖音 7.8.0-8.3.0 上搜集到大量因虚拟内存触顶而 crash 的内存日志现场(如 pthread_create、GL error、EGL_.转载 2021-01-08 14:50:29 · 788 阅读 · 0 评论 -
解决:android studio 编写代码时没有提示了
在编写代码时,代码不自动提示,发现代码自动提示设置正常,所以查询到问题原因在于节能模式的开启,具体解决方式如下:关闭节能模式 关闭节能模式 如上图所示,将Power Save Mode前面的对勾去掉,则完成节能模式的关闭,代码提示功能正常。 ...原创 2020-08-19 11:29:12 · 7765 阅读 · 3 评论 -
Activity启动模式(launchMode)详解
Activity 的启动模式有四种,standard、singleTop、singleTask、singleInstance.image.png1.standard standard是Activity默认的启动模式,在不进行显示指定的情况下,所有活动都会自动使用这种启动模式。 每次启动都一个新的Activity位于栈顶。 android:launchMode...转载 2020-04-30 20:44:56 · 474 阅读 · 0 评论 -
android 的px,dp与sp的区别以及换算
1、px即像素,1px代表屏幕上的一个物理像素点。“pixel” 的缩写,像素。是画面显示的基本单位,真实的像素并不是点或者方块(虽然有时这样显示),也没有实际固定长度,只是一个抽象的取样。设计中的像素和实际显示屏上的像素相对应。屏幕的分辨率一般就描述为“宽向像素数X纵向像素数”。比如 Android手机常见的分辨率有:320 X 480, 480 X 800, 1080 X 1920等...转载 2019-12-02 10:32:21 · 657 阅读 · 0 评论 -
Android Surface创建
一、 OverViewAndroid Surface的创建涉及三个进程 App 进程 Surface本质上是一个Native Window, 并且保存着需要在屏幕上显示的数据(buffer), 它通常包含 triple-buffers 以防止Jank。 那么谁要创建Surface呢? 当然是App了,App需要将自己的内容显示在屏幕上,所以App负责发起Surface创建请求,创建好...转载 2019-10-30 11:06:17 · 879 阅读 · 0 评论 -
Android 双屏显示分析
双屏异显系统提供了Presentation类,可以实现在两块屏幕上同时显示不同的内容;Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕。image.png基本原理image.png1 获得显示设备信息:DisplayManagerService 启动后从SurfaceFlinger当中获取到系统默认的Display 与HDMI displ...转载 2019-10-29 15:10:33 · 2781 阅读 · 1 评论 -
Android窗口管理服务WindowManagerService对窗口的组织方式分析
(原文地址:http://blog.youkuaiyun.com/luoshengyang/article/details/8498908)我们知道,在Android系统中,Activity是以堆栈的形式组织在ActivityManagerService服务中的。与Activity类似,Android系统中的窗口也是以堆栈的形式组织在WindowManagerService服务中的,其中,Z轴位置较低转载 2016-01-15 14:35:24 · 674 阅读 · 0 评论 -
Git 的origin和master分析
首先要明确一点,对git的操作是围绕3个大的步骤来展开的(其实几乎所有的SCM都是这样)1. 从git取数据(git clone)2. 改动代码3. 将改动传回git(git push)这3个步骤又涉及到两个repository,一个是remote repository,再远程服务器上,一个是local repository,再自己工作区上。其中1, 3两个步骤涉及到rem...转载 2018-05-18 14:44:40 · 693 阅读 · 0 评论 -
Git 远程仓库
仓库Git 远程仓库为多人协作开发提供了极大的便捷,前面的 Git 操作都是在本地仓库上进行的,远程仓库是托管在因特网的或者自己搭建的 Git 服务,一个本地可以跟踪多个远程仓库,远程有读写权限,在 GitHub(最流行代码托管网站)上直接克隆的远程仓库没有写的权限,Fork 到自己帐户,则有读写权限。$ git remote这个命令是管理远程仓库的,几个常用命令和选项git remote 列出当...转载 2018-05-18 14:43:29 · 292 阅读 · 0 评论 -
Android中UID机制和共享进程
我们经常在一个activity中去start另一个activity,或者与另一个acitivity的结果进行交互(startActivityForResult)。但有没有想过可能会出现的permission问题呢?如果你遇到了permission denial的Exception,那么你需要读读这篇文章啦。我们在同一个application内部,可以随意的startActivity from Ac转载 2018-01-02 14:42:29 · 2378 阅读 · 0 评论 -
「Git」合并多个 Commit
在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。首先假设我们有3个 commitgit-log-origin.png我们需要将 2dfbc7e8 和 c4e858b5 合并成一转载 2017-10-11 11:40:47 · 493 阅读 · 0 评论 -
Google play内购 Iab
(原文地址:http://blog.youkuaiyun.com/yupu56/article/details/49452107)Google Play 内购 In-App-Billing在Android项目或者Cocos2dx/Unity项目中的集成.最近在做一个游戏的海外版,需要加内购,碰到一些坑,这里记录下来,希望能对大家有个帮助。参考教程:Google Play In-转载 2017-06-15 09:43:24 · 1724 阅读 · 0 评论 -
Android视频录制命令screenrecord
你要知道:screenrecord是一个shell命令支持Android4.4(API level 19)以上支持视频格式: mp4一些限制某些设备可能无法直接录制,原因是分辨率太高,如果遇到此类问题,请试着指定较低的分辨率不支持录制过程中屏幕旋转,如果录制过程中旋转,有可能画面被切断录制视频的时候声音不会被录下来开始录制命令:adb shell screenr转载 2016-11-09 10:44:13 · 644 阅读 · 0 评论 -
Eclipse下报错 An internal error occurred during: "C/C++ Indexer". java.lang.NullPointerException
Eclipse下编译so文件的时候 错误为 An internal error occurred during: “C/C++ Indexer”. java.lang.NullPointerException解决方法: 删除.cproject文件中以下内容: <cconfiguration id="0.1230402123.1377291156"> <storage转载 2016-09-19 14:18:26 · 3699 阅读 · 0 评论 -
Ubuntu安装JDK1.8
1. 首先去Oracle官网下载适合你机器位数的JDK 1.8, 这里以jdk-8u25-linux-x64.tar.gz为例。2. 使用终端命令进入JDK下载后的目录,执行解压命令: sudo tar -xzf jdk-8u25-linux-x64.tar.gz Copy解压后的文件夹到/usr/lib/jvm: sudo mv jdk1.8.0_25 /usr转载 2016-07-25 17:23:08 · 433 阅读 · 0 评论 -
android窗口管理剖析
Android窗口管理 一、 概述在Android系统中,从设计的角度来看,窗口管理系统是基于C/S模式的。整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等。 在Client端,并不是直接和WindowManagerService交互,而是直接和本地对象WindowManager交互,然后由WindowMan转载 2016-01-11 17:23:17 · 567 阅读 · 0 评论 -
StageFright框架流程解读
1、 StageFright介绍 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,并没有完全抛弃opencore,主要是做了一个OMX层,仅仅是对 opencore的omx-component部分做了引用。stagefright是在MediaPlayerService这一层加入的,和openc转载 2016-06-03 10:31:15 · 531 阅读 · 0 评论 -
Android开发中常见的5大内存泄漏问题及解决办法
在android开发中,内存泄漏是比较常见的问题,有过一些android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢?在android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。 内存泄漏有什么影响呢?转载 2016-04-11 11:33:31 · 377 阅读 · 0 评论 -
android studio 调试 framework 层代码
sdk 里面自带的源码(前提是你已经下载了)像 Activity , Service 等是可以直接调试的。sdk_source_code.png但这不是 framework 层所有的代码,要调试其它的代码,要先下载 android 系统源码。source_code.png接下来就可以编译 idegen 模块了很多人说需要先全编译整个系统,其实是不用全编译系统的,只要编译...转载 2018-08-10 10:51:36 · 1140 阅读 · 0 评论 -
SurfaceView及TextureView区别
1、SurfaceView是什么它继承自类View,因此它本质上是一个View。但与普通View不同的是,它有自己的Surface。有自己的Surface,在WMS中有对应的WindowState,在SurfaceFlinger中有Layer。我们知道,一般的Activity包含的多个View会组成View hierachy的树形结构,只有最顶层的DecorView,也就是根结点视图,才是对W...转载 2018-08-07 15:15:37 · 18467 阅读 · 1 评论 -
安卓权限管理
Android 自定义权限 ( )http://berdy.iteye.com/blog/1782854http://www.cnblogs.com/GnagWang/archive/2011/03/21/1990507.htmlhttp://www.ltesting.net/ceshi/ceshijishu/sjcs/android/2011/0624/2转载 2013-06-07 17:02:11 · 1339 阅读 · 0 评论 -
Duplicating a repository
Duplicating a repositoryTo duplicate a repository without forking it, you can run a special clone command, then mirror-push to the new repository.MacWindowsLinuxAllBefore you can duplicate a rep...转载 2019-09-18 12:59:50 · 352 阅读 · 0 评论 -
Android Studio常用快捷键(Ubuntu版)
显示变量或函数的所有使用位置:Ctrl+Alt+7单行注释, 多行注释Ctrl-/, Ctrl-Shift-/大小写切换Ctrl-Shift-U自动提示, 模版提示Ctrl-Space, Ctrl-J参数提示, 文档提示Ctrl-P, Ctrl-Q查看当前符号(方法)的完整定义信息Ctrl-Shift-I...原创 2019-06-06 11:21:31 · 1091 阅读 · 0 评论 -
通过C++实现Android Native Service
最近在项目中遇到一个问题, 要对某个节点(dev/xxx)进行写操作, 但这个设备节点只允许root用户才能进行写操作, 因此不能通过Java或者JNI方式直接去访问, 因此想到了两种方法:通过在init.rc中监听一个系统属性的值, 当属性变为某个值时, 触发一个可执行文件进行读写 编写一个Native Service, 然后以root的身份运行, 通过跨进程调用, 在Service中进行...转载 2019-05-29 10:18:51 · 1207 阅读 · 0 评论 -
手游《奥林劈图》的开发日记(三)
你一定要过得好,不然对不起我的不打扰。虽然我有一万个想见你的理由,但唯独少了一个见你的身份,不是我们不够好,只是时间不凑巧。 感谢你们,那无数个陪伴我熬夜的灿烂星空![2016年5月23日]数据,状态,动作,事件上层:StateMachine1. 界面 (setData, getData)2. 主体A的Action: (setData,...原创 2019-04-03 11:39:42 · 273 阅读 · 0 评论 -
手游《奥林劈图》的开发日记(二)
无论对结果满不满意,我不会对自己曾经的努力后悔。有人对我说:你觉得你花了那么好几年时间,熬了那么多个深夜值得吗?我将回答:值得,因为那里有我的青春记忆。但如果能让我回到从前,给我一个重来的机会,我再也不会这么做。[2016年5月17日]g2Ring的强化设计强化g2Ring的组件性,弱化g2ShapeClip, g2ShapeClip依赖g2Ring...原创 2019-04-03 11:02:59 · 239 阅读 · 0 评论 -
Android Input
https://www.jianshu.com/p/2bff4ecd86c9本篇博客主要是过一下Android Input的框架,在熟悉Android input框架后,以及与App的事件传递流程后,再过一下事件的处理流程,以及ANR是怎样发生的。如果在不了解input的框架情况下就去直接按键等事件就会觉得很卡。一、Android Input的工作模型1.1InputDispatch...转载 2019-07-16 10:53:44 · 616 阅读 · 0 评论 -
Android Studio 快捷键整理分享
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码...转载 2018-11-14 11:29:03 · 281 阅读 · 0 评论 -
Android调试命令收录
查找一个进程ps -A|grep -i camera查找进程名包含camera的进程。 查看进程用到的动态库lsof -p pid(lsof是list open files的缩写) 命令行工具amam可以启动android中的Activity,Service,BroadcastReceiver 等组件显式启动Activity:am start -n {包...原创 2018-08-21 11:40:57 · 592 阅读 · 0 评论 -
Android进程和线程
当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。本...转载 2018-08-13 10:51:39 · 177 阅读 · 0 评论 -
手游《奥林劈图》的开发日记(一)
我最近将手游《奥林劈图》上线到苹果商店,了却了一桩三年的心愿,心情也由之前的燥动不安回归平静。现在我真的有时间和一颗平常心去拥抱机器学习和数据挖掘了。几年前自己刚开始学习cocos2dx的时候,脑子经常冒出各种各样的奇怪的游戏创意,害怕下一分钟可能会忘却,就习惯了把它们记录在有道笔记上。至今翻看那些笔记,可以零星的回忆起这个游戏创作和开发的轨迹和新路历程。[2016年4月19日]任务...原创 2019-04-03 10:45:25 · 359 阅读 · 0 评论 -
wait和notify在锁竞争中的执行顺序
sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调转载 2015-12-28 10:13:06 · 1512 阅读 · 0 评论 -
今天准备落户csdn
guggy这个名字是我女儿一,二岁时叫糖果的发音,现在拿来做我的帐号。它是前些天注册的,并没打算 拿它写博客,注册只是为了在这里下载点东西 :) 不好意思,我想这也是大多数人的想法!在IT行业和手机行业摸爬滚打这么多年,更坚信自己是一块做技术的材料,以前曾经有过动摇,比如管理,但现在更加坚定了,自己只适合做技术,仅此而已 !(虽然在中国做技术可能有些不被人看好,我以前好像看到原创 2012-09-18 09:25:01 · 1135 阅读 · 1 评论 -
git patch 使用
1) 使用git format-patch生成所需要的patch:当前分支所有超前master的提交:git format-patch -M master某次提交以后的所有patch:git format-patch 4e16 --4e16指的是commit名从根到指定提交的所有patch:git format-patch转载 2013-09-13 11:04:13 · 1321 阅读 · 0 评论 -
谈谈CCLayer的区域到底有多大?
作为CCSprite或CCNode的容器,CCLayer的边界在哪里,它所管辖的区域有多大呢? 如果精灵加入到CCLayer中,位置位于层的边界外,会不会显示不出来呢?其实这里或多或少会有点误区,实际上可以理解为CCLayer是没有边界的,一个精灵作为子节点加入到层中,可以位于任何位置,能不能显示出来,决定于它是不是位于屏幕之内。CCLayer作为从CCNode的继承而来的类,它也原创 2013-09-05 14:26:15 · 3510 阅读 · 0 评论