package com.example.android.recipe062; 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.View; import android.widget.TextView; public class Recipe062 extends Activity { private MediaRecorder mRecorder; private TextView mTextView; private boolean isRecording = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.TextView01); } // Startボタンが押されたら呼び出される public void onStartButton(View view) { if (isRecording) return; mTextView.setText("Recording..."); // SDカードのディレクトリ File dir = Environment.getExternalStorageDirectory(); // アプリ名で File appDir = new File(dir, "Recipe062"); // ディレクトリを作る if (!appDir.exists()) appDir.mkdir(); // ファイル名 String name = System.currentTimeMillis() + ".3gp"; // 出力ファイルのパス String path = new File(appDir, name).getAbsolutePath(); mRecorder = new MediaRecorder(); // 入力ソースにマイクを指定 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 出力フォーマットに3gpを指定 mRecorder.setOutputFormat( MediaRecorder.OutputFormat.THREE_GPP); // 音声エンコーダにAMRを指定 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 出力ファイルのパスを指定 mRecorder.setOutputFile(path); try { // 準備して mRecorder.prepare(); // 録音スタート! mRecorder.start(); isRecording = true; } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // Stopボタンが押されたら呼び出される public void onStopButton(View view) { if (!isRecording) return; mTextView.setText("Recorded!"); // 録音を停止して mRecorder.stop(); // 解放 mRecorder.release(); isRecording = false; } }