【问题标题】:UWP C# Saving DeviceInformation to ApplicationDataUWP C# 将 DeviceInformation 保存到 ApplicationData
【发布时间】:2021-01-08 12:55:09
【问题描述】:

我正在尝试将device information 保存在我的应用程序中。 我设法将as string 保存到ApplicationData.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 将麦克风输入路由到线路输出。 有没有办法解决我可以为CaptureRender 加载保存的Device Information 设备以初始化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;
    }

【问题讨论】:

  • 设备信息是字符串类型吗?

标签: c# uwp settings windows-iot-core-10 application-data


【解决方案1】:

请查看文档here

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

Windows Runtime data types are supported 用于应用设置。但是DeviceInformation 不在支持列表中。对于您的场景,我们建议您保存一些关于DeviceInformation 的键值,例如设备ID 设备类型。并获取具有设备 ID 的设备。

更新

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

DeviceInformation.CreateFromIdAsync("Device ID");

【讨论】:

  • 嗨@NicoZhu-MSFT 谢谢。但是,我正在使用 AudioGraph ,我需要将 Device Information 解析为 AudioGraphSettings(AudioRenderCategory.Media)CreateDeviceInputNodeAsync 。有什么解决办法吗?
  • 我已经更新了答案,请查收。
  • 感谢@NicoZhu-MSFT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多