1

Я хотел бы спросить, как можно получить все доступные разрешения камеры в приложении Windows Phone 8.1 (для Silverlight и WinRT). Я хотел бы использовать:Как получить доступное разрешение камеры?

Windows.Phone.Media.Capture.PhotoCaptureDevice.GetAvailableCaptureResolutions(
    Windows.Phone.Media.Capture.CameraSensorLocation.Back); 

Но я получаю сообщение, что пространство имен Windows.Phone.Media.Capture является устаревшим и может не поддерживаться в следующей версии Windows Phone, начиная с Windows Phone Синий и что я должен использовать ОС Windows .Media.Capture вместо этого. Однако Windows.Media.Capture не позволяет мне получать доступные разрешения камеры, поэтому я хотел бы спросить, как это решить.

спасибо.

ответ

3

Это можно сделать так:

Сначала давайте определим метод, чтобы получить Device ID, который будет использоваться, чтобы сделать снимок:

private static async Task<DeviceInformation> GetCameraID(Windows.Devices.Enumeration.Panel desiredCamera) 
{ 
    DeviceInformation deviceID = (await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture)) 
      .FirstOrDefault(x => x.EnclosureLocation != null && x.EnclosureLocation.Panel == desiredCamera); 

    if (deviceID != null) return deviceID; 
    else throw new Exception(string.Format("Camera of type {0} doesn't exist.", desiredCamera)); 
} 

Затем после инициализации камеры - мы можем прочтите резолюции следующим образом:

private async void InitCameraBtn_Click(object sender, RoutedEventArgs e) 
{ 
    var cameraID = await GetCameraID(Windows.Devices.Enumeration.Panel.Back); 
    captureManager = new MediaCapture(); 

    await captureManager.InitializeAsync(new MediaCaptureInitializationSettings 
     { 
      StreamingCaptureMode = StreamingCaptureMode.Video, 
      PhotoCaptureSource = PhotoCaptureSource.VideoPreview, 
      AudioDeviceId = string.Empty, 
      VideoDeviceId = cameraID.Id 
     }); 
    // Get resolutions 
    var resolutions = captureManager.VideoDeviceController.GetAvailableMediaStreamProperties(MediaStreamType.Photo).Select(x => x as VideoEncodingProperties).ToList(); 
    // get width and height: 
    uint width = resolutions[0].Width; 
    uint height = resolutions[0].Height; 
} 
+0

Спасибо Рамас. –

Смежные вопросы