【问题标题】:How to know if the phone on a call in Unity?Unity中如何知道电话是否在通话?
【发布时间】:2019-08-28 06:53:38
【问题描述】:

我目前正在 Unity 中开发一款游戏,我想检测是否 (iPhone) 设备是否在通话过程中,实际上游戏在通话过程中崩溃。

我认为问题在于我在录制游戏会话的同时,也在录制游戏的声音和效果:

private void StartMicrophone () { // Create a microphone clip 
    microphoneSource.clip = Microphone.Start(null, true, 60, 48000); 
    microphoneSource.loop = true; 

    while (!(Microphone.GetPosition(null) > 0)) { } 

    microphoneSource.Play(); 
}

【问题讨论】:

  • 调用不是主要问题,当统一应用程序进入后台时,它会调用 OnApplication Pause 并且你的逻辑必须去那里docs.unity3d.com/ScriptReference/… 更多看这里
  • 请向我们展示您认为可能导致崩溃的代码
  • 我认为问题在于我在录制游戏会话时,我也在录制游戏声音和效果:private void StartMicrophone () { // 创建一个麦克风剪辑micSource.clip = Microphone.Start (null, true, 60, 48000);麦克风源.loop = true; while (!(Microphone.GetPosition(null) > 0)) { }micSource.Play(); }
  • 可能是我无法访问麦克风,因为它在通话过程中是手机的控制器,但是如何检测到这一点以防止通话过程中录音?

标签: c# ios unity3d


【解决方案1】:

当手机接到电话时,您的应用开始在后台运行。

问题在于,Unity 不能在 IOS 或 Android 的后台运行,check

要解决此问题,我建议使用其他编辑器,您可以尝试查找 Xamarin,并将统一查看器嵌入到您的应用中并尝试设置后台功能,但统一无法实现。

【讨论】:

    【解决方案2】:

    通常游戏应该在它不再是当前活动的应用程序时暂停,崩溃可能是由麦克风权限问题引起的,所以如果你只是想防止崩溃,在 OnApplicationPause 中恢复麦克风访问权限可能就足够了

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多