0

我正在尝试保存device information在我的应用程序中。当应用程序启动时,我设法保存as stringApplicationData.Current.RoamingSettings但无法保存到deviceinformation我需要用来枚举我的设备的位置。

我不确定这样做的正确方法是什么。有人可以建议吗?谢谢。

    const string MicDeviceNameKey = "MicDeviceName";
    const string MicDeviceIDKey = "MicDeviceID";
    IPropertySet settings = ApplicationData.Current.RoamingSettings.Values;

    public string MicDeviceName
    {
        get
        {
            object setting;
            if (settings.TryGetValue(MicDeviceNameKey, out setting))
                return (string)setting;
            return null;
        }
        set
        {
            settings[MicDeviceNameKey] = value;
        }
    }

    public DeviceInformation MicDeviceID
    {
        get
        {
            if (settings[MicDeviceIDKey] != null)
                return (DeviceInformation)settings[MicDeviceIDKey];
            return null;
        }
        set
        {
            settings[MicDeviceIDKey] = value;
        }
    }

在此处输入图像描述

更新

我正在使用AudioGraph将麦克风输入路由到线路输出。有没有办法解决我可以加载保存Device InformationCapture设备Render初始化的地方AudioGraphSettings

public async Task CreateMicRoute(DeviceInformation output, DeviceInformation input)
    {
        // ################################################################################################
        // Register the Output Source for the Playback
        var settings = new AudioGraphSettings(AudioRenderCategory.Media);
        settings.QuantumSizeSelectionMode = QuantumSizeSelectionMode.LowestLatency;
        settings.PrimaryRenderDevice = output;

        var result = await AudioGraph.CreateAsync(settings);

        if (result.Status != AudioGraphCreationStatus.Success)
        {
            // Cannot create graph
            //rootPage.NotifyUser(String.Format("AudioGraph Creation Error because {0}", result.Status.ToString()), NotifyType.ErrorMessage);
            return;
        }

        //Create Audio Graph
        micAudioGraph = result.Graph;

        // ################################################################################################
        // Create a device input node
        var inProfile = MediaEncodingProfile.CreateWav(AudioEncodingQuality.Medium);
        var DeviceInputResult = await micAudioGraph.CreateDeviceInputNodeAsync(MediaCategory.Media, inProfile.Audio, input);
        if (DeviceInputResult.Status != AudioDeviceNodeCreationStatus.Success)
        {
            // Cannot create device input node
            return;
        }

        // Set the Created Audio Input Node to Device Input Node
        deviceInputNode = DeviceInputResult.DeviceInputNode;

        // Create a device output node
        var DeviceOutputResult = await micAudioGraph.CreateDeviceOutputNodeAsync();
        if (DeviceOutputResult.Status != AudioDeviceNodeCreationStatus.Success)
        {
            // Cannot create device output node
            return ;
        }
        // Selected Output device from Audio Graph is set to Device Output Node
        deviceOutputNode = DeviceOutputResult.DeviceOutputNode;

        // ################################################################################################           
        if (micAudioGraph == null)
            return;
    }
4

1 回答 1

2

请在此处查看文档,

对于LocalSettingsRoamingSettings,每个设置的名称最长为 255 个字符。每个设置的大小最大为 8K 字节,每个复合设置的大小最大为 64K 字节。

应用设置支持 Windows 运行时数据类型。但DeviceInformation不在支持列表中。对于您的场景,我们建议您保存一些关于 DeviceInformation此类设备 id 设备类型的关键值。并获取具有设备 ID 的设备。

更新

DeviceInformationcontainsCreateFromIdAsync方法,您可以将 DeviceInformation 的 id 存储到本地设置中,并DeviceInformation使用以下代码检索。

DeviceInformation.CreateFromIdAsync("Device ID");
于 2021-01-08T13:46:53.127 回答