- 博客(49)
- 收藏
- 关注
原创 Android OpenGL 学习记录
一、Android中的OpenGL ES(v2.0)1、java层实现2、java + C++实现3、C++层实现ES 其实应该算是封装了,不然怎么有一个libEGL.so ,再有libGLESv2.so 这些库呢?二、EGL和OpenGL的关系注:上面的关系不仅限于Android平台,IOS、Windows等其他平台也是一样的!如上图 EGL 就是 surface 和 openGL的桥梁。三、创建C++项目并导入OpenGL库1、可以使用NDK2、在CM
2021-01-10 23:25:21
667
原创 音视频相关文章总结
Android音视频开发Android Camera架构Android MediaExtractor + MediaCodec构建简单播放器Android平台上使用MediaCodec, Opengl对视频进行处理MediaCodec的使用介绍MediaCodec基本原理及使用初识MediaCodec音频的两种录制方式-AudioRecord,MediaRecorder的使用及播放使用AudioRecorder录音...
2020-12-29 15:43:25
278
原创 制作简单播放器
最简单的播放器该播放器只实现视屏播放,将FFmpeg与SDL结合到一起通过FFmpeg解码视屏数据,通过SDLL进行渲染#include <stdio.h>#include <SDL.h>#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>#include <libswscale/swscale.h>// compatibility with n
2020-12-27 23:33:57
828
原创 SDL 介绍
一、SDL的使用加头文件 #include<SDL.h>初始化SDL退出SDLSDL 主要用在渲染SDL 渲染窗口初始化:SDL_Init(),SDL_Quit()创建窗口:SDL_CreatWindow() 销毁窗口, SDL_DestoryWindow()创建一个渲染器:SDL_CreateRender(),作用是把图像帧会到窗口里面去。...
2020-12-27 00:49:30
4280
1
原创 android audio模块(二)
案例:android 源码,c++ 的测试程序frameworks\base\media\tests\audiotests\shared_mem_test.cpp 共享内存测试JAVA层AudioTrack 测试程序:frameworks\base\media\tests\MediaFrameworkTest\src\com\android\mediaframeworktest\functional\audio\MediaAudioTrackTest.java一、AudioTra..
2020-12-22 18:03:35
1342
原创 android audio模块(一)
参考这两个文章:Android 音频系统:从 AudioTrack 到 AudioFlingerAndroid 音频数据传输流程图 - Playback过程
2020-12-17 16:15:44
863
原创 android 使用SurfaceFlinger 服务的流程分析,基于4.4(三)----图像的输出过程
frameworks\native\services\surfaceflinger\SurfaceFlinger.h ....... struct DisplayDeviceState { DisplayDeviceState(); DisplayDeviceState(DisplayDevice::DisplayType type); bool isValid() const { return type >= 0; } ...
2020-12-16 18:10:39
831
原创 android 使用SurfaceFlinger 服务的流程分析,基于4.4(二)---- vsync 机制
一、VSYNC 概述调用 unlockAndPost ,将UI buffer 入队后,最终通过 layer层调用surfaceflinger 的signalLayerUpdate 函数 ,通知surfaceflinger 处理。在分析这个surfaceflinger 处理前要先了解vsync 机制。surfaceflinger 将不同layer 的 ui数据元素合成,需要精密的时间控制,不然屏幕就会很卡。在相同的信号指令下进行处理数据,屏幕才会呈现出正常的图像。这个信号就是vsync 。
2020-12-15 18:10:51
418
原创 android 使用SurfaceFlinger 服务的流程分析,基于4.4(一)------SurfaceFlinger 使用步骤
一、使用SurfaceFlinger 的框架一般来说,使用SurfaceFlinger服务的流程分为以下几步:1、创建应用进程的Client ,这个Client 是一个SurfaceComposerClient 对象,主要用来创建一个surface:sp<SurfaceComposerClient> client = new SurfaceComposerClient()其UML 流程图如下:2、 用第一步创建的Client 获得一个surfaceControl...
2020-12-14 12:03:31
995
原创 Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)函数流程
Android应用程序窗口的UI渲染过程可以分为测量、布局和绘制三个阶段1、测量(Measure) ... ↓ViewRootImpl.doTraversal() ↓ViewRootImpl.performTraversals() ↓ViewRootImpl.measureHierarchy() ↓ViewRootImpl.performMeasure() ↓V
2020-12-10 17:31:21
338
原创 正确使用Runtime.getRuntime().exec()方法
1.错误的使用方式Runtime.getRuntime().exec("xxx");2.正确的使用方式//需要指定参数一:命令位置;参数二:-c表示先执行第一个参数;参数三:你的命令。Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","xxx"});例如 :try { Runtime.getRuntime().exec(new String[]{"/system/bin/sh","-c","reboot"});}
2020-12-10 14:41:51
4215
2
原创 Android应用程序窗口(Activity)的绘图表面(Surface)的创建流程
每一个在C++层实现的应用程序窗口都需要有一个绘图表面,然后才可以将自己的UI表现出来。这个绘图表面是需要由应用程序进程请求SurfaceFlinger服务来创建的,在SurfaceFlinger服务内部使用一个Layer对象来描述。对于在Java层实现的Android应用程序窗口来说,它也需要请求SurfaceFlinger服务为它创建绘图表面,这个绘图表面使用一个Surface对象来描述。在Java层实现的Android应用程序窗口的绘图表面是通过两个Surface对象来描述,一个是在应用程序进程这..
2020-12-10 11:22:03
591
原创 ActivityManagerService服务请求WindowManagerService服务为一个Activity组件创建一个AppWindowToken对象的过程
1、ActivityStack.startActivityLocked() ↓2、WindowManagerService.addAppToken() ↓3、new AppWindowToken() ↓4、mTokenMap.put(token.asBinder(), atoken)
2020-12-09 17:42:52
214
原创 Android UI 渲染博客总结
网上找了一些UI SurfaceFlinger 值得学习的文章Android图形显示系统——概述 可以看看这个作者一系列文章Android图形显示系统——下层显示1:基础知识与相关文件Android图形显示系统——上层显示1:界面绘制大纲Android Render(一)Activity窗口构成和绘制解析Android Render(二)7.1源码硬件加速下draw绘制流程分析Android应用程序窗口(Activity)实现框架简要介绍和学习计划A...
2020-12-02 09:48:52
173
原创 Android Debug 方法集合
Android Tombstone/Crash的log分析和定位开发日志整理3【Android tombstone分析 升级篇】Android Tombstone 分析如何分析android tombstone?Android NDK Tombstone/Crash 分析Android tombstone 分析案例崩溃等抓关键字:logcat | grep -e Fatal -e Crash -e AndroidRuntime -e Exception -e Error -.
2020-11-12 14:03:31
206
转载 Android 实现首次开机启动wizardsetup程序
Android 实现首次开机启动wizardsetup程序Android Provision(开机向导setupwizard程序)
2020-11-11 18:00:47
1033
原创 Android系统(Launcher)的启动过程,基于4.4
( 4999): at dalvik.system.NativeStart.main(Native Method)( 4999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:658)( 4999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)( 4999): at java.lang....
2020-11-11 14:13:46
349
转载 android WMS
Android窗口系统第一篇---Window的类型与Z-Order确定Android窗口系统第二篇---Window的添加过程
2020-11-06 10:56:19
226
转载 Android 8.1 PowerManagerService分析
Android 8.1 PowerManagerService分析(一)Android 8.1 PowerManagerService分析(二) ——updatePowerStateLocked()方法Android 8.1 PowerManagerService分析(三)——WakeLock机制Android 8.1 PowerManagerService分析(四)——亮屏流程分析Android 8.1 PowerManagerService分析(五)——灭屏流程分析看上五篇就行了.
2020-10-29 10:06:06
626
转载 查找是谁改了content://settings/ 下面数据
有时候,我们会发现默认配置了system 、 global 、secure 数据库的值,但开机后被修改了,如何查找是谁改了数据库里面默认的值?以 :Settings.System.SCREEN_OFF_TIMEOUT 为例,1、修改Settings.java (frameworks\base\core\java\android\provider) 中在class System 内部类的 ,因为有Secure Global 几个内,里面的函数都长的差不多,不要添加错了。public stat.
2020-10-28 13:54:28
781
转载 Android 系统 overlay 总结
For color, bool, string, array, style/theme types, the resource values are identifed by their keys, so for these types, there is no need to put the resources in a file with the same name as in the original base package.For layout, animation, picture draw
2020-10-26 11:05:48
1682
原创 启动一个 Activity 的流程,基于android 4.4
\src\frameworks\base\core\java\android\app\Activity.java startActivity (Activity.java) startActivityForResult (Activity.java) startActivityForResult(intent, requestCode, null);(Activity.java)/src/frameworks/base/core/java/andro...
2020-10-23 13:32:47
182
原创 pm cp rm命令的具体用法
pm 命令是Android里面packageManage的命令行,用于安装包的操作。一般我们在命令行下,可以使用以下命令安装一个新的安装包。1、安装APK:例如,在串口终端下输入:pm install -r /data/card/ApicalRadio.apk就可以重新安装ApicalRadio.apk到android系统上,默认是安装到系统的data/app/目录下。-r 参数表示重新安装,如果原来已经安装了,会覆盖原来的安装包。2、卸载pmuninstall -kcom...
2020-10-22 14:38:12
1195
原创 Android apk 签名
新编译了一个apk 要对他签名,才能替换系统里面对应的apk1、确认系统的apk 在编译的时候 LOCAL_CERTIFICATE 变量给的值是 platform ,还是其他。2、如果LOCAL_CERTIFICATE := platform ,那么就把\src\build\target\product\security\ 目录下的 platform.x509.pem、platform.pk8 拷贝到windows 的E 盘;3、另外拷贝签名工具signapk.jar 到E...
2020-10-15 09:36:41
114
原创 IPTV 踩得坑
IPTVamlogic 方案 升级固件非高安的软件,直接用USB_Burning_Tool 升级;若是遇到刷机挂掉,S905芯片 ,需要短接 R412 电阻 ,然后在用USB_Burning_Tool 升级
2020-09-29 14:44:42
598
原创 Java 网络编程
一、基础常识1、网络编程三要素: A:IP地址 B:端口 C:协议2、IP地址: 网络中计算机的唯一标识。 计算机只能识别二进制的数据,所以我们的IP地址应该是一个二进制的数据。 但是呢,我们配置的IP地址确不是二进制的,为什么呢? IP:192.168.1.100 换算:11000000 10...
2018-12-16 23:13:44
165
原创 java Scanner类
Scanner:用于接收键盘录入数据。 它其中一个构造方法 Scanner(InputStream source)package itcast_01;import java.util.Scanner;public class ScannerDemo { public static void main(String[] args) { Scanner sc = ...
2018-08-27 19:47:03
169
原创 Java String类
字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。 通过查看API,我们可以知道 A:字符串字面值"abc"也可以看成是一个字符串对象。 B:字符串是常量,一旦被赋值,就不能被改变。如:String str="abc"; 构造方法: public String():...
2018-08-27 19:46:51
176
原创 Java Math类 Random类 BigInteger类 BigDecimal类 Date类 DateFormat类 Calendar类
1.Math类概述•Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * ...
2018-08-27 19:41:17
286
原创 Java 正则表达式
1.引入 校验qq号码. 1:要求必须是5-15位数字 2:0不能开头 分析: A:键盘录入一个QQ号码 B:写一个功能实现校验 C:调用功能,输出结果。package cn.itcast_01;import java.util.Scanner;public class ...
2018-08-27 17:32:27
202
原创 Java StringBuffer类 包装类类型
1.StringBuffer: 线程安全的可变字符串。StringBuffer和String的区别? 前者长度和内容可变,后者不可变。 如果使用前者做字符串的拼接,不会浪费太多的资源。StringBuffer的构造方法: public StringBuffer():无参构造方法 public...
2018-08-27 15:19:41
344
原创 C++ 符号重载
符号重载:c++符号增加支持自定类型的操作数.实际是一个特殊函数.函数名为:operator 符号 c++ 支持可重载符号: 算术运算符:+,-,*,/,%,++,-- 位操作运算符:&,|,~,^,<<,>> 逻辑运算符:!,&&,||; 比较运算符:<,>,>=,<=,==,!=; 赋值运算符:=,+=,-=,*=,/=,%=,&am...
2018-08-25 19:30:55
7029
原创 C++ 简单实现链表模板类
目的在于熟悉 C++ 实现链表类、熟悉模板类#include <iostream>#include <stdio.h>#include <string.h>using namespace std;//前置申明模板类template <class T>class List;//定义节点模板类template <cl...
2018-08-25 17:35:29
2824
2
原创 C++ 类模板、模板类、定义标准输入\输出
模板思想实现与类型无关,只与功能实现有关. 类模板:定义类时数据类型不定 模板类:使用类实例化对象,指定类型.构建一个具体对象#include <iostream>#include <stdio.h>#include <string.h>using namespace std;class Student{ friend istream&...
2018-08-25 17:10:54
2216
原创 C++ 多态、虚函数、抽象类、虚表(二)
虚表深入探究:#include <iostream>#include <stdio.h>using namespace std;typedef void (*PTR_FUN)();class Base{private: virtual void fun() { cout<<"Base fun"<<endl; } ...
2018-08-25 00:36:38
191
原创 C++ 多态、虚函数、抽象类、虚表(一)
多态:派生类继承基类,派生类重写(覆盖)基类的虚方法.实现派生类个性. 基类提供统一接口虚函数,派生类都有不同的实现. 实现多态必同时满足如下三个条件: 1.必须是公有继承 2.基类的方法必须是虚方法 3.必须是通过基类指针或引用调用基类方法 虚函数:存储在虚表(vtable),派生类继承虚表覆盖虚表的基类虚函数 覆盖(override):派生...
2018-08-24 23:37:32
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人