Android Aile de mucchin | page 5: Accueil



Comment obtenir l'aperçu image de la caméra d'Android app


Comment obtenir un aperçu de l'appareil photo comme une image de l'application Android?

Le dernier de son obturateur de la caméra sur Android est une continuation de.

Dans Android, est un moyen d'économiser sans takePicture (), l'image de la caméra.
J'essaie de différentes couleurs, j'ai pu enregistrer en tant qu'image en quelque sorte, et je tiens à présenter, y compris des histoires d'horreur.


Cas d'échec de 1 getDrawingCache ()

Dans Android, s'il ya une telle API utile pour être sauvé comme un instantané de l'image à l'écran? En ce qui concerne, j'ai regardé.
Puis, nous avons des méthodes suivantes.
getDrawingCache ()
C'est la méthode de la classe android.view.View.

Tout d'abord, si vous essayez d'utiliser le () getDrawingCache, nul n'a été retourné.
Et lire la référence de l'API, parce qu'il y avait une explication doit activer le cache, j'ai essayé de courir juste avant les méthodes suivantes.
setDrawingCacheEnabled (true);

Ce, plutôt que null, est une instance de Bitmap est provisoirement maintenant de retour.
Pour gérer une instance de lui, mais n'a pas été enregistré, a été un fichier image en noir.
Aussi dans l'émulateur, même Xperia.

J'ai essayé avec un mauvais usage de l'API que Nde ne semble pas, ne ferait pas si autre que l'aperçu de la caméra.
Si vous faites la même chose sur l'écran ou le bouton pour afficher uniquement l'image habituelle de la demande a été correctement enregistré.
Est l'inférence, et un aperçu de la caméra, en vue de l'ordinaire, le tampon d'affichage est quelque chose de différent ou, peut-être, pense getDrawingCache ce (), l'image de prévisualisation de la caméra ne serait pas obtenu, cette méthode a été abandonnée.


Traitement comme un tableau d'octets qui est passé dans le cas 2 l'échec PreviewCallback

Fonctionnalités de la caméra d'Android, vous pouvez configurer une instance lors de l'exécution des opérations telles que le traitement et la photographie de l'aperçu, de le rappeler.
Un aperçu de la caméra, si vous définissez un rappel, il sera rappelé un par un, est PreviewCallback.
Plus précisément, il s'agit d'un rappel que vous avez défini dans la méthode suivante.
setPreviewCallback (Camera.PreviewCallback cb)
C'est la méthode de la classe android.hardware.Camera.
Au cours de la méthode du processus de prévisualisation, sur une base régulière, () est appelée une instance de type de PreviewCallback onPreviewFrame que vous définissez dans l'argument.
Comme argument à cette méthode, qui est à venir est passé d'un tableau de type byte, cela aurait dû être dans les données d'image de prévisualisation.

Toutefois, ce tableau d'octets, et il ne peut pas être convertie en une image bitmap en tant que ·.
Par exemple, si vous passez des méthodes suivantes, ce tableau, null est renvoyé fera.
decodeByteArray (byte [] data, int offset, int length)
Sera Ce n'est pas une méthode de classe android.graphics.BitmapFactory, que nulle est renvoyée par cette méthode, il n'est pas un format de tableau d'octets est correcte.




Traitement d'un tableau d'octets qui est passé dans le succès PreviewCallback cas

La méthode précédente est, il doit aller le faire pour convertir le tableau d'octets à quelque chose! Et croire, j'ai examiné un peu plus collante.
Puis, il y avait un endroit où des questions similaires sont posées.
Vous voulez transformer en un ensemble de données octet bitmap de la caméra
Vous devez me dire d'une manière que M. saikoro de cet article.
Type de PreviewCallback OnPreviewFrame de grande instance (), mais seulement un extrait méthode de transformation. (Si vous ne savez pas tout cela, s'il vous plaît essayez de naviguer sur le site source.)


public void onPreviewFrame (byte [] data, un appareil photo caméra) {
final int width = getWidth (); final int hauteur = largeur de getHeight / / preview (); int hauteur / / Aperçu [] rgb = new int [(largeur * hauteur)]; essayez une matrice de pixels de l'/ / ARGB8888 {
Bitmap bmp = Bitmap.createBitmap (largeur, hauteur, Bitmap.Config.ARGB_8888); conversion bmp.setPixels / / (rgb, 0, largeur; decodeYUV420SP création bitmap vide (rgb, les données, largeur, hauteur) est / / ARGB8888 , 0, 0, largeur, hauteur); fixée à une image bitmap à partir pixel / / la conversion

/ / ★
} Catch (Exception e) {
/ / Erreur}
}

publique decodeYUV420SP static void final (int [] rgb, byte [] yuv420sp, int largeur, int hauteur) {
final int framesize = largeur * hauteur;
for (int j = 0, yp = 0; j <hauteur; j + +) {
int UVP = framesize + (j >> 1) * largeur, u = 0, v = 0;
for (int i = 0; i <largeur; i + +, yp + +) {
int y = (0xff & ((int) yuv420sp [yp])) - 16;
si (y <0) y = 0;
if ((i & 1) == 0) {
v = (0xff & yuv420sp [UVP + +]) - 128;
u = (0xff & yuv420sp [UVP + +]) - 128;
}
int n o Y1192 = 1192 * y;
int r = (n o Y1192 + 1634 * v);
int g = (n o Y1192 - 833 * v - 400 * u);
int b = (n o Y1192 + 2066 * u);
si (r <0) r = 0; sinon si (r> 262 143) r = 262 143;
si (g <0) g = 0; if (g> 262 143) g = 262 143;
if (b <0) b = 0; else if (b> 262 143) b = 262143;
rgb [yp] = 0xFF000000 | ((r << 6) et 0xff0000) | ((g >> 2) & 0xFF00) | ((b >> 10) & 0xff);
}
}
}


Toutefois, dans cet article, dans la mesure où effectivement pour enregistrer les images ne sont pas plonger.
Fait partie de la "★" ci-dessus.
Je pense que la prochaine fois, et après avoir réfléchi, je voudrais vous présenter ma propre voie, à l'exception d'un échantillon de la transformation de cette partie.
Comment enregistrer des photos prises avec la fonction appareil photo de l'application Android

3 4 5 6 7 ... 10 20 30 ... Last » Page 5 sur 81 «Première ... trois quatre cinq six sept ... 10 20 30 ... Dernière »