using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
//MediaPlayerLauncher
using Microsoft.Phone.Tasks;

namespace SLCameraVideo
{
    public partial class MainPage : PhoneApplicationPage
    {
        //Kamera anlegen
        CaptureSource kamera;
        //FileSink zum speichern des Videos
        FileSink fileS;
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            //Kamera erzeugen
            kamera = new System.Windows.Media.CaptureSource();
            //Default Kamera verwenden
            kamera.VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
            //Default Microfon verwenden
            kamera.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice();
            //Vorschau festlegen
            VorschauBrush.SetSource(kamera);
            //Kamera starten
            kamera.Start();
        }

        private void Record_Click(object sender, RoutedEventArgs e)
        {
            //Die Kamera muss erst beendet werden
            kamera.Stop();
            //FileSink erstellen
            fileS = new FileSink();
            //Datei festlegen
            fileS.IsolatedStorageFileName = "aufnahme.mp4";
            //Aufnahmequelle festlegen
            fileS.CaptureSource = kamera;
            //Die Kamera und somit auch dei Aufnahme starten
            kamera.Start();
        }

        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            //Kamera (und ggf. die Aufnahme) stoppen
            kamera.Stop();
        }

        private void Play_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //Die Aufnahme über den Launcher starten.
                MediaPlayerLauncher mpl = new MediaPlayerLauncher();
                mpl.Media = new Uri("aufnahme.mp4", UriKind.Relative);
                mpl.Location = MediaLocationType.Data;
                mpl.Controls = MediaPlaybackControls.All;
                mpl.Orientation = MediaPlayerOrientation.Landscape;
                mpl.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}