在gwt中使用phonegap音频api

时间:2010-12-14 13:33:45

标签: gwt jsni

我想使用JSNI在GWT中使用phonegap音频api。我无法弄清楚如何在JSNI中编写方法。

想知道是否有人知道任何教程。他们的javascript方法非常简单。

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

2 个答案:

答案 0 :(得分:0)

基本上听起来像这样:

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
}

用法:

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();

这是一个粗略的草图,如果你更了解传递给回调的类型是什么,你可以做更好的事情,比如它是int或另一个JS覆盖类型。

API有点奇怪,因为一切都显然是异步的,但这就是生活。

一旦你开始编写GWT JSNI绑定,它就非常简单了。

如果您最终走上这条道路,那么如果您开源GWT包装程序库以便其他GWT开发人员可以编写一些iPhone / Android应用程序,这将是非常棒的。

答案 1 :(得分:0)

我只是真的需要播放方法。我猜不到正确地做到这一点我知道。这个代码对我来说真的很陌生: - )

仍然无法接受你的回答。网站不认识我这很奇怪。

尝试在onModuleLoad

中使用媒体时出现以下错误

构造函数TESTPHONEGAP.Media(String,new Command(){})未定义

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

           }
         });
       m.play()

将您的类用作与我的主onModuleLoad相同的文件中的“内部类”