Xamarin.forms 使用蓝牙和xamarin表单打印文本

Xamarin.forms 使用蓝牙和xamarin表单打印文本,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,我构建了xamarin项目表单,使用日本RPP-300移动打印机打印文本。我使用 using (BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter) { if (bluetoothAdapter == null) { throw new Exception("No default adapter");

我构建了xamarin项目表单,使用日本RPP-300移动打印机打印文本。我使用

using (BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter)
        {
            if (bluetoothAdapter == null)
            {
                throw new Exception("No default adapter");
            }

            if (!bluetoothAdapter.IsEnabled)
            {
                throw new Exception("Bluetooth not enabled");
                //Intent enableIntent = new Intent(BluetoothAdapter.ActionRequestEnable);
                //StartActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                // Otherwise, setup the chat session
            }

            BluetoothDevice device = (from bd in bluetoothAdapter.BondedDevices
                                      where bd.Name == printerName
                                      select bd).FirstOrDefault();
            if (device == null)
                throw new Exception(printerName + " device not found.");
                using (BluetoothSocket _socket = device.CreateRfcommSocketToServiceRecord(UUID.FromString("00001101***")))
                {
                    await _socket.ConnectAsync();

                    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(input);
                    await Task.Delay(3000);
                    // Write data to the device
                    await _socket.OutputStream.WriteAsync(buffer, 0, buffer.Length);
                    _socket.Close();
                }
        }
    }
在project.Droid中。如何在project xamarin应用程序中调用using方法?

您可以使用

以形式 创建一个接口

public interface IBLEPrint
{
    void BlePrint();
}
using xxx.Droid;
using xxx
using Xamarin.Forms;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
//using ...
[assembly: Dependency(typeof(BLEPrintService))]
namespace xxx.Droid
{
    public class BLEPrintService : IBLEPrint
    {
        public void BlePrint()
        {
           //...
           using (BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter)
           {
            if (bluetoothAdapter == null)
            {
                throw new Exception("No default adapter");
            }

            if (!bluetoothAdapter.IsEnabled)
            {
                throw new Exception("Bluetooth not enabled");
                //Intent enableIntent = new Intent(BluetoothAdapter.ActionRequestEnable);
                //StartActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                // Otherwise, setup the chat session
            }

            BluetoothDevice device = (from bd in bluetoothAdapter.BondedDevices
                                      where bd.Name == printerName
                                      select bd).FirstOrDefault();
            if (device == null)
                throw new Exception(printerName + " device not found.");
                using (BluetoothSocket _socket = device.CreateRfcommSocketToServiceRecord(UUID.FromString("00001101***")))
                {
                    await _socket.ConnectAsync();

                    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(input);
                    await Task.Delay(3000);
                    // Write data to the device
                    await _socket.OutputStream.WriteAsync(buffer, 0, buffer.Length);
                    _socket.Close();
                }
              }
         }
        }
    }
}
在Android项目中 实现接口

public interface IBLEPrint
{
    void BlePrint();
}
using xxx.Droid;
using xxx
using Xamarin.Forms;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
//using ...
[assembly: Dependency(typeof(BLEPrintService))]
namespace xxx.Droid
{
    public class BLEPrintService : IBLEPrint
    {
        public void BlePrint()
        {
           //...
           using (BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter)
           {
            if (bluetoothAdapter == null)
            {
                throw new Exception("No default adapter");
            }

            if (!bluetoothAdapter.IsEnabled)
            {
                throw new Exception("Bluetooth not enabled");
                //Intent enableIntent = new Intent(BluetoothAdapter.ActionRequestEnable);
                //StartActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                // Otherwise, setup the chat session
            }

            BluetoothDevice device = (from bd in bluetoothAdapter.BondedDevices
                                      where bd.Name == printerName
                                      select bd).FirstOrDefault();
            if (device == null)
                throw new Exception(printerName + " device not found.");
                using (BluetoothSocket _socket = device.CreateRfcommSocketToServiceRecord(UUID.FromString("00001101***")))
                {
                    await _socket.ConnectAsync();

                    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(input);
                    await Task.Delay(3000);
                    // Write data to the device
                    await _socket.OutputStream.WriteAsync(buffer, 0, buffer.Length);
                    _socket.Close();
                }
              }
         }
        }
    }
}