广告平台的 libGDX 文档正是您所需要的。它在 libGDX 核心中创建一个接口,并在 android 启动器中实现一个处理程序,该处理程序可以从核心部分调用。
见这里:https ://github.com/libgdx/libgdx/wiki/Admob-in-libgdx
基本上跳过所有的广告内容。向下滚动到“控制”并执行以下部分:
- 在您的 AndroidLauncher 中注册一个新的处理程序。这是必要的,因此处理程序可以稍后在正确的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);
现在你可以通过以下方式在任何你喜欢的核心类中使用它:
SingletonData.getInstance().getHandler().showAds(true); // showAds or whatever your interface handler implements
PS:确保在游戏开始后调用 getHandler(),这样你就不会得到空引用。