CameraView

项目地址:CJT2325/CameraView 
简介:仿微信拍照,长按录视频的拍照控件
更多:作者   提 Bug   
标签:

Camera-

使用方法

  • Gradle 依赖: compile 'cjt.library.wheel:camera :1.1.9'
  • 引用源码 : clone 源码后 引入 lib -> camera
  • 尝试运行 : 导入源码 运行 cameraapplication 这个 model(!!!)
  • 扫描二维码: apk 比较旧

     

这是一个模仿微信拍照的 Android 开源控件

  • 点击拍照

  • 10s 的视频大概 1.9M 左右

  • 长按录视频(视频长度可设置)

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

  • 录制完视频可以浏览并且重复播放

  • 前后摄像头的切换

  • 可以设置小视频保存路径

示例截图

  

GIF 图(播放速度有点慢,求解)

使用步骤(Android Studio)

添加下列代码到 module gradle

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

compile 'cjt.library.wheel:camera:1.1.9'
//添加闪关灯,自定义左右按钮图标资源

如果获取依赖失败则添加下列代码到 project gradle

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

旧版本

compile 'cjt.library.wheel:camera:1.1.6'
//修复 BUG
compile 'cjt.library.wheel:camera:1.1.3'
//fix bug
compile 'cjt.library.wheel:camera:1.1.1'
//fix bugcompile 'cjt.library.wheel:camera:1.0.9'
//fix bugcompile 'cjt.library.wheel:camera:1.0.5'
//浏览界面能使用两根手指进行缩放
//切换摄像头的按钮会根据手持手机方向进行旋转
//修复内存泄露compile 'cjt.library.wheel:camera:1.0.4'
//换回 VideoView
//摄像上滑放大compile 'cjt.library.wheel:camera:1.0.2'
//TextureView 替换 VideoView
//根据手机拍照方向旋转图片(仅后置摄像头)compile 'cjt.library.wheel:camera:1.0.0'
//代码重构
//修复频繁切换摄像头崩溃的问题
//修复获取不到 supportedVideoSizes 的问题
//可以设置最长录像时间
//修复按钮错乱 BUGcompile 'cjt.library.wheel:camera:0.1.9' //修复 BUGcompile 'cjt.library.wheel:camera:0.1.7' //修复无法获取最佳分辨率导致的 StackOverFlowErrorcompile 'cjt.library.wheel:camera:0.1.6' //修复部分机型切换前置摄像头崩溃问题和添加动态权限申请compile 'cjt.library.wheel:camera:0.1.2' //修复部分机型不支持缩放导致崩溃compile 'cjt.library.wheel:camera:0.1.1' //修复切换前置摄像头崩溃 BUGcompile 'cjt.library.wheel:camera:0.1.0' //修复 BUGcompile 'cjt.library.wheel:camera:0.0.9' //添加保持屏幕常亮唤醒状态
<uses-permission android:name="android.permission.WAKE_LOCK"/> //需新增权限compile 'cjt.library.wheel:camera:0.0.8' //添加手动对焦,对焦提示器,修复切换到前置摄像头崩溃的 BUGcompile 'cjt.library.wheel:camera:0.0.7' //修复了长按录视频崩溃的 BUG 和兼容到 Android4.0compile 'cjt.library.wheel:camera:0.0.3'

布局文件中添加

//1.0.0+
<com.cjt2325.cameralibrary.JCameraViewandroid:id="@+id/jcameraview"android:layout_width="match_parent"android:layout_height="match_parent"app:duration_max="10000"app:iconMargin="20dp"app:iconSize="30dp"app:iconSrc="@drawable/ic_camera_enhance_black_24dp"/>

(1.0.0+)

属性 属性说明
iconSize 右上角切换摄像头按钮的大小
iconMargin 右上角切换摄像头按钮到上、右边距
iconSrc 右上角切换摄像头按钮图片
iconLeft 左边按钮图片资源(1.1.9+)
iconRight 右边按钮图片资源(1.1.9+)
duration_max 设置最长录像时间(毫秒)

AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<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" />

Activity 全屏设置

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);
}

初始化 JCameraView 控件

//1.1.1
jCameraView = (JCameraView) findViewById(R.id.jcameraview);//设置视频保存路径
jCameraView.setSaveVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "JCamera");//设置只能录像或只能拍照或两种都可以(默认两种都可以)
jCameraView.setFeatures(JCameraView.BUTTON_STATE_BOTH);//设置视频质量
jCameraView.setMediaQuality(JCameraView.MEDIA_QUALITY_MIDDLE);//JCameraView 监听
jCameraView.setErrorLisenter(new ErrorLisenter() {@Overridepublic void onError() {//打开 Camera 失败回调Log.i("CJT", "open camera error");}@Overridepublic void AudioPermissionError() {//没有录取权限回调Log.i("CJT", "AudioPermissionError");}
});jCameraView.setJCameraLisenter(new JCameraLisenter() {@Overridepublic void captureSuccess(Bitmap bitmap) {//获取图片 bitmapLog.i("JCameraView", "bitmap = " + bitmap.getWidth());}@Overridepublic void recordSuccess(String url,Bitmap firstFrame) {//获取视频路径Log.i("CJT", "url = " + url);}//@Override//public void quit() {//    (1.1.9+后用左边按钮的点击事件替换)//}
});
//左边按钮点击事件
jCameraView.setLeftClickListener(new ClickListener() {@Overridepublic void onClick() {CameraActivity.this.finish();}
});
//右边按钮点击事件
jCameraView.setRightClickListener(new ClickListener() {@OverrideToast.makeText(CameraActivity.this,"Right",Toast.LENGTH_SHORT).show();}
});

JCameraView 生命周期

@Override
protected void onResume() {super.onResume();mJCameraView.onResume();
}
@Override
protected void onPause() {super.onPause();mJCameraView.onPause();
}

APK Demo

扫码下载

仿微信拍照,长按录视频的拍照控件相关推荐

  1. 微信密码框提示下载并安装安全控件

    登录微信商户平台    输入密码时   一直提示  微信密码框提示下载并安装安全控件   点击下载重复下载了很多次  依然没有用 解决办法:这是 兼容问题   浏览器切换至兼容模式或者直接用IE浏览器 ...

  2. Android 仿微信朋友圈拍小视频上传到服务器(转)

    界面是这个样子滴. 我也知不知道怎么给图片搞小一点o(╯□╰)o 布局文件是这样的[认真脸] <?xml version="1.0" encoding="utf-8 ...

  3. Android 仿微信朋友圈拍小视频上传到服务器

    这个接上一个写的实现拍小视频和传到服务器的  界面是这个样子滴. 我也知不知道怎么给图片搞小一点o(╯□╰)o 布局文件是这样的[认真脸] <?xml version="1.0&quo ...

  4. 仿华为系统自带天气预报UI---线条圆圈控件

    仿照华为手机的系统自带天气预报的UI天气数值显示部分 效果图: 橙色部分是有渐变效果,图片上不大看的出来了,上面浅一点,下面深一点. 原理其实就是花了很多条短线:根据圆心和半径来确定每条线的x,y终点 ...

  5. VC6开发视频监控ActiveX控件总结

    总结前段时间在VC6下使用MFC开发视频监控控件过程中遇到的一些问题. 1.获取控件当前所在路径,用于读取该目录下的INI配置文件 获取配置文件路径 2.获取当前运行控件的电脑上的固定盘符列表,用于本 ...

  6. 实现谷歌浏览器打开海康视频等OCX控件

    1.下载工具并安装 控件工具安装程序下载: 链接:https://pan.baidu.com/s/1HKc0gM7W5DFMbeMSYLM0sg 提取码:dnmn 2.打开安装目录下的openIE.h ...

  7. 微信小程序控制盒子显示隐藏_微信小程序动态的显示或隐藏控件的方法(两种方法)...

    在微信小程序开发时,经常要用到一个控件会根据不同的情况和环境动态显示与隐藏这种情况,下面就来实践一把!上效果先 它的实现方法有两种, 第一种方法:单选法,就是隐藏与显示根据条件二选一,代码如下: 我是 ...

  8. 微信小程序动态的显示或隐藏控件

    在微信小程序开发时,经常要用到一个控件会根据不同的情况和环境动态显示与隐藏这种情况,下面就来实践一把!上效果先 它的实现方法有两种, 第一种方法:单选法,就是隐藏与显示根据条件二选一,代码如下: &l ...

  9. 微信小程序 录像 录视频

    WXML页面放置一个camera组件. <cover-view class="container"> <cover-view class="takePh ...

最新文章

  1. 关于Spring 国际化 No message found under code 的解决方案
  2. autograd库测试笔记-(一个基于Numpy的自动求导库)
  3. python能写桌面程序吗_python能写桌面程序吗
  4. 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
  5. 高级UI之Paint(滤镜,颜色通道,矩阵运算)
  6. 视频:参加ZDNet《小崔说事》谈知识管理
  7. python读取图片并储存为CSV文件
  8. Android心电图动画效果,手把手教你打造一个心电图效果View Android自定义View
  9. proteus中的米字(14段)数码管用法
  10. 基于javaweb+mysql的网上书店管理系统在线购书系统(前台、后台)
  11. python usb通信测试
  12. linux权限百度贴吧,api接口权限控制
  13. es mapping 设置
  14. 智能云服务器选型,智能主机概述、选型及应用
  15. r计算百分位数_R语言:用R计算各种统计值
  16. css3 svg 背景图 data:image/svg+xml;base64
  17. 用最科学的方法展示最形象的图表——前端数据可视化实践
  18. ndarray数组基本结构和操作
  19. 内存数据库应用之NBA篮球图文直播室存储设计
  20. ESM蛋白质语言模型学习笔记

热门文章

  1. 鼠标滑过显示操作按钮闪烁问题
  2. IT忍者神龟之Redis操作工具类封装
  3. 燃!阿里技术又破世界纪录:机器阅读理解力首次超过人类!
  4. linux kickstart乱码,PXE+kickstart 批量安装部署centos6系统
  5. 多线程爬取镖局网商标信息
  6. 钧瓷产业数字化,将促使禹州走向更高级的社会形态——钧共体
  7. 12小球找坏球的问题
  8. 赛效:如何用在线压缩GIF图片
  9. charm-crypto安装(二)
  10. 校园安防智能视频行为分析预警系统解决方案