1

初心者プログラマーとして、ばかげた質問をします。Windows Phone 8 の懐中電灯を点滅せずにオンにしたい (他の懐中電灯アプリのように連続)。ここで、 Microsoft.Phone.Media.Extended にアクセスしようとしたときに Reflection が失敗するサンプル例を使用しようとしました。

しかし、うまくいきませんでした。「flash」というボタンを作成し、コードを貼り付けました。正常にコンパイルされましたが、私のデバイスの HTC 8X では、フラッシュライトが 1 秒も点灯しません。どうすればいいですか?

私が使用したライブラリとコード:

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)
        {
            //
        }

私は何を間違っていますか?

4

1 に答える 1

1

返信が遅くなってすみません、前に取得しましたが、投稿できませんでした。申し訳ありません。WP7 / WP7.5は、すべてのセンサーにアクセスするためのデフォルトを提供します。ただし、WP8では、センサー機能を手動で有効にする必要があります。

  1. ソリューションエクスプローラーに移動します。
  2. プロジェクトを選択します。
  3. [プロパティ]->[WMAppManifest.xml]を選択します
  4. 「WMAppManifest.xml」をダブルクリックします
  5. 「機能」を選択します
  6. アプリの適切な機能を有効にする

問題を解決するには、2つの機能を有効にする必要がありました。

  1. ID_CAP_ISV_CAMERA
  2. ID_CAP_MICROPHONE

ありがとうございました

于 2013-03-04T00:09:34.090 に答える