Turkcell | Geleceği Yazanlar

MediaElement'e Seekbar nasıl eklerim

Merhaba arkadaşlar ben windows phone 8 üzerinde media uygulaması geliştirmekteyim. MediaElement üzerinde kontroller bulunmadığı için oynattığım medyayı ileri alamıyorum. Bunu kendi içinde olan MediaPlayerLauncher ile yapabiliyorum, fakat MediaElement üzerinde olmuyor. Kendim Slider ekleyip birşeyler yapmaya çalıştım sadece ileri ve geri atlamayı yapabildim ama video oynadıkca Slider'ın ilerlemesini yapamadım yardımcı olursanız sevinirim.

Bu benim Playerım:

 

Buda istediğim şekilde olan MediaPlayerLauncher:



Bunlarda kodlarım


Xaml:


	<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <MediaElement x:Name="player1" MediaOpened="player1_MediaOpened" CurrentStateChanged="player1_CurrentStateChanged" /> <ListBox x:Name="alternatifliste" FontSize="20" FontStyle="Italic" FontWeight="Bold" Foreground="White" Margin="677,98,10,153" SelectionChanged="alternatifliste_SelectionChanged" /> </Grid> <Button x:Name="play" Content="play" HorizontalAlignment="Left" Margin="94,336,0,0" Grid.Row="1" VerticalAlignment="Top" Click="play_Click"/> <Button x:Name="stop" Content="stop" HorizontalAlignment="Left" Margin="331,336,0,0" Grid.Row="1" VerticalAlignment="Top" Click="stop_Click"/> <Slider Name="timelineSlider" Margin="0,68,0,244" Grid.Row="1" ValueChanged="timelineSlider_ValueChanged" /> </Grid>
	

 

Cs:


private void player1_MediaOpened(object sender, RoutedEventArgs e)


	{ TimeSpan ts = player1.NaturalDuration.TimeSpan; timelineSlider.Maximum = ts.TotalSeconds; timelineSlider.SmallChange = 1; timelineSlider.LargeChange = Math.Min(10, ts.Seconds / 10); }


	private void seekBar_DragCompleted(object sender, DragCompletedEventArgs e)


	{


	player1.Position = TimeSpan.FromSeconds(timelineSlider.Value);


	}


	private void timelineSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)


	{


	player1.Position = TimeSpan.FromSeconds(timelineSlider.Value);


	} private void player1_CurrentStateChanged(object sender, RoutedEventArgs e)


	{


	Yapmaya çalışıp yapamadığım bölüm(medya oynadıkça sliderın hareket etmesi)


	//timelineSlider.Value = player1.Position.Seconds;


	}
	

    0

    Murat

    29 Eylül 2014

    Kendi soruma kendim cevap vereyim diğer arkadaşlarda faydalansın, bunlar xaml kodları,slider için tasarım kullandım ayrıntılı bilgi burda:http://stackoverflow.com/questions/25915811/how-to-add-mediaelement-seek-bar/25926077#25926077

     

     <MediaElement x:Name="player1" MediaOpened="player1_MediaOpened" CurrentStateChanged="player1_CurrentStateChanged_1" />
    
    
    	      <Canvas x:Name="playercontrolcanvas" Margin="0,327,0,0" >
    	        <Canvas.Background>
    	          <SolidColorBrush Color="#FF4B4B4B" Opacity="0.03"/>
    	        </Canvas.Background>
    	       
    
    
    	        <Slider x:Name="timelineSlider" Style="{StaticResource Chubs_SliderStyle}" VerticalAlignment="Bottom" ManipulationCompleted="timelineSlider_ManipulationCompleted" Width="800" Canvas.Top="80" >
    	          <Slider.Background>
    	            <SolidColorBrush Color="#FF1F1F1F" Opacity="0.5"/>
    	          </Slider.Background>
    	        </Slider>
    	        <TextBlock x:Name="time" Grid.Row="1" TextWrapping="Wrap" Text="00:00" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="37" Canvas.Top="121">
    	          <TextBlock.Foreground>
    	            <SolidColorBrush Color="White" Opacity="0.5"/>
    	          </TextBlock.Foreground>
    	        </TextBlock>
    
    
    	      </Canvas>

     

    
    
    
    	private void player1_MediaOpened(object sender, RoutedEventArgs e)
    	 {
    	 TimeSpan ts = player1.NaturalDuration.TimeSpan;
    	 timelineSlider.Maximum = ts.TotalSeconds;
    	 timelineSlider.SmallChange = 1;
    	 timelineSlider.LargeChange = Math.Min(10, ts.Seconds / 10);
    	 SetupTimer();
    	 }
    	 private void seekBar_DragCompleted(object sender, DragCompletedEventArgs e)
    	 {
    	 player1.Position = TimeSpan.FromSeconds(timelineSlider.Value);
    	 }
    
    
    	 
    	 private DispatcherTimer _timer;
    
    
    	 private void SetupTimer()
    	 {
    	 _timer = new DispatcherTimer();
    	 _timer.Interval = TimeSpan.FromSeconds(0.250);
    	 StartTimer();
    	 }
    	 private bool _sliderpressed = false;
    	 private void _timer_Tick(object sender, object e)
    	 {
    	 if (!_sliderpressed)
    	 {
    	 timelineSlider.Value = player1.Position.TotalSeconds;
    	 TimeSpan t = TimeSpan.FromSeconds(player1.Position.TotalSeconds);
    	 string suankisure = string.Format("{0:D2}:{1:D2}:{2:D2}",
    	 t.Hours,
    	 t.Minutes,
    	 t.Seconds);
    	 TimeSpan nd = TimeSpan.FromSeconds(player1.NaturalDuration.TimeSpan.TotalSeconds);
    	 string toplamsure = string.Format("{0:D2}:{1:D2}:{2:D2}",
    	 nd.Hours,
    	 nd.Minutes,
    	 nd.Seconds);
    
    
    	 time.Text = suankisure + "/" + toplamsure;
    	 }
    	 }
    
    
    	 private void StartTimer()
    	 {
    	 _timer.Tick += _timer_Tick;
    	 _timer.Start();
    	 }
    
    
    	 private void StopTimer()
    	 {
    	 _timer.Stop();
    	 _timer.Tick -= _timer_Tick;
    	 }
    
    
    	 
    	 
    	 
    
    
    	 private void timelineSlider_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
    	 {
    	 player1.Position = TimeSpan.FromSeconds(timelineSlider.Value); 
    	 }
    	 
    	 private void player1_CurrentStateChanged_1(object sender, RoutedEventArgs e)
    	 {
    	 
    	 if (player1.CurrentState == MediaElementState.Playing)
    	 {
    	 if (_sliderpressed)
    	 {
    	 _timer.Stop();
    	 }
    	 else
    	 {
    	 _timer.Start();
    	 }
    	 }
    	 else if(player1.CurrentState == MediaElementState.Paused)
    	 {
    	 _timer.Stop();
    	 }
    	 else if (player1.CurrentState == MediaElementState.Stopped)
    	 {
    	 _timer.Stop();
    	 }
    	 else if (player1.CurrentState == MediaElementState.Closed)
    	 {
    	 _timer.Stop();
    	 }
    	 }
    
    
    	

     

    Buda görüntüsü:

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.