Comment enregistrer des données de la caméra sur un disque en utilisant MediaStore sur Android?
Pour mon application, je l'avais été avec mon propre Appareil photo de classe pour prendre des photos et de ma propre base de données, mais assez vite, je ne pouvais pas vraiment suivre les changements et j'ai décidé d'utiliser la caméra intégrée de l'application Android, et à faire le travail, mais je n'arrive pas à l'obtenir pour enregistrer le fichier. Ce qui me manque ici? L'application semble enregistrer le fichier, mais c'est juste 0 octets. J'ai regardé le code source de l'application Appareil photo et il est à la recherche de la "sortie" dans " Extras pour enregistrer le fichier. Toute aide serait grandement appréciée.
Public class CameraTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button cameraButton = (Button) findViewById(R.id.cameraButton);
cameraButton.setOnClickListener( new OnClickListener(){
public void onClick(View v ){
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.BUCKET_ID, "test");
values.put(Images.Media.DESCRIPTION, "test Image taken");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra("output", uri.getPath());
startActivityForResult(intent,0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode== 0 && resultCode == Activity.RESULT_OK){
((ImageView)findViewById(R.id.pictureView)).setImageURI(data.getData());
}
}
}
source d'informationauteur prasanna
Vous devez vous connecter pour publier un commentaire.
Cela a fonctionné avec le code suivant, certes, j'ai été un peu stupide avec le dernier. Je pense toujours qu'il doit y avoir une meilleure façon de sorte que l'image d'origine est enregistré quelque part. Il envoie toujours moi le plus petit de 25% de la taille de l'image.
Aussi, je sais que le cupcake version d'Android devrait résoudre le problème de la petite taille de l'image bientôt.
Le code ci-dessous va commencer par défaut de la caméra et l'appareil photo pour enregistrer l'image de l'uri spécifié. La clé est de mettre le "MediaStore.EXTRA_OUTPUT" le long avec des uri.
Dans votre première tentative, il se pourrait que l'application Appareil photo se bloque lorsqu'il lit votre "sortie" supplémentaire, car il s'attend à être un Uri, tandis que vous fournir une Chaîne. L'application Appareil photo semble lire l'indicateur supplémentaire après la prise de la photo. Vous devez juste fournir uri, et pas d'uri.getPath(). Alors, puisque vous connaissez déjà l'URI de la photo, il ne sera pas retourné dans le onResult appel. Vous devez vous rappeler l'URI dans une variable membre.
Dans la seconde tentative, vous obtiendrez un réduit (50%) bitmap en arrière. Il est principalement conçu pour les vues. Je pense que le plein de la taille d'image est trop grande pour le budget mémoire de l'application. Cela peut être la raison de la baisse.
Pour info , trouvé ceci sur docs :
L'appelant peut passer un supplément de EXTRA_OUTPUT de contrôle où cette image sera écrit. Si le EXTRA_OUTPUT n'est pas présent, alors une petite taille d'image est retourné comme un objet Bitmap dans le champ supplémentaire. Ceci est utile pour les applications qui ont seulement besoin d'une petite image. Si le EXTRA_OUTPUT est présent, alors le plein de la taille de l'image sera écrit à l'Uri de la valeur de EXTRA_OUTPUT.
trouve ici :http://developer.android.com/reference/android/provider/MediaStore.html
ainsi, l'application peut enregistrer l'image en taille réelle pour vous , si vous le dites où.
**Edit : Ce n'est pas le cas avec les appareils HTC. HTC (pas de lien) qui utilise htc sense ui ont ramifiée à partir de android 1.5 et réaliser un bug qui a toujours enregistrer l'image en basse résolution. vous pouvez déjeuner de l'activité pour l'appareil-photo et d'utiliser la fonction de partage d'appareil photo pour utiliser l'image pleine grandeur.
J'ai eu le même Problème avec l'Émulateur,
Je l'ai essayé sur un vrai Téléphone un il a travaillé,
peut-être que c'est parce que le Téléphone Virtuel ne peut pas vraiment prendre des Images.