是否可以在最小化状态UWP下录制音频

Is it possible to record Audio in minimized state UWP

我需要在 UWP 中使用录音 但是如果应用程序被最小化,则录制不起作用。

有没有办法做到这一点,而不使用受限的能力?

在后台录制音频是一项受限功能。

添加受限能力的方法如下:

package.appxmanifest

<?xml version="1.0" encoding="utf-8"?>
<Package
    ...
    xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    IgnorableNamespaces="... rescap">
...
<Capabilities>
    <rescap:Capability Name="backgroundMediaRecording"/>
</Capabilities>
</Package>

添加此功能后,应用程序可以在最小化时继续录制音频。

不过需要注意的是,这是一种有限的能力。如果您想在 Microsoft Store 中列出,您需要提供额外的说明来描述使用此功能的原因。

谢谢。

使用扩展执行会话。它将允许您的 uwp 应用程序在最小化时录制音频。这里是linkhttps://docs.microsoft.com/en-us/windows/uwp/launch-resume/run-minimized-with-extended-execution了解详情。我试过了,对我来说效果很好。 添加 EnteredBackground 和 LeavingBackground 事件:

        this.EnteredBackground += AppEnteredBackground;
        this.LeavingBackground += AppLeavingBackground;

当检测到事件时,调用BeginExtendedExecution,当允​​许会话时,调用捕获音频函数。

   private async void BeginExtendedExecution()
    {
        ClearExtendedExecution();

        var newSession = new ExtendedExecutionSession();
        newSession.Reason = ExtendedExecutionReason.Unspecified;
        newSession.Description = "recording audio";
        newSession.Revoked += SessionRevoked;
        ExtendedExecutionResult result = await newSession.RequestExtensionAsync();

        switch (result)
        {
            case ExtendedExecutionResult.Allowed:                   
                session = newSession;
                RecordingAudio();

                break;
            default:
            case ExtendedExecutionResult.Denied:                    
                newSession.Dispose();
                break;
        }
       

    }

可以以https://github.com/microsoft/Windows-universal-samples/blob/master/Samples/ExtendedExecution/cs/Scenario1_UnspecifiedReason.xaml.cs为例