Windows Phone 8 (HTC 8X) Фонарик не включается (без использования камеры)

Как начинающий программист задам глупый вопрос. Я хочу включить фонарик Windows Phone 8, не мигая (непрерывно, как и другие приложения-фонарики). Теперь я попытался использовать образец примера
ошибка отражения при попытке для доступа к Microsoft.Phone.Media.Extended

но это не сработало. Я создал кнопку под названием «flash» и вставил код. Скомпилировалось нормально, но мой аппарат HTC 8X не включает фонарик ни на секунду. Что я должен делать ?

Библиотека и код, который я использовал:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using Flashlight_V_0._1.Resources;
using Microsoft.Phone.Media;
using Windows.Phone.Media.Capture; 
using Microsoft.Xna.Framework.Media;
using System.IO;                     

namespace Flashlight_V_0._1
{

    public partial class MainPage : PhoneApplicationPage
    {

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

            // Sample code to localize the ApplicationBar
            //BuildLocalizedApplicationBar();
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            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();
            }

        }

    }
}

Я также пробовал это:

        try
        {

            var _device = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First());

            _device.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);
        }
        catch (Exception ex)
        {
            //
        }

Что я делаю неправильно?


person Nawzer Ahmed    schedule 25.02.2013    source источник
comment
Что вы ожидаете? Получаете ли вы какие-либо исключения в ваших блоках catch, которые могут вызвать вашу проблему?   -  person Patrick    schedule 26.02.2013
comment
Спасибо за ваш ответ. Я ожидал, что фонарик включится, может быть не непрерывным, а может быть миганием. У меня возникает необработанное исключение только при попытке открыть фонарик. Извините, я совершенно новый и извините за плохой английский.   -  person Nawzer Ahmed    schedule 27.02.2013


Ответы (1)


Извините за поздний ответ, получил его назад, но не мог опубликовать. Извините за это. WP7/WP7.5 по умолчанию предоставляет доступ ко всем датчикам. Но в WP8 вам нужно вручную включить возможности датчиков.

  1. Перейдите в обозреватель решений.
  2. Выберите проект.
  3. Выберите Свойства -> WMAppManifest.xml.
  4. Дважды щелкните «WMAppManifest.xml».
  5. Выберите «Возможности»
  6. Включить надлежащие возможности для приложения

Чтобы решить мою проблему, мне пришлось включить две возможности.

  1. ID_CAP_ISV_CAMERA
  2. ID_CAP_MICROPHONE

Спасибо

person Nawzer Ahmed    schedule 04.03.2013