Как я могу перенести изображение с ПК на мобильный через Bluetooth, используя RFCOMM в Java? - PullRequest
0 голосов
/ 13 ноября 2010

Я выполнил следующее кодирование на стороне ПК (я пытался отправлять данные порциями):

try {
    for (int i = 0; i < sdata.length / 2; i++)
    m_Output.write(sdata[i]);
} catch (IOException ex) {
    Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex);
}
int i = sdata.length / 2;
try {
    m_Output.flush();
} catch (IOException ex) {
    Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex);
}
for (int k = i; k < sdata.length; k++) {
    try {
        m_Output.write(sdata[i]);
        m_Output.flush();
        m_Output.close();
    } catch (IOException ex) {
        Logger.getLogger(SPPServer.class.getName()).log(Level.SEVERE, null, ex);
    }
}

В то время как на мобильной стороне я получаю это как:

public Image recdata() {

    Image image1 = null;
    int i = 0;
    try {
        // input = StrmConn.openInputStream();
        length = input.read();
        data1 = new byte[length];
        length = 0;
        int ch = 1;

        while (length != data1.length) {
            ch = input.read(data1, length, data1.length - length);

            if (ch == -1) {
                throw new IOException("Can't read data");
            }
            length += ch;
        }
        try {
            //  int len = ch;
            input.wait(2000);

        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        length = input.read();
        byte[] data11 = new byte[length];
        try {
            this.wait(1700);
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        while (length != data11.length) {
            ch = input.read(data11, length, data11.length - length);

            if (ch == -1) {
                throw new IOException("Can't read data");
            }
            length += ch;
        }
        length = data1.length + data11.length;
        data12 = new byte[length];
        for (i = 0; i < data1.length; i++) {
            data12[i] = data[i];
        }
        for (int k = i; k < length; k++)
        data12[k] = data[k];
    }
    catch (IOException e) {
        System.err.println("U must correct");
    }

    if (image1 == null) {
        S = "Imagr is null in recive data";
    }
    return image1;
}

1 Ответ

0 голосов
/ 01 декабря 2010

Проблема может быть здесь на мобильной стороне

length = input.read();

Вы (вероятно) назначаете байт целому числу, поэтому, когда вы используете значение позже, вы используете целочисленное представление байта, а не целочисленное значение. Вот ссылка с кодом, позволяющая преобразовать целое число в байтовый массив, а затем обратно из байтового массива в целое число. Java от целочисленного до байтового массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...