【问题标题】:Android: How to pass a Bluetooth connection to another Activity?Android:如何将蓝牙连接传递给另一个活动?
【发布时间】:2011-07-29 12:21:22
【问题描述】:

我有我的第一个活动,其中建立了 BT 连接。向用户显示了一个选项,根据他们的选择,将加载不同的 Activity。

问题是,这两个活动都需要一个 BT 连接,而我认为破坏一个连接只是为了建立另一个连接没有意义。

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

有没有人给我一些例子或链接?

我试过“class MyApplication extends Application”,但是我不能使用:

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

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

【问题讨论】:

标签: java android netbeans bluetooth


【解决方案1】:

您是否尝试过使用 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 已经实例化了它。

【讨论】:

  • 嗯,我还没试过这个。我对Android真的很陌生,所以我会尽力而为,看看它是否有效(希望它有效)。谢谢你的建议。
【解决方案2】:

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

查看相关主题

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

【讨论】:

  • 什么意思?我将如何使用它?对此很新:)
  • 您在意图中推送数据并将该意图传递给下一个活动。在该活动中,您可以使用 Bundle.getExtras("key");
  • 看来只能通过primitive了。我需要传递一个对象。
  • 它仍然无法工作 :( 应用程序崩溃并挂起我的手机 :O 我这样做的方式与两个示例中所做的完全相同。它适用于普通类对象,但不适用于蓝牙连接。
【解决方案3】:

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

我认为 Kibibyte 的答案也可以,但是可以选择使用(Bound)Service。即使应用程序关闭,它也会运行

Official Android Service documentation

【讨论】:

    【解决方案4】:

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

    BluetoothChatService mChatService=DeviceListActivity.chatService
    

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      相关资源
      最近更新 更多