Image Uri pour bytesarray

J'ai actuellement deux activités. Un pour tirer l'image de la carte SD et une pour la connexion Bluetooth.

J'ai utilisé un Bundle pour transférer l'Uri de l'image de l'activité 1.

  • Android Studio avec Google Play Services
  • Méthode préférée de chargement des requêtes dépendantes avec LoaderManager
  • OpenGL et mises en page
  • Comment obtenir un bitmap à partir d'une URL dans Android?
  • StartActivityForResult ne fonctionne pas correctement avec launchMode singleInstance
  • Modifier le fuseau horaire dans Android, par programme
  • Maintenant, ce que je souhaite faire est d'obtenir que Uri dans l'activité Bluetooth et de le convertir en un état transmissible via Byte Arrays, j'ai vu quelques exemples, mais je ne peux pas sembler les faire fonctionner pour mon code!

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

    Est ce que je dois faire, quelle serait la prochaine étape?

    Merci beaucoup

    Jake

  • Problème avec le temps de mise en mémoire tampon de MediaPlayer lors de la diffusion audio
  • Fond de bande avec deux couleurs?
  • Utiliser onSaveInstanceState avec des fragments dans backstack?
  • Comment puis-je obtenir un élément de menu dans NavigationView?
  • GetChildFragmentManager () et les bibliothèques de support
  • Comment gérer les problèmes de la nouvelle feuille inférieure de la bibliothèque de support / conception?
  • 5 Solutions collect form web for “Image Uri pour bytesarray”

    D' Uri pour obtenir l' byte[] Je fais les choses suivantes,

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

    Et la méthode getBytes(InputStream) est:

     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(); } 

    Utilisez getContentResolver (). OpenInputStream (uri) pour obtenir un InputStream à partir d'un URI. Et ensuite lire les données de inputtream convertir les données en octets [] de ce inputtream

    Essayez avec le code suivant

     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(); } 

    Référer ces LIENS

    Java best practice: n'oubliez jamais de fermer chaque flux que vous ouvrez! C'est ma mise en œuvre:

     /** * 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; } 

    Ce code fonctionne pour moi

     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(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.