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アプリを作成できるようにすると素晴らしいでしょう。
本当に play メソッドが必要なだけです.私はこれを正しく行うための知識があまりありません.そのコードは私にとって本当に異質に見えます:-)
まだあなたの回答を受け入れることができません.サイトは私を認識しません.それは奇妙です.
onModuleLoad でメディアを使用しようとすると、次のエラーが発生します
コンストラクター TESTPHONEGAP.Media(String, new Command(){}) は未定義です
Media m = new Media("test.mp3", new Command() {
@Override
public void execute() {
}
});
m.play()
メインの onModuleLoad と同じファイルでクラスを「内部クラス」として使用する