Camera 从零开始的那段时间

时间飞逝,Camera开发也是有2年多了,经过自己努力,从一个菜鸟到现在,或许还是个菜鸟吧!
回顾历史:
之前一直是做Android APP 开发的,从深圳来上海之后,当时裸辞的我,为了尽快在上海立足,找了一个专业型公司继续做android APP,只有我一个android,工作了半年,还算不错吧,和同事之间的关系还行,平时没事还可以相约篮球场,基本不加班,项目很简单,自研项目,我基本都是很快完成了,还有很多时间学习,但是呢,没有项目的学习是很枯燥的,所以也可以说那段时间有点养老,持续了半年,也就是刚过完年之后,我提离职了,老板想给我加薪让我留下来,但是我已经决定离开了,原因是,现在的生活不是我想要的,来到魔都不是为了养老的。
转行:
面试的时候让我自己选择部门,我当时选择了framework,觉得android APP已经厌倦了,整天都是调UI,当时就想着是不是可以选择不一样的路线,确定之后,选择framework是第一步,很快入职了,对framework一窍不通,跟着同事学,学习了一段时间,那是一个天气晴朗的下午,老大来和我说,Camera部门差人,项目急,让我去帮帮忙,ok,没问题,虽然对Camera一无所知,但是对android开发开始很久了,自认为是没问题的,再说之前还做过二维码扫描,头像上传,人脸识别集成等APP。就就这样转行了,虽然都是做android app,但是和之前的不一样,现在是系统定制Camera APP,转行进行时。
Camera学习历程:
没有太多学习的时间,项目急,当时做Camera APP的伙伴加我只有3个,他们负责Camera功能的实现,交给我一个任务就是实现Camera 设置的界面以及功能,以为很简单,接触之后才发现没有那么简单,界面控件统一使用preference实现,对于preference之前没有使用过,从源码分析了这个控件的使用,如下面的代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="分组显示">
        <CheckBoxPreference android:title="开启声音" android:key="open_sound" android:summary="当有新消息通知时播放声音提示" android:defaultValue="true" />
        <SwitchPreference android:title="控制开关" />
        <PreferenceScreen android:title="点击操作" android:key="xxx">
        </PreferenceScreen>
        <PreferenceScreen android:title="跳转页面">
            <intent android:targetPackage="com.yy.testpreferences" android:targetClass="com.yy.testpreferences.SkinActivity" />
        </PreferenceScreen>
    </PreferenceCategory>

    <PreferenceCategory android:title="辅助功能">
        <EditTextPreference android:key="number_edit"  android:title="输入电话号码"/>
        <!--单选-->
        <ListPreference
            android:key="depart_value"
            android:title="类别设置"
            android:dialogTitle="选择类别"
            android:entries="@array/cates"
            android:entryValues="@array/cates_value">
        </ListPreference>
        <!--多选-->
        <MultiSelectListPreference
            android:key="abc"
            android:entries="@array/days"
            android:entryValues="@array/day_value"
            android:title="重复"
            android:summary="无"
            />
        <RingtonePreference
            android:key="ring_key"
            android:title="铃声选择"
            android:ringtoneType="all"
            android:showDefault="true"
            android:showSilent="true">
        </RingtonePreference>
    </PreferenceCategory>

在这里原理最终是调用了sharePreference进行保存数据,感兴趣的童鞋也可以去看看,试试!
当然,Camera并不是只有设置,Camera的功能何其多,美颜,滤镜,虚化,贴纸,全景…,设置毕竟是界面性的功能,我还是很快就做完了,接着就是安排真正Camera功能,这次直接丢给我虚化功能让我实现,当时其实还不怎么懂虚化的具体实现,代码是在晓龙相机的基础上进行调整修改,有代码就好多了,先看懂晓龙相机虚化的实现,然后按照需求进行修改,当时使用的是Camera api1,就是一些接口的调用,相机逻辑的处理,结合之前做的设置进行数据对接实现,在这个过程中,遇到很多不理解的问题,很多时候把问题解决了,但是不知所以然,我们组有一个技术大牛,有时候不懂的时候询问他,他就知道让我百度,问过好几次,就没有再问他了,然后只能自己摸索,很快项目也结束了,知道一些专用名词,闪光灯,3A(AF、AE、AWB),虚化,美颜,滤镜,全景,贴纸,帧率,YUV,ISO,RAW等等。
后来项目就接触多了,从Camera api1 -> api2 ,时间长了,不懂也懂了,慢慢的熟练的掌握了集成算法,使用JNI,逼着自己学习了C++,因为JNI需要会C++才能看懂。在集成算法时候,发现又一个高大上的技术,OpenGL,这个也是目前还在攻克的一项技术吧,对于相机来说,这个还是很有作用,使用GPU实现预览效果的处理。
带过新人,我可不像之前带我的那个大牛,只要我懂的,都会倾囊相授,成长还是很不错的,一起努力吧!
慢慢的发现,Camera APP不是Camera的终点,必须要会底层的实现才行,所以,接下来的路,,,,,,今天不学习,明天变垃圾!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值