2011-12-12 2 views
2

Je n'ai pas trouvé d'exemple pratique qui concerne spécifiquement l'enregistrement du chemin de fichier d'une image que vous venez de prendre avec l'application appareil photo dans une base de données SQLite dans votre application.Enregistrement du chemin du fichier image vers la base de données sqlite

J'ai vu du code pour enregistrer une image à partir d'une source HTML ... pas bon! Mon problème est que j'ai l'URI mais honnêtement, je ne peux pas comprendre avec les données disponibles (guide de dev, Stack Overflow questions) comment insérer ce chemin de fichier à ma colonne de base de données.

Voici mon code dans lequel j'essaie de définir un champ de texte d'édition afin que le chemin puisse être sauvegardé dans la base de données. J'ai essayé ceci dans l'émulateur:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) { 
     Bitmap x = (Bitmap) data.getExtras().get("data"); 
     File storagePath = new File(Environment.getExternalStorageDirectory() + 
            "/DCIM/GPAA/"); 
     storagePath.mkdirs(); 
     File myImage = new File(storagePath, 
           System.currentTimeMillis() + ".jpg"); 
     try { 
      FileOutputStream out = new FileOutputStream(myImage); 
      x.compress(Bitmap.CompressFormat.JPEG, 80, out); 
      Uri outputFileUri = Uri.fromFile(myImage); 
      mnotesText = (EditText)findViewById(R.id.notes); 
      mnotesText.setText (outputFileUri.toString()); 
      ((ImageView)findViewById(R.id.photoResultView)).setImageBitmap(x); 
      out.close(); 

      Toast.makeText(Review.this, 
          "Image saved: " + outputFileUri.toString(), 
          Toast.LENGTH_LONG).show(); 
     } catch (FileNotFoundException e) { 
     } catch (IOException e){ 
     } 
    } 
} 

Avec ce code le toast vérifie que la chaîne est disponible et correcte. Cependant, l'entrée sur le mnotesText.setText (outputFileUri.toString()); fonctionne dans l'émulateur. Mais curieusement, cela ne marchera pas au téléphone.

+1

Si votre problème est résolu, vous devez poster la solution comme une réponse (oui, il est parfaitement acceptable pour répondre à votre propre question). Si vous souhaitez attendre une meilleure réponse, ne l'acceptez pas. (Vous remarquerez que des milliers de questions ont été résolues ici, mais très peu d'entre elles ont "RESOLU" dans le titre.) –

Répondre

1

M. Ed a répondu en a fourni cette réponse à sa question, je fait le ménage ci-dessous:

Je suis sûr que ce n'est pas la meilleure façon de le faire, mais il fonctionne:

  1. Dans votre fichier layout.xml, définissez un champ de texte d'édition et masquez le texte en modifiant la couleur du texte en arrière-plan. Ou pas si vous voulez voir le texte.

  2. Ajoutez le champ approprié dans votre gestionnaire de base de données.

  3. Dans votre activité, insérez le texte dans le champ de texte.

    String path = outputFileUri.toString(); 
    mpic.setText (path); 
    

Quand il est enregistré le chemin est enregistré dans la base de données. Utilisez BitmapFactory pour décoder le chemin de l'image comme ceci:

// String username created from edit text field to a string 
String username = mpic.getText().toString(); 
// Bitmap will decode the string to a image (bitmap) 
Bitmap myBitmap = BitmapFactory.decodeFile(username); 
// Image view used to set the bitmap 
ImageView myImage = (ImageView) findViewById(R.id.photoResultView); 
// Setting the image to the image view 
myImage.setImageBitmap(myBitmap); 
Questions connexes