
рд╣рд╛рдп% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%! рдЖрдЬ рдореИрдВ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдФрд░ рдЙрди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдХреИрдорд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд╛рдлреА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред
рдкреНрд░рд╣рд░реА рдРрдк рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╡рд┐рдХрд╛рд╕ рд╡рд┐рднрд╛рдЧ рдХреЗ рдЕрдВрджрд░ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд┐рдореНрдмрд┐рдпрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ред рд╡рд┐рдЪрд╛рд░ рд╕реНрд╡рдпрдВ рд╕реАрдзрд╛ рд╣реИ - рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ рд▓реЗрдВ рдЬрд┐рд╕рдиреЗ рдлреЛрди рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рд▓рд┐рдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд┐рдЧреНрдирд▓ рдореЙрдбреНрдпреВрд▓ рдлреЛрди рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╕рд┐рдо рдХрд╛рд░реНрдб рдпрд╛ рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдпрд╛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛, рдПрдХ рдЗрдирдХрдорд┐рдВрдЧ рдпрд╛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓, рдпрд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ - рдореБрдЦреНрдп рд╕реЗрдВрд╕рд░ рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рд╕реЗрдВрд╕рд░ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЙрд╕ рдХреНрд╖рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдлреЛрди рдЯреЗрдмрд▓ рд╕реЗ рдЙрдард╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреЙрд▓рдмреИрдХ рдореЙрдбреНрдпреВрд▓ рд╡реЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╕реЗрдВрд╕рд░ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдлреЛрдЯреЛрдЧреНрд░рд╛рдлреА рдФрд░ рд╕рд╛рдЙрдВрдб рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп, рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдкреБрд░рд╛рдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рдмрдиреЗ рд░рд╣реЗ, рдпрд╣ рдореЙрдбреНрдпреВрд▓рд░ рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдФрд░ рдХреЗрд╡рд▓ рдлреЛрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдмрдиреА рд░рд╣реАред рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдПрдХ рдлреЛрдЯреЛ рд▓реЛ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрдХреЛ рдХреИрдорд░реЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рджреВрдВрдЧрд╛ред
- Android рдореЗрдВ рдлрд╝реЛрдЯреЛ рдХреЗ рд▓рд┐рдП, рдХреИрдорд░рд╛ рд╡рд░реНрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />
рдПрдХ рддрд╕реНрд╡реАрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:
- GetNumberOfCameras рдФрд░ getCameraInfo рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдХреИрдорд░реЗ рдХреА рдЖрдИрдбреА рдвреВрдВрдвреЗрдВ);
- рдУрдкрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдорд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- GetParameters рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрддрдорд╛рди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВ рдФрд░ рд╕реЗрдЯрдкреИрд░рдореАрдЯрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ;
- рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд╕реЗрдЯрдбрд┐рд╕рдкреНрд▓реЗрдУрдЗрд░рд┐рдПрд╢рди рд╡рд┐рдзрд┐ (рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ!) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдорд░рд╛ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВред
- рдорд╣рддреНрд╡рдкреВрд░реНрдг: рд╕реЗрдЯрдкреНрд░рд┐рд╡реНрдпреВрдбрд┐рд╕рдкреНрд▓реЗ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд░рдВрднреАрдХреГрдд рд╕рд░рдлреЗрд╕рд╣рд╛рд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреИрдорд░рд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
- рдорд╣рддреНрд╡рдкреВрд░реНрдг: StartPreview рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ), рдЬреЛ рд╕рд░рдлреЗрд╕рд╣рд╛рд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЪрд┐рддреНрд░ рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред
- рдЕрдВрдд рдореЗрдВ, рдЯреЗрдХрдкрд┐рдХреНрдпреЛрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ред
- рдЯреЗрдХрдкрд┐рдХреНрдЪрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝реЛрдЯреЛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ startPreview рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛;
- рдпрджрд┐ рдХреИрдорд░реЗ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕реНрдЯреЙрдкрдкреНрд░реЗрд╡ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
- рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрдорд░рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреБрд░рдВрдд рдСрдирдкреЙрдЬ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреИрдорд░рд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдУрдиреНрдпреВрд╕рдо рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рдпрд╣ рд╡рд░реНрдЧ рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрд╢рди (рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, рдлрд╝реЛрдХрд╕, рдлреЛрдЯреЛ рдХреИрдкреНрдЪрд░) рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВ рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрд╕реА рдереНрд░реЗрдб рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЦреБрд▓реА рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪреЗрддрд╛рд╡рдиреА: рдПрдВрдбреНрд░реЙрдЗрдб рдУрдПрд╕ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреИрдорд░рд╛ рдХреНрд╖рдорддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди, рдСрдЯреЛрдлреЛрдХрд╕, рдЖрджрд┐)ред
рдпрд╣рд╛рдБ рдЕрдиреБрд╡рд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдордЬрд╝рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:
- рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджрд┐рдЦрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
- рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░, рдХреИрдорд░рд╛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЙрдирд╕реЗ рд▓рдбрд╝реЗрдВрдЧреЗред
рдЬрдм рдПрдХ рд╕рдорд╕реНрдпрд╛ "рдХреА рдЧреЛрджреА рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдХреА рд╢реНрд░реЗрдгреА рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╕реНрд░реЛрдд рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рд╣реИред рдЙрдирд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рджреЗрд╢реА рдХреЛрдб setPreviewDisplay (рд╕рд░рдлреЗрд╕) рдХреЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд▓реНрджреА рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореИрдВ C ++ рдХреЗ рдХрд╛рдВрдЯреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рдпрд╛ - рдПрдХ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯрдкреНрд░реЗрд╡реНрдпреВрдбрд┐рд╕рдкреНрд▓реЗ рд╕рд░реНрдлреЗрд╕рд╣реЙрд▓реНрдбрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЪреВрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (3.0 рддрдХ, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдПрдХрдорд╛рддреНрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдПрдХрдорд╛рддреНрд░ рд╕рд╡рд╛рд▓ рдЕрдм рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрддреНрддрд░ рд╣рд╛рдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
- рдкрд╛рд░рджрд░реНрд╢реА рдЧрддрд┐рд╡рд┐рдзрд┐ред
- рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдКрдкрд░реА рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдПрдХ 1 рдмрд╛рдп 1 рдкрд┐рдХреНрд╕реЗрд▓ рдлреНрд░реЗрдорд▓реЗрдЖрдЙрдЯред
рдкрд╛рд░рджрд░реНрд╢реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреНрд░рдХрдЯ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
<activity android:name=".activities.CameraActivity" android:exported="false" android:launchMode="singleTask" android:excludeFromRecents="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕рд░рд▓ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдПрдБ:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/surfaceHolder" android:layout_width="1.0px" android:layout_height="1.0px" />
рдПрдХ рд╕рд░рдлреЗрд╕рд╣рд╛рд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рддреБрд░рдВрдд рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдХреЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рди рдЬрд╛рдПред
рддреЛ, рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рд╣рдо рдПрдХ рд╕рд░реНрдлреЗрд╕рд╣реЙрд▓реНрдбрд░ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рдлрд┐рд░ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреИрдорд░реЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдФрд░ рдлрд╝реЛрдЯреЛ рд▓реЗрдирд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рд▓реЗрдиреЗ рдХрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рд╣реИред рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
public class CameraActivity extends Activity implements Camera.PictureCallback, SurfaceHolder.Callback { private static final int NO_FRONT_CAMERA = -1; private Camera mCamera; private boolean mPreviewIsRunning = false; private boolean mIsTakingPicture = false; public class CameraPreview extends SurfaceView { public CameraPreview(Context context) { super(context); } } ...
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░рдлреЗрд╕рд╣реЙрд▓реНрдбрд░ (рд╕рд░рдлреЗрд╕рдХреНрд░рд┐рдПрдЯреЗрдб, рд╕рд░рдлреЗрд╕рдЪреИрдВрдХреНрдб, рд╕рд░рдлреЗрд╕рдбреНрд░реЛрдПрдб) рдФрд░ рдХреИрдорд░рд╛ (рдСрдирдкрд┐рдХреНрдпреЛрд░рдЯреЗрдХ) рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрдирд░ рдХреНрд▓рд╛рд╕ рдХреИрдорд░рд╛рдкреНрд░рд┐рд╡реНрдпреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЬрд▓реНрджреА рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╣рдорд╛рд░реЗ рднреВрддрд▓ рд╡реНрдпреВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред рдЖрдЧреЗ, рдореИрдВ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреВрдВрдЧрд╛
рдХреБрдЫ рдХреЛрдб @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.surface_holder); SurfaceView surfaceView = new CameraPreview(this); ((FrameLayout) findViewById(R.id.surfaceHolder)).addView(surfaceView); SurfaceHolder holder = surfaceView.getHolder(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.addCallback(this); } @Override protected void onResume() { startPreview(); super.onResume(); } @Override protected void onPause() { stopPreview(); super.onPause(); } @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { final int cameraId = getFrontCameraId(); if (cameraId != NO_FRONT_CAMERA) { try { mCamera = Camera.open(cameraId); Camera.Parameters parameters = mCamera.getParameters(); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) parameters.setRotation(270); List<String> flashModes = parameters.getSupportedFlashModes(); if (flashModes != null && flashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); List<String> whiteBalance = parameters.getSupportedWhiteBalance(); if (whiteBalance != null && whiteBalance.contains(Camera.Parameters.WHITE_BALANCE_AUTO)) parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); List<String> focusModes = parameters.getSupportedFocusModes(); if (focusModes != null && focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); List<Camera.Size> sizes = parameters.getSupportedPictureSizes(); if (sizes != null && sizes.size() > 0) { Camera.Size size = sizes.get(0); parameters.setPictureSize(size.width, size.height); } List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); if (previewSizes != null) { Camera.Size previewSize = previewSizes.get(previewSizes.size() - 1); parameters.setPreviewSize(previewSize.width, previewSize.height); } mCamera.setParameters(parameters); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) mCamera.enableShutterSound(false); } catch (RuntimeException e) { A.handleException(e, true); finish(); return; } } else { Log.e(Value.LOG_TAG, "Could not find front-facing camera"); finish(); return; } try { mCamera.setPreviewDisplay(surfaceHolder); } catch (IOException ioe) { A.handleException(ioe, true); finish(); } } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) { startPreview(); } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { releaseCamera(); } @Override public void onPictureTaken(byte[] bytes, Camera camera) { mIsTakingPicture = false; releaseCamera();
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ? рдореИрдВ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реВрдВрдЧрд╛ред
- рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╡рд┐рдзрд┐ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдмред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, setPreviewDisplay рд╡рд┐рдзрд┐ред рдпрджрд┐ рдЖрдк рдХреИрдорд░реЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░реАрдХреЗ рдХреЛ рддреБрд░рдВрдд рдСрдирдХреНрд░реАрдЯ рдпрд╛ рдСрдирд╕реНрдХреНрдпреВрдо рдореЗрдВ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреЛрдЯреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рддреЛ рдлрд┐рд░ рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХрдм рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ? рд╕рд╣реА рдЙрддреНрддрд░, рд╕реВрддреНрд░реЛрдВ рдореЗрдВ рджрд┐рдП рдЧрдП SetPreviewDisplay рд╡рд┐рдзрд┐ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрд╢ рд╣реИ:
Android.view.SurfaceHolder рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рддрд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдкandroidroid.view.SurfaceView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ android.view.SurfaceHolder.Callback withandroid.view.ur.SHfaceHolder.addCallback (android.view.SurfaceHolder.Callback) рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ forandroid.view.SurfaceHolder.Callback.surfaceCreat рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред android.view.SurfaceHolder) рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ setPreviewDisplay () рдпрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░реЗрдВред
рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ startPreview () рд╕реЗ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рд╕рд░рдлреЗрд╕рд╣рд╛рд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рд╕рд░рдлреЗрд╕рд╣реЙрд░реНрдбрд░ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛рдирд╛ рдкрдбрд╝рд╛:
onCreate (рдмрдВрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ редstanceState)
onResume ()
рдСрдирдкреЙрдЬрд╝ ()
рд╕рд░рдлреЗрд╕рдЯреЗрдб (рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░)
рднреВрддрд▓ (рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕ рдлрд╝реЛрд▓реНрдбрд░, рдЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк, рдЗрдВрдЯ рдЪреМрдбрд╝рд╛рдИ, рдЗрдВрдЯ рдКрдВрдЪрд╛рдИ)
onStop ()
рд╕рд░рдлреЗрд╕рдЯреНрд░реЛрдбреЗрдб (рд╕рд░рдлреЗрд╕рд╣реЙрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░)
- рдЕрдЧрд▓рд╛ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХреЙрд▓ рдХреЗ рдХреНрд░рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ: "рд╣рдореЗрдВ (mCamera? = Null) рдФрд░ рдЪрд░ mPreviewIsRunning, mIsTakingPicture рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдЗрди рд╕рднреА рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?" рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдпрд╣рд╛рдВ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд╛ рдХреНрд░рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдбреЙрдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ( рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП , рдЗрд╕ рдЖрд░реЗрдЦ рд╕реЗ)ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдлреЛрди рд▓реЙрдХ рд╕реНрдХреНрд░реАрди рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдереЗ рдЬрдм onStop рд╡рд┐рдзрд┐ рдХреЛ рджреЛ рдмрд╛рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, onStart рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, onResume рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╡рд┐рдзрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдмреЛрд░реНрдб рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд╡рдЬреВрджред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рдЖрд╡реЗрджрди рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
- рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдШрдЯрдирд╛ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдХреНрд░реАрди рдХреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░)ред
- OnCreate рдореЗрдВ, рдПрдХ рд╕рд░рдлреЙрд░рд╣реЛрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдХреЙрд▓рдмреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред
- рд╣рдо рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреИрдорд░реЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред
- рдХреИрдорд░рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЯреЗрдХрдкрд┐рдХреНрдпреЛрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдбрд┐рд╡рд╛рдЗрд╕, рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╕реНрдХреНрд░реАрди рд▓реЙрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо onResume рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рднреВрддрд▓ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд░реЛрдХреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, onResume | рдСрдирдкреЙрдЗрдВрдЯ рд╕рд░рдлреЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рджреЛрдиреЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рд╣рдо "рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди" рдХреЗ рд▓рд┐рдП рдХреИрдорд░рд╛ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВред
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рд░рдлреЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╕рддрд╣ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рдж рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдлреЛрдЯреЛ рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЪрд░ mPreviewIsRunning рдХреЛ рдЧрд▓рддреА рд╕реЗ рдХрдИ рдмрд╛рд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдХреЙрд▓рдкрд┐рдХреНрдпреЛрд░ рдХрд╣рддреЗ рд╣реИрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
- рдлреЛрдЯреЛ рдХреЛ onPicture рдореЗрдВ рдХреИрдЪ рдХрд░реЗрдВред рдХреИрдорд░реЗ рдХреЛ рдореБрдХреНрдд рдХрд░реЗрдВ, рдЪрд┐рддреНрд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП AsyncTask рдмрдирд╛рдПрдВ, рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЙрд▓ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
onCreate (рдмрдВрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ редstanceState)
onResume ()
рдСрдирдкреЙрдЬрд╝ ()
рд╕рд░рдлреЗрд╕рдЯреЗрдб (рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░)
рднреВрддрд▓ (рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕ рдлрд╝реЛрд▓реНрдбрд░, рдЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк, рдЗрдВрдЯ рдЪреМрдбрд╝рд╛рдИ, рдЗрдВрдЯ рдКрдВрдЪрд╛рдИ)
onPictureTaken (рдмрд╛рдЗрдЯ [] рдмрд╛рдЗрдЯреНрд╕, рдХреИрдорд░рд╛ рдХреИрдорд░рд╛)
onStop ()
рд╕рд░рдлреЗрд╕рдЯреНрд░реЛрдбреЗрдб (рд╕рд░рдлреЗрд╕рд╣реЙрд▓реНрдбрд░ рд╕рд░рдлреЗрд╕рд╣реЛрд▓реНрдбрд░)
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдлреЛрди (Nexus 4) рдкрд░ рддрд╕реНрд╡реАрд░реЗрдВ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдиреНрдп рдореЙрдбрд▓реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдореЛрдЯреЛрд░реЛрд▓рд╛ рдбреНрд░реЙрдпрдб RAZR рдФрд░ рдПрдЪрдЯреАрдПрд╕ рд╕реЗрдВрд╕реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ - рд╡рд┐рднрд┐рдиреНрди рдлреЛрди рдкрд░, рдХреИрдорд░реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдлреЛрди рдкрд░, рдЬрдм рдЖрдк рдПрдХ рдлреЛрдЯреЛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рдЯрд░ рдзреНрд╡рдирд┐ рд╕реБрдирддреЗ рд╣реИрдВред рджреВрд╕рд░реЛрдВ рдкрд░ - рдлреЛрдЯреЛ рдХреЛ рдЧрд▓рдд рджрд┐рд╢рд╛ рдореЗрдВ рдШреБрдорд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ EXIF тАЛтАЛрдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдлреЛрди рдкрд░, рдФрд░ рд╕рднреА рдкрд░ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╢реЗрд▓ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг), рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рдм рди рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реНрд╡рдпрдВ рдУрдПрд╕ рдХреЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡рд┐рдЦрдВрдбрди рдХреЗ рд╕рд╛рде рднреА рд╣реИ (2014 рдХреЗ рд▓рд┐рдП рд╣реИрдХрд░ рдкрддреНрд░рд┐рдХрд╛ рдХреЗ рдЕрдВрдХ 1 рдХреЗ рдкреГрд╖реНрда 57 рдкрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдиреЛрдЯ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛:
- рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдлрд╝реЛрдЯреЛ рд▓реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЛрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдлреЛрдЯреЛ рдЦреАрдВрдЪрддреЗ рд╕рдордп рдПрдХ рд╢рдЯрд░ рдзреНрд╡рдирд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдлреЛрдЯреЛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рдореНрдпреВрдЯ рдЬреЛрдбрд╝реЗрдВред
- рдЯреЗрд╕реНрдЯ рдореЙрдбрд▓ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
- Android рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ, рдореВрд▓ рднрд╛рдЧ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЯреЗрдХрдкрд┐рдЯреНрдпреЛрд░ рдХреЛ рдХреНрдпреЛрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ Google.Play рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рдореБрдлрд╝реНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдПрдВрдбреНрд░реЙрдЗрдб рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдерд╛ред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП,
google.play рдХрд╛ рдПрдХ
рд▓рд┐рдВрдХ ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!