我想使用 JSNI 在 GWT 中使用 phonegap 音频 api。我不知道如何在 JSNI 中编写方法。
想知道是否有人知道任何教程。他们的javascript方法真的很简单。
我想使用 JSNI 在 GWT 中使用 phonegap 音频 api。我不知道如何在 JSNI 中编写方法。
想知道是否有人知道任何教程。他们的javascript方法真的很简单。
基本上听起来会是这样的:
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 应用程序,那就太棒了。
我真的只需要播放方法。我猜我对正确执行此操作的知识并不多。该代码对我来说看起来真的很陌生:-)
仍然无法接受您的回答。该网站无法识别我,这很奇怪。
尝试在我的 onModuleLoad 中使用媒体时出现以下错误
构造函数 TESTPHONEGAP.Media(String, new Command(){}) 未定义
Media m = new Media("test.mp3", new Command() {
@Override
public void execute() {
}
});
m.play()
在与我的主要 onModuleLoad 相同的文件中使用您的类作为“内部类”