рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА, рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдлреЛрди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд▓рдЧрднрдЧ" рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рдХреИрдорд░рд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рдХрд╛рд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП "рдЖрд╡рд╢реНрдпрдХ" рдЫрд╡рд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореИрдВ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдЧрд░ рд╣рд╛рде рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд╛рд▓рд╛ рдХреЛрдИ рдлреЛрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдкрд┐рдЫрд▓реА
рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдорд╛рд░реНрдХрд░ рдорд╛рдиреНрдпрддрд╛ рдкрджреНрдзрддрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдпрд╣ рдЖрд▓реЗрдЦ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд╡реЗрдм рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░
рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдореБрд▓реЗрдЯрд░ рдФрд░ рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:
рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╡реЗрдмрдХреИрдо рд╕реЗ рдЫрд╡рд┐рдпрд╛рдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╕рдорд╛рдзрд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг
1)
рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдУрдкрдирд╕реЛрд░реНрд╕ рдореЗрдВ рд╣реИред2) рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╡реЗрдм рдХреИрдорд░рд╛ рд╕реЗ рд╕реНрдЯреНрд░реАрдо рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
3) Android x86 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдордзреБрдХреЛрд╢ рдХреЗ рд▓рд┐рдП рдПрдореНрдпреВрд▓реЗрдЯрд░ рд╕реНрд░реЛрдд рдХреЛрдб
рдорд╛рд░реНрдЪ 2011 рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рд╡рд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬреЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрддреНрдкрд╛рджрдХ рд╣реИред рдХреНрдпрд╛ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдФрд░ v4l2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреБрднрд╡ рд╣реИред
Androidx86 рдПрдХ рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рдореИрдВ рд╡реЗрдмрдХреИрдо рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред
рдкрд╣рд▓реЗ рдФрд░ рддреАрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд▓рдбрд╝реЗрдВрдЧреЗред
рд╡рд┐рдЪрд╛рд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдФрд░ рдПрдкреАрдЖрдИ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА
рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирдП рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ
рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреЗрдПрдордПрдл рдХреЗ рд▓рд┐рдПред рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди, рд▓реЗрдХрд┐рди рдЬреЗрдПрдордПрдл рдиреЗ рдореЗрд░реЗ рдХреИрдорд░реЗ рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирд╛ред рд▓рд┐рдирдХреНрд╕ рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЬреЗрдПрдордПрдл рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдорд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ (рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдЖрдЧреЗ рдХреА рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдХреАрдВред рд╣рдо рддреИрдпрд╛рд░ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕реНрд░реЛрдд рдХреЛрдб рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рд░реНрд╡рд░ рдХреИрдорд░реЗ рд╕реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ) рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ
JDKAndroid рдПрд╕рдбреАрдХреЗрдЧреНрд░рд╣рдг + рдЧреВрдЧрд▓ ADTv4l4j/ рджреЗрд╡ / рд╡реАрдбрд┐рдпреЛ0 - рд╡реЗрдм рдХреИрдорд░рд╛ред
рд╕рд░реНрд╡рд░
рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ v4l4j рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдЬреЛ рдореЗрд░реЗ рдХреИрдорд░реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ JMF рдХреЗ рдмрдЬрд╛рдп рдпрд╣ v4l4j рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реБрдЖ рд╣реИред
рд╕рдВрд╢реЛрдзрд┐рдд WebBroadcaster (рдореИрдВ рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдХрд╛рдо рдХрд╛ рддрд░реНрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛред рдЯреЙрдо рдЧрд┐рдмрд░рд╛ рджреНрд╡рд╛рд░рд╛, рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ v4l4j рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ)ред
package com.webcambroadcaster; import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import au.edu.jcu.v4l4j.DeviceInfo; import au.edu.jcu.v4l4j.FrameGrabber; import au.edu.jcu.v4l4j.V4L4JConstants; import au.edu.jcu.v4l4j.VideoDevice; import au.edu.jcu.v4l4j.VideoFrame; public class WebcamBroadcaster { public static boolean RAW = false; public static void main(String[] args) { int[] values = new int[args.length]; for (int i = 0; i < values.length; i++) { values[i] = Integer.parseInt(args[i]); }
рдХрд╛рдо рдХрд╛ рддрд░реНрдХ рдХреНрдпрд╛ рд╣реИ:
рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдХреИрдорд░рд╛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рдФрд░ рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВ:
public void startCapture(){ try{ String dev = "/dev/video0"; vd = new VideoDevice(dev); fg = vd.getJPEGFrameGrabber(width, height, 0, 0, 80); fg.startCapture(); }catch(Exception e){ e.printStackTrace(); } }
рдлрд┐рд░, рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рд╣рдо рдЙрд╕реЗ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ рдЗрдореЗрдЬ рднреЗрдЬрддреЗ рд╣реИрдВ:
try{
рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдкреБрд░рд╛рдиреЗ getVideoFrame () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреИрдорд░реЗ рдкрд░ рдПрдХ рдирдпрд╛ рдлреНрд░реЗрдо рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░реЗ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рддрд░реНрдХ рдореЗрдВ рднреА рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдмрд╛рдж рдореЗрдВ рдЬрдм рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИ ... рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдордЬреЗрдкреАрдИрдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ / рдПрдХреНрд╕-рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ HTTP рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд┐рддреНрд░ рдЖрддреЗ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ
рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХреИрдорд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ
рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реЗ рд╕рд░рд▓ рдХрд░реЗрдВрдЧреЗ (рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдЗрдиреЗрдВ: рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
preview = new Preview(this); ((FrameLayout) findViewById(R.id.preview)).addView(preview);
рдФрд░ рд╡рд░реНрдЧ рд╣реА:
package com.example; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.Button; import android.widget.FrameLayout; public class CameraDemo extends Activity { private static final String TAG = "CameraDemo"; Preview preview; Button buttonClick; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); preview = new Preview(this); ((FrameLayout) findViewById(R.id.preview)).addView(preview); Log.d(TAG, "It were created"); } }
рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рдЕрдВрджрд░, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЙрд╕ рд╕рддрд╣ рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
package com.example; import java.io.IOException; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; class Preview extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; public Camera camera; Preview(Context context) { super(context);
рдпрджрд┐ рдпрд╣ рдХреЛрдб рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдКрдкрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдПрдХ рдмреЙрдХреНрд╕ рдорд┐рд▓рддрд╛ рд╣реИред
рдЕрдм, рд╣рдо рдХрдХреНрд╖рд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдПред
1)
рдпрд╣рд╛рдВ рд╕реЗ рд╕реЙрдХреЗрдЯрдордХреЗрд░рд╛ рдХреНрд▓рд╛рд╕ рд╕реЛрд░реНрд╕ рд▓реЗрдВред рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
2) рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╡рд░реНрдЧ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрджрд▓реЗрдВ:
package com.example; import java.io.IOException; import android.content.Context; import android.hardware.Camera; import android.view.SurfaceHolder; import android.view.SurfaceView; class Preview extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder;
рдкрд░рд┐рдгрд╛рдо
рдЕрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
java -Djava.library.path = / opt / Android / v4l4j-0.8.10 -cp "/opt /Android/v4l4j-0.8.10/v4l4j.jar:.//" com / webcambroadcaster / WebcamBroadcaster
рдЬрд╣рд╛рдБ
-Djava.library.path = / opt / Android / v4l4j-0.8.10 рдЖрдкрдХреЗ
v4l4j рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдХрд╛ рдкрде рд╣реИ
рдПрдореБрд▓реЗрдЯрд░ рдкрд░ CameraDemo рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВред рдирддреАрдЬрддрди, рд╣рдо рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рд╡реЗрдм рдХреИрдорд░рд╛ рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдзрд╛рдЧрд╛ рдереЛрдбрд╝рд╛ рдЭрдЯрдХрд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рджреЗрд░ рд╕реЗ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред
рдЧреНрд░рд╛рд╣рдХ рд╕реНрд░реЛрдд:
CameraDemo.zipрд╕рд░реНрд╡рд░ рд╕реНрд░реЛрдд:
WebBroadcaster.zipрдЕрдВрддрднрд╛рд╖рдг
рдореИрдВрдиреЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╕реАрдорд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдЦрд░реАрджрдирд╛ рдЕрдХреНрд╕рд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдореБрд▓реЗрдЯрд░ рдЗрд╕ рджрд╣рд▓реАрдЬ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣реА рд╣рдЯрд╛рддрд╛ рд╣реИред
рдФрд░ рдлрд┐рд░ iPhone рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕реАрдорд╛ рд╣реИ?
рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдХрд┐ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕рдореБрджрд╛рдп рдХрд╛ рд╕рджрд╕реНрдп рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛, рд╕рд╡рд╛рд▓ рдЙрдарддреЗ рд╣реИрдВ:
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рд▓рд╛рдн рд╣реИ?
рд╢рд╛рдпрдж рд╕рдореБрджрд╛рдп рдХрд╛ рдХрд╛рдо Google рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдЕрдм рд╕рдореБрджрд╛рдп рд╕реЗ рдХреБрдЫ рдЫрд┐рдкрд╛рдирд╛ рд╣реИ?
рдФрд░ рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдФрд░ рдкреВрд░рдХ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЫрд┐рдкрд╛рдХрд░ рд╡рд┐рд╢рд╛рд▓ рдХреНрдпрд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИ?
UPD: рдпрд╣ рд╕рдм рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред skl1f рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрдорд░рд╛ SDK рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред
developer.android.com/sdk/tools-notes.html - рдЬреИрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╣рд╛рдБ рдХрд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓:
developer.android.com/guide/developing/devices/emulator.html - рдирд╣реАрдВред рдЖрдкрдХреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
UPD2: рдЬрд╛рдБрдЪ рдХреА рдЧрдИред рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдХреИрдорд░рд╛
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░
рдПрд╕рдбреАрдХреЗ рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ
ред 14 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдФрд░ рдХреЗрд╡рд▓
рдПрдВрдбреНрд░реЙрдЗрдб 4.0 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП ред рдкреБрд░рд╛рдиреЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред