"시작하세요 안드로이드 프로그래밍"책을 보면서 녹음하는 부분 연습하고 있는데

녹음을 하고 플레이하면 아무소리도 없네요....ㅠㅜ
녹음하는데 문제인건지... 플레이 하는데 문제인건지...

소스 상에는 문제가 없어 보이는데 어디가 문제인지 한번 봐주세요!!
파일도 같이 첨부했어요~ 한번 돌려봐 주세요~


===>1. 로그확인해보구 다시 에러 있는 부분과 경고가 나온 부분만 복사해서 추가로 올립니다!!!!

10-08 21:33:04.460: ERROR/audio_input(31): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
10-08 21:33:04.460: ERROR/audio_input(31): VerifyAndSetParameter failed
10-08 21:33:04.491: DEBUG/Audio filename:(221): /data/data/com.androidbook/files/audio.mp4
10-08 21:33:04.581: DEBUG/Audio URI(221): Path = /external/audio/media/10
10-08 21:33:04.671: WARN/BackupManagerService(59): dataChanged but no participant pkg='com.android.providers.settings' uid=10028
10-08 21:33:05.980: DEBUG/Audio filename:(221): /data/data/com.androidbook/files/audio.mp4
10-08 21:33:06.081: WARN/MediaPlayer(221): info/warning (1, 26)
10-08 21:33:06.081: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
10-08 21:33:06.081: ERROR/MediaPlayer(221): error (1, -4)
10-08 21:33:06.090: ERROR/Audio(221): Playback failed.
10-08 21:33:06.090: ERROR/Audio(221): java.io.IOException: Prepare failed.: status=0x1
10-08 21:33:06.090: ERROR/Audio(221):     at android.media.MediaPlayer.prepare(Native Method)
10-08 21:33:06.090: ERROR/Audio(221):     at com.androidbook.Audio$3.onClick(Audio.java:152)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.View.performClick(View.java:2364)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.View.onTouchEvent(View.java:4179)
10-08 21:33:06.090: ERROR/Audio(221):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.View.dispatchTouchEvent(View.java:3709)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:06.090: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-08 21:33:06.090: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-08 21:33:06.090: ERROR/Audio(221):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-08 21:33:06.090: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-08 21:33:06.090: ERROR/Audio(221):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
10-08 21:33:06.090: ERROR/Audio(221):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-08 21:33:06.090: ERROR/Audio(221):     at android.os.Looper.loop(Looper.java:123)
10-08 21:33:06.090: ERROR/Audio(221):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-08 21:33:06.090: ERROR/Audio(221):     at java.lang.reflect.Method.invokeNative(Native Method)
10-08 21:33:06.090: ERROR/Audio(221):     at java.lang.reflect.Method.invoke(Method.java:521)
10-08 21:33:06.090: ERROR/Audio(221):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-08 21:33:06.090: ERROR/Audio(221):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-08 21:33:06.090: ERROR/Audio(221):     at dalvik.system.NativeStart.main(Native Method)
10-08 21:33:06.101: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
10-08 21:33:17.770: ERROR/gralloc(59): [unregister] handle 0x3891e0 still locked (state=40000001)
10-08 21:33:22.990: DEBUG/dalvikvm(171): GC freed 3205 objects / 196824 bytes in 226ms
10-08 21:33:25.311: DEBUG/Audio filename:(221): /data/data/com.androidbook/files/audio.mp4
10-08 21:33:25.342: ERROR/audio_input(31): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
10-08 21:33:25.342: ERROR/audio_input(31): VerifyAndSetParameter failed
10-08 21:33:25.391: ERROR/PVOMXEncNode(31): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle
10-08 21:33:31.660: ERROR/audio_input(31): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value
10-08 21:33:31.660: ERROR/audio_input(31): VerifyAndSetParameter failed
10-08 21:33:31.680: DEBUG/Audio filename:(221): /data/data/com.androidbook/files/audio.mp4
10-08 21:33:31.740: DEBUG/Audio URI(221): Path = /external/audio/media/11
10-08 21:33:31.910: DEBUG/dalvikvm(59): GC freed 9719 objects / 504840 bytes in 151ms
10-08 21:33:31.990: WARN/BackupManagerService(59): dataChanged but no participant pkg='com.android.providers.settings' uid=10028
10-08 21:33:37.710: DEBUG/Audio filename:(221): /data/data/com.androidbook/files/audio.mp4
10-08 21:33:37.761: WARN/MediaPlayer(221): info/warning (1, 26)
10-08 21:33:37.771: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
10-08 21:33:37.771: ERROR/MediaPlayer(221): error (1, -4)
10-08 21:33:37.780: ERROR/Audio(221): Playback failed.
10-08 21:33:37.780: ERROR/Audio(221): java.io.IOException: Prepare failed.: status=0x1
10-08 21:33:37.780: ERROR/Audio(221):     at android.media.MediaPlayer.prepare(Native Method)
10-08 21:33:37.780: ERROR/Audio(221):     at com.androidbook.Audio$3.onClick(Audio.java:152)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.View.performClick(View.java:2364)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.View.onTouchEvent(View.java:4179)
10-08 21:33:37.780: ERROR/Audio(221):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.View.dispatchTouchEvent(View.java:3709)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-08 21:33:37.780: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-08 21:33:37.780: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-08 21:33:37.780: ERROR/Audio(221):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-08 21:33:37.780: ERROR/Audio(221):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-08 21:33:37.780: ERROR/Audio(221):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
10-08 21:33:37.780: ERROR/Audio(221):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-08 21:33:37.780: ERROR/Audio(221):     at android.os.Looper.loop(Looper.java:123)
10-08 21:33:37.780: ERROR/Audio(221):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-08 21:33:37.780: ERROR/Audio(221):     at java.lang.reflect.Method.invokeNative(Native Method)
10-08 21:33:37.780: ERROR/Audio(221):     at java.lang.reflect.Method.invoke(Method.java:521)
10-08 21:33:37.780: ERROR/Audio(221):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-08 21:33:37.780: ERROR/Audio(221):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-08 21:33:37.780: ERROR/Audio(221):     at dalvik.system.NativeStart.main(Native Method)
10-08 21:33:37.790: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
10-08 21:33:37.800: INFO/MediaPlayer(221): Info (1,26)
10-08 21:33:43.140: ERROR/MediaPlayer(221): stop called in state 0
10-08 21:33:43.140: ERROR/MediaPlayer(221): error (-38, 0)
10-08 21:33:43.171: WARN/MediaPlayer(221): mediaplayer went away with unhandled events
10-08 21:33:49.981: WARN/KeyCharacterMap(107): No keyboard for id 0
10-08 21:33:49.981: WARN/KeyCharacterMap(107): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
10-08 21:35:22.420: ERROR/AndroidRuntime(350): ERROR: thread attach failed
10-08 21:35:26.270: WARN/ActivityThread(367): Application com.androidbook is waiting for the debugger on port 8100...

2.   <<<<메인 소스>>>>

package com.androidbook; 
import android.app.Activity;

public class Audio extends Activity {
  final private static String RECORDED_FILE = "/audio.mp4";
     MediaRecorder audioListener;
     MediaPlayer player;
     @Override
     protected void onPause() {
         if (audioListener != null) {
             audioListener.release();
             audioListener = null;
         }
         if (player != null) {
             player.release();
             player = null;
         }
         super.onPause();
     }
     @Override
     protected void onResume() {
         super.onResume();
         audioListener = new MediaRecorder();
         player = new MediaPlayer();
     }
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         final Button record = (Button) findViewById(R.id.record);
         final Button stop = (Button) findViewById(R.id.stop);
         final Button stopPlayback = (Button) findViewById(R.id.stop_playback);
         final Button play = (Button) findViewById(R.id.play);
         record.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (audioListener == null) {
                     audioListener = new MediaRecorder();
                 }
                 // Fully qualified path name. In this case, we use the Files subdir
                 String pathForAppFiles = getFilesDir().getAbsolutePath();
                 pathForAppFiles += RECORDED_FILE;
                 Log.d("Audio filename:",pathForAppFiles );
                 
            
                 audioListener.setAudioSource(MediaRecorder.AudioSource.MIC);
                 audioListener.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                 audioListener.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
                 
                 audioListener.setOutputFile(pathForAppFiles);
                 try {
                     audioListener.prepare();
                     audioListener.start();
                 } catch (Exception e) {
                     Log.e("Audio", "Failed to prepare and start audio recording", e);
                 } 
                 stop.setVisibility(View.VISIBLE);
                 record.setVisibility(View.GONE);
                 play.setVisibility(View.GONE);
             }
         });
         stop.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (audioListener == null)
                     return;
                 audioListener.stop();
                 audioListener.release();
                 audioListener = null;
                 
                 String pathForAppFiles = getFilesDir().getAbsolutePath();
                 pathForAppFiles += RECORDED_FILE;
                 Log.d("Audio filename:", pathForAppFiles);
                 ContentValues values = new ContentValues(10);
                 values.put(MediaStore.MediaColumns.TITLE, "RecordedAudio");
                 values.put(MediaStore.Audio.Media.ALBUM, "Your Groundbreaking Album");
                 values.put(MediaStore.Audio.Media.ARTIST, "Your Name");
                 values.put(MediaStore.Audio.Media.DISPLAY_NAME, "The Audio File You Recorded In Media App");
                 values.put(MediaStore.Audio.Media.IS_RINGTONE, 1);
                 values.put(MediaStore.Audio.Media.IS_MUSIC, 1);
                 values.put(MediaStore.MediaColumns.TITLE, "RecordedAudio");
                 values.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
                 values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp4");
                 values.put(MediaStore.Audio.Media.DATA, pathForAppFiles);
                 Uri audioUri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
                 if (audioUri == null) {
                     Log.d("Audio", "Content resolver failed");
                     return;
                 }
                 // Force Media scanner to refresh now. Technically, this is
                 // unnecessary, as the media scanner will run periodically but
                 // helpful for testing.
                 Log.d("Audio URI", "Path = " + audioUri.getPath());
                 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, audioUri));
                 RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, audioUri);

                 stop.setVisibility(View.GONE);
                 record.setVisibility(View.VISIBLE);
                 play.setVisibility(View.VISIBLE);
             }
         });
         
         
         
         play.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (player == null) {
                     player = new MediaPlayer ();
                 }
                 try {
                  
                     // Fully qualified path name. In this case, we use the Files subdir
                     String audioFilePath = getFilesDir().getAbsolutePath();
                     audioFilePath += RECORDED_FILE;
                     Log.d("Audio filename:",audioFilePath );
                     
                     player.setDataSource(audioFilePath);
                     player.prepare();
                     player.start();
                 } catch (Exception e) {
                     Log.e("Audio", "Playback failed.", e);
                 }
                 stopPlayback.setVisibility(View.VISIBLE);
                 record.setVisibility(View.GONE);
                 play.setVisibility(View.GONE);
             }
         });
         
         
         stopPlayback.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 if (player == null)return;
                 player.stop();
                 player.release();
                 player = null;
                 stopPlayback.setVisibility(View.GONE);
                 record.setVisibility(View.VISIBLE);
                 play.setVisibility(View.VISIBLE);                 
             } 
         });
     }
}


 3.   <<<<AndroidMainfest>>>>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.androidbook"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Audio"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="3" />
<uses-permission
        android:name="android.permission.RECORD_AUDIO" />
    <uses-permission
        android:name="android.permission.SET_WALLPAPER"></uses-permission>
   
    <uses-permission
        android:name="android.permission.WRITE_SETTINGS"></uses-permission>
</manifest>