You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2013/11/01 02:27:38 UTC
[43/50] [abbrv] git commit: update Audio/Media plugins
update Audio/Media plugins
Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/57dc0253
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/57dc0253
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/57dc0253
Branch: refs/heads/2.9.x
Commit: 57dc02537700712063a6a0ec1dd601b7d5583252
Parents: bfd3894
Author: purplecabbage <pu...@gmail.com>
Authored: Tue Oct 29 16:56:12 2013 -0700
Committer: purplecabbage <pu...@gmail.com>
Committed: Tue Oct 29 16:56:12 2013 -0700
----------------------------------------------------------------------
common/Plugins/AudioPlayer.cs | 48 ++++++---
common/Plugins/Media.cs | 194 ++++++++++++++++++++++---------------
2 files changed, 154 insertions(+), 88 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/57dc0253/common/Plugins/AudioPlayer.cs
----------------------------------------------------------------------
diff --git a/common/Plugins/AudioPlayer.cs b/common/Plugins/AudioPlayer.cs
index cc65939..f103cf5 100644
--- a/common/Plugins/AudioPlayer.cs
+++ b/common/Plugins/AudioPlayer.cs
@@ -27,6 +27,7 @@ using System.Windows.Resources;
namespace WPCordovaClassLib.Cordova.Commands
{
+
/// <summary>
/// Implements audio record and play back functionality.
/// </summary>
@@ -62,6 +63,7 @@ namespace WPCordovaClassLib.Cordova.Commands
#endregion
+
/// <summary>
/// The AudioHandler object
/// </summary>
@@ -77,6 +79,7 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
DispatcherTimer dtXna;
+
/// <summary>
/// Output buffer
/// </summary>
@@ -128,6 +131,7 @@ namespace WPCordovaClassLib.Cordova.Commands
this.id = id;
}
+
/// <summary>
/// Destroys player and stop audio playing or recording
/// </summary>
@@ -194,8 +198,26 @@ namespace WPCordovaClassLib.Cordova.Commands
this.recorder.BufferDuration = TimeSpan.FromMilliseconds(500);
this.buffer = new byte[recorder.GetSampleSizeInBytes(this.recorder.BufferDuration)];
this.recorder.BufferReady += new EventHandler<EventArgs>(recorderBufferReady);
- this.memoryStream = new MemoryStream();
- this.memoryStream.InitializeWavStream(this.recorder.SampleRate);
+ MemoryStream stream = new MemoryStream();
+ this.memoryStream = stream;
+ int numBits = 16;
+ int numBytes = numBits / 8;
+
+ // inline version from AudioFormatsHelper
+ stream.Write(System.Text.Encoding.UTF8.GetBytes("RIFF"), 0, 4);
+ stream.Write(BitConverter.GetBytes(0), 0, 4);
+ stream.Write(System.Text.Encoding.UTF8.GetBytes("WAVE"), 0, 4);
+ stream.Write(System.Text.Encoding.UTF8.GetBytes("fmt "), 0, 4);
+ stream.Write(BitConverter.GetBytes(16), 0, 4);
+ stream.Write(BitConverter.GetBytes((short)1), 0, 2);
+ stream.Write(BitConverter.GetBytes((short)1), 0, 2);
+ stream.Write(BitConverter.GetBytes(this.recorder.SampleRate), 0, 4);
+ stream.Write(BitConverter.GetBytes(this.recorder.SampleRate * numBytes), 0, 4);
+ stream.Write(BitConverter.GetBytes((short)(numBytes)), 0, 2);
+ stream.Write(BitConverter.GetBytes((short)(numBits)), 0, 2);
+ stream.Write(System.Text.Encoding.UTF8.GetBytes("data"), 0, 4);
+ stream.Write(BitConverter.GetBytes(0), 0, 4);
+
this.recorder.Start();
FrameworkDispatcher.Update();
this.SetState(PlayerState_Running);
@@ -284,7 +306,7 @@ namespace WPCordovaClassLib.Cordova.Commands
{
this.player.Stop(); // stop it!
}
-
+
this.player.Source = null; // Garbage collect it.
this.player.MediaOpened += MediaOpened;
this.player.MediaEnded += MediaEnded;
@@ -312,7 +334,7 @@ namespace WPCordovaClassLib.Cordova.Commands
{
using (BinaryReader br = new BinaryReader(fileResourceStreamInfo.Stream))
{
- byte[] data = br.ReadBytes((int)fileResourceStreamInfo.Stream.Length);
+ byte[] data = br.ReadBytes((int)fileResourceStreamInfo.Stream.Length);
string[] dirParts = filePath.Split('/');
string dirName = "";
@@ -410,10 +432,7 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
private void MediaFailed(object sender, RoutedEventArgs arg)
{
- if (player != null)
- {
- player.Stop();
- }
+ player.Stop();
InvokeCallback(MediaError, MediaErrorStartingPlayback, false);
//this.handler.InvokeCustomScript(new ScriptCallback(CallbackFunction, this.id, MediaError.ToString(), "Media failed"),false);
}
@@ -558,12 +577,17 @@ namespace WPCordovaClassLib.Cordova.Commands
/// <returns></returns>
private void SaveAudioClipToLocalStorage()
{
- if (this.memoryStream == null || this.memoryStream.Length <= 0)
+ if (memoryStream == null || memoryStream.Length <= 0)
{
return;
}
- this.memoryStream.UpdateWavStream();
+ long position = memoryStream.Position;
+ memoryStream.Seek(4, SeekOrigin.Begin);
+ memoryStream.Write(BitConverter.GetBytes((int)memoryStream.Length - 8), 0, 4);
+ memoryStream.Seek(40, SeekOrigin.Begin);
+ memoryStream.Write(BitConverter.GetBytes((int)memoryStream.Length - 44), 0, 4);
+ memoryStream.Seek(position, SeekOrigin.Begin);
try
{
@@ -589,7 +613,7 @@ namespace WPCordovaClassLib.Cordova.Commands
//TODO: log or do something else
throw;
}
- }
+ }
#region Xna loop
/// <summary>
@@ -620,4 +644,4 @@ namespace WPCordovaClassLib.Cordova.Commands
#endregion
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/57dc0253/common/Plugins/Media.cs
----------------------------------------------------------------------
diff --git a/common/Plugins/Media.cs b/common/Plugins/Media.cs
index 5de4884..74d53af 100644
--- a/common/Plugins/Media.cs
+++ b/common/Plugins/Media.cs
@@ -53,6 +53,8 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
[DataMember(Name = "milliseconds")]
public int Milliseconds { get; set; }
+
+ public string CallbackId { get; set; }
}
/// <summary>
@@ -60,25 +62,26 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void release(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
- MediaOptions mediaOptions;
+ MediaOptions mediaOptions = new MediaOptions();
try
{
string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
- mediaOptions = new MediaOptions();
mediaOptions.Id = optionsString[0];
+ callbackId = mediaOptions.CallbackId = optionsString[1];
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
return;
}
if (!Media.players.ContainsKey(mediaOptions.Id))
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK, false));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, false), callbackId);
return;
}
@@ -89,39 +92,58 @@ namespace WPCordovaClassLib.Cordova.Commands
AudioPlayer audio = Media.players[mediaOptions.Id];
Media.players.Remove(mediaOptions.Id);
audio.Dispose();
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, true), mediaOptions.CallbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), mediaOptions.CallbackId);
}
});
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
+ 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);
+ }
+ }
+
+
+
+ return audio;
+ }
+
/// <summary>
/// Starts recording and save the specified file
/// </summary>
public void startRecordingAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
- MediaOptions mediaOptions;
+ MediaOptions mediaOptions = new MediaOptions();
try
{
string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
- mediaOptions = new MediaOptions();
mediaOptions.Id = optionsString[0];
mediaOptions.Src = optionsString[1];
+ callbackId = mediaOptions.CallbackId = optionsString[2];
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), mediaOptions.CallbackId);
return;
}
@@ -146,30 +168,31 @@ namespace WPCordovaClassLib.Cordova.Commands
if (audio != null)
{
audio.startRecording(mediaOptions.Src);
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), mediaOptions.CallbackId);
}
else
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Error accessing AudioPlayer for key " + mediaOptions.Id));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR,
+ "Error accessing AudioPlayer for key " + mediaOptions.Id), mediaOptions.CallbackId);
}
-
-
+
+
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), mediaOptions.CallbackId);
}
});
}
else
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), mediaOptions.CallbackId);
}
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
@@ -178,9 +201,13 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void stopRecordingAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
+
try
{
- string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+ string[] optStrings = JSON.JsonHelper.Deserialize<string[]>(options);
+ string mediaId = optStrings[0];
+ callbackId = optStrings[1];
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
try
@@ -191,27 +218,31 @@ namespace WPCordovaClassLib.Cordova.Commands
audio.stopRecording();
Media.players.Remove(mediaId);
}
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
}
}
public void setVolume(string options) // id,volume
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
string id = optionsString[0];
- double volume = double.Parse(optionsString[1]);
+ double volume = 0.0d;
+ double.TryParse(optionsString[1], out volume);
+
+ callbackId = optionsString[2];
if (Media.players.ContainsKey(id))
{
@@ -224,15 +255,15 @@ namespace WPCordovaClassLib.Cordova.Commands
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Error parsing options into setVolume method"));
- return;
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION,
+ "Error parsing options into setVolume method"), callbackId);
}
}
@@ -241,10 +272,10 @@ namespace WPCordovaClassLib.Cordova.Commands
// 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.
+ // Called when you create a new Media('blah.wav') object in JS.
public void create(string options)
{
- // Debug.WriteLine("Creating Audio :: " + options);
+ string callbackId = this.CurrentCommandCallbackId;
try
{
MediaOptions mediaOptions;
@@ -254,21 +285,22 @@ namespace WPCordovaClassLib.Cordova.Commands
mediaOptions = new MediaOptions();
mediaOptions.Id = optionsString[0];
mediaOptions.Src = optionsString[1];
+ callbackId = mediaOptions.CallbackId = optionsString[2];
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Error parsing options into create method"));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION,
+ "Error parsing options into create method"), callbackId);
return;
}
- AudioPlayer audio = new AudioPlayer(this, mediaOptions.Id);
- Media.players.Add(mediaOptions.Id, audio);
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ GetOrCreatePlayerById(mediaOptions.Id);
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
@@ -277,6 +309,7 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void startPlayingAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
MediaOptions mediaOptions;
@@ -286,47 +319,38 @@ namespace WPCordovaClassLib.Cordova.Commands
mediaOptions = new MediaOptions();
mediaOptions.Id = optionsString[0];
mediaOptions.Src = optionsString[1];
- if (optionsString.Length > 2 && optionsString[2] != null)
+ int msec = 0;
+ if (int.TryParse(optionsString[2], out msec))
{
- mediaOptions.Milliseconds = int.Parse(optionsString[2]);
+ mediaOptions.Milliseconds = msec;
}
+ callbackId = mediaOptions.CallbackId = optionsString[3];
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
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];
- }
+ AudioPlayer audio = GetOrCreatePlayerById(mediaOptions.Id);
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
try
{
audio.startPlaying(mediaOptions.Src);
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
@@ -336,6 +360,7 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void seekToAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
MediaOptions mediaOptions;
@@ -345,14 +370,17 @@ namespace WPCordovaClassLib.Cordova.Commands
string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
mediaOptions = new MediaOptions();
mediaOptions.Id = optionsString[0];
- if (optionsString.Length > 1 && optionsString[1] != null)
+ int msec = 0;
+ if (int.TryParse(optionsString[2], out msec))
{
- mediaOptions.Milliseconds = int.Parse(optionsString[1]);
+ mediaOptions.Milliseconds = msec;
}
+ callbackId = mediaOptions.CallbackId = optionsString[3];
+
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
return;
}
@@ -370,17 +398,17 @@ namespace WPCordovaClassLib.Cordova.Commands
Debug.WriteLine("ERROR: seekToAudio could not find mediaPlayer for " + mediaOptions.Id);
}
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
@@ -389,10 +417,12 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void pausePlayingAudio(string options)
{
-
+ string callbackId = this.CurrentCommandCallbackId;
try
{
- string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+ string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+ string mediaId = optionsString[0];
+ callbackId = optionsString[1];
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
@@ -408,11 +438,11 @@ namespace WPCordovaClassLib.Cordova.Commands
Debug.WriteLine("ERROR: pausePlayingAudio could not find mediaPlayer for " + mediaId);
}
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
@@ -420,7 +450,7 @@ namespace WPCordovaClassLib.Cordova.Commands
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
}
@@ -432,9 +462,12 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void stopPlayingAudio(String options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
- string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+ string[] optionsStrings = JSON.JsonHelper.Deserialize<string[]>(options);
+ string mediaId = optionsStrings[0];
+ callbackId = optionsStrings[1];
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
try
@@ -449,18 +482,18 @@ namespace WPCordovaClassLib.Cordova.Commands
Debug.WriteLine("stopPlaying could not find mediaPlayer for " + mediaId);
}
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK), callbackId);
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
}
}
@@ -469,9 +502,12 @@ namespace WPCordovaClassLib.Cordova.Commands
/// </summary>
public void getCurrentPositionAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
- string mediaId = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+ string[] optionsStrings = JSON.JsonHelper.Deserialize<string[]>(options);
+ string mediaId = optionsStrings[0];
+ callbackId = optionsStrings[1];
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
try
@@ -479,22 +515,22 @@ namespace WPCordovaClassLib.Cordova.Commands
if (Media.players.ContainsKey(mediaId))
{
AudioPlayer audio = Media.players[mediaId];
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getCurrentPosition()));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getCurrentPosition()), callbackId);
}
else
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK, -1));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, -1), callbackId);
}
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
});
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
return;
}
}
@@ -503,21 +539,27 @@ namespace WPCordovaClassLib.Cordova.Commands
/// <summary>
/// Gets the duration of the audio file
/// </summary>
-
+
[Obsolete("This method will be removed shortly")]
public void getDurationAudio(string options)
{
+ string callbackId = this.CurrentCommandCallbackId;
try
{
MediaOptions mediaOptions;
try
{
- mediaOptions = JSON.JsonHelper.Deserialize<MediaOptions>(options);
+ string[] optionsString = JSON.JsonHelper.Deserialize<string[]>(options);
+
+ mediaOptions = new MediaOptions();
+ mediaOptions.Id = optionsString[0];
+ mediaOptions.Src = optionsString[1];
+ callbackId = mediaOptions.CallbackId = optionsString[2];
}
catch (Exception)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION), callbackId);
return;
}
@@ -535,13 +577,13 @@ namespace WPCordovaClassLib.Cordova.Commands
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getDuration(mediaOptions.Src)));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.OK, audio.getDuration(mediaOptions.Src)), callbackId);
});
}
catch (Exception e)
{
- DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message));
+ DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, e.Message), callbackId);
}
}
}
-}
+}
\ No newline at end of file