将System.IO.Stream转换为java.io.InputStream

时间:2017-08-08 07:44:29

标签: c# android xamarin.android

我在C#中使用一个用于Xamarin Android项目的库。我想要实例化的对象有两个java.io.InputStream和java.io.OutputStream类型的参数。 BluetoothSocket的输入和输出流属于System.Io类型,因此转换返回错误。类似下面的代码

public static void Connect(string address)
    {
        BluetoothDevice device = mBtAdapter.GetRemoteDevice(address);
        BluetoothSocket socket = device.CreateRfcommSocketToServiceRecord(SPP_UUID);
        socket.Connect();
        mBtSocket = socket;

        java.io.InputStream input = socket.InputStream;//cannot implicitly convert
        java.io.OutputStream output = socket.OutputStream;//cannot implicitly convert
        cmd = new DP25ROU(input, output);
    }

是否有一种将输入/输出转换为java.io各自对应的有效方法?

2 个答案:

答案 0 :(得分:1)

是的,您可以通过以下方式访问InputStreamOutputStream

Java.IO.InputStream input = ((Android.Runtime.InputStreamInvoker)socket.InputStream).BaseInputStream;

Java.IO.OutputStream output = ((Android.Runtime.OutputStreamInvoker)socket.OutputStream).BaseOutputStream;

答案 1 :(得分:0)

幸运的是,有一个从.net流到java.io流的内置转换器

示例:

var fileStream = new FileStream(@"c:/test/test.pdf", FileMode.Append);
java.io.InputStream javaStream = new ikvm.io.InputStreamWrapper(fileStream);