Dogee's Blog


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

Unity - Android Share Texture

发表于 2022-03-30   |   分类于 Android   |   2,217 字   |   11 分钟   |  

Unity - Android Share Texture

需求来源

原始的需求是打算在Unity中申请一个Texture,但是Texture的source部分是由Android提供的。

应用的场景:在Unity中显示一个Android App的画面。

技术点

  • [x] Unity & Android Share Texture
  • [x] Android VirtualDisplay
  • [x] OpenGLES
  • [x] FBO

Pipeline 流程图

阅读全文 »

Monado Android Sensor Data Flow

发表于 2022-03-21   |   分类于 OpenXR   |   1,762 字   |   8 分钟   |  

Monado Android Sensor Data Flow

Flow流程

流程上,是两个线程:

  • 线程一是app的render线程,每次render的时候都需要去获取xrLocateViews,从而获取到底层Sensor的写完的数据,这里是消费者comsumer。
  • 线程二是android的sensor callback,这里会不断做数据填充的动作,这里是生产者provider。

整体的函数调用全地图如下:

阅读全文 »

Latency mitigation strategies解读

发表于 2022-03-08   |   分类于 OpenXR   |   3,929 字   |   18 分钟   |  

Latency mitigation strategies解读

契机

最近介入了VR的项目,很多时候都会听到小伙伴们在谈论一些晦涩的名词,其中提到比较多的是ATW,因此溯源了一下整个词语的出处,所以才发现了这边John Carmack的文章。借着做项目的机会匀了一点时间读了这篇文章,也借这个机会组织了小伙伴们一同分享了一下,才有了这样的一篇读书笔记。

Abstract

人对于延迟感受的阈值

Human sensory systems can detect very small relative delays in parts of the visual or, especially, audio fields, but when absolute delays are below approximately 20 milliseconds they are generally imperceptible.

  • 作者在开篇提出了人类对于20ms以下的延迟是几乎无感知的

Interactive 3D systems today typically have latencies that are several times that figure, but alternate configurations of the same hardware components can allow that target to be reached.

  • 但是3D应用的延迟是20ms这个数字的好多倍(2013年)
阅读全文 »

Monado Runtime源码结构分析

发表于 2022-03-02   |   分类于 OpenXR   |   8,768 字   |   49 分钟   |  

Monado Runtime源码结构分析

源码地址

monado的源码下载地址:https://gitlab.freedesktop.org/monado/monado

Monado source tree

ReadMe.md的部分已经有阐释了整个工程的目录概要:

  • src/xrt/include - headers that define the internal interfaces of Monado.
  • src/xrt/compositor - code for doing distortion and driving the display hardware of a device.
  • src/xrt/auxiliary - utilities and other larger components.
  • src/xrt/drivers - hardware drivers.
  • src/xrt/state_trackers/oxr - OpenXR API implementation.
  • src/xrt/targets - glue code and build logic to produce final binaries.
  • src/external - a small collection of external code and headers.

gradle for Android

参考根目录下的settings.gradle文件,可以看出整个工程其实是包含了4个部分的:

  • rootProject.name = ‘monado’
  • include ':src:xrt:auxiliary:android'
  • include ':src:xrt:ipc:android'
  • include ':src:xrt:targets:android_common'
  • include ':src:xrt:targets:openxr_android'

这个是我们非常熟悉的Android工程的结构了,根据以往的经验,我们需要从com.android.application的工程入手进行分析。

阅读全文 »

2021年终述职报告

发表于 2022-01-12   |   分类于 年终小结   |   818 字   |   3 分钟   |  

前情提要:2020

  • I19tService 4.X都能落地,5.X可以规划
  • ToyBox可以顺利前进,不是伪需求
  • 猪队友实验室小伙伴们可以玩的开心
  • 掌握一门新的技术
  • 单车训练里程1000公里
  • 吐槽公司吐槽老板频率一个月不超过一次

2021年的整体回顾

2021年,gerrit-prv代码226笔,gerrit代码119笔。
gitlab新增piggylab项目:26个。
2021年整体是非常顺利的,完成了年初制定的绝大部分计划,几个里程碑事件:

  1. AAR抽象成功分离
  2. Template Monitor上线
  3. MACE落地

这一年所有的事情都指向一个目标,提高复用率。

阅读全文 »

Android Instrumentation Test的使用

发表于 2021-12-02   |   分类于 Android   |   1,026 字   |   5 分钟   |  

Android Instrumentation Test的使用

Instrumentation Test一直都存在,但是一直被忽略,大部分的代码都不会有UT的编写,所以更加不会有IT的编写了。简单来说I(nstrumentation)T(est)是需要跑到具体手机上的测试用例,对于我们需要用到GPU,DSP的应用来说还是非常实用的,毕竟离线环境和线上环境千差万别,最终还是要以具体的板子效果为准。

初始化配置

配置的部分是第一个坑,整个测试到入口跟MainActivity很像,需要先设定一个testInstrumentationRunner,这个部分是配置在build.gradle中的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
android {
......
defaultConfig {
minSdkVersion androidSdk.minVersion
targetSdkVersion androidSdk.targetVersion
versionCode rootProject.ext.verCode
versionName rootProject.ext.verName
testInstrumentationRunner "com.example.test.SelfTestRunner"
}
......
}
dependencies {
......
//test
androidTestImplementation 'androidx.annotation:annotation:1.1.0'
androidTestImplementation 'androidx.test:runner:1.1.0'
androidTestImplementation 'androidx.test:rules:1.1.0'
}

阅读全文 »

tflite example :model_persionlization分析

发表于 2021-11-02   |   分类于 Android   |   3,547 字   |   14 分钟   |  

前情提要

这一篇文章是针对《model_personalization》项目的一个代码解读。
https://github.com/tensorflow/examples/tree/8ad788d9c78fb914d4c768ad19beb552ca3ae6fc/lite/examples/model_personalization

代码解读分为四个步骤:

  • tflite预准备:5个tflite模型文件
  • 模型加载初始化:Android端如何加载模型文件
  • 模型参数的训练:Android端的训练过程,epoch,batch
  • 模型应用以及识别:inference的过程
阅读全文 »

Android Native backtrace指北

发表于 2021-08-16   |   分类于 Android   |   2,348 字   |   9 分钟   |  

Android Native backtrace指北

前言

为什么需要打印出backtrace呢?因为懒,不想通过IDE工具去看代码了解整个构造。

概念介绍:Wind & Unwind

什么是stack wind以及stack unwind:

When program run, each function(data, registers, program counter, etc) is mapped onto the stack as it is called. Because the function calls other functions, they too are mapped onto the stack. This is stack winding.

Unwinding is the removal of the functions from the stack in the reverse order.

因此如果要打印出backtrace,其实要做的操作就是unwind。

阅读全文 »

S23赛季的结束

发表于 2021-06-22   |   分类于 王者荣耀   |   2,259 字   |   8 分钟   |  

麻皮大意的赛季之初

“要么冲一下50星吧!”
在一片盲目乐观的情况下,开启了S23赛季的旅程,事后才知道,这个世界有两类人真的无畏,一类是真强者,另外一类是无知者,很可惜我TMD是后者。

完美无懈的任务拆解

KPI制定完了,下面就是项目执行计划了,初步的计划是这样的,上赛季10星,落下来应该在钻石1,一个赛季3个月12周,我先在3周内打上王者,再用2周上20星,接着每2周上10星,最后3周冲击50星。
同时,我还梳理了一下自己的英雄池,毕竟自己最多也就打到30星,已经有两年没有怎么玩了,之前还是组排车队,而这次的任务大概率是要靠自己单排了,还是很有必要总结一下自己的优劣势。大致定下了这么几个英雄:

  • 射手:成吉思汗,孙尚香
  • 上单:杨戬,达摩,廉颇
  • 中路:甄姬,干将,诸葛亮
  • 打野:百里玄策,赵云
  • 辅助:廉颇,夏侯惇,庄周

意外频出的上分之旅

3周上王者的任务是顺利完成了,但是意外得知了一个消息,IOS可以转号到Android,那么现在有两个选择放在我面前:

阅读全文 »

2020年终述职报告

发表于 2021-01-29   |   分类于 年终小结   |   973 字   |   3 分钟   |  

2020 回顾:

可见代码合入记录:213笔,gerrit-prv 136笔,gerrit 77笔。
工作上分为两大部分:填坑和挖坑

阅读全文 »

黑鲨3S发布会小结

发表于 2020-08-01   |   分类于 发布会   |   791 字   |   3 分钟   |  

亮点

  • 产品的特性提前梳理完毕
  • 封闭式讨论加快整体进度

缺点

  • 对比视频介入太晚,没有及时达到需求
  • 每天晚上过ppt内容效率太低
  • 演讲排练太少,动作不够自然
  • 视频素材美化不够,前期没有研发参与导致技术点无法表达清楚,反复多次
  • 休息不够,导致排练关键时刻出现NG
阅读全文 »

2019年度小结

发表于 2019-12-28   |   分类于 年终小结   |   1,648 字   |   6 分钟   |  

2019年主要做了几个事情:

  1. 投屏工具(1-2月)
  2. 游戏模拟器预研(2-4月)
  3. I19t架构翻新(全年)
  4. 小爱同学对接(9月-12)
  5. 基础能力提升
阅读全文 »

App版本号自动生成

发表于 2019-12-21   |   分类于 App   |   1,145 字   |   5 分钟   |  

Android中的App版号

在Android中,一般应用都是在build时通过写入versionCode和versionName来显示标注。
在设备端,我们也可以通过adb shell dumpsys package 包名的方式来查看对应的信息。

1
2
3
4
5
6
7
8
adb shell dumpsys package XXX.AAA.BBBBBBB.CCCC
===> Package [XXX.AAA.BBBBBBB.CCCC] (4a1bd18):
userId=10090
pkg=Package{90b0371 XXX.AAA.BBBBBBB.CCCC}
......
versionCode=1102120023 minSdk=27 targetSdk=28
versionName=v2.12.23.191220.AABBCC.DDDDDD
......

其中,我们可以看到versionCode = 1102120023,而versionName=v2.12.23.191220.AABBCC.DDDDDD。
很明显,一般来说versionCode是给机器看的,是一个递增的数字,而versionName是给人看的,是一串有实际意义的字符串。

阅读全文 »

Android Profiler Native CPU

发表于 2019-09-09   |   分类于 App   |   837 字   |   3 分钟   |  

Profiler概览

官方教程:https://developer.android.com/studio/profile/android-profiler?hl=zh-CN
Android Profiler提供了CPU,Memory,Network以及Energy等等信息的追踪和分析,此处我们仅关心CPU部分。

阅读全文 »

android rom开发_安卓双系统_安卓写入重定向

发表于 2018-05-08   |   分类于 App   |   1,120 字   |   4 分钟   |  

Andorid双系统

https://mart.coding.net/project/7929
Product By:DX

目标需求

  1. “原系统”与“定制系统”之间可快速切换。
  2. “原系统”与“定制系统”相互隔离,彼此不能访问数据。
  3. “原系统”与“定制系统”之间可通过特定接口交换数据。
  4. “定制系统”中可通过 App 管理手机通讯端口(包括蓝牙、 Wi-Fi、NFC、 3G/4G 网络、 电话、短信、 USB 等)。
  5. “定制系统”中的 App 软件可定制(添加、 删除)。
  6. “定制系统”中的写操作不会在“原系统”存储中留下痕迹。
  7. 改造后的手机与原商品手机无明显痕迹。
阅读全文 »
1234
Dogee

Dogee

play for up - work for fun

46 日志
12 分类
44 标签
© 2015 - 2022 Dogee
由 Hexo 强力驱动
主题 - NexT.Pisces
ICP - 沪ICP备18043512号-1