Android仿微信小视频录制_高仿微信10秒视频拍摄
2015-11-20 13:00:01  By: dwtedx

Android仿微信视频录制功能、并同时带有播放功能、可以实现10秒中的视频录制、和微信一样也是按住一个圆形的按键不放就可以拍摄了、然后将该视频以mp4的格式存放在本地、用surfaceview播放

该Demo只是实现了一个粗糙的功能、如果要集成到自己的项目里面还需要修改的、所以下载的哥们就不要嫌弃Demo比较简单和有bug了、有需要的哥们可以下载看看、希望会对大家有帮助、下面是运行的效果图

仿微信视频录制


onCreate代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    btnRecordAudio = (Button) findViewById(R.id.btn_record_audio);
    btnPlay = (ImageButton) findViewById(R.id.play);
    File filePathFile = new File("/storage/emulated/0/im/video/");
    if (filePathFile != null &&filePathFile.listFiles()!=null) {
        if (filePathFile.listFiles().length > 0) {
            path = filePathFile.listFiles()[0].getPath();
            Bitmap bitmap = Utils.createVideoThumbnail(path);
            BitmapDrawable drawable = new BitmapDrawable(bitmap);
            drawable.setTileModeXY(Shader.TileMode.REPEAT,
                    Shader.TileMode.REPEAT);
            drawable.setDither(true);
            btnPlay.setBackgroundDrawable(drawable);
        }
    }
    btnRecordAudio.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 启动拍摄的Activity
            Intent intent = new Intent(FirstActivity.this,MainActivity.class);
            FirstActivity.this.startActivityForResult(intent,200);
        }
    });

    btnPlay.setOnClickListener(new View.OnClickListener() {
        @SuppressLint("NewApi")
        @Override
        public void onClick(View v) {
            // 显示播放页面
            if (path!=null&&!path.equalsIgnoreCase("")) {
                VideoFragment bigPic = VideoFragment.newInstance(path);
                android.app.FragmentManager mFragmentManager = getFragmentManager();
                FragmentTransaction transaction = mFragmentManager.beginTransaction();
                transaction.replace(R.id.main_menu, bigPic);
                transaction.commit();
            }
        }
    });
}


onActivityResult代码

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 200:
            if(resultCode == RESULT_OK) {
                // 成功
                path = data.getStringExtra("path");
                Toast.makeText(FirstActivity.this,"存储路径为:" path,Toast.LENGTH_SHORT).show();
                // 通过路径获取第一帧的缩略图并显示
                Bitmap bitmap = Utils.createVideoThumbnail(path);
                BitmapDrawable drawable = new BitmapDrawable(bitmap);
                drawable.setTileModeXY(Shader.TileMode.REPEAT , Shader.TileMode.REPEAT);
                drawable.setDither(true);
                btnPlay.setBackgroundDrawable(drawable);
            } else {
                // 失败
            }
            break;

    }
}


VideoFragment onCreateView代码

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_video, container, false);
    mVideoView = (VideoView) view.findViewById(R.id.video_view);
    btnClose = (Button) view.findViewById(R.id.btn_close);
    // 播放相应的视频
    mVideoView.setMediaController(new MediaController(getActivity()));
    mVideoView.setVideoURI(Uri.parse(videoPath));
    mVideoView.start();
    //mVideoView.requestFocus();

    btnClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getFragmentManager().beginTransaction().remove(VideoFragment.this).commit();
        }
    });
    return view;
}


最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1pJELvF9 密码: 6tmp

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

    • dwtedx 2016-10-13 21:02:38  5 评  | 回复

      @鱼儿:你好!请问你的系统是Android的那个版本呢、当时我是使用的4.X开发的、6.0的没测试过哦


    • dwtedx 2016-10-13 20:55:33  4 评  | 回复

      @740283413@qq.com:你好、以前我是这样处理的、我是把mp4的文件转换成base64的字符串、然后上件到服务器、服务器再转一次的


    • 鱼儿 2016-10-13 16:54:34  3 评  | 回复

      你好,请问一下为什么录制完的视频播放只显示一片绿色?


    • 740283413@qq.com 2016-10-12 17:31:18  2 评  | 回复

      视频录到9秒,刚刚10秒的时候,程序崩掉了,没蹦的话会创建两个播放的activity,,,,请问一下,你有没有上传短视频的demo呀,或者是将视频文件转成输入流,发我一下呀。带字段上传的。


    • Yi 2016-10-08 17:37:53  1 评  | 回复

      您好,请问能获得您的联系方式吗.有些问题请教一下


DD记账
top
+