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

Ivo*_*nov 6 macos android android-emulator android-studio

当我启动 Android Emulator 时,Mac 桌面上的音频停止。当我关闭模拟器时它会再次启动。

Shr*_*794 23

为了构建 @pawe\xc5\x82-kanarek 答案,这里有一个小脚本,它循环遍历您计算机上的所有 Android 模拟器并添加

\n
hw.audioInput = no\nhw.audioOutput = no\n
Run Code Online (Sandbox Code Playgroud)\n

在文件末尾(或者如果您已经指定了这些选项则替换它)。

\n
#!/bin/bash\nfind ~/.android/avd -name "config.ini" | while read line\ndo\n   awk '!/audio/' $line > tmp\n   rm $line\n   mv tmp $line\n   echo "hw.audioInput = no" >> $line \n   echo "hw.audioOutput = no" >> $line \ndone\n
Run Code Online (Sandbox Code Playgroud)\n

要运行它,只需将此代码添加到本地 bash 脚本中(我将其命名为“disable_emulator_sound.sh”)。然后,使用命令使其可执行chmod +x disable_emulator_sound.sh并使用 运行它./disable_emulator_sound.sh

\n

注意:正如原始答案中提到的,进行此更改后,如果它不起作用,您可能必须进入模拟器选项菜单并运行“擦除数据”,然后运行“立即冷启动”。

\n


Mor*_*goo 10

基于Joachim的帖子:

\n
\n

如果您有一些蓝牙耳机,并在模拟器运行时注意到奇怪的嘶嘶声,您可能会发现添加 -noaudio 很有用

\n
\n

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

\n

.plist例如在包含以下内容的studio-environments.plist文件夹中创建一个文件:~/Library/LaunchAgents/

\n
<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n    <key>Label</key>\n    <string>setenv.studio.emu.params</string>\n    <key>ProgramArguments</key>\n    <array>\n        <string>/bin/launchctl</string>\n        <string>setenv</string>\n        <string>studio.emu.params</string>\n        <string>-writable-system,-noaudio</string>\n    </array>\n    <key>RunAtLoad</key>\n    <true/>\n</dict>\n</plist>\n
Run Code Online (Sandbox Code Playgroud)\n

直接加载这些更改(例如,无需重新启动 Mac 即可应用更改)

\n
launchctl load ~/Library/LaunchAgents/studio-environments.plist\n
Run Code Online (Sandbox Code Playgroud)\n
\n

附加功能:

\n

如果在命令已加载时运行该命令,您将收到如下错误消息

\n
Load failed: 5: Input/output error\n
Run Code Online (Sandbox Code Playgroud)\n

你必须先卸载它

\n
launchctl unload ~/Library/LaunchAgents/studio-environments.plist\n
Run Code Online (Sandbox Code Playgroud)\n

您可以使用以下命令检查您的更改:

\n
launchctl getenv studio.emu.params\n
Run Code Online (Sandbox Code Playgroud)\n

注意:\xe2\x80\x99 不会再从模拟器中听到任何声音,但嘶嘶声也会消失

\n


Ivo*_*nov 7

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

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

、从控制台启动模拟器:

emulator -avd Pixel_2_API_27 -qemu -no-audio

二、如果您想直接从 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

  3. 设置新创建的脚本权限 chmod +x emulator

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

NB Kudos 为在这里提出的MartinCR的脚本解决方案点


Paw*_*rek 5

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

hw.audioInput=no
hw.audioOutput=no
Run Code Online (Sandbox Code Playgroud)

来自 Visual Studio 代码的屏幕

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

  • 确保您正在编辑正确的“.ini”文件。它应该是 `config.ini`,而不是 `&lt;emulator_name&gt;.ini` (10认同)
  • 是的,只是想分享:)此外,我还可以控制哪个模拟器可以使用音频,哪个模拟器不能。创建新的模拟器并不是那么频繁的活动 (3认同)

seb*_*ter 5

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

一步一步:链接到带有图片的更好解释

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

感谢马特·麦肯纳在他的博客上分享了这一点。他在这里写了有关解决方案和背景的文章: https ://blog.mmckenna.me/android-emulators-vs-bluetooth-headphones

  • 不幸的是,这对我不起作用。 (11认同)