当我启动 Android 模拟器时,Mac 桌面上的音频停止。当我关闭模拟器时它会再次开始。
当模拟器以启用的音频启动时,有时它会覆盖 Mac 计算机的音频通道。即使您在安全设置中禁用了对 Android studio 麦克风的访问,也会发生这种情况。要解决此问题,您应该在禁用音频的情况下启动模拟器。
有两个选项可以在禁用音频的情况下启动模拟器:
I. 从控制台启动模拟器:
emulator -avd Pixel_2_API_27 -qemu -no-audio
II. 如果您想直接从 Android studio 启动禁用音频的模拟器,则应将
emulator
文件替换为将运行 emulator
并附加参数的脚本:
Android Studio 默认使用二进制文件
$ANDROID_SDK/emulator/emulator
,它位于:~/Library/Android/sdk/emulator/
您必须执行以下操作:
将
emulator
二进制文件重命名为 emulator-original
。
创建一个名为
emulator
的 bash 脚本文本文件,其中包含:
#!/bin/bash ~/Library/Android/sdk/emulator/emulator-original $@ -qemu -no-audio
chmod +x emulator
现在,Android Studio 将运行您的脚本,该脚本将运行带有附加参数的原始二进制文件以禁用模拟器的音频。
为了构建 @paweł-kanarek 答案,这里有一个小脚本,它循环遍历您计算机上的所有 Android 模拟器并添加
hw.audioInput = no
hw.audioOutput = no
在文件末尾(或者如果您已经指定了这些选项则替换它)。
#!/bin/bash
find ~/.android/avd -name "config.ini" | while read line
do
awk '!/audio/' $line > tmp
rm $line
mv tmp $line
echo "hw.audioInput = no" >> $line
echo "hw.audioOutput = no" >> $line
done
要运行它,只需将此代码添加到本地 bash 脚本中(我将其命名为“disable_emulator_sound.sh”)。然后,使用命令
chmod +x disable_emulator_sound.sh
使其可执行,并使用 ./disable_emulator_sound.sh
运行它。
注意:如原始答案中所述,进行此更改后,如果它不起作用,您可能必须进入模拟器选项菜单并运行“擦除数据”,然后运行“立即冷启动”。
基于Joachim的帖子:
如果您有蓝牙耳机并注意到奇怪的嘶嘶声 模拟器运行时发出声音,您可能会发现添加 -无音频
要进行永久修复以影响所有虚拟设备,请执行以下操作:
创建一个
.plist
文件,例如studio-environments.plist
在文件夹 ~/Library/LaunchAgents/
中,包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.studio.emu.params</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>studio.emu.params</string>
<string>-writable-system,-noaudio</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
直接加载这些更改(例如,无需重新启动 Mac 即可应用更改)
launchctl load ~/Library/LaunchAgents/studio-environments.plist
额外:
如果在命令已加载时运行该命令,您将收到如下错误消息
Load failed: 5: Input/output error
您必须先卸载它
launchctl unload ~/Library/LaunchAgents/studio-environments.plist
您可以使用此命令检查您的更改:
launchctl getenv studio.emu.params
注意:您将不会再听到模拟器发出任何声音,但嘶嘶声也会消失
您还可以在 MacOS 系统设置的“安全与隐私”中撤回 Android Studio 的麦克风访问权限。 (虽然我不知道它的效果如何/是否有效,因为我采用了 config.ini 方法。)
一步一步:链接到带有图片的更好解释
感谢马特·麦肯纳在他的博客上分享了这一点。他在这里写了解决方案和背景: https://blog.mmckenna.me/android-emulators-vs-bluetooth-headphones
在 Mac OS Ventura 上: 系统偏好设置 > 隐私和安全 > 麦克风 > 取消选中 Android Studio