lesen zu lesen und zu analysieren, was die effizienteste Art und Weise 13 Bytes zu lesen von InputStream
ein Byte zu einem Zeitpunkt, bis Ende des Rahmens char 0xEE gelesen würde und auch die Daten zu Integer
und float
zu analysieren. Die tatsächlichen Daten sind 4 Bytes lang, also gibt es drei 4 Bytes lange Daten und dann das Ende des Rahmen-Zeichens.Bester Weg Bytes von Input
private final InputStream mmInStream;
public void run() {
BufferedInputStream bInputStream = null;
DataInputStream dInputStream = null;
byte[] buffer;
byte readByte = 0;
int i = 0, bytesAvailable = 0;
bInputStream = new BufferedInputStream(mmInStream);
dInputStream = new DataInputStream(bInputStream);
// Keep listening to the InputStream while connected
while (true) {
try {
bytesAvailable = dInputStream.available();
if(bytesAvailable > 0) {
buffer = new byte[bytesAvailable];
Log.d(getClass().getName(), String.format("value = %d", bytesAvailable));
do {
readByte = dInputStream.readByte();
buffer[i] = readByte;
i++;
} while(readByte == 0xEE);
threadHandler.obtainMessage(BluetoothClientActivity.MESSAGE_READ, bytesAvailable, -1, buffer).sendToTarget();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Es gibt genau * eine Möglichkeit * zum Lesen einzelner Bytes. Dies macht es auch zur effizientesten Art und Weise, da eine einfache Logik aus einer Reihe von Optionen der Größe 1 immer diese eine Option ergibt. Was ist der Sinn zu fragen? – Durandal
Ich bin neu in Java also nur gefragt, um sicher zu sein. – jakeheik90
Ok, aber wenn du anfängst zu lernen * Effizienz * sollte dein * mindest * Problem sein, wirklich. Sorgen Sie sich zuerst um * Korrektheit * der Ergebnisse, Sie können sich um etwas anderes kümmern * später *. Sorgen Sie sich nur um die Effizienz, wenn es sich als Problem herausstellte: "Vorzeitige Optimierung ist die Wurzel allen Übels" - das gilt besonders, wenn Sie sich Sorgen machen, bevor Sie überhaupt einen Code geschrieben haben. – Durandal