ปีกของ Android mucchin | หน้า 5: หน้าหลัก



วิธีการรับภาพของกล้องของ Android Apps


วิธีการได้รับการแสดงตัวอย่างของกล้องเป็นภาพของ app Android?

ล่าสุด จากเสียงชัตเตอร์กล้องบน Android เป็นความต่อเนื่องของ

ใน Android, เป็นวิธีการประหยัดโดยไม่ต้อง () takePicture, ภาพของกล้อง
ฉันพยายามสีที่แตกต่างผมสามารถที่จะบันทึกเป็นภาพอย่างใดและฉันต้องการที่จะแนะนำ ได้แก่ เรื่องราวสยองขวัญ


กรณีความล้มเหลว 1 getDrawingCache ()

ใน Android ไม่ว่าจะมีเช่น API ที่มีประโยชน์จะถูกบันทึกไว้เป็นภาพรวมของภาพบนหน้าจอ? ในแง่ของผมมอง
จากนั้นเราจะมีวิธีการดังต่อไปนี้
getDrawingCache ()
นี้เป็นวิธีการ android.view.View ชั้น

ก่อนอื่นหากคุณลองใช้ () getDrawingCache, null ถูกส่งกลับ
และอ่านการอ้างอิง API เนื่องจากมีคำอธิบายที่ถูกต้องเปิดใช้งานแคชผมพยายามที่จะเรียกใช้ก่อนวิธีการต่อไป
setDrawingCacheEnabled (true);

นี้มากกว่าโมฆะเป็นตัวอย่างของบิตแมปจะถูกส่งกลับไม่แน่นอนในขณะนี้
เพื่อจัดการกับตัวอย่างของมัน แต่ไม่ได้บันทึกไว้เป็นไฟล์ภาพสีดำ
นอกจากนี้ในโปรแกรมจำลองแม้ Xperia

ฉันได้พยายามกับการใช้งานที่ไม่ถูกต้องของ API เป็นประสบการณ์ใกล้ตายไม่ได้ดูเหมือนจะไม่ทำถ้านอกเหนือจากการแสดงตัวอย่างของกล้อง
ถ้าคุณทำสิ่งเดียวกันบนหน้าจอหรือปุ่มที่จะแสดงเฉพาะภาพที่ตามปกติของโปรแกรมประยุกต์ที่ได้รับการเก็บไว้อย่างถูกต้อง
เป็นข้อสรุปและตัวอย่างของกล้องในมุมมองของสามัญ, กันชนหน้าจอเป็นสิ่งที่แตกต่างกันหรือบางทีอาจจะคิด getDrawingCache นี้ (), ภาพตัวอย่างของกล้องจะไม่ได้รับวิธีการนี​​้ถูกทิ้งร้าง


การประมวลผลเป็นแถว byte ที่ส่งผ่านความล้มเหลวในกรณี PreviewCallback 2

การทำงานของกล้อง Android ของคุณสามารถกำหนดค่าอินสแตนซ์เมื่อทำการดำเนินการเช่นการประมวลผลและการถ่ายภาพจากการแสดงตัวอย่างให้โทรกลับ
ตัวอย่างของกล้องถ้าคุณตั้งค่าการโทรกลับก็จะถูกเรียกกลับมาหนึ่งโดยหนึ่ง PreviewCallback คือ
โดยเฉพาะอย่างยิ่งมันเป็นโทรกลับที่คุณตั้งไว้ในวิธีการดังต่อไปนี้
setPreviewCallback (Camera.PreviewCallback CB)
นี่คือวิธีการเรียน android.hardware.Camera
ในระหว่างกระบวนการวิธีการแสดงตัวอย่างให้เป็นประจำ, () เรียกว่าอินสแตนซ์ของ PreviewCallback onPreviewFrame ประเภทที่คุณตั้งไว้ในอาร์กิวเมนต์
เป็นอาร์กิวเมนต์ให้วิธีการนี​​้คือการมาจะถูกส่งผ่านอาร์เรย์ของไบต์ประเภทนี้ควรได้รับในข้อมูลภาพตัวอย่าง

แต่นี้แถว byte และไม่สามารถแปลงเป็นบิตแมปเป็น·
ตัวอย่างเช่นถ้าคุณผ่านวิธีต่อไปนี้แถวนี้, null ถูกส่งกลับจะทำให้เกิด
decodeByteArray (byte [ข้อมูล], int offset, int ยาว)
จะไม่ได้เป็นวิธีการเรียน android.graphics.BitmapFactory ว่า null ถูกส่งกลับโดยวิธีการนี​​้จะไม่เป็นรูปแบบอาร์เรย์ไบต์ถูกต้อง




การประมวลผลอาร์เรย์ไบต์ที่ถูกส่งผ่านไปในความสำเร็จ PreviewCallback กรณี

วิธีการก่อนหน้าคือมันควรจะไปทำมันจะแปลงแถว byte เพื่อบางสิ่งบางอย่าง! และเชื่อผมตรวจสอบเพิ่มเติมเล็กน้อยเหนียว
แล้วมีสถานที่ที่คำถามที่คล้ายกันจะถูกถามคือ
คุณต้องการให้กลายเป็นข้อมูลไบต์ที่บิตแมปจากกล้อง
คุณต้องบอกฉันในแบบที่นาย saikoro ของบทความนี้
ประเภท PreviewCallback OnPreviewFrame ของอินสแตนซ์ () แต่เฉพาะข้อความที่ตัดตอนมาเปลี่ยนวิธีการ (หากคุณไม่ทราบว่าเป็นเพียงแค่นี้โปรดพยายามที่จะเรียกดูเว็บไซต์แหล่ง.)


ถือเป็นโมฆะ onPreviewFrame สาธารณะ (byte [ข้อมูล], กล้องกล้อง) {
สุดท้าย int width = getWidth (); สุดท้าย int height = ความกว้างของ getHeight / / ตัวอย่าง (); int สูง / / ตัวอย่าง [] RGB = new int [(กว้าง * สูง)]; ลองแถวของพิกเซลของ / / ARGB8888 {
Bitmap BMP = Bitmap.createBitmap (width, height, Bitmap.Config.ARGB_8888); แปลง bmp.setPixels / / (RGB, 0, ความกว้าง; decodeYUV420SP สร้างบิตแมปที่ว่างเปล่า (RGB, ข้อมูล, width, height) เป็น / / ARGB8888 , 0, 0, ความกว้างความสูง); กำหนดให้บิตแมปจากพิกเซล / / ถูกดัดแปลง

/ ★ /
} catch (Exception e) {
/ ข้อผิดพลาด /}
}

ประชาชนเป็นโมฆะคง decodeYUV420SP สุดท้าย (int [] RGB, byte [] yuv420sp, int width, height int) {
สุดท้าย int frameSize ความกว้างความสูง = *;
for (int j = 0, YP = 0; j สูง <; j + +) {
int UVP frameSize = + (j >> 1) กว้าง *, u = 0, v = 0;
for (int i = 0; ฉันมีความกว้าง <; i + +, YP + +) {
int y = (0xff & ((int) yuv420sp [YP])) - 16;
ถ้า (y <0) y = 0;
ถ้า ((I & 1) == 0) {
v = (0xff & yuv420sp [UVP + +]) - 128;
u = (0xff & yuv420sp [UVP + +]) - 128;
}
int y1192 = 1192 * y;
int r = (y1192 + 1634 * v);
int กรัม = (y1192 - 833 * v - 400 * u);
int b = (y1192 + 2066 * u);
ถ้า (r <0) r = 0; else if (r> 262143) r = 262143;
ถ้า (g <0) g = 0; else if (g> 262143) กรัม = 262143;
ถ้า (b <0) B = 0; else if (b> 262143) B = 262143;
RGB [YP] = 0xff000000 | ((r << 6) & 0xff0000) | ((กรัม >> 2) & 0xff00) | ((b >> 10) & 0xff);
}
}
}


อย่างไรก็ตามในบทความนี้เท่าที่เป็นจริงเพื่อบัน​​ทึกภาพไม่ได้ Delving
เป็นส่วนหนึ่งของ "★" ข้างต้น
ผมคิดว่าครั้งต่อไปและหลังจากที่คิดว่าฉันอยากจะแนะนำวิธีที่ตัวเองบันทึกตัวอย่างของการประมวลผลจากส่วนนี้
วิธีการบันทึกภาพที่ถ่ายด้วยฟังก์ชั่นกล้องของ Android app

3 4 5 6 7 ... 10 20 30 ... Last » หน้า 5 จาก 81 «แรก ... สาม สี่ 5 6 เจ็ด ... 10 20 30 ... ล่าสุด»