模仿微信拍摄小视频

      近日科技快讯:

       近日,阿里巴巴文化娱乐集团宣布土豆网全面转型为短视频平台,准备投入20亿打造“大鱼计划”,原UC订阅号、优酷自频道账号统一升级为大鱼号。同时,淘宝将推出Channel T,为土豆平台内容的创作者提供了覆盖 淘宝二楼、淘宝台、短视频全淘 融入的三层合作模式。此外,土豆还公布了海外计划,5月将推出面向亚洲市场的短视频App“tudoo”。  

     控件介绍:

      不知道是不是在微信更新到6.0版本之后,微信将它的拍照和录制视频的功能集合到同一个界面,通过点击与长按来分别执行拍照和录制小视频的功能,真的不得不感叹那些大牛的想法是多么天马行空。虽然我没有他们的想法那么超前,但是我还是尽了自己的能力去模仿他们的微信拍照界面,并且将它们组件化,让需要用到的人轻松使用。

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

  • 点击拍照。

  • 前后摄像头的切换。

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

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

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

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

         涉及的技术点

  • 自定义View肯定不用多说啦 (拍照与录制视频的按钮) :

    1. CaptureButton (继承View)

    2. JCameraView (继承RelativeLayout)

  • Camera (拍照)

  • MediaRecorder (录制小视频)

  • VideoView (小视频的浏览)

        使用步骤

1.首先,在build.gradle中添加依赖

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

 

2.在项目最外层的build.gradl中添加以下代码

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://dl.bintray.com/cjt/maven'
        }
    }
}
3.在清单文件中加入以下权限
//0.0.9需要新增权限 
 
 
 
 
 
 
 
 

4.在drawable文件夹下建ic_camera_enhance_black_24dp.xml文件,添加以下代码


    

5.在drawable文件夹下建ic_repeat_black_24dp.xml文件,添加以下代码


    

6.在布局文件中添加以下代码

7.将相机所在的Activity设为全屏,在当前Activity中添加以下代

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

8.初始化JCameraView空间

//(0.1.4+)动态权限获取
CheckPermissionsUtil checkPermissionsUtil = new CheckPermissionsUtil(this);
checkPermissionsUtil.requestAllPermission(this);
//将mJCameraView抽成成员变量
JCameraView 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
        FileUtil.saveBitmap(bitmap);//将拍摄的照片或视频保存到sd卡下
        Toast.makeText(MainActivity.this, "获取到照片Bitmap:" + bitmap.getHeight(), Toast.LENGTH_SHORT).show();
    }
    @Override
    public void recordSuccess(String url) {
        //获取成功录像后的视频路径
        Toast.makeText(MainActivity.this, "获取到视频路径:" + url, Toast.LENGTH_SHORT).show();
    }
});

9.将JCameraView的生命周期与Activity的生命周期设置为同步

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

好了大功告成,马上运行自己的Demo试一下吧!

模仿微信拍摄小视频_第1张图片
 

长按拍摄按钮,进行微视频的录制,点击拍摄按钮,进行图拍的拍摄。

右上角的相机图片,切换前后摄像头。  

拍摄完成后,点击小勾勾,进行文件保存,点击小叉叉重新拍摄。

点击拍摄左侧的小三角,退出程序。

你可能感兴趣的:(移动开发)