请帮我看看如何在Libgdx线程中运行以下代码 - 在render(),create()等中......
public class MyGame implements ApplicationListener, InputProcessor {
...
Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(discoverableIntent);
.....
Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
"http://market.android.com/details?id=" + getPackageName()));
startActivity(marketIntent);
代码有编译错误。 我搜索了一些类似的线程,但没有“startActivity”的确切代码示例。 感谢。
答案 0 :(得分:15)
LibGDX是一个独立于平台的库,因此使用LibGDX平台netural API的所有代码本身必须是独立于平台的(因此没有Android或Windows调用等)。要访问特定于平台的功能,标准方法是定义接口,并使用平台无关代码中的接口。然后在应用程序的Android(或桌面)特定项目中创建接口的实现,并在初始化libGDX组件时传递该实现。
本教程有更多详细信息:http://code.google.com/p/libgdx-users/wiki/IntegratingAndroidNativeUiElements3TierProjectSetup
以下是对同一方法的另一种描述(编写得更好,但示例与您没有明显的关联):http://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific
本教程对访问Android原生UI元素感兴趣,但基本思路与您想要的一致。
另一个教程:https://carlorodriguez.github.io/blog/2014/10/05/android-platform-specific-code-with-libgdx/
答案 1 :(得分:2)
您收到错误是因为startActivity()是Activity类中的一种方法。
为了能够使用它,您的班级必须:
在第二种情况下,你会有类似的东西:
public class MyNonActivity {
Context mContext;
public MyNonActivity(Context context) {
mContext = context;
}
public void myMethod() {
Intent intent = new Intent(mContext, Next.class);
mContext.startActivity(intent);
}
}
并从Activity或Service或其他子类Context或其子类之一调用您的类:
MyNonActivity foo = new MyNonActivity(getBaseContext());
确保在调用onCreate()
之后或之后执行上述操作。