第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

RxCamera, 一個(gè)RxJava風(fēng)格的android camera封裝

標(biāo)簽:
Android

事实上这个库写了已经有一段时间了,由于最近工作上比较忙,所以现在才写一篇文章来总结

What's this

正如标题所说,RxCamera是一个基于RxJava而构建的一套android.hardware.camera封装的库。最初写这个库的目的是为了熟悉RxJava,并且而且也看到虽然在android开发已经有不少基于RxJava的库,但是关于音视频相关却少之又少,于是就动手实现了一下。目前这个库还处于非常早期的状态,API比较简陋,并且关于camera的设置还有很多没有做

How to use

RxCamera的README中已经有关于这个库使用的比较详细介绍了,我在这里再说明一下:

加入依赖

首先你需要在项目中加入对RxCamera项目的依赖:

[代码]java代码:

?

1

2

3

4

5

6

repositories {

        jcenter()

}

dependencies {

    compile   'com.ragnarok.rxcamera:lib:0.0.1'

}

 

基本的使用

·         配置camera的参数

android的原生camera api提供了不少的选项来配置打开摄像头时候的参数,例如预览的帧率,预览的分辨率,自动对焦等,在RxCamera中主要是通过一个RxCameraConfig对象来管理这些对象,并通过RxCameraConfigChooser来配置对应参数:

[代码]java代码:

?

1

2

3

4

5

6

7

RxCameraConfig config = RxCameraConfigChooser.obtain().

    useBackCamera().

    setAutoFocus(true).

    setPreferPreviewFrameRate(15,   30).

    setPreferPreviewSize(new Point(640,   480)).

    setHandleSurfaceEvent(true).

    get();

 

·         打开摄像头并获取数据

在设置好参数之后,就可以直接打开摄像头了:

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

RxCamera.open(this, config).flatMap(new Func1<rxcamera,   observable<rxcamera="">>() {

  @Override

  public Observable<rxcamera> call(RxCamera   rxCamera) {

      return rxCamera.bindTexture(textureView);

      // or bind a   SurfaceView:

      //   rxCamera.bindSurface(SurfaceView)

  }

 }).flatMap(new Func1<rxcamera,   observable<rxcamera="">>() {

    @Override

     public Observable<rxcamera>   call(RxCamera rxCamera) {

        return rxCamera.startPreview();

     }

});</rxcamera></rxcamera,></rxcamera></rxcamera,>

 

这里包括了设置用于预览的Surface(这里是使用TextureView进行预览),然后正式开始预览。

只有预览之后才能开始获取摄像头的数据:

[代码]java代码:

?

1

2

3

4

5

6

camera.request().periodicDataRequest(1000).subscribe(new   Action1<rxcameradata>() {

        @Override

        public void   call(RxCameraData rxCameraData) {

            showLog("periodic   request, cameraData.length: " + rxCameraData.cameraData.length);

        }

});</rxcameradata>

 

获取摄像头的数据都通过request来获取, RxCamera中封装了几种不同风格的cameraRequest,例如上面的是定时获取摄像头数据,每隔1000毫秒返回一次,另外还有连续返回数据,只返回一次数据等的request。这些request返回的Observable对象都会给订阅者返回RxCameraData对象,其中包含两个字段

1.     byte[] cameraData,就是原生的摄像头数据,具体的数据格式,如果是从预览数据中获取,则是设置的previewFormat格式,没有设置则默认为YUV12。如果是takePictureRequest的话,则是返回JPEG格式的数据

2.     Matrix rotateMatrix,这个Matrix可以帮助你把返回的摄像头数据旋转回在竖屏模式下正常显示,因为大部分android手机的安装角度都会90度或者270度,这样子在横屏拍摄的时候可以拿到正确的图像,但是在竖屏显示的时候就会被旋转过来,使用这个Matrix旋转获取到的摄像头数据之后,就可以获取到正确转向的图像了

目前的状态

很明显这个库目前还处于非常早期的状态,API还比较简单,并且很多摄像头的参数也没有加入到进行设置,例如白平衡,闪光灯,测光等,后续这里将会逐渐完善丰富摄像头的各种设置。另外,由于是完全基于RxJava来构建的库,大部分接口都会直接返回Observable对象,这对于没有熟悉RxJava的人来说可能还是会有点距离,因此这里后续对接口的封装还是需要继续改进,对外可能不再暴露Observable对象

About camera2

熟悉android开发的人估计都已经知道在Lollipop,Google新增一套camera2API用以取代之前的camera API,camera2提供了对摄像头更加精细化的控制,相对来说比起老的API,对摄像头的可控程度高了非常多。但我个人觉得新的API还不是特别好用,并且由于目前还是比较新,在使用新的camera2 API的时候,还需要查询手机上有哪些特性是有实现的,目前使用起来相当麻烦。所以RxCamera暂时还不打算支持camera2

原文链接:http://www.apkbus.com/blog-705730-61777.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消