2010-04-19 15 views
5

मैं वेब कैम का उपयोग करने की सिल्वरलाइट 4 का उपयोग कर रहा से लोड पर अनुमति। सबकुछ ठीक काम करता है जब मैं बटन पर क्लिक करके वेब कैमरा शुरू करता हूं, मुझे अनुमति के लिए संकेत मिलता है। मैं शुरू करने के लिए जब उपयोगकर्ता नियंत्रण लोड है, लेकिन किसी कारण से जब मैं लोडेड घटना पर एक ही कोड को चलाने के वेब कैम चाहते हैं, जब निम्न कोड को क्रियान्वित मैं एक शीघ्र नहीं मिलता है: 'सिल्वरलाइट 4 वेब कैम उपयोगकर्ता नियंत्रण

CaptureDeviceConfiguration.RequestDeviceAccess ()

किसी को भी इस के लिए चारों ओर एक काम है?

+0

आप इस के लिए किसी भी समाधान नहीं मिला है? शायद एक जेएस कामकाज? – morsanu

उत्तर

1

सुरक्षा के आसपास स्थानीय उपकरणों तक पहुँचने बहुत तंग है। शुरू कब्जा चाहिए एक उपयोगकर्ता कार्रवाई से पहले आना। भरी हुई घटना से कब्जा शुरू करने की

बजाय, आप एक क्लिक घटना के लिए ले जाने के लिए होगा।

पीछे कोड:

public void StartCam() 
{ 
    VideoCaptureDevice dev = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice(); 
    if(CaptureDeviceConfiguration.RequestDeviceAccess() && 
    CaptureDeviceConfiguration.AllowedDeviceAccess) 
    { 
    CaptureSource capture = new CaptureSource(); 
    capture.VideoCaptureDevice = dev; 

    VideoBrush videoBrush = new VideoBrush(); 
    videoBrush.SetSource(capture); 

    capture.Start(); 

    WebCamRectangle.Fill = videoBrush; 
    } 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    StartCam(); 
} 

Xaml:

<Grid x:Name="LayoutRoot" Background="White"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="49*" /> 
     <RowDefinition Height="251*" /> 
    </Grid.RowDefinitions> 
    <Rectangle Name="WebCamRectangle" 
       Stroke="Black" StrokeThickness="1" Grid.Row="1" /> 
    <Button Content="Start" Height="25" HorizontalAlignment="Left" 
      Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" 
      Width="135" Click="button1_Click" /> 
</Grid> 
2

मैं इस समस्या के लिए एक समाधान मिल गया। मैं स्वचालित रूप से उस बटन पर क्लिक कर रहा हूं जो नियंत्रण की लोड की गई घटना पर वेबकैम स्ट्रीमिंग शुरू करता है।

ButtonAutomationPeer peer = new ButtonAutomationPeer(btnStartWebcam); 
IInvokeProvider invokeProv = 
    peer.GetPattern(PatternInterface.Invoke) 
    as IInvokeProvider; 
invokeProv.Invoke(); 

यह मेरे लिए काम करता है क्योंकि मुझे यूआई पर एक बटन नहीं है। लेकिन मुझे लगता है कि आप एक डमी बना सकते हैं और यदि आवश्यक हो तो इसे छुपाएं।

+0

महान समाधान। धन्यवाद – ILya

संबंधित मुद्दे