首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >录制视频?

录制视频?
EN

Stack Overflow用户
提问于 2010-10-28 05:41:57
回答 1查看 268关注 0票数 0

我正在尝试制作一个应用程序,记录视频并将文件存储在表视图中。我希望能够看到每个单元格上的预览,当我按下一个单元格时,先前录制并存储在此处的视频开始播放。做这件事的最好方法是什么?如果有任何教程或视频教程,有人能把我转到那里吗?

EN

回答 1

Stack Overflow用户

发布于 2011-12-28 19:17:26

视频录制代码如下:

代码语言:javascript
复制
package milos.stackVideo;



import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.CamcorderProfile;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.Settings;
import android.util.Log;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.Menu;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class EnregistrementVideoStackActivity extends Activity implements Callback {
private SurfaceHolder surfaceHolder;
private SurfaceView surfaceView;
public MediaRecorder mrec = new MediaRecorder();
private Button startRecording = null;
//private Button stopRecording = null;
File video;
private Camera mCamera;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera_surface);
    Log.i(null , "Video starting");
    startRecording = (Button)findViewById(R.id.buttonstart);
    mCamera = Camera.open();
    surfaceView = (SurfaceView) findViewById(R.id.surface_camera);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}




@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, 0, 0, "StartRecording");
menu.add(0, 1, 0, "StopRecording");
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case 0:
try {

startRecording();

} catch (Exception e) {
String message = e.getMessage();
Log.i(null, "Problem Start"+message);
mrec.release();
}
break;

case 1: //GoToAllNotes
mrec.stop();
mrec.release();
mrec = null;
break;

default:
break;
}
return super.onOptionsItemSelected(item);
}



protected void startRecording() throws IOException 
{


    mrec = new MediaRecorder();  // Works well
    mCamera.unlock();

    mrec.setCamera(mCamera);

    mrec.setPreviewDisplay(surfaceHolder.getSurface());
    mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 

    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
    mrec.setPreviewDisplay(surfaceHolder.getSurface());
    mrec.setOutputFile("/sdcard/zzzz.3gp"); 

    mrec.prepare();
    mrec.start();

}

protected void stopRecording() {
    mrec.stop();
    mrec.release();
    mCamera.release();
  }

private void releaseMediaRecorder(){
    if (mrec != null) {
        mrec.reset();   // clear recorder configuration
        mrec.release(); // release the recorder object
        mrec = null;
        mCamera.lock();           // lock camera for later use
    }
}

private void releaseCamera(){
    if (mCamera != null){
        mCamera.release();        // release the camera for other applications
        mCamera = null;
    }
}


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

    // TODO Auto-generated method stub

}


@Override
public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub

    if (mCamera != null){
        Parameters params = mCamera.getParameters();
        mCamera.setParameters(params);
    }
    else {
        Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show();
        finish();
    }

}


@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    mCamera.stopPreview();
    mCamera.release();
    // TODO Auto-generated method stub

}


}

这对某些人来说是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4037951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档