2010-12-14 5 views
2

Я хочу использовать аудиозапись phonegap audio api в GWT с помощью JSNI. Я не могу понять, как закодировать методы в JSNI.Использование phonegap audio api в gwt

Удивление, если кто-нибудь знает какие-либо уроки. Эти методы javascript действительно очень просты.

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

ответ

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 Overlay Type.

API выглядит странно, потому что все, по-видимому, асинхронно, но это жизнь.

Как только вы получили возможность писать привязки GWT JSNI, это довольно просто.

Если вы в конечном итоге опуститесь по этой дороге, было бы здорово, если бы вы открыли свою библиотеку оберток GWT, чтобы другие разработчики GWT могли писать приложения для iPhone/Android.

+0

Добавлен пример метода 'play()', который является самым простым, так как он не принимает никаких параметров. –

0

Я просто нужна методы игры really.I я не так хорошо осведомлена, чтобы сделать это правильно, я guess.That код выглядит действительно мне чужд :-)

До сих пор не может принять ваш answer.The сайта не признает мне это странно.

я получаю следующее сообщение об ошибке при попытке использовать средства массовой информации в моем onModuleLoad

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

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

      } 
     }); 
     m.play() 

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

+0

Это странно, что сайт не узнает меня. Я также пытаюсь принять вышеупомянутый ответ. – james

+0

Мой выбор был неправильным. Конструктор неверен, вместо этого используйте 'newInstance()'. –

+0

Пожалуйста, используйте комментарии, а не новые ответы, чтобы ответить на мой ответ. Нажмите «Добавить комментарий» в нижней части моего ответа. –