Ã¥º¸°í µû¶óÇؼ ¸¸µç ±âº»¿¹Á¦Àε¥,,, ºôµå´Â ¼º°øÀûÀ¸·Î µÆ´Âµ¥, ¾ÛÀ» ½ÇÇàÇÑ ÈÄ ³ìÀ½ ¹öÆ° ´©¸£±â¸¸ ÇÏ¸é ¾ÛÀÌ ¹Ù·Î ÁßÁöµÇ³×¿ä;;;
¹«¾ùÀÌ ¹®Á¦Àϱî¿ä?;
¾Æ·¡´Â ÄÚµå ÀÔ´Ï´Ù. ¤Ð °í¼ö´Ôµé µµ¿òÀÌ ÇÊ¿äÇÕ´Ï´ç...
package com.example.e.hello;
import android.content.ContentValues; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.net.Uri; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button;
import com.google.android.gms.appindexing.Action; import com.google.android.gms.appindexing.AppIndex; import com.google.android.gms.appindexing.Thing; import com.google.android.gms.common.api.GoogleApiClient;
public class MainActivity extends AppCompatActivity{ final private static String RECORDED_FILE = "/storage/emulated/0/VoIceRecorder/recorded.mp4"; //³ìÀ½µÈ À½¼ºÀ» ÀúÀåÇÒ ÆÄÀÏ À§Ä¡ Á¤ÀÇ
private Button recordBtn; private Button recordStopBtn; private Button playBtn; private Button playStopBtn;
private MediaPlayer player; //À½¼º Àç»ýÀ» À§ÇÑ MediaPlayer º¯¼ö ¼±¾ð private MediaRecorder recorder =null; //À½¼º ³ìÀ½À» À§ÇÑ MediaRecorder º¯¼ö ¼±¾ð
private GoogleApiClient client;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
recordBtn=(Button)findViewById(R.id.recordBtn); recordStopBtn=(Button)findViewById(R.id.recordStopBtn); playBtn=(Button)findViewById(R.id.button3); playStopBtn=(Button)findViewById(R.id.button4);
recordBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (recorder != null) { recorder.stop(); recorder.release(); recorder = null; } recorder = new MediaRecorder(); //MediaRecorder °´Ã¼ »ý¼º
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //MediaRecorder °´Ã¼¿¡ ÇÊ¿äÇÑ Á¤º¸ ¼³¸í recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); recorder.setOutputFile(RECORDED_FILE);
try { recorder.prepare(); recorder.start(); } catch (Exception ex) { Log.e("SampleAudioRecorder", "Exception : ", ex); //prepare()¿Í start() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇØ ³ìÀ½ ½ÃÀÛ }
}
} );
playBtn.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){
System.out.println("HI/W"); } }); recordStopBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (recorder == null) return;
recorder.stop(); //³ìÀ½À» ÁßÁö/¸®¼Ò½º ÇØÁ¦ recorder.release(); recorder = null;
ContentValues values = new ContentValues(10);
values.put(MediaStore.MediaColumns.TITLE, "Recorded"); values.put(MediaStore.Audio.Media.ALBUM, "Audio Album"); values.put(MediaStore.Audio.Media.ARTIST, "Mike"); values.put(MediaStore.Audio.Media.DISPLAY_NAME, "Recorded Audio"); values.put(MediaStore.Audio.Media.IS_RINGTONE, 1); values.put(MediaStore.Audio.Media.IS_MUSIC, 1); values.put(MediaStore.Audio.Media.DATE_ADDED, System.currentTimeMillis()/ 1000); values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/mp4"); values.put(MediaStore.Audio.Media.DATA, RECORDED_FILE);
Uri audioUri = getContentResolver().insert( //³ìÀ½ ¸ñ·Ï¿¡ ÀúÀå MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,values); if(audioUri==null) { Log.d("SampleAudioRecorder", "Audio insert failed."); return; }} });
// ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
protected void onPause() { if (recorder != null) { recorder.release(); recorder = null; }
super.onPause(); } protected void onResume() { super.onResume(); recorder = new MediaRecorder();
}
public Action getIndexApiAction() { Thing object = new Thing.Builder() .setName("Main Page") // TODO: Define a title for the content shown. // TODO: Make sure this auto-generated URL is correct. .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]")) .build(); return new Action.Builder(Action.TYPE_VIEW) .setObject(object) .setActionStatus(Action.STATUS_TYPE_COMPLETED) .build(); }
@Override public void onStart() { super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. client.connect(); AppIndex.AppIndexApi.start(client, getIndexApiAction()); }
@Override public void onStop() { super.onStop();
// ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. AppIndex.AppIndexApi.end(client, getIndexApiAction()); client.disconnect(); } }
|
stop() API ¹®¼¸¦ º¸¸é, start() ÀÌÀü¿¡ stop()À» ºÎ¸¦ °æ¿ì ¹ß»ýÇÏ´Â IllegalStateExceptionµµ ±âÀçµÇ¾î ÀÖ±¸¿ä.
¾Æ¸¶ if(recorder==null) üũ ÇÒ ¶§, nullÀÌ ¾Æ´Ï¶ó¼ if¹® ¾È¿¡ µé¾î°¡ stop() ÇÔ¼ö¸¦ ºÎ¸£´Â °Í °°½À´Ï´Ù.
onResume ÇÔ¼ö¿¡¼ MediaRecorder¸¦ ÃʱâÈÇÏ°í ÀÖ´Â°Ô ¹®Á¦ÀÎ °ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
onCreate°¡ ºÒ¸± ¶§, onResumeµµ ÇÔ²² ºÒ¸®´Â °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù.
±×·¡¼ ¾Æ¸¶ recorder°¡ nullÀÌ ¾Æ´Ñ, initialize µÈ »óÅ·ΠonCreateÀÇ if¹®À» ¸¸³ª¼ »ý±ä ¹®Á¦¶ó°í »ý°¢ÇÕ´Ï´Ù.