3

私はWindowsPhone8用のSilverlightで1つのFlashLightアプリケーションを開発しています。現在、「Microsoft.Phone.Media.Extended」アセンブリの使用に関する1つの問題に深く悩まされています。WindowsPhone7用のFlashLightアプリケーションはすでにWindowsPhoneMarketplaceに公開されており、Windows Phone 7では非常に正常に機能していますが、「Microsoft.Phone.Media.Extended」dllが原因でWindowsPhone8では機能しません。

WP7アプリをwp8に変換して実行した後、次のタイプのエラーメッセージが表示されました。

ファイルまたはアセンブリ'Microsoft.Phone.Media.Extended、Version = 7.0.0.0、Culture = neutral、PublicKeyToken=24eec0d8c86cda1e'またはその依存関係の1つを読み込めませんでした。システムは特定のファイルを見つけることができません。」

Windows Phone固有の機能に関する次のリンクによると:http: //msdn.microsoft.com/en-us/library/windowsphone/develop/jj206947 (v = vs.105).aspx

リフレクションを使用してこのアセンブリのAPIにアクセスした場合、APIは公開されていないため、WindowsPhone8デバイスでアプリが失敗する可能性があります。このアセンブリへの呼び出しを削除し、公開されているメディアAPIを使用します。

公開されているメディアAPIの使い方がわかりません。Windows Phone 7でreflactionを使用して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です。そのAPIは存在しないか、WP8で動作します。

WP8懐中電灯の場合、VideoTorchMode=OnのAudioVideoCaptureDevice既知のプロパティを使用します。また、例外やカメラトーチのないデバイスなどの障害には、白い画面を表示して対処してください。

Lumia820とLumia920のカメラのフラッシュをオンにするコードサンプルを次に示します。

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

このアセンブリをどこかから取得してXAPに直接追加するのはどうですか(XDA開発者に聞いてみてください)。署名されていて、特別な機能を必要としない場合、これは機能する可能性があります。

于 2012-11-19T15:59:13.543 に答える
0

新しいAPIを使用してビデオを「記録」する場合、VideoTorchMode列挙を使用すると、「懐中電灯」効果を作成したい場合があります。

于 2012-11-20T00:30:25.073 に答える