当前位置: 代码网 > it编程>编程语言>Asp.net > 字节跳动nlp算法工程师面试问题及答案,Camera Framework 架构了解下,关于网络优化你必须要知道的重点

字节跳动nlp算法工程师面试问题及答案,Camera Framework 架构了解下,关于网络优化你必须要知道的重点

2024年08月05日 Asp.net 我要评论
找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

// 获取 vendor tag

vendortagdescriptor getcameravendortagdescriptor();

vendortagdescriptorcache getcameravendortagcache();

// camera api 1 获取参数信息

string getlegacyparameters(intcameraid);

constintapi_version_1 = 1;

constintapi_version_2 = 2;

// 指定 id 支持的 api 版本

booleansupportscameraapi(stringcameraid, intapiversion);

// 指定 id 设置手电筒模式

voidsettorchmode(stringcameraid, boolean enabled,

ibinder clientbinder);

// 服务端向系统打印系统消息

constintevent_none = 0;

constintevent_user_switched = 1;

oneway voidnotifysystemevent(int eventid,in int[] args);

}

_// 2.icameraservicelistener.aidl_interfaceicameraservicelistener

{

constintstatus_not_present      = 0;

constintstatus_present          = 1;

constintstatus_enumerating      = 2;

constintstatus_not_available    = -2;

constintstatus_unknown          = -1;

// 相机设备状态变化事件

oneway voidonstatuschanged(int status,string cameraid);

constinttorch_status_not_available = 0;

constinttorch_status_available_off = 1;

constinttorch_status_available_on  = 2;

constinttorch_status_unknown = -1;

// 手电筒状态变化事件

oneway voidontorchstatuschanged(int status,string cameraid);

}

七、 icameraserviceproxy.aidl 文件


cameraserviceproxy 服务是在 java 层注册的

interfaceicameraserviceproxy

{

// cameraservice 向代理服务发送消息,通知用户更新

onewayvoidpingforuserupdate();

constintcamera_state_open = 0;

constintcamera_state_active = 1;

constintcamera_state_idle = 2;

constintcamera_state_closed = 3;

constintcamera_facing_back = 0;

constintcamera_facing_front = 1;

constintcamera_facing_external = 2;

// cameraservice 向代理服务发送消息,通知相机设备状态更新

onewayvoidnotifycamerastate(string cameraid, int facing,

intnewcamerastate, string clientname);

}

八、 icamera 相关


camera api1 才会使用到,分为 icamera.aidl, icameraclient.aidl

它们的代码是手动实现的,参考:cameraclient.h/cpp, camera.h/cpp

九、icameradevice 相关


camera api2 才会使用到,分为客户端向服务端的请求 icameradeviceuser.aidl 和服务端发给客户端的回调 icameradevicecallbacks.aidl 。

表示相机设备具备的能力,能够提供的函数;这两个 aidl 是在 cameradeviceclient 中实现对应功能的

// 1.icameradeviceuser.aidl interfaceicameradeviceuser

{

voiddisconnect();

constintno_in_flight_repeating_frames = -1;

// 向设备提交捕获请求

submitinfo submitrequest(incapturerequest request, boolean streaming);

submitinfo submitrequestlist(incapturerequest[] requestlist,

boolean streaming);

// 取消置顶 id 的重复请求,并返回上次请求的帧 id

longcancelrequest(intrequestid);

constintnormal_mode = 0;

constintconstrained_high_speed_mode = 1;

constintvendor_mode_start = 0x8000;

// 在流处理前执行配置请求

voidbeginconfigure();

// 根据指定输出配置,创建流

intcreatestream(inoutputconfiguration outputconfiguration);

voidendconfigure(intoperatingmode);

voiddeletestream(intstreamid);

// 创建输入流,返回流 id

intcreateinputstream(int width, int height, int format);

// 返回输入流的 surface

surface getinputsurface();

// keep in sync withpublic api in

//frameworks/base/core/java/android/hardware/camera2/cameradevice.java

constinttemplate_preview = 1;

constinttemplate_still_capture = 2;

constinttemplate_record = 3;

constinttemplate_video_snapshot = 4;

constinttemplate_zero_shutter_lag = 5;

constinttemplate_manual = 6;

// 根据模板创建默认请求,返回相机参数信息

camerametadatanative createdefaultrequest(inttemplateid);

// 获取相机参数信息

camerametadatanative getcamerainfo();

voidwaituntilidle();

longflush();

voidprepare(intstreamid);

voidteardown(intstreamid);

voidprepare2(int maxcount,intstreamid);

voidfinalizeoutputconfigurations(int streamid,

in outputconfigurationoutputconfiguration);

}

_// 2.icameradevicecallbacks.aidl_interfaceicameradevicecallbacks

{

oneway voidondeviceerror(interrorcode,

in captureresultextrasresultextras);

oneway voidondeviceidle();

oneway voidoncapturestarted(incaptureresultextras resultextras,

longtimestamp);

oneway voidonresultreceived(incamerametadatanative result,

incaptureresultextras resultextras);

oneway voidonprepared(intstreamid);

// 重复请求引起的错误回调

oneway voidonrepeatingrequesterror(in longlastframenumber,

in intrepeatingrequestid);

oneway voidonrequestqueueempty();

}

十、services 目录下的文件介绍


frameworks/av/services/camera/libcameraservice aosp 中这个目录下是 87 个文件,而 qcom 的基线中增加了 27 个文件,分别为 api1/qticlient2 目录下的 25 个文件,以及 qticamera2client.cpp, qticamera2client.h 两个文件。

.

├—— android.mk

├—— api1

│   ├—— client2

│   └—— qticlient2

├—— api2

├—— cameraflashlight.cpp

├—— cameraflashlight.h

├—— cameraservice.cpp

├—— cameraservice.h

├—— common

├—— device1

├—— device3

├—— gui

├—— module_license_apache2

├—— notice

├—— tests

└—— utils

从目录结构上可以看出,api1/2 和 hal1/3 就是在这一层体现的。

十一、 api1/api2


app java 客户端调用服务端方法时,camera api1/2 接口对应功能都是在 cameraservice 中实现的,而这里的 api1/2 目录对应的就是对上层不同版本接口的处理

api1

├—— camera2client.cpp

├—— camera2client.h

├—— cameraclient.cpp

├—— cameraclient.h

├—— client2

│   ├—— callbackprocessor.cpp

│   ├—— callbackprocessor.h

│   ├—— camera2heap.h

│   ├—— capturesequencer.cpp

│   ├—— capturesequencer.h

│   ├—— frameprocessor.cpp

│   ├—— frameprocessor.h

│   ├—— jpegcompressor.cpp

│   ├—— jpegcompressor.h

│   ├—— jpegprocessor.cpp

│   ├—— jpegprocessor.h

│   ├—— parameters.cpp

│   ├—— parameters.h

│   ├—— streamingprocessor.cpp

│   ├—— streamingprocessor.h

│   ├—— zslprocessor.cpp

│   └—— zslprocessor.h

├—— qticamera2client.cpp

├—— qticamera2client.h

└—— qticlient2

├—— callbackprocessor.cpp

├—— callbackprocessor.h

├—— camera2heap.h

├—— capturesequencer.cpp

├—— capturesequencer.h

├—— frameprocessor.cpp

├—— frameprocessor.h

├—— jpegcompressor.cpp

├—— jpegcompressor.h

├—— jpegprocessor.cpp

├—— jpegprocessor.h

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加v获取:vip204888 (备注android)
img

最后

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

阿里p7android高级教程

下面资料部分截图,诚意满满:特别适合有3-5年开发经验的android程序员们学习。

附送高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、近期面试跳槽、自身职业规划迷茫的朋友们。

android核心高级技术pdf资料,bat大厂面试真题解析;

ai人工智能、android移动开发、aigc大模型、c c#、go语言、java、linux运维、云计算、mysql、pmp、网络安全、python爬虫、ue5、ui设计、unity3d、web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、flutter、ios开发、php开发、.net、安卓逆向、云计算

roid核心高级技术pdf资料,bat大厂面试真题解析;**
[外链图片转存中…(img-ompxtfra-1712305591444)]

ai人工智能、android移动开发、aigc大模型、c c#、go语言、java、linux运维、云计算、mysql、pmp、网络安全、python爬虫、ue5、ui设计、unity3d、web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、flutter、ios开发、php开发、.net、安卓逆向、云计算

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com