Diyelim ki Silverlight tarafında kullanıcıdan bir müzik dosyası alıyorsunuz.
Aldığınız bir dosyanın DRM ile telif haklarının korunup korunmadığını nasıl
anlarsınız :) İşte tam da bu soruya cevap ararken hazır cevabı buldum hemen
paylaşiyim istedim blogdan da ;)
Hemen sahneye bir MediaElement alıyorsunuz. Malum zaten müzikle
ilgilendiğimiz için görsel olarak birşey gözükmeyecek ama video ile
uğraşanlarınız için basit bir şekilde MediaElement Collapsed hale getirilebilir.
Kullanıcıdan aldığınız kontrol edilmesi gereken dosyayı direk Source
olarak MediaElement'e verip Play diyorsunuz :) Tabi bunu
yapmadan önce MediaElement'in Volume'u sıfırlamayı da unutmayın :)
[C#]
public MainPage()
{
InitializeComponent();
btn.Click += new RoutedEventHandler(btn_Click);
mymedia.CurrentStateChanged += new RoutedEventHandler(mymedia_CurrentStateChanged);
mymedia.MediaFailed += new EventHandler<ExceptionRoutedEventArgs>
(mymedia_MediaFailed);
}
void mymedia_CurrentStateChanged(object sender, RoutedEventArgs e)
{
if (mymedia.CurrentState == MediaElementState.Individualizing ||
mymedia.CurrentState == MediaElementState.AcquiringLicense )
{
MessageBox.Show("DRM'li bu dosya!!");
}
}
void mymedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
MessageBox.Show("Beklenen
bir hata oluştu :P");
}
İşte bu kadar :) MediaElement'in CurrentStateChanged
eventinde MediaElement'in CurrentState'ine bakıp durumu
anlayabilirsiniz. Individualizing aslında DRM
istemcisinin indirildiği anlamına geliyor, AcquiringLicense ise
malum lisansın alındığını tanımlıyor. Tabi biz zaten DRM'le korunan içerik
oynatmayacağımız için lisans sunucusu gibi ayarları yapmadık ama MediaElement'in
bu state'lere düşmesi zaten bir lisans sunucusuna ulaşmaya çalıştığı anlamına
geliyor. Malum bu sürecin şu durumda tabi ki bir anlamı yok :) ama bizim eldeki
dosyanın DRM'li olup olmadığını anlamamız için yeterli!
Kolay gelsin ;)