3

我正在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 中使用反射使用 Microsoft.Phone.Media.Extended。是否有任何直接方法可以在 Windows Phone 8 中访问 Microsoft.Phone.Media.Extended 或其他方式来解决这个问题?

谢谢。

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

你好,

根据线程,我们使用“VideoTorchMode”枚举来打开手电筒。据此,我使用带有以下代码的 Windows.Phone.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 中崩溃。

谢谢

4

3 回答 3

6

Microsoft.Phone.Media.Extended 是 WP7 中的私有 API,不打算由 3rd 方开发人员使用。该 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 应用程序添加所需的功能和要求。

于 2012-11-20T13:02:49.523 回答
0

What about getting this assembly from somewhere and adding it to your XAP directly (try asking on XDA developers)? This might work, if it's signed and not requiring any special capabilities.

于 2012-11-19T15:59:13.543 回答
0

如果您使用新 API“录制”视频,那么使用VideoTorchMode枚举可能只是希望您想要创建“手电筒”效果。

于 2012-11-20T00:30:25.073 回答