/// <summary> /// Save the audio file to media library. /// </summary> /// <param name="sender">Save menu item</param> /// <param name="e">Event arguments</param> private void Save_Click(object sender, EventArgs e) { AudioFileModel selected = (AudioFileModel)AudioFilesList.SelectedItem; if (selected != null) { var library = new MediaLibrary(); Song s = library.SaveSong( new Uri(selected.FileName, UriKind.RelativeOrAbsolute), null, /* * new SongMetadata() * { * ArtistName = "ArtistName", * AlbumArtistName = "AlbumArtistName", * Name = "SongName", * AlbumName = "AlbumName", * Duration = TimeSpan.FromSeconds(10), * TrackNumber = 1, * AlbumReleaseDate = DateTime.Now, * GenreName = "Genre" * }, */ SaveSongOperation.CopyToLibrary); } }
/// <summary> /// Called when an audio file is selected. /// </summary> /// <param name="sender">AudioFilesList (LongListSelector).</param> /// <param name="e">Event arguments.</param> void OnAudioFileSelected(Object sender, SelectionChangedEventArgs e) { AudioFileModel selected = (AudioFileModel)AudioFilesList.SelectedItem; if (App.AudioModel.IsPlaying) { App.AudioManager.StopPlayback(); } if (selected != null) { selectedFileName = selected.FileName; StopPlayButton.IsEnabled = true; SaveButton.IsEnabled = true; DeleteButton.IsEnabled = true; } }
/// <summary> /// Start/Stop the audio playback. /// </summary> /// <param name="sender">StopPlay menu item</param> /// <param name="e">Event arguments</param> private void StopPlay_Click(object sender, EventArgs e) { if (App.AudioModel.IsPlaying) { App.AudioManager.StopPlayback(); } else { if (selectedFileName.Length == 0) { MessageBox.Show("Select an audio file first."); } else { AudioFileModel selected = (AudioFileModel)AudioFilesList.SelectedItem; Boolean useWasapi = selected.SampleRate != 16000 || selected.ChannelCount != 1; App.AudioManager.StartPlayback(selectedFileName, useWasapi); } } }
/// <summary> /// Loads local audio information. /// </summary> public void ReadAudioFileInfo() { AudioFiles.Clear(); // Load the image which was filtered from isolated app storage. System.IO.IsolatedStorage.IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); try { string[] fileNames = myStore.GetFileNames(); foreach (string s in fileNames) { AudioFileModel audioFile = new AudioFileModel(); audioFile.FileName = s; IsolatedStorageFileStream fileStream = myStore.OpenFile(s, System.IO.FileMode.Open, System.IO.FileAccess.Read); audioFile.FileSize = "" + fileStream.Length + " bytes"; // Read sample rate and channel count Encoding encoding = Encoding.UTF8; byte[] bytes = new byte[4]; // channel count fileStream.Seek(22, SeekOrigin.Begin); fileStream.Read(bytes, 0, 2); audioFile.ChannelCount = BitConverter.ToInt16(bytes, 0); // sample rate fileStream.Read(bytes, 0, 4); audioFile.SampleRate = BitConverter.ToInt32(bytes, 0); audioFile.FileLength = "" + fileStream.Length / (2 * audioFile.SampleRate * audioFile.ChannelCount) + " seconds"; AudioFiles.Add(audioFile); fileStream.Dispose(); } } catch { MessageBox.Show("Error while trying to read audio files."); } }
/// <summary> /// Delete the audio file. /// </summary> /// <param name="sender">Delete menu item</param> /// <param name="e">Event arguments</param> private void Delete_Click(object sender, EventArgs e) { AudioFileModel selected = (AudioFileModel)AudioFilesList.SelectedItem; if (selected != null) { IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); try { myStore.DeleteFile(selected.FileName); App.AudioModel.AudioFiles.Remove(selected); selectedFileName = ""; } catch { MessageBox.Show("Error while deleting audio file " + selected.FileName + "."); } StopPlayButton.IsEnabled = false; SaveButton.IsEnabled = false; DeleteButton.IsEnabled = false; ForwardButton.IsEnabled = false; } }