当我启动 Android 模拟器时,Mac 桌面上的音频停止

When I start Android Emulator, the audio on my Mac desktop stops

当我启动 Android 模拟器时,Mac 桌面上的音频停止了。当我关闭模拟器时它又开始了。

当模拟器以启用的音频启动时,有时它会覆盖 Mac 机器的音频通道。即使您在安全设置中禁用 Android 工作室的麦克风访问权限,也会发生这种情况。要解决此问题,您应该在禁用音频的情况下启动模拟器。

有两个选项可以在禁用音频的情况下启动模拟器:

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/

您必须执行以下操作:

  1. emulator 二进制文件重命名为 emulator-original

  2. 创建一个名为 emulator 的 bash 脚本文本文件,其中包含:

#!/bin/bash    
~/Library/Android/sdk/emulator/emulator-original $@ -qemu -no-audio
  1. 使用chmod +x emulator
  2. 设置新创建的脚本权限

现在,Android Studio 将 运行 您的脚本,该脚本将 运行 带有附加参数的原始二进制文件以禁用模拟器的音频。

N.B。感谢 MartinCR who proposed it here.

的脚本解决方案

我找到了比@Ivo Stoyanov 接受的答案更简单的方法来解决这个问题。只需打开模拟器配置文件(对于我的 mac 它是 /Users/{myname}/.android/avd/{emulator_name}/config.ini 并设置

hw.audioInput=no
hw.audioOutput=no

如果它不起作用,那么您应该在 Android 虚拟设备管理器中“擦除数据”和“立即冷启动”

您还可以在“安全与隐私”的 MacOS 系统设置中撤销 Android Studio 的麦克风访问权限。 (虽然我不知道 well/if 它是如何工作的,因为我选择了 config.ini 方法。)

循序渐进:Link to a better explaination with pictures

  • 转到 MacOS“系统偏好设置”>“安全与隐私”> 麦克风。
  • 单击左下角的锁定图标以启用编辑。
  • 然后在右侧的应用程序列表中取消勾选 Android Studio。

感谢 Matt McKenna 在他的博客上分享了这篇文章。他在这里写下了解决方案和背景: https://blog.mmckenna.me/android-emulators-vs-bluetooth-headphones

基于Joachim的post:

If you have some Bluetooth headphones and notice a strange hissing sounds while the emulator is running, you might find it useful to add the -noaudio

要获得影响所有虚拟设备的永久修复,请执行以下操作:

创建一个 .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

注意:你不会再听到模拟器发出任何声音,但嘶嘶声也会消失

为了构建@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.

运行 使其可执行

注意:如原始答案中所述,进行此更改后,如果它不起作用,您可能必须进入模拟器选项菜单,然后 运行 'Wipe Data' 然后 运行 'Cold Boot Now'.

Mac Os 上的最佳解决方案是: 系统偏好设置--> 安全和隐私--> 麦克风--> 取消选中 Android Studio 然后享受那个声音回来了:)