Grundsätzlich klingt es wie es so etwas wie dieses wäre:
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
}
Verbrauch:
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();
Das ist eine grobe Skizze ist, wenn Sie mehr über das, was die Art Wesen kennen an den Rückruf übergeben ist, können Sie schönere Dinge tun, wie es ein int
oder ein anderer JS Overlay-Typ sein.
Die API ist irgendwie komisch, weil alles scheinbar asynchron ist, aber das ist das Leben.
Sobald Sie den Dreh von GWT JSNI Bindings bekommen haben, ist es ziemlich einfach.
Wenn Sie diesen Weg weiter beschreiten, wäre es großartig, wenn Sie Ihre GWT-Wrapper-Bibliothek öffnen, damit andere GWT-Entwickler einige iPhone/Android-Apps schreiben können.
Ein Beispiel für die Methode 'play()' hinzugefügt, die am einfachsten ist, da sie keine Parameter benötigt. –