private void PlayRecording(object sender, EventArgs e) { Label l = (Label)sender; Java.IO.File tempFile = Java.IO.File.CreateTempFile($"{l.Text}", ".mp3"); Models.AudioRecord ar = (Models.AudioRecord)l.BindingContext; if (!mp.IsPlaying) { FileOutputStream fos = new Java.IO.FileOutputStream(tempFile); fos.Write(ar.AudioClip); fos.Close(); mp.Reset(); //string path = $"{Android.OS.Environment.ExternalStorageDirectory.AbsolutePath}/{l.Text}.mp3"; Java.IO.FileInputStream fis = new Java.IO.FileInputStream(tempFile); mp.SetDataSource(fis.FD); mp.Prepare(); mp.Start(); } else { mp.Stop(); mp.Release(); tempFile.Delete(); } }
private void DeleteRecording(object sender, EventArgs e) { StackLayout parent = (StackLayout)((Xamarin.Forms.Image)sender).Parent; int index = RecordingPane.Children.IndexOf(parent); string newName = EditEntry.Text; Models.AudioRecord ar = user.Recordings[index]; user.Recordings.RemoveAt(index); bool hasDeleted = false; using (var db = new Persistence.SQLiteDb()) { db.DeleteGroupAudioRecordByAudioID(ar.ID); hasDeleted = db.DeleteRecording(ar); } string retVal = hasDeleted ? "Audio Deleted" : "Something went wrong"; DisplayAlert("", retVal, "Okay"); DisplayRecordings(); }
private void StopRecording() { if (recorder != null && recordClicked) { RecordButton.Source = "recordbutton.png"; recorder.Stop(); recorder.Release(); recorder.Dispose(); recorder = null; recordClicked = false; time.Reset(); using (var db = new Persistence.SQLiteDb()) { byte[] audioBytes = System.IO.File.ReadAllBytes(audioFilePath); Models.AudioRecord ar = new Models.AudioRecord() { AudioClip = audioBytes, Title = DateTime.Now.ToString("MM-dd-yyyy-HH;mm;ss"), ID = db.GetRecordings().Count + 1, CreatorId = user.ID }; user.Recordings.Add(ar); db.UpdateUser(user); if (db.CreateRecording(ar)) { Android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "Audio Save", $"Audio saved for user {user.ID}"); } else { DisplayAlert("", "Did not save audio", "OK"); } } } }
private void B_Clicked(object sender, EventArgs e) { //get recordID, groupID and create list on int index = RecordingPane.Children.IndexOf((StackLayout)((Button)sender).Parent); Models.AudioRecord record = user.Recordings[index]; string groupName = ((Picker)RecordingsStackLayout.Children[2]).SelectedItem.ToString(); if (user.Groups.Where(x => x.GroupName == groupName).ToList().Count() > 0) { Group g; int count = 0; using (var db = new Persistence.SQLiteDb()) { g = db.GetGroupByName(groupName); count = db.GetGroupAudioRecords().Count(); } GroupAudioRecord gar = new GroupAudioRecord { AudioRecordId = record.ID, GroupId = g.ID, IsGroupAudioCreator = true }; bool hasShared = false; using (var db = new Persistence.SQLiteDb()) { hasShared = db.CreateGroupAudioRecord(gar); } string retVal = hasShared ? "Audio shared" : "Something went wrong"; DisplayAlert("", retVal, "Okay"); } else { DisplayAlert("", "That group doesn't exist", "Okay"); } }