2024年tensorflow-android 官方demo源码分析,大厂面试经验分享稿

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// 选择了预览图片的大小时的回调

public void onPreviewSizeChosen(final Size size, final int rotation) {

previewHeight = size.getHeight();

previewWidth = size.getWidth();

CameraActivity.this.onPreviewSizeChosen(size, rotation);

}

},

this,

getLayoutId(),

getDesiredPreviewFrameSize());

camera2Fragment.setCamera(cameraId);

fragment = camera2Fragment;

} else {

// 摄像头只支持部分功能时,fallback到传统的API

fragment =

new LegacyCameraConnectionFragment(this, getLayoutId(), getDesiredPreviewFrameSize());

}

// fragment填充到container位置处

getFragmentManager()

.beginTransaction()

.replace(R.id.container, fragment)

.commit();

}

下面来看CameraConnectionFragment,构造fragment时我们传入了两个比较重要的回调,一个是cameraConnectionCallback,它在打开摄像头时回调,一个是imageListener,它在摄像头拍摄到图片时回调。我们后面会详细分析。先来看fragment的生命周期中的几个重要方法。onCreateView() onViewCreated()基本没做太多事情,onResume()中有个关键动作,它调用了openCamera()方法来打开摄像头。我们来详细分析。

public void onResume() {

super.onResume();

startBackgroundThread();

if (textureView.isAvailable()) {

// 屏幕没有处于关闭状态时,打开摄像头。textureView是fragment中展示摄像头实时捕获的图片的区域。

openCamera(textureView.getWidth(), textureView.getHeight());

} else {

textureView.setSurfaceTextureListener(surfaceTextureListener);

}

}

3.2、打开摄像头,并注册ConnectionCallback和OnImageAvailableListener


下面来看openCamera()方法。

private void openCamera(final int width, final int height) {

// 设置camera捕获图片的一些输出参数,图片预览大小previewSize,摄像头方向sensorOrientation等。最重要的是回调我们之前传入到fragment中的cameraConnectionCallback的onPreviewSizeChosen()方法。

setUpCameraOutputs();

// 设置手机旋转后的适配,这儿不用关心

configureTransform(width, height);

// 利用CameraManager这个Android底层类,打开摄像头。这儿也不是我们关注的重点

final Activity activity = getActivity();

final CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);

try {

if (!cameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {

throw new RuntimeException(“Time out waiting to lock camera opening.”);

}

manager.openCamera(cameraId,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值