deviceInfo.mediaDrmProp 值是固定的吗
时间: 2024-05-30 18:11:19 浏览: 8
`deviceInfo.mediaDrmProp` 不是一个固定的值,它是一个对象,包含关于设备上安装的MediaDrm(数字版权管理系统)的属性信息。这些属性可能因设备而异,并且可能会随着时间而改变。例如,它可能包括设备的安全等级、支持的加密算法、许可证管理策略等。因此,对于不同的设备,它们的`deviceInfo.mediaDrmProp`的值可能会不同。
相关问题
deviceInfo.mediaDrmProp
deviceInfo.mediaDrmProp 是一个用于存储 MediaDrm 的属性值的对象。MediaDrm 是 Android 平台上的数字版权管理框架,用于保护受版权保护的音频和视频内容。MediaDrmProp 可以存储 MediaDrm 的各种属性值,例如 sessionId、securityLevel、vendor、version 等等。这些属性值对于保护数字内容的安全性非常重要。在 Android 应用程序中,可以使用 MediaDrmProp 对象来读取和写入 MediaDrm 的属性值。
把下面的winform 代码更改为 控制台应用程序可以使用的代码 myDevices = new DevicesCollection(); Guid driverGuid = Guid.Empty; foreach (DeviceInformation deviceInfo in myDevices) { if (!string.IsNullOrEmpty(deviceInfo.ModuleName)) { driverGuid = deviceInfo.DriverGuid; //break; } } Device dv = new Device(driverGuid); dv.SetCooperativeLevel(this, CooperativeLevel.Normal); SecondaryBuffer buf = new SecondaryBuffer("nopayhint.wav", dv); buf.Play(0, BufferPlayFlags.Default);
将上述代码转换为控制台应用程序可以使用的代码,需要进行如下修改:
1. 将 `this` 参数替换为 `null`,因为控制台应用程序没有窗体对象。
2. 去掉 `CooperativeLevel.Normal` 参数,因为在控制台应用程序中不需要设置协作级别。
3. 将 `Play` 方法的调用改为使用异步方式播放音效文件,以避免阻塞主线程。
修改后的代码如下:
```
DevicesCollection myDevices = new DevicesCollection();
Guid driverGuid = Guid.Empty;
foreach (DeviceInformation deviceInfo in myDevices)
{
if (!string.IsNullOrEmpty(deviceInfo.ModuleName))
{
driverGuid = deviceInfo.DriverGuid;
//break;
}
}
Device dv = new Device(driverGuid);
dv.SetCooperativeLevel(null, CooperativeLevel.Normal);
SecondaryBuffer buf = new SecondaryBuffer("nopayhint.wav", dv);
buf.Play(0, BufferPlayFlags.Default | BufferPlayFlags.Async);
```
在控制台应用程序中,需要将上述代码放入 `Main` 方法中执行,例如:
```
static void Main(string[] args)
{
// 音效播放代码
DevicesCollection myDevices = new DevicesCollection();
Guid driverGuid = Guid.Empty;
foreach (DeviceInformation deviceInfo in myDevices)
{
if (!string.IsNullOrEmpty(deviceInfo.ModuleName))
{
driverGuid = deviceInfo.DriverGuid;
//break;
}
}
Device dv = new Device(driverGuid);
dv.SetCooperativeLevel(null, CooperativeLevel.Normal);
SecondaryBuffer buf = new SecondaryBuffer("nopayhint.wav", dv);
buf.Play(0, BufferPlayFlags.Default | BufferPlayFlags.Async);
// 等待音效播放完成
Thread.Sleep(5000);
// 其他代码
}
```
注意,为了等待音效播放完成,上述代码使用了 `Thread.Sleep` 方法,这会阻塞主线程。在实际应用中,最好使用异步方式等待音效播放完成,以避免阻塞主线程。