mirror of
https://github.com/inthehand/32feet.git
synced 2026-10-26 11:09:42 +08:00
116 lines
2.8 KiB
C#
116 lines
2.8 KiB
C#
// 32feet.NET - Personal Area Networking for .NET
|
|
//
|
|
// InTheHand.Net.Bluetooth.BluetoothRadio (Android)
|
|
//
|
|
// Copyright (c) 2003-2021 In The Hand Ltd, All rights reserved.
|
|
// This source code is licensed under the MIT License
|
|
|
|
using Android.App;
|
|
using Android.Bluetooth;
|
|
|
|
namespace InTheHand.Net.Bluetooth
|
|
{
|
|
partial class BluetoothRadio
|
|
{
|
|
private static BluetoothRadio GetDefault()
|
|
{
|
|
var manager = (BluetoothManager)Application.Context.GetSystemService(Application.BluetoothService);
|
|
|
|
if (manager.Adapter == null)
|
|
return null;
|
|
|
|
return new BluetoothRadio(manager.Adapter);
|
|
}
|
|
|
|
public static implicit operator BluetoothAdapter(BluetoothRadio radio)
|
|
{
|
|
return radio._adapter;
|
|
}
|
|
|
|
public static implicit operator BluetoothRadio(BluetoothAdapter adapter)
|
|
{
|
|
return new BluetoothRadio(adapter);
|
|
}
|
|
|
|
|
|
private readonly BluetoothAdapter _adapter;
|
|
|
|
private BluetoothRadio(BluetoothAdapter adapter)
|
|
{
|
|
_adapter = adapter;
|
|
}
|
|
|
|
private string GetName()
|
|
{
|
|
return _adapter.Name;
|
|
}
|
|
|
|
private BluetoothAddress GetLocalAddress()
|
|
{
|
|
return BluetoothAddress.Parse(_adapter.Address);
|
|
}
|
|
|
|
private RadioMode GetMode()
|
|
{
|
|
State state = _adapter.State;
|
|
|
|
switch (state)
|
|
{
|
|
case State.TurningOff:
|
|
case State.Off:
|
|
return RadioMode.PowerOff;
|
|
|
|
default:
|
|
switch (_adapter.ScanMode)
|
|
{
|
|
case ScanMode.ConnectableDiscoverable:
|
|
return RadioMode.Discoverable;
|
|
|
|
case ScanMode.Connectable:
|
|
return RadioMode.Connectable;
|
|
|
|
case ScanMode.None:
|
|
default:
|
|
return RadioMode.PowerOff;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetMode(RadioMode value)
|
|
{
|
|
switch (value)
|
|
{
|
|
case RadioMode.PowerOff:
|
|
_adapter.Disable();
|
|
break;
|
|
|
|
default:
|
|
// TODO: Determine if setting ScanMode is possible
|
|
if (!_adapter.IsEnabled)
|
|
_adapter.Enable();
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
#region IDisposable Support
|
|
private bool disposedValue = false; // To detect redundant calls
|
|
|
|
void Dispose(bool disposing)
|
|
{
|
|
if (!disposedValue)
|
|
{
|
|
if (disposing)
|
|
{
|
|
}
|
|
|
|
disposedValue = true;
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
}
|