2

このアプリケーションには、カメラの懐中電灯を開閉するための 2 つのボタンがあります。このコードを使用していますが、エラーが発生します。

using Microsoft.Devices;

public partial class MainPage : PhoneApplicationPage
{

    PhotoCamera cam = new PhotoCamera(CameraType.FrontFacing); 

    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }


    private void button1_Click(object sender, RoutedEventArgs e)
    {
        cam.FlashMode = FlashMode.On;  
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        cam.FlashMode = FlashMode.Off;
    }
}

このエラーが発生しています:

System.InvalidOperationException は処理されませんでした Message=このインスタンスは完全に初期化されるまで使用できません。この Camera オブジェクトを VideoBrush.SetSource(...) に渡すことで初期化できます。

エラーのスクリーンショットは次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

0

実際には、それほど簡単ではありません... 電話のフラッシュには、PhotoCamera オブジェクトを介してアクセスできます。そこで、最初に試したのは、この方法でフラッシュをオンにすることでした。フォト カメラを使用するには、PhotoCamera と VideoBrush の 2 つのオブジェクトが必要です。

private PhotoCamera _photoCamera;
private VideoBrush _videoBrush;

// Check to see if the camera is available on the device.
if (PhotoCamera.IsCameraTypeSupported(CameraType.Primary))
{
    // Use standard camera on back of device.
    _photoCamera = new PhotoCamera(CameraType.Primary);

    // Event is fired when the PhotoCamera object has been initialized.
    _photoCamera.Initialized += PhotoCamera_Initialized;

    // Add the photo camera to the video source
    _videoBrush = new VideoBrush();
    _videoBrush.SetSource(_photoCamera);
}

private void PhotoCamera_Initialized(object sender, CameraOperationCompletedEventArgs e)
{
    // Check if flash mode is supported on the device.
    if (_photoCamera.IsFlashModeSupported(FlashMode.On))
    {
        // Turn the flash on.
        _photoCamera.FlashMode = FlashMode.On;
        _photoCamera.Focus();
    }
}
于 2012-09-24T09:39:59.410 に答える