如何在Android中通过蓝牙以字节形式传输大文件?

时间:2019-04-28 18:44:40

标签: android android-bluetooth file-transfer

我有两个以下问题:

  1. 我如何知道文件数据是通过蓝牙连接传输的?
  2. 当传输停止时(可以在logcat中看到),并检查目标目录中的文件,该文件显示为36MB并且已损坏,而原始的未损坏的zip文件仅为10MB。缓冲区大小为4096。

所以我一直在发送方使用以下代码:

InputStream inputStream = new FileInputStream(mFile);
byte[] buffer = new byte[BUFFER_SIZE];
double content_length = inputStream.available();
double total = 0;
int n;
double progress = 0;
while ((n = inputStream.read(buffer)) != -1)
{
    total = total + n;
    progress = (total * (100 / content_length));
    Log.v(TAG, "progress : " + progress);
    BluetoothConnection.writeBytes(buffer);
}

在接收方:

@Override
public void run()
{
    mInsecureAcceptThread.cancel();
    mInsecureAcceptThread.interrupt();
    byte[] buffer = new byte[4096];
    int bytes;

    FileOutputStream mUpdateFileOutputStream = new FileOutputStream(mFilePath);
    while (true)
    {
        try
        {
            bytes = mInputStream.read(buffer);
            Log.v(TAG, "length : " + bytes);
            mUpdateFileOutputStream.write(buffer);
        } catch (Exception e)
        {
            e.printStackTrace();
            break;
        }
    }
}

0 个答案:

没有答案