広告プラットフォーム用の libGDX ドキュメントは、まさに必要なものを使用しています。libGDX コアにインターフェースを作成し、コア部分から呼び出すことができる Android ランチャーにハンドラーを実装します。
ここを参照してください: https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx
基本的に、すべての広告をスキップします。「コントロール」まで下にスクロールし、次の部分を実装するだけです。
- AndroidLauncher 内に新しい Handler を登録します。これは、ハンドラーが後で正しい Android スレッドでインターフェイスの実装された関数を処理できるようにするために必要です... (「HelloWorldAndroid」を参照)
- コア プロジェクトにインターフェイスを作成します(IActivityRequestHandler など)。
- AndroidLauncher に関数を実装させ、ハンドラーを使用して Android スレッド内で実際の関数を実行します。
最後に、libGDX コア コードへの参照を渡す必要があります。個人的には、次のようにコアプロジェクト内にシングルトンクラスを実装して使用しました。
class SingletonData{
private SingletonData(){
}
private static SingletonData instance;
public static SingletonData getInstance(){
if(instance==null){
instance = new SingletonData(); // can only be assessed here. no other class can generate a second instance
}
return instance;
}
private IActivityRequestHandler handler;
public void setHandler(IActivityRequestHandler handler){
this.handler=handler;
}
public IActivityRequestHandler getHandler(){
return this.handler;
}
}
AndroidLauncher (つまり、HelloWorldAndroid) では、作成の最後に次のように呼び出して登録します。
SingletonData.getInstance().setHandler(this);
これで、好きな Core-Class 内で次のように使用できます。
SingletonData.getInstance().getHandler().showAds(true); // showAds or whatever your interface handler implements
PS: ゲームの開始後に必ず getHandler() を呼び出して、null 参照を取得しないようにしてください。