名稱 | CameraView |
---|---|
語言 | Android |
平臺(tái) | GitHub |
作者 | natario1 |
鏈接 | 點(diǎn)此進(jìn)入 |
日常開發(fā)工作中,我們偶爾會(huì)遇到照相或攝像的開發(fā)需求,一般我們是會(huì)直接使用系統(tǒng)的Camera類,然后基于這個(gè)自己寫一套方法枢冤,費(fèi)時(shí),效果又一般铜秆。今天小編給大家推薦一款開源的相機(jī)庫——CameraView淹真。CameraView使拍攝的照片和視頻很容易,解決最常見的問題和需求连茧,而且靈活性還很高核蘸,可以滿足你各種各樣的自定義開發(fā)需求。
這是一個(gè)從CameraKit Android庫fork出來的庫啸驯,最根源是從谷歌的CameraView Library庫派生出來的客扎,但作者對(duì)其進(jìn)行完全重寫。
特點(diǎn):
無縫圖像和視頻采集
手勢(shì)支持(點(diǎn)擊對(duì)焦罚斗,雙指縮放等)
系統(tǒng)權(quán)限的處理
動(dòng)態(tài)調(diào)整CameraView大嗅阌恪;
內(nèi)建網(wǎng)格圖
多個(gè)捕獲方法 :用CapturePicture拍攝高分辨率的圖片针姿;用CaptureSnapshot生成快速快照用于凍結(jié)幀的預(yù)覽(類似于Snapchat袱吆、Instagram)
控制HDR,閃光燈距淫,變焦绞绒,白平衡,曝光校正等
對(duì)圖片和視頻的元數(shù)據(jù)支持 :自動(dòng)檢測(cè)定位標(biāo)記 榕暇,用setlocation() API設(shè)置拍照的位置
CameraUtils處理Bitmaps和圖片方向
重量輕蓬衡,無依賴性,支持exifinterface
系統(tǒng)要求:Android 4.0.3及以上彤枢。
使用方法:
1狰晚、在build.gradle添加依賴
dependencies {
compile 'com.otaliastudios:cameraview:1.2.0'}
2、在布局文件引入控件
<com.otaliastudios.cameraview.CameraView
android:id="@+id/camera"
android:keepScreenOn="true" //保持屏幕常亮
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
3堂污、當(dāng)在activity或fragment使用CameraView的時(shí)候,確保CameraView的生命周期跟activity或fragment一致龄砰,保證控件正常工作
@Override
protected void onResume() {
super.onResume();
cameraView.start();
}
@Override
protected void onPause() {
super.onPause();
cameraView.stop();
}
@Override
protected void onDestroy() {
super.onDestroy();
cameraView.destroy();
}
4盟猖、拍照
camera.addCameraListener(new CameraListener() {
@Override
public void onPictureTaken(byte[] picture) {
// Create a bitmap or a file...
// CameraUtils will read EXIF orientation for you, in a worker thread.
CameraUtils.decodeBitmap(picture, ...);
}
});
camera.capturePicture();
5讨衣、攝像
camera.addCameraListener(new CameraListener() {
@Override
public void onVideoTaken(File video) {
// The File is the same you passed before.
// Now it holds a MP4 video.
}
});
// Select output file. Make sure you have write permissions.
File file = ...;
// Record a 2500 ms video:
camera.startRecordingVideo(file, 2500);
// Full version
camera.startRecordingVideo(file);
camera.postDelayed(new Runnable() {
@Override
public void run() {
// This will trigger onVideoTaken().
camera.stopRecordingVideo();
}
}, 2500);
6、設(shè)置手勢(shì)行為
cameraView.mapGesture(Gesture.PINCH, GestureAction.ZOOM); // 雙指縮放!
cameraView.mapGesture(Gesture.TAP, GestureAction.FOCUS_WITH_MARKER); // 點(diǎn)擊對(duì)焦!
cameraView.mapGesture(Gesture.LONG_TAP, GestureAction.CAPTURE); // 長(zhǎng)按拍照!
關(guān)于CameraView更多功能和使用方法式镐,請(qǐng)參考CameraView#usage 反镇。