开发者

Using phonegap audio api in gwt

I am wanting to use the phonegap audio api in GWT using JSNI.I cannot figure out how to code the methods in JSNI.

Wondering if anyone know of any tutorials.They javascr开发者_开发知识库ipt methods are really pretty simple.

http://docs.phonegap.com/phonegap_media_media.md.html


Basically it sounds like it would be something like this:

public final class Media extends JavaScriptObject {
  protected Media() {}

  public static native final Media newInstance(String src, Command command) /*-{
    var callback = function() { command.execute(); };
    return new Media(src, callback);
  }-*/;

  public native final void getCurrentPosition(AsyncCallback<String> command) /*-{
    var callback = function(position) { command.onSuccess('' + position); };
    this.getCurrentPosition(callback);
  }-*/;
  public native final void play() /*-{
    this.play();
  }-*/;
  //... more methods here
}

Usage:

Media m = Media.newInstance("http://www.example.com/src.mp3", new Command() {
  @Override
  public void execute() {
    // Code executed after Media is created.
  }
});
m.getCurrentPosition(new AsyncCallback<String>() {
  @Override
  public void onSuccess(String position) {
    Window.alert(position);
  }
});
m.play();

That's a rough sketch, if you know more about what the type being passed to the callback is you can do nicer things like have it be an int or another JS Overlay Type.

The API is kind of weird because everything is apparently asynchronous, but that's life.

Once you've gotten the hang of writing GWT JSNI bindings it's pretty straightforward.

If you end up getting further down this road, it would be awesome if you open-sourced your GWT wrapper library so other GWT developers could write some iPhone/Android apps.


I just need the play method really.I am not quite as knowledgeable to do this correctly I guess.That code looks really foreign to me :-)

Still cannot accept your answer.The site does not recognize me it is strange.

I get the following error when trying to use the media in my onModuleLoad

The constructor TESTPHONEGAP.Media(String, new Command(){}) is undefined

Media m = new Media("test.mp3", new Command() {
           @Override
           public void execute() {

           }
         });
       m.play()

Using your class as an "inner class" in same file as my main onModuleLoad

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜