Android 安卓蓝牙提高速度性能

Android 安卓蓝牙提高速度性能,android,performance,bluetooth,android-bluetooth,Android,Performance,Bluetooth,Android Bluetooth,我正在尝试提高android蓝牙的传输速度。我尝试使用蓝牙API的RFComm套接字将2.7MB缓冲区从一个android设备传输到另一个设备(见下面的代码)。大约需要70秒才能完成。我将此方法与手机附带的蓝牙功能“共享”进行了比较。“共享”功能提供了非常好的性能(传输2.7MB文件大约需要15秒) “共享”功能与使用蓝牙API有何不同?如何复制“共享”方法以获得最佳传输速度 谢谢 蓝牙API测试代码: 服务器端-安装在一台android设备上 BluetoothAdapter mBluetoo

我正在尝试提高android蓝牙的传输速度。我尝试使用蓝牙API的RFComm套接字将2.7MB缓冲区从一个android设备传输到另一个设备(见下面的代码)。大约需要70秒才能完成。我将此方法与手机附带的蓝牙功能“共享”进行了比较。“共享”功能提供了非常好的性能(传输2.7MB文件大约需要15秒)

“共享”功能与使用蓝牙API有何不同?如何复制“共享”方法以获得最佳传输速度

谢谢

蓝牙API测试代码:

服务器端-安装在一台android设备上

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mServerSocket = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("DeviceName", MY_UUID);
socket = mServerSocket.accept();
mInStream = socket.getInputStream();
int totalByte = 1;
while (totalByte < 2718720) 
{
    int bytesAvailable = mInStream.available();
    if (bytesAvailable > 0) {
        totalByte += bytesAvailable;
        byte[] buffer = new byte[bytesAvailable];
        mInStream.read(buffer);
    }
}
mClientSocket = device.createInsecureRfcommSocketToServiceRecord(
                MY_UUID);
mClientSocket.connect();
mOutStream = mClientSocket.getOutputStream();
byte byteValue = 0;
for (int i=0; i<2718720; i++) {
    byteValue++;
    mOutStream.write(byteValue);
}
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
mServerSocket=mBluetoothAdapter.listenUsingRfcommWithServiceRecord(“DeviceName”,我的UUID);
socket=mServerSocket.accept();
mInStream=socket.getInputStream();
int totalByte=1;
while(总字节<2718720)
{
int bytesavable=mInStream.available();
如果(字节可用>0){
totalByte+=字节可用;
字节[]缓冲区=新字节[bytesAvailable];
mInStream.read(缓冲区);
}
}
客户端-安装在其他android设备上

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mServerSocket = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("DeviceName", MY_UUID);
socket = mServerSocket.accept();
mInStream = socket.getInputStream();
int totalByte = 1;
while (totalByte < 2718720) 
{
    int bytesAvailable = mInStream.available();
    if (bytesAvailable > 0) {
        totalByte += bytesAvailable;
        byte[] buffer = new byte[bytesAvailable];
        mInStream.read(buffer);
    }
}
mClientSocket = device.createInsecureRfcommSocketToServiceRecord(
                MY_UUID);
mClientSocket.connect();
mOutStream = mClientSocket.getOutputStream();
byte byteValue = 0;
for (int i=0; i<2718720; i++) {
    byteValue++;
    mOutStream.write(byteValue);
}
mClientSocket=device.createInsurerCommsocketToServiceRecord(
我的名字);
mClientSocket.connect();
mOutStream=mClientSocket.getOutputStream();
字节字节值=0;

对于(int i=0;我使用对象推送配置文件(OPP)进行此操作,或者如果您希望使用双向文件操作(FTP)而不是RFCOMM,您是否找到了原因?