我有android G1固件1.6,我试图用以下代码从应用程序录制语音 .
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start();
我的manifest.xml有:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
我有:
09-23 14:41:05.531: ERROR/AndroidRuntime(1718): Uncaught handler: thread main exiting due to uncaught exception
09-23 14:41:05.551: ERROR/AndroidRuntime(1718): java.lang.RuntimeException: setAudioSource failed.
09-23 14:41:05.551: ERROR/AndroidRuntime(1718): at android.media.MediaRecorder.setAudioSource(Native Method)
我该如何正确录制声音?
16 回答
打开“
AndroidManifest.xml
” - >add
我知道这是一个非常古老的问题但是在Android Marshmallow中你必须继续“设置>应用程序>你的应用程序>权限”并获得麦克风权限 .
如果您在Android M上运行,则需要在首次运行时请求记录音频的权限 . 要完成此操作,请询问用户是否可以在应用程序启动时录制音频:
重要 - 在过去的几个小时里,我试图弄清楚如何检查MIC是否被其他应用程序捕获 . 我注意到,如果2个应用程序地址同时向MediaRecorder抛出RuntimeException并且你将无法使用麦克风,除非你重启你的设备(!!)我不知道它是否是最好的解决方案但是它对我有用 . 也许它会让你们有些人在某一天节省一些时间..
我有这个确切的问题,这解决了我:
在用于调试的设备上,转到设置 - >应用程序 - > {您的应用程序} . 然后确保允许所有应用程序的权限(在本例中为音频录制和写入外部存储) .
很明显,在不通过Google Play商店安装应用时,系统不会要求您授予权限,在某些手机上,这会导致您的调试应用无法获得某些权限 .
即使清单文件中的某些权限被识别(例如互联网访问),也要检查这一点,因为对我来说有些工作有些,而有些则被自动阻止 .
希望这可以帮助 .
请为Marshmallow及以上版本动态请求
Manifest.permission.RECORD_AUDIO
权限 .对于API 23,您需要请求读/写权限,即使它们已经在您的清单中 .
对于API 23,请检查Manifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
和Java代码中的音频记录权限这看起来很正确 . 确保其他应用程序尚未使用MIC . 也许让手机重启并再试一次 .
这段代码对我有用
我的建议可能看起来很愚蠢,但它对我有用:)
尝试将权限作为嵌套标记 . 我相信在android包装库的某处有一个xml解析问题 .
作为Cyanogenmod用户,我不得不这样做
确保权限在清单中定义(android-studio)
确保隐私保护允许应用访问麦克风(在设备上)
确保android系统已设置权限
Settings
- >Apps
- >选择你的应用程序 - >Permissions
- >检查所有权限(应该是清单请求的权限)(在设备上)之后,重新编码对我有用 .
尝试这个代码它可以帮助你很多,它可以理解.....
我把它移到另一个线程 . 一切正常 .
这是一个代码:
确保android系统已在设备上设置了权限,应该是清单请求的权限:
更改
至
为我工作 .