如何解决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;
}
}
更新
我使用 AudioGraph
将麦克风输入路由到线路输出。
无论如何,我可以为Device information
和Capture
设备加载已保存的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,
对于 LocalSettings
和 RoamingSettings
,每个设置的名称长度最多为 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 举报,一经查实,本站将立刻删除。