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.

  • Cómo configurar el valor predeterminado del widget switch en android
  • Cómo cambiar el color de la imagen dinámicamente en android?
  • Android: cómo comprobar la cantidad de memoria que queda?
  • No se puede crear dispositivo virtual Android
  • ¿Es posible desinstalar mediante programación un paquete en Android?
  • Aplicaciones de Android Lock
  • 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

  • Android requiere el nivel de cumplimiento del compilador 5.0 o 6.0. Se encontró '1.7' en su lugar. Utilice Herramientas de Android> Fijar propiedades del proyecto
  • Inicializando Games Client en Android
  • WebView enlace haga clic en abrir navegador predeterminado
  • Awful calidad de imagen de fondo en Android
  • Cómo dibujar polígono lleno?
  • Cómo determinar qué botón pulsado en android
  • 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.