gpt4 book ai didi

java - 用于 AGK AppGameKit NDK 的 Chartboost SDK 集成的 Android runOnUIThread

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:20 24 4
gpt4 key购买 nike

我们正在为其中一款应用使用 App Game Kit,并尝试删除 AdMob,以便我们可以使用 Chartboost。AGK 使用一个解释器来解释其语言,该解释器通过 NDK 传递给 java。他们有一个名为 AGKHelper 的类,它是当前调用 Facebook、AdMob、警报对话和其他一些 Activity 的命令的入口点。 AGKHelper 中的每个方法都通过 Runnable 类运行事件。以下是他们制作警报对话的过程示例:

public class AGKHelper {
//just a sample of what's in there many other methods exist
public static void ShowMessage( Activity act, String msg )
{
RunnableMessage run = new RunnableMessage();
run.act = act;
run.msg = msg;
act.runOnUiThread( run );
}

}

现在是创建警报对话框的 RunnableMessage 类。

class RunnableMessage implements Runnable
{
public Activity act;
public String msg;

public void run() {
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(act).create();
alertDialog.setTitle("Message");
alertDialog.setMessage(msg);
alertDialog.setButton( DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog, int which) {}});
alertDialog.show();
}
}

还有一个 CreateAd() 方法,该方法使用 runOnUiThread() 为 AdMob 制作广告,但使用 WindowManager 来展示广告。据我们所知,我们必须使用 Runnable 来让 Chartboost 进行 Activity 。我们遵循 Chartboost 的 SDK 集成,但在为其创建 Runnable 方面陷入困境。我们相信,AGKHelper 使用的所有 Runnables 也通过将其作为参数传递给 等方法来引用 NativeActivity >ShowMessage(),然后在 Runnable 类中为每个方法执行一些操作。比如

AlertDialog.Builder(act) //for the message
ad = new AdView(act, AdSize.BANNER, pubID); //for AdMob - RunnableAd
feed.dialog(act, "feed", parameters,new DialogListener() {} // for RunnableFacebook

不幸的是,似乎没有办法将 NativeActivity 传递给 Chartboost 可运行程序。我们对 java 非常缺乏经验,所以我们边学边学,感觉自己取得了进步,但随后什么也没有发生。

有人有让 Chartboost 显示的 Runnable 类的完整示例吗?我们非常感谢您的帮助。我将在这里分享更多的 AGKHelper 类,例如完整的 RunnableAd() 方法,但它很长并且充满了 WindowsManager 设置。 RunnableMessage 是我能提供的最短的示例。谢谢。

最佳答案

我们已经能够使用 IntentstartActivity() 来运行它。

AGKHelper 类是所有命令的入口点,包含:

public static void CreateAd(Activity act, String publisherID, int horz, int vert, int offsetX, int offsetY)
{
Looper.prepare();

Intent myIntent = new Intent(act, ChartboostActivity.class);
act.startActivity(myIntent);
}

ChartboostActivity 类:

public class ChartboostActivity extends Activity {
private Chartboost cb;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chartboostmain);
//requestWindowFeature(Window.FEATURE_NO_TITLE);

// Configure Chartboost
this.cb = Chartboost.sharedChartboost();

String appId = "XXXXXXXXXXXXXX";
String appSignature = "XXXXXXXXXXXXXXX";
this.cb.onCreate(this, appId, appSignature, null);
//this.cb.setImpressionsUseActivities(true);
CBPreferences.getInstance().setImpressionsUseActivities(true);
}

@Override
public void onStart() {
super.onStart();
this.cb.onStart(this);
// Notify the beginning of a user session. Must not be dependent on user actions or any prior network requests.
this.cb.startSession();
// Show an interstitial
//this.cb.showInterstitial();
this.cb.showMoreApps();
finish();
}

@Override
protected void onStop() {
//finish();
super.onStop();

this.cb.onStop(this);
}

@Override
protected void onDestroy() {
//finish();
super.onDestroy();

this.cb.onDestroy(this);
}

@Override
public void onBackPressed() {
// If an interstitial is on screen, close it. Otherwise continue as normal.
if (this.cb.onBackPressed())
{
finish();
return;
}
else
super.onBackPressed();
}
}

虽然这看起来工作得很好,但我们发现奇怪的是我们无法使用 finish() 来关闭 onDestroy()onStop 中的循环()。理想情况下,我们希望在 Runnable 类中完成所有这些操作,以便我们可以访问该 Activity 并调用其他方法。如果有人有一个例子,我们将不胜感激。但这个解决方案似乎有效!

关于java - 用于 AGK AppGameKit NDK 的 Chartboost SDK 集成的 Android runOnUIThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com