2015-06-17 2 views
0

Мое приложение Bluetooth также может отправлять изображения, но я не могу проверить тип содержимого, если полученные байты от изображения, байты должны применяться к ImageView, а если полученные байты которые из текста, байты должны быть показаны на Toast.makeText().show()Проверьте, какой контент представляет собой полученные байты

private class StreamThread extends Thread { 

    public StreamThread() { 

    } 

    public void run() { 
     byte[] buffer = new byte[1000000]; 
     int bytes; 
     while (true) { 
      try { 
       bytes = bluetoothIn.read(buffer); 
       //Received bytes can represent text or image 
       //if (hereSomeTypeDetector=="image/*") { 
       // update the UI and show the image 
       //} else if (hereSomeTypeDetector=="text/plain") { 
       // show a toast 
       //} 
      } catch (IOException e) { 
       Log.e(TAG, "Unable to receive bytes"); 
       break; 
      } 
     } 
    } 

    public void write(byte[] data) { 
     try { 
      bluetoothOut.write(data); 
     } catch (IOException e) { 
      Log.e(TAG, "Unable to send bytes"); 
     } 
    } 
} 

Моя проблема, мне нужно, чтобы обнаружить тип содержимого полученных байт, код для использования его вместо hereSomeTypeDetector?
ПРИМЕЧАНИЕ:
hereSomeTypeDetector - только пример.

+0

для стартеров ваш буфер слишком мал для большинства изображений. Затем вы можете использовать http://developer.android.com/reference/java/net/URLConnection.html#guessContentTypeFromStream%28java.io.InputStream%29. Он находится в URLConnection, но может использоваться для любого InputStream. – njzk2

ответ

0

Два способа (из бесконечности путей)

Один: первый байт, чтобы быть типом. Вид заголовка для всех, что вы отправляете.

Два: сериализуйте объект с полем типа. Даже, может быть, иерархия или ... Лучше ... Напишите строку, когда вы хотите отправить тексты или так

Смежные вопросы