微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UWP C# 将设备信息保存到 ApplicationData

如何解决UWP C# 将设备信息保存到 ApplicationData

我正在尝试在我的应用程序中保存 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;
        }
    }

enter image description here

更新

我使用 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;
    }

解决方法

请检查文档 here

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

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

更新

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

DeviceInformation.CreateFromIdAsync("Device ID");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?