Использование PhoneGap Audio API в GWT - PullRequest
2 голосов
/ 14 декабря 2010

Я хочу использовать API-интерфейс phonegap в GWT с использованием JSNI. Я не могу понять, как кодировать методы в JSNI.

Интересно, если кто-нибудь знает какие-либо учебные пособия..

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010

Мне просто нужен метод play на самом деле. Я не настолько хорошо осведомлен, чтобы делать это правильно, я думаю. Этот код кажется мне действительно чуждым: -)

Все еще не могу принять ваш ответ. Сайт не узнает меня, это странно.

Я получаю следующую ошибку при попытке использовать мультимедиа в моем onModuleLoad

Конструктор TESTPHONEGAP.Media (String, new Command () {}) не определен

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

           }
         });
       m.play()

Использование вашего класса в качестве "внутреннего класса" в том же файле, что и мой основной onModuleLoad

0 голосов
/ 14 декабря 2010

По сути это звучит так:

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.

...