1

由于我 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 在 libgdx 的 render() 中运行异常,因此我有一个想法,即首先在 Android 活动中运行蓝牙设置,然后关闭活动并初始化 libgdx。

以下代码崩溃:

public class MyActivity extends AndroidApplication {
    public void onCreate (android.os.Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        Intent myIntent = new Intent(MyActivity.this, StartActivity.class);
        startActivity(myIntent);

        initialize(new MyGame(), false); //run libgdx
    }
}

StartActivity如下(后面是游戏标题和蓝牙设置):

public class StartActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView text = new TextView(this);
        text.setText("Hello World, Android");
        setContentView(text);

        try {
            Thread.sleep(7000);
        }
        catch (InterruptedException e) {};
        finish();
        return;
    }
}

没有崩溃消息,但如果我添加以下内容,应用程序会保持黑屏(甚至没有“你好”消息):

Intent i = new Intent(this, MyActivity.class);
startActivity(i);

logcat 中有“E/AndroidRuntime(612): ERROR: thread attach failed”。但正如我所说,没有崩溃消息。

这里出了点问题......我不知道如何正确编写这样的代码。谢谢。

4

2 回答 2

2

是的,您可以在运行 libgdx 之前启动活动。不要先启动 libgdx 的东西。启动蓝牙设置,然后Intent在准备好时调用以开始实际游戏。

像这样:

public class BluetoothActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bluetoothsettings);
        Button startGame = (Button)findViewById(R.id.btnStartGame);

        // handle set start click
        startGame.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(BluetoothActivity.this, GameActivity.class);
                BluetoothActivity.this.startActivity(intent);
            }
        });
    }
}

然后你的游戏活动就可以AndroidApplication像你上面那样扩展的正常活动。

当然,请确保您AndroidManifest.xml首先开始BluetoothActivity,而不是 libgdx。

<activity android:name=".BluetoothActivity">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
于 2012-07-18T19:50:10.020 回答
0

无论如何这都行不通,但我会说它可能会由于未在 Manifest 中声明 StartActivity 而崩溃。

于 2012-07-13T22:36:56.213 回答