我正在Silverlight中为Windows Phone 8开发一个Flash Light应用程序。目前 我使用“Microsoft.Phone.Media.Extended”程序集深陷一个问题。适用于Windows Phone 7的Flash Light应用程序已经在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特定功能的以下链接: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206947(v=vs.105).aspx
如果您使用反射来访问此程序集中的API,因为它们未公开,您的应用程序可能会在Windows Phone 8设备上失败。删除对此程序集的调用,并使用公开的媒体API。
我不了解如何使用公开曝光的媒体API。我在Windows Phone 7中使用了使用reflaction的Microsoft.Phone.Media.Extended。是否有任何直接的方法来访问Windows Phone 8中的Microsoft.Phone.Media.Extended或其他解决方法?
感谢。
=============================================== =========================== 编辑问题:
您好,
根据主题,我们使用“VideoTorchMode”枚举来启用手电筒。根据这一点,我使用Audio.Video.Media.Capture命名空间使用AudioVideoCaptureDevice类,代码如下:
var objDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, AudioVideoCaptureDevice.GetAvailableCaptureResolution(CameraSensorLocation.Back).First());
objDevice .SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
我希望保持闪光灯亮起但不拍摄视频。所以,我还没有初始化视频捕获代码。问题是,我还没有WP8,在模拟器中我无法测试它。
任何人都可以确认,一旦我输入此代码,我的应用程序将作为Flashlight-X工作,其中灯将打开而不会闪烁,并且它也不会在WP8中崩溃。
由于
答案 0 :(得分:6)
Microsoft.Phone.Media.Extended是WP7中的私有API,不适合第三方开发人员使用。该API不存在或适用于WP8。
对于WP8手电筒,使用VideoTorchMode = On的AudioVideoCaptureDevice已知属性。此外,请确保通过显示白屏来处理异常或没有相机手电筒的设备等故障。
这是打开Lumia 820和Lumia 920相机闪光灯的代码示例:
var sensorLocation = CameraSensorLocation.Back;
try
{
// get the AudioViceoCaptureDevice
var avDevice = await AudioVideoCaptureDevice.OpenAsync(sensorLocation,
AudioVideoCaptureDevice.GetAvailableCaptureResolutions(sensorLocation).First());
// turn flashlight on
var supportedCameraModes = AudioVideoCaptureDevice
.GetSupportedPropertyValues(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchMode);
if (supportedCameraModes.ToList().Contains((UInt32)VideoTorchMode.On))
{
avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
// set flash power to maxinum
avDevice.SetProperty(KnownCameraAudioVideoProperties.VideoTorchPower,
AudioVideoCaptureDevice.GetSupportedPropertyRange(sensorLocation, KnownCameraAudioVideoProperties.VideoTorchPower).Max);
}
else
{
ShowWhiteScreenInsteadOfCameraTorch();
}
}
catch(Exception ex)
{
// Flashlight isn't supported on this device, instead show a White Screen as the flash light
ShowWhiteScreenInsteadOfCameraTorch();
}
确保在使用相机手电筒(ISV_Camera,Microphone和ID_REQ_BACK_Camera)时为WP8应用添加所需的功能和要求。
答案 1 :(得分:0)
如何从某个地方获取此程序集并直接将其添加到XAP中(尝试询问XDA开发人员)?如果签名并且不需要任何特殊功能,这可能会有效。
答案 2 :(得分:0)
如果您使用新API来“录制”视频,那么使用VideoTorchMode枚举可能只是希望您想要创建“手电筒”效果。