使用 Intent 启动系统摄像机

使用 Intent 启动系统摄像机来录制视频,对于那些要求不高的app来说是非常方便的。如果你想自定义一个录像机可以使用MediaRecorder来实现。具体代码以后补上。

使用Intent启动系统录像机代码:

Activity.cs 代码

public class MainActivity extends Activity {

    Button btnStart;
    Button btnStop;
    VideoView videoView;

    int takeCode = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnStart = (Button) findViewById(R.id.button1);
        btnStop = (Button) findViewById(R.id.button2);
        videoView = (VideoView) findViewById(R.id.videoView1);

        // 开始
        btnStart.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // 启动录像机,照相机照片将会存在默认的文件中
                Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                // 指定视频输出位置
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(
                        Environment.getExternalStorageDirectory(), "test.mp4")));
                // 视频录制质量,范围0-1,默认最高分辨率
                intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0.5);
                // 录制视频的最大时间长度,单位秒。一旦到了时间就自动停止录制
                intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5);
                startActivityForResult(intent, takeCode);

            }
        });

        // 停止按钮
        btnStop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

            }
        });

    }

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

        if (requestCode == takeCode) {
            //如果使用Intent启动摄像机的时候指定了保存位置,那么这个data就是null的。解决办法就是从视频保存位置加载视频
            if (data != null) {
                videoView.setVideoURI(data.getData());
                videoView.start();
            }
        }

    }

}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始录制" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@id/button1"
        android:text="暂停" />

    <VideoView
        android:id="@+id/videoView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/button1" />

</RelativeLayout>

使用 Intent 启动系统摄像机

时间: 2024-08-05 11:17:54

使用 Intent 启动系统摄像机的相关文章

Intent启动系统组件(activity,service,BroadReceiver)-android学习之旅(四十九)

android提供了统一的编程模型Intent来启动系统的组件,这样提供了松耦合性,是一种mvc的编程模式 版权声明:本文为博主原创文章,未经博主允许不得转载.

Activity、Task、Application关系+Intent启动Flag

什么是Android  Application? 简单来说,一个apk文件就是一个Application. 任何一个AndroidApplication基本上是由一些Activities组成,当用户与应用程序交互时其所包含的部分Activities具有紧密的逻辑关系,或者各自独立处理不同的响应. 这些Activities捆绑在一起成为了一个处理特定需求的Application,并且以".apk"作为后缀名存在于文件系统中. Android平台默认下的应用程序 例如:Email.Cale

Android 匿名启动activity 启动系统activity

一般我们使用Intent 进行activity跳转时我们都知道需要跳转的activity的名字,例如: Intent intent=new Intent(FirstActivity.this,SecondActitivy.class); startActivity(intent); 当SecondActitivy.class和FirstActivity不再同一个App的时候,我们就需要用到匿名启动, 匿名启动: 首先需要设置被启动的SecondActivity 的xml配置文件: <activi

启动系统自带的应用程序

//-----启动系统自带的应用程序------------------ Intent intent=new Intent(); intent.setComponent(new ComponentName("cn.com.cn", "cn.com.cn.Activity")); startActivity(intent); 其中cn.com.cn为要启动的应用程序的报名,cn.com.cn.Activity为应用程序的入口类,参见AndroidManifest.xm

Camera学习,调用系统摄像机。

1.android很多应用会调用照相机功能,比如拍照上传用户图像等等,不多说,下面上传简单的demo: public class MainActivity extends Activity {//ActionBarActivity private Uri uriSavedImage; private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save

【CentOS】fstab挂载项错误,无法正常启动系统的解决方法

因/etc/fstab的配置错误,导致重启系统时,无法正常进入系统,会卡在以下的页面. 提示的错误信息类似: An   error   occurred  during   the  file   system   check. 解决方法: 1.在错误的启动界面处输入root的密码(不会有显示的,只管输入正确的密码即可) 2.然后会出现(Repair  filesystem)1#的提示符,在其后面输入运行:mount  -no  remount,rw   / 3.编辑/etc/fstab的文件,

在ubuntu中设置默认启动系统

怎样设置电脑的默认启动系统! 进入ubuntu系统,打开终端(快捷键ctrl+alt+T) 在终端中输入sudo gedit /boot/grub/grub.cfg 这个时候是要输入密码的(如果你设置有的话)直接输入就好,因为你输入的值是看不到的,输入后按enter就好,这里我吃亏了,因为不知道密码是默认不显示的,搞得我按了enter再输入密码,结果就是每次只能输入一点密码,整了很久没懂,还是无意中输入完确定了才知道! 完成以后就会弹出一个窗口,就是grub的记事本窗口!这个时候我们需要找到se

MDT2012部署系列之12 WDS之PXE启动系统部署

(十四).测试PXE启动系统部署 经过前面两个章节的WDS服务器安装与配置,我们完成了对于PXE启动的前期准备工作,下面我们来测试一下,从PXE启动进行系统的安装. 1.首先将对应的引导光盘移除,设置网络引导为第一启动项,在下图中我们可以看到对应的获得的IP地址,这时候我们按F12键从PXE启动 2.这时候我们可以看到刚刚添加的PE系统的映像名称,直接按回车 3.这里我们可以看到正在加载192.168.1.203下的x86.wim映像 4.这时候我们可以看到对应的WDS服务器的网络流量会大幅度提

树莓派U盘启动系统

使用U盘启动系统仍然需要SD卡 1.下载你的系统并使用 https://sourceforge.net/projects/win32diskimager/ 写入SD卡. 2.用SD在树莓派启动系统,插上U盘 3.使用命令格式化U盘,并将当前系统所有内容拷贝到U盘中 //格式化分区 sudo mke2fs -t ext4 -L rootfs /dev/sda1 //挂载分区 mount -t ext4 /dev/sda1 /mnt //把内存卡里面的/目录下的全部文件拷贝到移动硬盘的启动分区 su