Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Imagen de Uri a bytesarray

Actualmente tengo dos actividades. Uno para tirar de la imagen de la tarjeta SD y otro para la conexión Bluetooth.

He utilizado un paquete para transferir el Uri de la imagen de la actividad 1.

  • Android: ¿Cómo usar los métodos setTag, getTag y findViewWithTag de View?
  • Android fragmento addToBackStack (null): ¿cómo agregar el mismo fragmento a la pila sólo una vez?
  • Excluir activos para el tipo de generación de versión
  • Cómo almacenar en caché los mapas de bits en la memoria nativa
  • Llamada Hilo principal de hilo secundario en Java / Android
  • ¿Cuándo está cerrado el "Consumer Side" de un TextureView?
  • Ahora lo que deseo hacer es conseguir que Uri en la actividad de Bluetooth y convertirlo en un estado transmisible a través de Byte Arrays he visto algunos ejemplos, pero no puedo parecer para conseguir que funcionen para mi código!

    Bundle goTobluetooth = getIntent().getExtras(); test = goTobluetooth.getString("ImageUri"); 

    Es lo que tengo que tirar a través, ¿cuál sería el siguiente paso?

    Muchas gracias

    Jake

  • Compartir la devolución de llamada no funciona con Facebook SDK 4 Android
  • Ro.sf.lcd_density debe definirse como una propiedad de compilación
  • Android custom EditarText UI
  • Instalación de AndEngine en Eclipse
  • App no ​​se basará en dispositivos no 4.4 después de actualizar los servicios de Google Play
  • Por qué no hay ningún método para obtener el nombre de recurso de objeto Drawable
  • 5 Solutions collect form web for “Imagen de Uri a bytesarray”

    De Uri para obtener byte[] Hago las siguientes cosas,

     InputStream iStream = getContentResolver().openInputStream(uri); byte[] inputData = getBytes(iStream); 

    Y el getBytes(InputStream) es:

     public byte[] getBytes(InputStream inputStream) throws IOException { ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } return byteBuffer.toByteArray(); } 

    Use getContentResolver (). OpenInputStream (uri) para obtener un InputStream de un URI. Y luego leer los datos de inputstream convertir los datos en byte [] de ese inputtream

    Intente con el siguiente código

     public byte[] readBytes(Uri uri) throws IOException { // this dynamically extends to take the bytes you read InputStream inputStream = getContentResolver().openInputStream(uri); ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); // this is storage overwritten on each iteration with bytes int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; // we need to know how may bytes were read to write them to the byteBuffer int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } // and then we can return your byte array. return byteBuffer.toByteArray(); } 

    Refiérase a este LINKs

    La mejor práctica de Java: ¡nunca olvides cerrar cada secuencia que abras! Esta es mi implementación:

     /** * get bytes array from Uri. * * @param context current context. * @param uri uri fo the file to read. * @return a bytes array. * @throws IOException */ public static byte[] getBytes(Context context, Uri uri) throws IOException { InputStream iStream = context.getContentResolver().openInputStream(uri); try { return getBytes(iStream); } finally { // close the stream try { iStream.close(); } catch (IOException ignored) { /* do nothing */ } } } /** * get bytes from input stream. * * @param inputStream inputStream. * @return byte array read from the inputStream. * @throws IOException */ public static byte[] getBytes(InputStream inputStream) throws IOException { byte[] bytesResult = null; ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; try { int len; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } bytesResult = byteBuffer.toByteArray(); } finally { // close the stream try{ byteBuffer.close(); } catch (IOException ignored){ /* do nothing */ } } return bytesResult; } 

    Este código funciona para mí

     Uri selectedImage = imageUri; getContentResolver().notifyChange(selectedImage, null); ImageView imageView = (ImageView) findViewById(R.id.imageView1); ContentResolver cr = getContentResolver(); Bitmap bitmap; try { bitmap = android.provider.MediaStore.Images.Media .getBitmap(cr, selectedImage); imageView.setImageBitmap(bitmap); Toast.makeText(this, selectedImage.toString(), Toast.LENGTH_LONG).show(); finish(); } catch (Exception e) { Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) .show(); e.printStackTrace(); } 
     public void uriToByteArray(String uri) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = null; try { fis = new FileInputStream(new File(uri)); } catch (FileNotFoundException e) { e.printStackTrace(); } byte[] buf = new byte[1024]; int n; try { while (-1 != (n = fis.read(buf))) baos.write(buf, 0, n); } catch (IOException e) { e.printStackTrace(); } byte[] bytes = baos.toByteArray(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.