Android Wing på mucchin | sida 5: Home



Hur får man bilden kameran förhandsvisning av Android Apps


Hur får man en förhandsgranskning av kameran som en bild av Android app?

Den sista av kameran slutarljudet på Android är en fortsättning.

I Android, är ett sätt att spara utan () takePicture, kamerabilden.
Jag försöker olika färger, jag kunde spara som en bild på något sätt, och jag vill införa, inklusive skräckhistorier.


Misslyckande fall 1 getDrawingCache ()

I Android, om det är en sådan bra API ska sparas som en ögonblicksbild av skärmen bilden? När det gäller såg jag.
Sedan har vi följande metoder.
getDrawingCache ()
Detta är metoden i android.view.View klass.

Först, om du försöker använda () getDrawingCache var null returneras.
Och läs API-referensen, eftersom det fanns en förklaring skall göra det möjligt cache, försökte jag köra precis innan följande metoder.
setDrawingCacheEnabled (true);

Detta snarare än null, är en instans av Bitmap preliminärt är nu tillbaka.
För att hantera en instans av det, men sparades inte, var en svart bildfil.
Även i emulatorn, även Xperia.

Jag har försökt med fel användning av API som Nde inte verkade, inte skulle göra om annan än förhandsgranskningen av kameran.
Om du gör samma sak på skärmen eller knappen för att visa enbart den vanliga bilden av ansökan har förvaras på rätt sätt.
Är slutsatsen, och en förhandsvisning av kameran, med tanke på det vanliga, är displayen bufferten något eller annat, kanske tror getDrawingCache här () skulle förhandsgranskning av kameran inte kan erhållas, denna metod övergavs.


Behandling som ett byte array som förs i fall 2 PreviewCallback fel

Android kamera funktionalitet kan du konfigurera en instans när de utför operationer såsom behandling och fotografering av förhandsgranskningen att ringa tillbaka.
En förhandsgranskning av kameran om du ställer in en återuppringning, kommer det att kallas tillbaka en efter en, är PreviewCallback.
Specifikt är det en återuppringning som du anger i följande metod.
setPreviewCallback (Camera.PreviewCallback cb)
Detta är metoden i android.hardware.Camera klass.
Under förhandsgranskningen processen regelbundet, () anropas en instans av typ onPreviewFrame PreviewCallback som du anger i argumentet.
Som ett argument för att denna metod är att komma leds en mängd av typ byte, borde detta ha varit i uppgifterna förhandsgranskningsbilden.

Men detta byte array, och det inte kan konverteras till en bitmapp som ·.
Till exempel, om du passerar följande metoder, denna array är null returneras kommer orsaka.
decodeByteArray (byte [] data, int offset, int längd)
Kommer att vara här är inte en metod för att android.graphics.BitmapFactory klass, som null returneras av denna metod är det inte ett byte array format är korrekt.




Bearbetning ett byte array som passerar i det fall PreviewCallback framgången

Den tidigare metoden är, bör det gå göra det för att konvertera bytearrayen till något! Och tro, har jag granskat lite mer klibbig.
Sedan var det en plats där liknande frågor ställs.
Du vill förvandlas till en bitmapp byte data från kameran
Du måste berätta på ett sätt som Mr saikoro av denna artikel.
OnPreviewFrame PreviewCallback typ av instans (), men endast ett utdrag omvandla metod. (Om du inte vet just detta, försök att surfa på källwebbplatsen.)


public void onPreviewFrame (byte [] data, kamera kamera) {
final int width = getWidth (); final int height = getHeight bredd / / förhandsgranskning (); int höjd / / Preview [] rgb = new int [(bredd * höjd)]; prova en rad pixlar på / / ARGB8888 {
Bitmap bmp = Bitmap.createBitmap (bredd, höjd, Bitmap.Config.ARGB_8888); bmp.setPixels omvandling / / (rgb, 0, bredd; decodeYUV420SP skapa tomma bitmapp (rgb, data, bredd, höjd) är / / ARGB8888 , 0, 0, bredd, höjd), inställd på en bitmapp från pixel / / ombildades

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

offentliga static final void decodeYUV420SP (int [] rgb, byte [] yuv420sp, int bredd, int höjd) {
final int frameSize = bredd * höjd;
för (Int J = 0, yp = 0, j <höjd, j + +) {
int UVP = frameSize + (j >> 1) * bredd, u = 0, v = 0;
for (int i = 0; i <bredd, i + +, YP + +) {
int y = (0xFF & ((int) yuv420sp [yp])) - 16;
om (Y <0) y = 0;
if ((I & 1) == 0) {
v = (0xFF & yuv420sp [UVP + +]) - 128;
u = (0xFF & yuv420sp [UVP + +]) - 128;
}
int y1192 = 1192 * y;
int r = (y1192 + 1634 * v);
int g = (y1192 - 833 * v - 400 * u);
int b = (y1192 + 2066 * u);
if (r <0) r = 0; else if (r> 262.143) r = 262.143;
if (g <0) G = 0; else if (g> 262.143) g = 262.143;
if (b <0) b = 0; else if (b> 262.143) b = 262.143;
RGB [yp] = 0xff000000 | ((r << 6) och 0xFF0000) | ((g >> 2) och 0xff00) | ((b >> 10) & 0xFF);
}
}
}


Men i den här artikeln, så långt som att verkligen spara bilderna inte djupdykning.
Är en del av "★" ovan.
Jag tror nästa gång, och efter att ha tänkt jag skulle vilja presentera min egen väg, spara ett prov av behandlingen av denna del.
Hur spara bilder tagna med kameran funktion Android app

3 4 5 6 7 ... 10 20 30 ... Last » Sidan 5 av 81 «Första ... tre fyra fem sex syv ... 10 20 30 ... Sista »