在录制时使iPhone震动

5

我正在尝试在录制视频时让我的iPhone震动。

我已经尝试了以下方法:

UInt32 category = kAudioSessionCategory_PlayAndRecord; 
status |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
UInt32 allowMixing = true;
status |= AudioSessionSetProperty (
      kAudioSessionProperty_OverrideCategoryMixWithOthers,  // 1
      sizeof (allowMixing),                                 // 2
      &allowMixing                                          // 3
       );
status |= AudioSessionSetProperty(
      kAudioSessionProperty_OtherMixableAudioShouldDuck, // 1
      sizeof (allowMixing),        // 2
      &allowMixing          // 3
       );

此处所建议的那样。然后通过调用来延迟震动设备。

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

但它无法工作。但是它不会振动。它可以正常记录,如果我在停止录制之前调用震动,则在停止录制后,它将震动。

显然这是一个漏洞,有人知道解决方法吗?


1
似乎这将是降低录音质量的好方法... - Josh Wright
定义“不工作”。它是振动但不记录吗?它是记录但不振动吗?还是两者都不? - Chris
质量不是问题。我只是在进行一些基本的声音处理,并在某些声音后振动。用户永远不会听到正在处理的音频,也不会保存等。 - jamesrom
2个回答

9

终于!从iOS 13开始,AVAudioSession新增了一个属性

        let _ = try? AVAudioSession.sharedInstance().setCategory(.playAndRecord)
        if #available(iOS 13.0, *) {
            let _ = try? AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true)
        }

1
这应该是答案!!谢谢伙计。 - Hadus

3
我的猜测是,在音频录制期间,振动功能被特别抑制了。您可以通过做其他通常会使手机振动的事情(例如,在录制音频时将静音开关打开并给自己发送文本消息)来轻松测试这一点 - 我打赌它也不会振动。 这个早期的帖子证实了我的观点。

忘记了这个问题。这个答案可以。我实际上通过一些越狱和其他小技巧克服了这个问题。 - jamesrom
能否请您指导一下我... 我正在使用 MPMoviePlayerController,如果我想要录制没有任何声音的视频,那我在录制视频时可以让手机振动吗? - BhavikKama
这是我的问题 https://dev59.com/Z3vaa4cB1Zd3GeqPAC4P... 你可以看看我与此相关的问题吗? - BhavikKama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接