Android:如何将蓝牙连接传递给另一个活动?

时间:2011-07-29 12:21:22

标签: java android netbeans bluetooth

我有第一个建立BT连接的Activity。有一个选项呈现给用户,并根据他们的选择,将加载一个不同的活动。

问题是,两个活动都需要BT连接,我没有看到破坏一个连接只是为了制造另一个连接。

有没有办法可以在活动之间传递连接?

有没有人为我或某个链接提供一些示例?

我尝试过“class MyApplication extends Application”,但后来我无法使用:

super.onCreate(savedInstanceState);
setContentView(R.layout.blablabla);

这可能是一个非常愚蠢的问题,但我只是在Android + - 2周。

4 个答案:

答案 0 :(得分:5)

您是否尝试过使用Application对象将蓝牙连接存储在对象中并使用您的活动来获取它?

尝试这样的事情。 (注意:我从未使用过Android上的蓝牙,因此我不知道要使用哪些相关类。在这种情况下,我将使用BluetoothDevice,因为它似乎是基于库的正确类文档)

public class MyApplication extends Application {
    BluetoothDevice device;
    ...
    public synchronized BluetoothDevice getBtConnection() {
        if (device == null) {
            // construct a BluetoothDevice object and put it into variable device
        }
        return device;
    }
}

这样,您的第一项活动必须这样做:

public class FirstActivity extends Activity {
    private BluetoothDevice device;
    ...
    @Override
    protected void onCreate(Bundle b) {
        super(b);
        ...
        device = ((MyApplication) getApplication()).getBtDevice();
        ...
    }
    ...
}

然后,只要您的其他活动需要使用该连接,他们只需要调用getBtDevice(),因为FirstActivity已经实例化了它。

答案 1 :(得分:0)

您是否尝试过使用捆绑包?

检查相关主题

http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html

答案 2 :(得分:0)

我知道这是一个老问题,但对于访问此主题的新人来说:

我认为Kibibyte的答案也可行,但除此之外还可以使用(Bound)Service。即使应用程序关闭,这也会运行

Official Android Service documentation

答案 3 :(得分:-1)

我有同样的问题,最后解决了! 所以首先你应该在一个活动中创建你的连接,并确保连接存储在 public static 变量中,你可以在你想要的每个活动中调用该连接变量有蓝牙连接。 我建议你使用服务类来创建连接并使用像这样的连接变量

BluetoothChatService mChatService=DeviceListActivity.chatService