2012-01-14 6 views
0

저는 newb in android입니다. 전화가 녹음 될 때 시작되는 응용 프로그램에서 작업 중이며 IntenService를 시작하여 미디어 녹음기를 사용합니다. 로그 cat 출력.무엇이 미디어 레코더의 오류 -1입니까

01-14 13:58:07.319: D/DEBUG(18180): <!>com.agicent.callrecorder.CallListener 26<!> 
OFFHOOK 
01-14 13:58:07.319: E/AudioRecordTest(18180): 
<!>com.agicent.callrecorder.PhoneCallRecorderActivity 181<!> Recording Started 
01-14 13:58:07.469: E/AudioRecordTest(18180): 
<!>com.agicent.callrecorder.PhoneCallRecorderActivity 181<!> Recording Started 
01-14 13:58:07.499: E/MediaRecorder(18180): start failed: -1 
01-14 13:58:07.509: W/dalvikvm(18180): threadid=9: thread exiting with uncaught 
exception (group=0x40018560) 
01-14 13:58:07.509: E/AndroidRuntime(18180): FATAL EXCEPTION: 
IntentService[PhoneCallRecorderActivity] 
01-14 13:58:07.509: E/AndroidRuntime(18180): java.lang.RuntimeException: start failed. 
01-14 13:58:07.509: E/AndroidRuntime(18180): at 
android.media.MediaRecorder.start(Native Method) 
01-14 13:58:07.509: E/AndroidRuntime(18180): atcom.agicent.callrecorder.PhoneCallRecorderActivity.startRecording(PhoneCallRecorderActivity.java:77) 
01-14 13:58:07.509: E/AndroidRuntime(18180): at com.agicent.callrecorder.PhoneCallRecorderActivity.onHandleIntent(PhoneCallRecorderActivity.java:182) 
01-14 13:58:07.509: E/AndroidRuntime(18180): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59) 
01-14 13:58:07.509: E/AndroidRuntime(18180): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-14 13:58:07.509: E/AndroidRuntime(18180): at android.os.Looper.loop(Looper.java:123) 
01-14 13:58:07.509: E/AndroidRuntime(18180): at android.os.HandlerThread.run(HandlerThread.java:60) 
01-14 13:58:20.539: E/IncomingCall Recieved(18256):  <!>com.agicent.callrecorder.IncomingCallReciever 33<!> Broadcast Recieved 
01-14 13:58:20.569: D/DEBUG(18256): <!>com.agicent.callrecorder.CallListener 22<!> IDLE 

그리고 여기 내 코드 블록

public class PhoneCallRecorderActivity extends IntentService { 

private static final String LOG_TAG = "AudioRecordTest"; 
private static String mFileName = null; 
//private RecordButton mRecordButton = null; 
private MediaRecorder mRecorder = null; 
//private PlayButton mPlayButton = null; 
private MediaPlayer mPlayer = null; 

private void startPlaying() { 
    mPlayer = new MediaPlayer(); 
    try { 
     mPlayer.setDataSource(mFileName); 
     mPlayer.prepare(); 
     mPlayer.start(); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
    } 
} 

private void stopPlaying() { 
    mPlayer.release(); 
    mPlayer = null; 
} 

private void startRecording() { 
    mRecorder = new MediaRecorder(); 
    mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    mRecorder.setOutputFile(mFileName); 
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 


    try { 
     mRecorder.prepare(); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
    } 

    mRecorder.start(); 
} 

private void stopRecording() { 
    mRecorder.stop(); 
    mRecorder.release(); 
    mRecorder = null; 
} 

public PhoneCallRecorderActivity() { 
    super("PhoneCallRecorderActivity"); 
    mFileName = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    mFileName += "/audiorecordtest.3gp"; 
} 
@Override 
public IBinder onBind(Intent intent) { 
// TODO Auto-generated method stub 
return null; 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
// TODO Auto-generated method stub 
Log.e(LOG_TAG, "Recording Started"); 
startRecording(); 
} 
public void onDestroy() { 

stopRecording(); 
Log.e(LOG_TAG, "Recording finidhed"); 

} 
} 

내가 잘못하고있는 중이 야 어디 저를 제안 해주십시오. 시간 내 주셔서 감사합니다.

+0

또한 매니페스트 권한을 게시하십시오. –

+0

<사용 권한 android : 이름 = "android.permission.WRITE_EXTERNAL_STORAGE"/> <사용 권한 android : 이름 = "android.permission.RECORD_AUDIO"/><사용 권한 android : 이름 = "android.permission.READ_PHONE_STATE "/> 위의 시간 동안 안녕하세요 kumar 고맙습니다는 내 매니페스트의 사용 권한이며 내 테스트 장치는 LG-Optimus One입니다. –

+0

http://stackoverflow.com/questions/5630922/how-to-record-a-call-in-android –

답변

0

실제 음성 (로컬 음성 및 원격 음성)을 녹음하려는 경우 안드로이드에서 통화 오디오 정보가 처리되므로 Android에서는 불가능합니다.