我正在記錄一個電話。當我開始記錄一個電話,然後不幸停止。 &它給出錯誤MediaRecorder啓動失敗-2147483648。我提到這個答案link。但我不明白。請告訴我在我的代碼中有什麼問題?這是我的代碼。Android Media Recording:java.lang.RuntimeException:啓動失敗
public class IncomingCall extends BroadcastReceiver {
Context pcontext;
private static MediaRecorder recorder;
private boolean recordedStart = false;
@SuppressWarnings("unchecked")
public void onReceive(Context context, Intent intent) {
pcontext = context;
recorder = new MediaRecorder();
try {
TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
MyPhoneStateListener PhoneListener = new MyPhoneStateListener();
tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
Log.e("Phone Receive Error", " " + e);
}
}
private class MyPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Log.e("MyPhoneListener",state+" incoming no:"+incomingNumber);
Log.e("CALL_STATE_RINGING", "CALL_STATE_RINGING");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(Environment.getExternalStorageDirectory()+"/MyRecorder.mp3");
Log.e("Path", ""+Environment.getExternalStorageDirectory()+"/MyRecorder.mp3");
try {
recorder.prepare();
recorder.start();
recordedStart = true;
Log.e("Start", "Recorder Start");
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
Log.e("Error", ""+e);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.e("CALL_STATE_IDLE", "CALL_STATE_IDLE");
if (recordedStart == true) {
recorder.stop();
recorder.release();
recordedStart = false;
Log.e("Stop", "Recorder Stop");
}
break;
}
}
}
}
logcat的錯誤
05-05 10:57:23.771: E/MediaRecorder(12812): start failed: -2147483648
05-05 10:57:23.771: D/AndroidRuntime(12812): Shutting down VM
05-05 10:57:23.771: W/dalvikvm(12812): threadid=1: thread exiting with uncaught exception (group=0x416bdd40)
05-05 10:57:23.774: E/AndroidRuntime(12812): FATAL EXCEPTION: main
05-05 10:57:23.774: E/AndroidRuntime(12812): Process: web.revolution.autocallanswer, PID: 12812
05-05 10:57:23.774: E/AndroidRuntime(12812): java.lang.RuntimeException: start failed.
05-05 10:57:23.774: E/AndroidRuntime(12812): at android.media.MediaRecorder.start(Native Method)
05-05 10:57:23.774: E/AndroidRuntime(12812): at web.revolution.autocallanswer.IncomingCall$MyPhoneStateListener.onCallStateChanged(IncomingCall.java:98)
05-05 10:57:23.774: E/AndroidRuntime(12812): at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:389)
05-05 10:57:23.774: E/AndroidRuntime(12812): at android.os.Handler.dispatchMessage(Handler.java:102)
05-05 10:57:23.774: E/AndroidRuntime(12812): at android.os.Looper.loop(Looper.java:136)
05-05 10:57:23.774: E/AndroidRuntime(12812): at android.app.ActivityThread.main(ActivityThread.java:5102)
05-05 10:57:23.774: E/AndroidRuntime(12812): at java.lang.reflect.Method.invokeNative(Native Method)
05-05 10:57:23.774: E/AndroidRuntime(12812): at java.lang.reflect.Method.invoke(Method.java:515)
05-05 10:57:23.774: E/AndroidRuntime(12812): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-05 10:57:23.774: E/AndroidRuntime(12812): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-05 10:57:23.774: E/AndroidRuntime(12812): at dalvik.system.NativeStart.main(Native Method)
05-05 10:57:25.586: I/Process(12812): Sending signal. PID: 12812 SIG: 9
05-05 10:57:27.052: E/CALL_STATE_IDLE(13255): CALL_STATE_IDLE