Включение модема Bluetooth в Xamarin.Android - PullRequest
0 голосов
/ 17 мая 2018

В настоящее время я пытаюсь добавить некоторые функции Bluetooth в свое приложение.Я хочу иметь возможность включать или выключать режим модема Bluetooth, а также проверять его статус.

Я нашел код Java в StackOverflow: Как программно проверить статус модема Bluetooth в Android

Я перевел его на C #, но мне кажется, что я не могу получить никакого результата.

Независимо от настройки привязки, он всегда показывает тост с "Tethering: false"и setBluetoothTethering ничего не меняет.

Есть идеи, что мне не хватает?

Вот мой код:

[...]
        try
        {
            Class classBluetoothPan = Class.ForName("android.bluetooth.BluetoothPan");

            Method mBTPanConnect = classBluetoothPan.GetDeclaredMethod("connect", Class.FromType(typeof(BluetoothDevice)));

            Constructor BTPanCtor = classBluetoothPan.GetDeclaredConstructor(Class.FromType(typeof(Context)), Class.FromType(typeof(IBluetoothProfileServiceListener)));

            BTPanCtor.Accessible = true;

            Java.Lang.Object BTSrvInstance = BTPanCtor.NewInstance(Activity, new BTPanServiceListener(Activity));

            Method isTetheringOnMethod = classBluetoothPan.GetDeclaredMethod("isTetheringOn", null);

            var isTetheringOn = isTetheringOnMethod.Invoke(BTSrvInstance);

            Toast.MakeText(Activity, "Tethering:" + isTetheringOn, ToastLength.Short).Show();

            Method setBluetoothTetheringMethod = classBluetoothPan.GetDeclaredMethod("setBluetoothTethering", new Class[1] { Class.FromType(typeof(bool)) });

            setBluetoothTetheringMethod.Invoke(BTSrvInstance, true);

            // tether = !tether;

        }
        catch (ClassNotFoundException e)
        {
            e.PrintStackTrace();
        }
        catch (Java.Lang.Exception e)
        {
            e.PrintStackTrace();
        }
[...]


public class BTPanServiceListener : Java.Lang.Object, IBluetoothProfileServiceListener
{

    private Activity _activity;

    public BTPanServiceListener(Activity activity)
    {
        _activity = activity;
    }

    public void OnServiceConnected([GeneratedEnum] ProfileType profile, IBluetoothProfile proxy)
    {
        // throw new NotImplementedException();
    }

    public void OnServiceDisconnected([GeneratedEnum] ProfileType profile)
    {
        // throw new NotImplementedException();
    }
}

1 Ответ

0 голосов
/ 26 апреля 2019

Я понял, как включить Bluetooth-модем через setBluetoothTethering.

Я написал весь блог об этом

Вы можете найти окончательный код здесь

Я предполагаю, что isTetheringOn работает таким же образом

...