如何在 Android 中将蓝牙适配器从一个 Activity 传递到另一个 Activity?

问题描述 投票:0回答:2

我有一个名为 MainActivity.java 的类/活动,其中我使用

BluetoothAdapter BA
来检查蓝牙是否打开。我有另一个名为 Search.java 的类,用于搜索附近的蓝牙设备,但它必须使用在 MainActivity.java 中创建的相同的 BluetoothAdapter 来执行此操作。我怎么做?

而且我的 MainAactivity.java 中有一个按钮,其 onClick 必须在另一个类中定义,我该怎么做?

如果这些问题很愚蠢,我很抱歉,但我是 Android 新手,并且使用 Java 的经验很少。

感谢您的宝贵时间!

java android exception bluetooth android-bluetooth
2个回答
2
投票

我有一个名为 MainActivity.java 的类/活动,其中我使用了蓝牙适配器 BA 来检查蓝牙是否打开。我有另一个名为 Search.java 的类,用于搜索附近的蓝牙设备,但它必须使用在 MainActivity.java 中创建的相同的 BluetoothAdapter 来执行此操作。我该怎么做?

(编辑:请参阅下面我的编辑,您不需要在您的情况下实现此功能)您可以实现一个Singleton来存储和获取BluetoothAdapter,以便您可以在项目中的任何位置访问它。会是这样的:

import android.bluetooth.BluetoothAdapter;

public class BluetoothSingleton {
    private static BluetoothSingleton mInstance = new BluetoothSingleton();
    private BluetoothAdapter mBluetoothAdapter;

    private BluetoothSingleton(){
        // Private constructor to avoid new instances
    }

    public static BluetoothSingleton getInstance(){
        return mInstance;
    }

    public void setBluetoothAdapter(BluetoothAdapter adapter){
        mBluetoothAdapter = adapter;
    }

    public BluetoothAdapter getBluetoothAdapter(){
        return mBluetoothAdapter;
    }
}

而且我的 MainActivity.java 中有一个按钮,其 onClick 必须在另一个类中定义,我该怎么做?

您可以简单地创建一个方法来设置该按钮侦听器,传递一个 OnClickListener,如下所示:

另一个类.java:

...
public void setButtonListener(View.OnClickListener listener){
    mButton.setOnClickListener(listener);
}
...

然后你可以在你的MainActivity.java中设置它:

...
AnotherClass another = new AnotherClass();
another.setButtonListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do what you want here
        }
    });
...

编辑1:

实际上BluetoothAdpater是一个单例,所以你可以直接调用:

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

您将获得相同的适配器。


0
投票

BluetoothAdapter.getDefaultAdapter() 已弃用。相反,您应该按照本post

中所述使用它
BluetoothManager bluetoothManager = applicationContect.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
bluetoothManager.getAdapter()
© www.soinside.com 2019 - 2024. All rights reserved.