gpt4 book ai didi

c# - 通话记录器问题 - Xamarin.Android

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:37 28 4
gpt4 key购买 nike

我正在使用 MediaRecorder 类库开发用于录制语音通话的应用程序。我正在使用 Moto G mobile(API 级别 21)进行 USB 调试。调用电话后,我开始使用以下代码进行录音。它以异常结束并在 recorder.Start() 中断。它会创建一个文件,但不包含任何音频,并且它是零字节虚拟文件。

public MediaRecorder recorder = new MediaRecorder();

开始通话录音:

recorder.Reset();
recorder.SetAudioSource(AudioSource.VoiceCall);
recorder.SetOutputFormat(OutputFormat.ThreeGpp);
recorder.SetAudioEncoder(AudioEncoder.Aac);
recorder.SetOutputFile("/sdcard/Download" + "/123.amr");
recorder.Prepare();
recorder.Start(); // Exception Hits

结束通话记录

recorder.Stop();
recorder.Release();

权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

异常

{Java.Lang.RuntimeException: Exception of type 'Java.Lang.RuntimeException' was thrown.  
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000b] in <filename unknown>:0
at Android.Runtime.JNIEnv.CallVoidMethod (IntPtr jobject, IntPtr jmethod) [0x00062] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d419c934/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:554
at Android.Media.MediaRecorder.Start () [0x00043] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d419c934/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Media.MediaRecorder.cs:1475
at CallRecorderAndroidPOC.MainActivity+<>c__DisplayClass4.<OnCreate>b__0 (System.Object param0, System.EventArgs param1) [0x000a1] in d:\Android Application Development\POC's\CallRecorderAndroidPOC\CallRecorderAndroidPOC\MainActivity.cs:65
--- End of managed exception stack trace ---
java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method)
at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:29)
at android.view.View.performClick(View.java:4761)
at android.view.View$PerformClick.run(View.java:19767)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
}

我把文件扩展名改成了.aac,还是一样的异常抛出。

谁能帮我解决这个问题?

最佳答案

输出格式为:recorder.SetOutputFormat(OutputFormat.ThreeGpp);。

但是,

当您设置输出路径时,它给出为:recorder.SetOutputFile("/sdcard/Download"+ "/123.amr");

修改为:recorder.SetOutputFile("/sdcard/Download/123.3gpp");

关于c# - 通话记录器问题 - Xamarin.Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com