2012-06-04 12 views
5

Piszę moją pierwszą aplikację w stylu Metro. Kilka dni temu napisałem kod do robienia zdjęć na podstawie tego przykładu (here) i to działa. Wraz z wydaniem wersji Release 8 systemu Windows 8 i kandydata do wydania Visual Studio 2012, ten sam fragment nie działa. Wygląda na to, że jest problem z dostępem do kamery, ale w Package.appxmanifest sprawdziłem możliwości kamery internetowej. XAML:Aplikacja do przechwytywania multimediów w stylu Metro pod numerem

<Canvas x:Name="previewCanvas1" Width="320" Height="240" Background='Gray'> 
<Image x:Name="imageElement1" Width="320" Height="240" Visibility="Collapsed"/> 
<CaptureElement x:Name="previewElement1" Width="320" Height="240" /> 
</Canvas> 
<StackPanel Orientation="Horizontal" Margin="20" HorizontalAlignment="Center"> 
<Button Width="120" x:Name="btnStartPreview2" Click="btnStartPreview_Click" IsEnabled="true" Margin="0,0,10,0" Background="#FFC3C3C3">Da Webcam</Button> 
<Button Width="120" x:Name="btnTakePhoto2" Click="btnTakePhoto_Click" IsEnabled="false" Margin="0,0,10,0" Background="#FFC3C3C3">Scatta</Button> 
</StackPanel> 

I kod za:

MediaCapture mediaCaptureMgr; 
async void btnStartPreview_Click(Object sender, RoutedEventArgs e) 
     { 
      try 
      { 

       mediaCaptureMgr = new Windows.Media.Capture.MediaCapture(); 
       await mediaCaptureMgr.InitializeAsync(); 

       previewElement1.Source = mediaCaptureMgr; 

       await mediaCaptureMgr.StartPreviewAsync(); 

      } 
      catch (Exception ex) 
      { 
       throw new Exception(ex.Message); 
      } 
     } 

wyjątek to: "Odmowa dostępu (Wyjątek od HRESULT: 0x80070005 (E_ACCESSDENIED))", ale jak wspomniano, zdolność kamery internetowej jest sprawdzana!

Odpowiedz

9

Rozwiązałem to. Aby korzystać z kamery internetowej, musisz wskazać w package.appxmanifest, że aplikacja musi uzyskać dostęp do kamery internetowej i mikrofonu. Dziwne ale prawdziwe!

+1

Zaakceptuj tę odpowiedź. :) –

+0

Możesz ustawić klasę MediaCapture tak, aby przechwytywała wideo po wywołaniu InitializeAsync(); To powiedziawszy, otrzymywałem te wszystkie szalone nieznane błędy, prawdopodobnie z różnych powodów. – user1103976

+0

Nawet po sprawdzeniu mikrofonu, pojawia się ten sam błąd. –

Powiązane problemy