Android录制视频

时间:2011-05-25 15:38:56

标签: android video record

让我的adnroid程序运行时出现此问题。我把它作为我的record.java代码

import java.io.IOException;



import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class record extends Activity{

    MediaRecorder recorder;
    SurfaceHolder holder;
    boolean recording = false;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        recorder = new MediaRecorder();
        initRecorder();
        setContentView(R.layout.view);

        SurfaceView cameraView = (SurfaceView) findViewById(R.id.sView);
        holder = cameraView.getHolder();
        holder.addCallback((Callback) this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        cameraView.setClickable(true);
        cameraView.setOnClickListener((OnClickListener) this);
    }

    private void initRecorder() {
        recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
        recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

        CamcorderProfile cpHigh = CamcorderProfile
                .get(CamcorderProfile.QUALITY_HIGH);
        recorder.setProfile(cpHigh);
        recorder.setOutputFile("/sdcard/videocapture_example.mpg");
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setMaxDuration(60000); // 60 seconds
        recorder.setMaxFileSize(100000000);// Approximately 10 megabytes
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);


    }


    private void prepareRecorder() {
        recorder.setPreviewDisplay(holder.getSurface());

        try {
            recorder.prepare();
        } catch (IllegalStateException e) {
            e.printStackTrace();
            finish();
        } catch (IOException e) {
            e.printStackTrace();
            finish();
        }
    }

    public void onClick(View v) {
        if (recording) {
            recorder.stop();
            recording = false;

            // Let's initRecorder so we can record again
            initRecorder();
            prepareRecorder();
        } else {
            recording = true;
            recorder.start();
        }
    }

    public void surfaceCreated(SurfaceHolder holder) {
        prepareRecorder();
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        if (recording) {
            recorder.stop();
            recording = false;
        }
        recorder.release();
        finish();

    }

我的Android清单也是这样的

        <activity android:name=".record"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="com.apapa.ttt.RECORD" />

        </intent-filter>
        </activity>

</application>


<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_VIDEO"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.record_audio"/>

然而,当我运行此代码时,它总是会出现错误“应用程序意外停止。请再试一次”我真的很困惑我在这里做错了因为我认为我已经走了一切。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

android.permission.RECORD_VIDEO它不存在。

检查文件是否已创建?或者单独创建文件。