JCameraView 仿微信拍照Android控件(點擊拍照,長按錄小視頻)


JCameraView

控件介紹

這是一個模仿微信拍照的Android開源控件,主要的功能有如下:

  1. 點擊拍照。

  2. 前后攝像頭的切換。

  3. 長按錄視頻(視頻長度為10秒內)。

  4. 長按錄視頻的時候,手指上滑可以放大視頻。

  5. 錄制完視頻可以瀏覽並且重復播放。

  6. 可以設置小視頻保存路徑。

示例截圖

image

GIF圖略有卡頓

image

使用步驟

Android Studio

添加下列代碼到project gradle

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://dl.bintray.com/cjt/maven'
        }
    }
}

添加下列代碼到module gradle

最新版本(0.1.9)更新內容:

compile 'cjt.library.wheel:camera:0.1.9' //修復BUG

舊版本

compile 'cjt.library.wheel:camera:0.1.7' //修復無法獲取最佳分辨率導致的StackOverFlowError

compile 'cjt.library.wheel:camera:0.1.6' //修復部分機型切換前置攝像頭崩潰問題和添加動態權限申請

compile 'cjt.library.wheel:camera:0.1.2' //修復部分機型不支持縮放導致崩潰

compile 'cjt.library.wheel:camera:0.1.1' //修復切換前置攝像頭崩潰BUG

compile 'cjt.library.wheel:camera:0.1.0' //修復BUG

compile 'cjt.library.wheel:camera:0.0.9' //添加保持屏幕常亮喚醒狀態
<uses-permission android:name="android.permission.WAKE_LOCK"/> //需新增權限

compile 'cjt.library.wheel:camera:0.0.8' //添加手動對焦,對焦提示器,修復切換到前置攝像頭崩潰的BUG

compile 'cjt.library.wheel:camera:0.0.7' //修復了長按錄視頻崩潰的BUG和兼容到Android4.0

compile 'cjt.library.wheel:camera:0.0.3' 

布局文件中添加

<com.cjt2325.cameralibrary.JCameraView
    android:id="@+id/cameraview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:iconMargin="20dp"
    app:iconWidth="30dp"
    app:iconSrc="@drawable/ic_camera_enhance_black_24dp"/>
屬性 屬性說明
iconWidth 右上角切換攝像頭按鈕的大小
iconMargin 右上角切換攝像頭按鈕到上、右邊距
iconSrc 右上角切換攝像頭按鈕圖片

AndroidManifest.xml中添加權限

//0.0.9需要新增權限
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

Activity設置為全屏

View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
ActionBar actionBar = getSupportActionBar();
actionBar.hide();

初始化JCameraView控件

 
         
if (Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
} else {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(option);
}
setContentView(R.layout.activity_camera_main);
mJCameraView = (JCameraView) findViewById(R.id.cameraview); //(0.0.7+)設置視頻保存路徑(如果不設置默認為Environment.getExternalStorageDirectory().getPath())
mJCameraView.setSaveVideoPath(Environment.getExternalStorageDirectory().getPath()); //(0.0.8+)設置手動/自動對焦,默認為自動對焦
mJCameraView.setAutoFoucs(false);
mJCameraView.setCameraViewListener(
new JCameraView.CameraViewListener() {
@Override
public void quit() {
//返回按鈕的點擊時間監聽
MainActivity.this.finish();
}
@Override
public void captureSuccess(Bitmap bitmap) {
//獲取到拍照成功后返回的Bitmap
}
@Override
public void recordSuccess(String url) {
//獲取成功錄像后的視頻路徑
}
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM