JCameraView

控件介绍

这是一个模仿微信拍照的Android开源控件,主要的功能有如下:

  1. 点击拍照。

  2. 前后摄像头的切换。

  3. 长按录视频(视频长度为10秒内)。

  4. 长按录视频的时候,手指上滑可以放大视频。

  5. 录制完视频可以浏览并且重复播放。

  6. 可以设置小视频保存路径。

示例截图

GIF图略有卡顿

使用步骤

Android Studio

添加下列代码到project gradle

  1. allprojects {
  2. repositories {
  3. jcenter()
  4. maven {
  5. url 'https://dl.bintray.com/cjt/maven'
  6. }
  7. }
  8. }

添加下列代码到module gradle

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

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

旧版本

  1. compile 'cjt.library.wheel:camera:0.1.7' //修复无法获取最佳分辨率导致的StackOverFlowError
  2.  
  3. compile 'cjt.library.wheel:camera:0.1.6' //修复部分机型切换前置摄像头崩溃问题和添加动态权限申请
  4.  
  5. compile 'cjt.library.wheel:camera:0.1.2' //修复部分机型不支持缩放导致崩溃
  6.  
  7. compile 'cjt.library.wheel:camera:0.1.1' //修复切换前置摄像头崩溃BUG
  8.  
  9. compile 'cjt.library.wheel:camera:0.1.0' //修复BUG
  10.  
  11. compile 'cjt.library.wheel:camera:0.0.9' //添加保持屏幕常亮唤醒状态
  12. <uses-permission android:name="android.permission.WAKE_LOCK"/> //需新增权限
  13.  
  14. compile 'cjt.library.wheel:camera:0.0.8' //添加手动对焦,对焦提示器,修复切换到前置摄像头崩溃的BUG
  15.  
  16. compile 'cjt.library.wheel:camera:0.0.7' //修复了长按录视频崩溃的BUG和兼容到Android4.0
  17.  
  18. compile 'cjt.library.wheel:camera:0.0.3'

布局文件中添加

  1. <com.cjt2325.cameralibrary.JCameraView
  2. android:id="@+id/cameraview"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. app:iconMargin="20dp"
  6. app:iconWidth="30dp"
  7. app:iconSrc="@drawable/ic_camera_enhance_black_24dp"/>
属性 属性说明
iconWidth 右上角切换摄像头按钮的大小
iconMargin 右上角切换摄像头按钮到上、右边距
iconSrc 右上角切换摄像头按钮图片

AndroidManifest.xml中添加权限

  1. //0.0.9需要新增权限
  2. <uses-permission android:name="android.permission.WAKE_LOCK"/>
  3.  
  4. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  5. <uses-permission android:name="android.permission.CAMERA" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  8. <uses-feature android:name="android.hardware.camera" />
  9. <uses-feature android:name="android.hardware.camera.autofocus" />

Activity设置为全屏

  1. View decorView = getWindow().getDecorView();
  2. decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
  3. ActionBar actionBar = getSupportActionBar();
  4. actionBar.hide();

初始化JCameraView控件

  1.  
  1. 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);
  1. 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) {
    //获取成功录像后的视频路径
    }
    });

JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)的更多相关文章

  1. Android控件点击事件

    1. 介绍 本文介绍了Android控件的点击事件 Android控件点击(onClick)事件可以用如下三种方式来实现 2. 实现onClick方法 在layout的xml中指定onClick方法, ...

  2. Android开发技巧——定制仿微信图片裁剪控件

    拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动 ...

  3. Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  4. Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 2015-03-10 22:38 28419人阅读 评论(17) 收藏 举报  分类: Android ...

  5. UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    在本人之前的一篇文章<<Appium基于安卓的各种FindElement的控件定位方法实践和建议>>第二章节谈到Appium可以通过使用UIAutomator的方法去定位And ...

  6. Android控件Gridview实现多个menu模块,可添加可删除

    此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...

  7. 基于Bootstrap仿淘宝分页控件实现

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...

  8. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  9. Android 控件架构及View、ViewGroup的测量

    附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...

随机推荐

  1. css 添加滚动条

    代码: <template> <div class="w" style="scrollbar-arrow-color:yellow;scrollbar- ...

  2. NOIP2013 货车运输 倍增

    问题描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能 ...

  3. MySql系列之初识

    数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运 ...

  4. 洛谷P2196 && caioj 1415 动态规划6:挖地雷

    没看出来动规怎么做,看到n <= 20,直接一波暴搜,过了. #include<cstdio> #include<cstring> #include<algorit ...

  5. 紫书 例题 10-29 UVa 1642(最优连续子序列)

    这类求最优连续子序列的题一般是枚举右端点,然后根据题目要求更新左端点, 一般是nlogn,右端点枚举是n,左端点是logn 难点在于如何更新左端点 用一些例子试一下可以发现 每次加进一个新元素的时候 ...

  6. [HNOI2018]爆零记

    Day 0 完全不知道做什么. 打了一个splay板子,还没调出来emmmmm 不想做题目,最后做的一题是[HNOI2016]的超(sha)难(bi)题网络. 当我希望省选能出一下树剖时,旁边的大佬跟 ...

  7. Android——4.2 - 3G移植之路之 AT 通信 (四)

    在前文Android--4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)中分析了3G连接网络的流程,当中有说道通过AT指令建立连接, 在这里记录一下3G中的AT通信 ...

  8. 常量成员函数的注意事项 & mutable的使用场景

    mutable的使用场景: 可以在一个const的对象里面,解除对部分字段的const限制.也可以用在const成员函数里面. 对于const与否,一般会调用不同版本的函数: 而对于二元操作符,如果用 ...

  9. 【cocos2d-x 3.7 飞机大战】 决战南海I (四) 敌机管理

    敌方飞机应该不定时的出现,有自己的生命周期.运动轨迹.这个类用来管理敌机的产生.移动.爆炸.销毁等. 敌机管理类主要函数例如以下 //绑定控制器(更新分数) void bindController(C ...

  10. 关于HttpClient模拟浏览器请求的參数乱码问题解决方式

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...