package com.example.android.recipe066;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class Recipe066 extends Activity {
// プレビューのためのSurfaceView
private SurfaceView mCameraView;
// レコーダー
private MediaRecorder mRecorder;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// フルスクリーン表示にします
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// タイトルバーを非表示にします
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
// プレビューのためSurfaceHolderに
// SURFACE_TYPE_PUSH_BUFFERSをセット
mCameraView = (SurfaceView)findViewById(R.id.camera_view);
SurfaceHolder holder = mCameraView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void onStartButton(View view) {
// MediaRecorderを作って
mRecorder = new MediaRecorder();
// ビデオ入力にカメラをセット
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// オーディオ入力にマイクをセット
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 出力フォーマットに3gpをセット
mRecorder.setOutputFormat(
MediaRecorder.OutputFormat.THREE_GPP);
// 出力ファイルパスを作って
String path = createFilePath();
// セット
mRecorder.setOutputFile(path);
// フレームレートをセット
mRecorder.setVideoFrameRate(15);
// 撮影サイズを指定
// 端末のカメラに依存するので気をつけてください。
mRecorder.setVideoSize(800, 480);
// ビデオエンコーダーにMPEG_4_SPをセット
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
// オーディオエンコーダーにAMR_NBをセット
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// プレビュー表示にSurfaceをセット
mRecorder.setPreviewDisplay(
mCameraView.getHolder().getSurface());
try {
// 準備して
mRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 録画スタート!
mRecorder.start();
}
public void onStopButton(View view) {
// 録画を終了
mRecorder.stop();
// レコーダーを解放
mRecorder.release();
}
private String createFilePath() {
// SDカードのディレクトリ
File dir = Environment.getExternalStorageDirectory();
// アプリ名で
File appDir = new File(dir, "Recipe066");
// ディレクトリを作る
if (!appDir.exists()) appDir.mkdir();
// ファイル名
String name = System.currentTimeMillis() + ".3gp";
// 出力ファイルのパス
return new File(appDir, name).getAbsolutePath();
}
}