// Some Audio Notes: // In the Windows Phone Emulator, playback of video or audio content using the MediaElement control is not supported. // While playing, a MediaElement stops all other media playback on the phone. // Multiple MediaElement controls are NOT supported // Called when you create a new Media('blah') object in JS. public void create(string options) { // Debug.WriteLine("Creating Audio :: " + options); try { MediaOptions mediaOptions; try { string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options); mediaOptions = new MediaOptions(); mediaOptions.Id = optionsString[0]; mediaOptions.Src = optionsString[1]; } catch (Exception) { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Error parsing options into create method")); return; } AudioPlayer audio = new AudioPlayer(this, mediaOptions.Id); Media.players.Add(mediaOptions.Id, audio); DispatchCommandResult(new PluginResult(PluginResult.Status.OK)); } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }
public void getDurationAudio(string options) { try { MediaOptions mediaOptions; try { mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options); } catch (Exception) { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return; } AudioPlayer audio; if (Media.players.ContainsKey(mediaOptions.Id)) { audio = Media.players[mediaOptions.Id]; } else { Debug.WriteLine("ERROR: getDurationAudio could not find mediaPlayer for " + mediaOptions.Id); audio = new AudioPlayer(this, mediaOptions.Id); Media.players.Add(mediaOptions.Id, audio); } Deployment.Current.Dispatcher.BeginInvoke(() => { DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getDuration(mediaOptions.Src))); }); } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }
/// <summary> /// Starts or resume playing audio file /// </summary> public void startPlayingAudio(string options) { try { MediaOptions mediaOptions; try { string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options); mediaOptions = new MediaOptions(); mediaOptions.Id = optionsString[0]; mediaOptions.Src = optionsString[1]; if (optionsString.Length > 2 && optionsString[2] != null) { mediaOptions.Milliseconds = int.Parse(optionsString[2]); } } catch (Exception) { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return; } AudioPlayer audio; if (!Media.players.ContainsKey(mediaOptions.Id)) { audio = new AudioPlayer(this, mediaOptions.Id); Media.players.Add(mediaOptions.Id, audio); } else { //Debug.WriteLine("INFO: startPlayingAudio FOUND mediaPlayer for " + mediaOptions.Id); audio = Media.players[mediaOptions.Id]; } Deployment.Current.Dispatcher.BeginInvoke(() => { try { audio.startPlaying(mediaOptions.Src); DispatchCommandResult(new PluginResult(PluginResult.Status.OK)); } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }); } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }
/// <summary> /// Starts recording and save the specified file /// </summary> public void startRecordingAudio(string options) { try { MediaOptions mediaOptions; try { string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options); mediaOptions = new MediaOptions(); mediaOptions.Id = optionsString[0]; mediaOptions.Src = optionsString[1]; } catch (Exception) { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return; } if (mediaOptions != null) { Deployment.Current.Dispatcher.BeginInvoke(() => { try { AudioPlayer audio; if (!Media.players.ContainsKey(mediaOptions.Id)) { audio = new AudioPlayer(this, mediaOptions.Id); Media.players.Add(mediaOptions.Id, audio); } else { audio = Media.players[mediaOptions.Id]; } if (audio != null) { audio.startRecording(mediaOptions.Src); DispatchCommandResult(new PluginResult(PluginResult.Status.OK)); } else { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Error accessing AudioPlayer for key " + mediaOptions.Id)); } } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }); } else { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); } } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }
private AudioPlayer GetOrCreatePlayerById(string id) { AudioPlayer audio = null; lock (Media.players) { if (!Media.players.TryGetValue(id, out audio)) { audio = new AudioPlayer(this, id); Media.players.Add(id, audio); Debug.WriteLine("Media Created in GetOrCreatePlayerById"); } } return audio; }
/// <summary> /// Starts recording and save the specified file /// </summary> public void startRecordingAudio(string options) { try { MediaOptions mediaOptions; try { string[] optionsString = JSON.JsonHelper.Deserialize <string[]>(options); mediaOptions = new MediaOptions(); mediaOptions.Id = optionsString[0]; mediaOptions.Src = optionsString[1]; } catch (Exception) { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return; } if (mediaOptions != null) { Deployment.Current.Dispatcher.BeginInvoke(() => { try { AudioPlayer audio; if (!Media.players.ContainsKey(mediaOptions.Id)) { audio = new AudioPlayer(this, mediaOptions.Id); Media.players.Add(mediaOptions.Id, audio); } else { audio = Media.players[mediaOptions.Id]; } if (audio != null) { audio.startRecording(mediaOptions.Src); DispatchCommandResult(new PluginResult(PluginResult.Status.OK)); } else { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Error accessing AudioPlayer for key " + mediaOptions.Id)); } } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }); } else { DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); } } catch (Exception e) { DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message)); } }