Windows phone 7 尝试访问Microsoft.Phone.Media.Extended时反射失败

Windows phone 7 尝试访问Microsoft.Phone.Media.Extended时反射失败,windows-phone-7,windows-phone-8,Windows Phone 7,Windows Phone 8,我正在用Silverlight为windows phone 8开发一个闪光灯应用程序。目前 我深深陷入了使用“Microsoft.Phone.Media.Extended”程序集的一个问题。适用于Windows phone 7的闪光灯应用程序已经在Windows phone Marketplace中运行,它在Windows phone 7中运行良好,但由于“Microsoft.phone.Media.Extended”dll,它不适用于Windows phone 8 将WP7应用程序转换为wp8

我正在用Silverlight为windows phone 8开发一个闪光灯应用程序。目前 我深深陷入了使用“Microsoft.Phone.Media.Extended”程序集的一个问题。适用于Windows phone 7的闪光灯应用程序已经在Windows phone Marketplace中运行,它在Windows phone 7中运行良好,但由于“Microsoft.phone.Media.Extended”dll,它不适用于Windows phone 8

将WP7应用程序转换为wp8并运行后,我收到以下类型的错误消息:

无法加载文件或程序集“Microsoft.Phone.Media.Extended,Version=7.0.0.0,Culture=neutral,PublicKeyToken=24eec0d8c86cda1e”或其依赖项之一。系统找不到特定文件。“

根据Windows Phone特定功能的以下链接:

如果您使用反射访问此程序集中的API,因为这些API未公开,则您的应用可能会在Windows Phone 8设备上失败。请删除对此程序集中的调用,并使用公开的媒体API

我不了解如何使用公开的媒体API。我在Windows Phone 7中使用了Microsoft.Phone.media.Extended,使用了reflaction。是否有任何直接方法可以访问Windows Phone 8中的Microsoft.Phone.media.Extended或其他方法来解决此问题

谢谢

========================================================================== 编辑问题:

根据线程,我们使用“VideoTorchMode”枚举打开手电筒。因此,我使用AudioVideoCaptureDevice类使用Windows.Phone.Media.Capture命名空间,并使用以下代码:

    var objDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, AudioVideoCaptureDevice.GetAvailableCaptureResolution(CameraSensorLocation.Back).First());
    objDevice .SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
我想保持闪光灯亮着,但不捕获视频。因此,我还没有初始化视频捕获代码。问题是,我还没有WP8,在模拟器中我无法测试这一点

有谁能确认,一旦我输入了这个代码,我的应用程序将作为手电筒-X工作,在那里,灯将不闪烁,而且不会在WP8中崩溃


谢谢

从某处获取此程序集并直接将其添加到XAP中如何(尝试询问XDA开发人员)?如果已签名且不需要任何特殊功能,这可能会起作用。

如果使用新API“录制”视频,则使用枚举可能只需要创建一个“手电筒”“效果。

Microsoft.Phone.Media.Extended是WP7中的一个私有API,不打算由第三方开发人员使用。该API不存在或不适用于WP8

对于WP8手电筒,请使用AudioVideoCaptureDevice的已知属性VideoTorchMode=On。此外,确保通过显示白色屏幕来处理故障,如异常或没有相机手电筒的设备

以下是在我的Lumia 820和Lumia 920上打开照相机闪光灯的代码示例:

var sensorLocation=CameraSensorLocation.Back;
尝试
{
//获取音频捕获设备
var avDevice=等待AudioVideoCaptureDevice.OpenAsync(传感器位置,
AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation.First());
//打开手电筒
var supportedCameraModes=音频视频捕获设备
.GetSupportedPropertyValue(传感器位置、KnownCameraaAudioVideoProperties.VideoTorchMode);
if(supportedCameraModes.ToList()包含((UInt32)VideoTorchMode.On))
{
avDevice.SetProperty(knowncameraaaudiovideoproperties.VideoTorchMode,VideoTorchMode.On);
//将闪存电源设置为最大
avDevice.SetProperty(knowncameraaaudiovideoproperties.VideoTorchPower,
AudioVideoCaptureDevice.GetSupportedPropertyRange(sensorLocation,KnownCameraaAudioVideoProperties.VideoTorchPower).Max);
}
其他的
{
ShowWhiteScreenInsteadOfCameraTorch();
}
}
捕获(例外情况除外)
{
//此设备不支持手电筒,而是显示白色屏幕作为手电筒
ShowWhiteScreenInsteadOfCameraTorch();
}

使用摄像机手电筒(ISV_摄像机、麦克风和ID_REQ_BACK_摄像机)时,确保向WP8应用程序添加所需的功能和要求

在Windows Phone 8中是否有直接访问Microsoft.Phone.Media.Extended的方法
问题是,该DLL已在WP8中删除,因此您无法再使用它。市场上有WP8兼容的手电筒应用程序,所以一定有一个等效的API。是挖掘MSDN文档的时候了;)你好刚刚根据你的答案编辑了我的问题克劳斯。谢谢你的帮助和信息.嗨,贾斯汀。。很有魅力。。谢谢。。你是真正的救世主。非常感谢。嗨,贾斯汀,很抱歉迟了评论。您的解决方案运行良好,应用程序停止崩溃。然而,在WP8中,灯在一秒钟内启动和停止。就这样。实际上,我想有一个持续亮着的灯,直到用户按下按钮。表示用户点击时,指示灯亮而不闪烁,当用户点击关闭时,指示灯将关闭。你能帮忙吗?