ページへ戻る
− Links
印刷
AndroidでのAdmobのANEの作成_Android側の作成
の編集 ::
NJF Wiki
xpwiki
:
AndroidでのAdmobのANEの作成_Android側の作成
の編集
# i5cd3b6c の編集
ページ内容:
*ANE呼び出し処理の追加 [#i5cd3b6c] Android上で問題なく実行されたら、ANEにするための処理を入れます。 [[こちらを参考に:http://njf.jp/cms/modules/xpwiki/?Android%E3%81%A7%E3%81%AEANE%E3%81%AE%E4%BD%9C%E6%88%90%2FAndroid%E5%81%B4%E3%81%AE%E4%BD%9C%E6%88%90#a17e7947]]FlashRuntimeExtensions.jarをaneadmobの下のlibに配置します。 最終的にaneadmobのbuild.gradleのdependencies以下に次の一行が挿入されていればOKです。 compile files('libs/FlashRuntimeExtensions.jar') 次にActionScriptから呼び出される部分を作ります。 呼び出しには次の二つのクラスが必要です。 |名前|機能|インターフェイス| |ANEAdmobFREExtension|呼び出しの定義と振り分け処理|FREExtension| |ANEAdmobFREFunction|実際に呼び出される関数|FREFunction| ここではこれらのクラスをjp.njf.aneadmobパッケージとして制作します。 ここで呼び出されるクラスの設計には二つの選択肢があります。 呼び出される関数はFREFunctionをimplementsしておくと、その中のcallメソッドが呼ばれます。 よって呼び出しメソッドの数だけクラスを作るか、一つのクラスを作って内部的に振り分けるか、という設計があり得ます。 前節のように、このANEには7つのメソッドがあるので、7つもクラスを作るのは面倒です。よって一つのクラスを作って第一引数を使って処理の分岐を行うようにします。そのクラスが上記のANEAdmobFREFunctionで、メソッドの数だけクラスがないのはそのためです。 ただし、メソッドごとにクラスを作った方が呼び出しエラーなどがFlash側のtraceメッセージなどと一緒に表示されるため、デバッグは楽です。自分で振り分けする場合は、もちろん自分でエラー処理もしなくてはなりません。 このように一長一短ありますので、場合に応じて設計を変えて下さい。 まずANEAdmobFREExtensionクラスのcreateContextメソッドです。"admob"という名前で呼び出せるようにしておきます。 @Override public FREContext createContext(String s) { FREContext context = new FREContext() { @Override public Map<String, FREFunction> getFunctions() { Map<String, FREFunction> result = new HashMap<String, FREFunction>(); result.put("admob", new ANEAdmobFREFunction()); return result; } @Override public void dispose() { } }; return context; } 特に難しい部分はないはずです。分からない部分があれば「[[AndroidでのANEの作成/Android側の作成]]」を参照してください。 次にANEAdmobFREFunctionのcallメソッドです。 第一引数をメソッドの振り分けに、第二引数をパラメータとして使っています。 public FREObject call(FREContext freContext, FREObject[] freObjects) { String method = ""; String prm = ""; try { method = freObjects[0].getAsString(); } catch (Exception e) { Log.e("njf.jp.aneadmob", "ANEAdmobFREFunction:can't parse : arg 0"); } try { prm = freObjects[1].getAsString(); } catch (Exception e) { Log.w("njf.jp.aneadmob", "ANEAdmobFREFunction:can't parse : arg 1"); } if(aneAdmob == null){ aneAdmob = new ANEAdmob(freContext.getActivity()); } if(method.equals("setAppID") && !prm.equals("")){ aneAdmob.setAppID(prm); }else if(method.equals("setBannerID") && !prm.equals("")){ aneAdmob.setBannerID(prm); }else if(method.equals("setInterstitialID") && !prm.equals("")){ aneAdmob.setInterstitialID(prm); }else if(method.equals("showBanner")){ aneAdmob.showBanner(); }else if(method.equals("hideBanner")){ aneAdmob.hideBanner(); }else if(method.equals("showInterstitial")){ aneAdmob.showInterstitial(); }else if(method.equals("loadInterstitial")){ aneAdmob.loadInterstitial(); }else{ Log.e("njf.jp.aneadmob", "ANEAdmobFREFunction:no method or invalid prm " + method); } return null; } こちらも分からない部分があれば「[[AndroidでのANEの作成/Android側の作成]]」を参照してください。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
「東京」の読みがな?(ひらがなで)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する
[1]
Links list
(This host) = https://njf.jp
(This host)
/cms/modules/xpwiki/?cmd=edit&help=true&page=Android%E3%81%A7%E3%81%AEAdmob%E3%81%AEANE%E3%81%AE%E4%BD%9C%E6%88%90_Android%E5%81%B4%E3%81%AE%E4%BD%9C%E6%88%90