{"id":301066,"date":"2020-04-01T03:00:43","date_gmt":"2020-04-01T03:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=301066"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=301066","title":{"rendered":"\u041e\u0427\u041a\u0418 \u0421\u0423\u041c\u0420\u0410\u0427\u041d\u041e\u0413\u041e \u0417\u0420\u0415\u041d\u0418\u042f. Android Camera2 API \u043e\u0442 \u0447\u0430\u0439\u043d\u0438\u043a\u0430, \u0447\u0430\u0441\u0442\u044c 5 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u0430\u044f"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/493922\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tx\/oq\/s6\/txoqs60bhzv_4rncgu5ptr9ucw8.jpeg\"><\/p>\n<p>  \u041f\u0440\u043e\u0436\u0438\u0432\u0430\u044f \u0432 \u044d\u043f\u043e\u0445\u0443 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0440\u044b\u0432\u043e\u0432 \u0438 \u0441\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0439, \u0432\u0437\u0438\u0440\u0430\u044f \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u0435\u043c\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0431\u043e \u0440\u0430\u043a\u0435\u0442\u044b \u041c\u0430\u0441\u043a\u0430 \u0438 \u0411\u0435\u0437\u043e\u0441\u0430, \u043c\u044b, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043b\u044e\u0434\u0438 \u0441 \u0432\u044b\u0441\u0448\u0438\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0440\u044b\u0432 \u043d\u0435 \u0442\u0430\u043c, \u0434\u0430\u043b\u0435\u043a\u043e \u0432 \u043a\u043e\u0441\u043c\u043e\u0441\u0435, \u0430 \u0437\u0434\u0435\u0441\u044c \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0430\u043c\u0438, \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0430\u044f <s>\u0441 \u0434\u0438\u0432\u0430\u043d\u0430 <\/s>\u0438\u0437-\u0441\u0442\u043e\u043b\u0430.<br \/>  \u0421\u0443\u0434\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u043c\u0438 \u0434\u043e\u0445\u043e\u0434\u0430\u043c\u0438.<\/p>\n<blockquote><p>\u0412\u0435\u0440\u0448\u0438\u043d\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0447\u043d\u0443\u044e \u0441\u044a\u0435\u043c\u043a\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u00ab\u041d\u043e\u0447\u043d\u043e\u0439 \u0420\u0435\u0436\u0438\u043c\u00bb \u0432 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 Google Pixel. \u0412 \u043d\u0451\u043c IT \u0433\u0438\u0433\u0430\u043d\u0442\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u044a\u0451\u043c\u043a\u0443 \u0432 RAW, HDR-\u0441\u0442\u0435\u043a\u0438\u043d\u0433, \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044e \u00ab\u0441\u043c\u0430\u0437\u043e\u0432\u00bb, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438. \u0410 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u043c Pixel 4 \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u00abNight Sight\u00bb \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0441\u044a\u0435\u043c\u043a\u0438 \u0437\u0432\u0435\u0437\u0434. \u0412 \u0441\u0443\u043c\u043c\u0435 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u0432\u043e\u043b\u0448\u0435\u0431\u0441\u0442\u0432\u0430: <b>\u0433\u043b\u0430\u0437\u0430 \u0432\u0438\u0434\u044f\u0442 \u043a\u0440\u043e\u043c\u0435\u0448\u043d\u0443\u044e \u0442\u044c\u043c\u0443, \u0430 \u043d\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043b\u0451\u0433\u043a\u0438\u0435 \u0441\u0443\u043c\u0435\u0440\u043a\u0438<\/b>. \u041a\u0430\u043a \u0448\u0443\u0442\u044f\u0442 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445, \u0441\u043a\u043e\u0440\u043e \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u044f\u0442\u044c \u0447\u0451\u0440\u043d\u0443\u044e \u043a\u043e\u0448\u043a\u0443 \u0432 \u0442\u0451\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0438 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0439.<\/p><\/blockquote>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0435 \u0434\u0435\u043b\u043e, \u0447\u0442\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0447\u044c\u044e \u0438 \u0442\u044b\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u043a\u0440\u0430\u043d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u043a\u0430\u043a-\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0434\u0430\u0436\u0435 \u0432 \u043d\u043e\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0418 \u0442\u0443\u0442 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u043f\u0430\u043b \u043d\u0430 VR-\u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, \u0432\u0430\u043b\u044f\u0432\u0448\u0443\u044e\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u043a\u0435. \u041f\u0440\u043e\u0440\u044b\u0432 \u0441\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f! \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0451 \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0441\u0442\u0430 \u0437\u043d\u0430\u043d\u0438\u044f \u043e Android Camera2 API, \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u00abNight Sight\u00bb \u043f\u0440\u044f\u043c\u043e \u0432 \u0433\u043b\u0430\u0437. \u0417\u0430\u043e\u0434\u043d\u043e \u0438 \u0440\u0443\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0447\u0451\u0440\u043d\u0443\u044e \u043a\u043e\u0448\u043a\u0443 \u0432 \u0442\u0451\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435. \u0421\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0444\u043e\u0442\u043e\u043d\u043e\u0432, \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0434\u0430 \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u043e\u0442\u0430\u043d\u043e\u0432\u0441\u043a\u0438\u0445 \u0433\u043b\u044f\u0434\u0435\u043b\u043e\u043a \u0432 \u0442\u0435\u043c\u043d\u043e\u0442\u0435 \u043c\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044c (\u0430 \u043c\u043e\u0436\u0435\u0442, \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438) \u043e\u0431\u044f\u0437\u0430\u043d\u044b.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e \u0442\u044c\u043c\u0435, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:<\/p>\n<p>  <b>1: \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, (\u043c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u0443\u044e \u0434\u0435\u0448\u0451\u0432\u0443\u044e)<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/np\/k-\/ez\/npk-ezks0qloiospgbwwpsvykdi.jpeg\"><\/p>\n<p>  <b>2: \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0433\u0443\u0433\u043b\u043e\u0444\u0438\u0447 \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b (\u043d\u0443, \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u0441\u0430\u043c\u044b\u043c \u0434\u0435\u0448\u0435\u0432\u044b\u043c \u043d\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f)<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pv\/vd\/-o\/pvvd-oddmidov1bssl0xi4hgziu.png\"><\/p>\n<p>  <b>3: \u0437\u043d\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432 Android Camera2 API ( \u044d\u0442\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c)<\/b><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/468083\/\">\u0447\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/471774\/\">\u0447\u0430\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u0430\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/473036\/\">\u0447\u0430\u0441\u0442\u044c \u0442\u0440\u0435\u0442\u044c\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/473840\/\">\u0447\u0430\u0441\u0442\u044c \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u0430\u044f<\/a><\/p>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Android Studio \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u0430\u044f\u0442\u044c \u043a\u043e\u0434.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0430\u0434\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e VR \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0432 \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041c\u0430\u043a\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;     xmlns:app=&quot;http:\/\/schemas.android.com\/apk\/res-auto&quot;     xmlns:tools=&quot;http:\/\/schemas.android.com\/tools&quot;     android:layout_width=&quot;match_parent&quot;     android:layout_height=&quot;match_parent&quot;     android:background=&quot;#03061B&quot;     tools:context=&quot;.MainActivity&quot;&gt;      &lt;TextureView         android:id=&quot;@+id\/textureView&quot;         android:layout_width=&quot;240dp&quot;         android:layout_height=&quot;320dp&quot;         android:layout_marginTop=&quot;28dp&quot;         app:layout_constraintEnd_toEndOf=&quot;parent&quot;         app:layout_constraintHorizontal_bias=&quot;0.497&quot;         app:layout_constraintStart_toStartOf=&quot;parent&quot;         app:layout_constraintTop_toTopOf=&quot;parent&quot; \/&gt;      &lt;TextureView         android:id=&quot;@+id\/textureView3&quot;         android:layout_width=&quot;240dp&quot;         android:layout_height=&quot;320dp&quot;         android:layout_marginTop=&quot;16dp&quot;         app:layout_constraintEnd_toEndOf=&quot;parent&quot;         app:layout_constraintStart_toStartOf=&quot;parent&quot;         app:layout_constraintTop_toBottomOf=&quot;@+id\/textureView&quot; \/&gt;      &lt;LinearLayout         android:layout_width=&quot;165dp&quot;         android:layout_height=&quot;40dp&quot;         app:layout_constraintBottom_toBottomOf=&quot;parent&quot;         app:layout_constraintEnd_toEndOf=&quot;parent&quot;         app:layout_constraintStart_toStartOf=&quot;parent&quot;         app:layout_constraintTop_toBottomOf=&quot;@+id\/textureView3&quot;         app:layout_constraintVertical_bias=&quot;0.838&quot;&gt;          &lt;Button             android:id=&quot;@+id\/button1&quot;             android:layout_width=&quot;wrap_content&quot;             android:layout_height=&quot;36dp&quot;             android:backgroundTint=&quot;#3F51B5&quot;             android:text=&quot;\u0432\u043a\u043b&quot;             android:textColor=&quot;#1A87DD&quot; \/&gt;          &lt;Button             android:id=&quot;@+id\/button3&quot;             android:layout_width=&quot;wrap_content&quot;             android:layout_height=&quot;37dp&quot;             android:backgroundTint=&quot;#3F51B5&quot;             android:text=&quot;\u0432\u044b\u043a\u043b&quot;             android:textColor=&quot;#2196F3&quot; \/&gt;     &lt;\/LinearLayout&gt;   &lt;\/androidx.constraintlayout.widget.ConstraintLayout&gt;   <\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>  \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0440\u043e\u0434\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hr\/jg\/2q\/hrjg2qobc-qqy0spe_bgge_hx9k.jpeg\"><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c\u0438, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0432 \u043b\u044e\u0431\u043e\u0439 VR \u0438\u0433\u0440\u0443\u0448\u043a\u0435 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u043a-\u0442\u043e \u0443\u0445\u0438\u0442\u0440\u044f\u044e\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0445 \u043a\u0440\u0443\u0433\u043b\u044b\u043c\u0438. \u041d\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043e\u043f\u044b\u0442 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e \u0438 \u0442\u0430\u043a \u0441\u043e\u0439\u0434\u0451\u0442.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u043e\u043c\u043d\u0443\u044e \u0442\u0430\u043a\u0443\u044e Activity, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u0443\u0436\u0435 \u043d\u0430\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u043e \u043f\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c. <\/p>\n<pre><code class=\"java\">package com.example.twovideosurfaces; import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; import android.Manifest; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.graphics.SurfaceTexture; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraDevice; import android.hardware.camera2.CameraManager; import android.hardware.camera2.CaptureRequest; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.StrictMode; import android.util.Log; import android.view.Surface; import android.view.TextureView; import android.view.View; import android.widget.Button; import java.util.Arrays; public class MainActivity extends AppCompatActivity  {     public static final String LOG_TAG = &quot;myLogs&quot;;     public static Surface surface1 = null;     public static Surface surface2 = null;     CameraService[] myCameras = null;     private CameraManager mCameraManager = null;     private final int CAMERA1 = 0;     private Button mOn = null;     private Button mOff = null;     public static TextureView mImageViewUp = null;     public static TextureView mImageViewDown = null;     private HandlerThread mBackgroundThread;     private Handler mBackgroundHandler = null;     private void startBackgroundThread() {         mBackgroundThread = new HandlerThread(&quot;CameraBackground&quot;);         mBackgroundThread.start();         mBackgroundHandler = new Handler(mBackgroundThread.getLooper());     }     private void stopBackgroundThread() {         mBackgroundThread.quitSafely();         try {             mBackgroundThread.join();             mBackgroundThread = null;             mBackgroundHandler = null;         } catch (InterruptedException e) {             e.printStackTrace();         }     }     @RequiresApi(api = Build.VERSION_CODES.M)     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();         StrictMode.setThreadPolicy(policy);         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);         setContentView(R.layout.activity_main);         Log.d(LOG_TAG, &quot;\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435&quot;);         if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED                 ||                 (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)         ) {             requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);         }         mOn = findViewById(R.id.button1);         mOff = findViewById(R.id.button3);         mImageViewUp = findViewById(R.id.textureView);         mImageViewDown = findViewById(R.id.textureView3);         mOn.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (myCameras[CAMERA1] != null) {\/\/ \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u043c\u0435\u0440\u0443                     if (!myCameras[CAMERA1].isOpen()) myCameras[CAMERA1].openCamera();                 }             }         });         mOff.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {             }         });         mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);         try {             \/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u0430\u043c\u0435\u0440 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430             myCameras = new CameraService[mCameraManager.getCameraIdList().length];             for (String cameraID : mCameraManager.getCameraIdList()) {                 Log.i(LOG_TAG, &quot;cameraID: &quot; + cameraID);                 int id = Integer.parseInt(cameraID);                 \/\/ \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b                 myCameras[id] = new CameraService(mCameraManager, cameraID);             }         } catch (CameraAccessException e) {             Log.e(LOG_TAG, e.getMessage());             e.printStackTrace();         }     }     public class CameraService {         private String mCameraID;         private CameraDevice mCameraDevice = null;         private CameraCaptureSession mSession;         private CaptureRequest.Builder mPreviewBuilder;         public CameraService(CameraManager cameraManager, String cameraID) {             mCameraManager = cameraManager;             mCameraID = cameraID;         }         private CameraDevice.StateCallback mCameraCallback = new CameraDevice.StateCallback() {             @Override             public void onOpened(CameraDevice camera) {                 mCameraDevice = camera;                 Log.i(LOG_TAG, &quot;Open camera  with id:&quot; + mCameraDevice.getId());                 startCameraPreviewSession();             }             @Override             public void onDisconnected(CameraDevice camera) {                 mCameraDevice.close();                 Log.i(LOG_TAG, &quot;disconnect camera  with id:&quot; + mCameraDevice.getId());                 mCameraDevice = null;             }             @Override             public void onError(CameraDevice camera, int error) {                 Log.i(LOG_TAG, &quot;error! camera id:&quot; + camera.getId() + &quot; error:&quot; + error);             }         };         private void startCameraPreviewSession() {             SurfaceTexture texture = mImageViewUp.getSurfaceTexture();             texture.setDefaultBufferSize(1280, 1024);             surface1 = new Surface(texture);             SurfaceTexture texture2 = mImageViewDown.getSurfaceTexture();             surface2 = new Surface(texture2);             texture2.setDefaultBufferSize(1280, 1024);             try {                 mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);                 mPreviewBuilder.addTarget(surface1);                 mPreviewBuilder.addTarget(surface2);                 mCameraDevice.createCaptureSession(Arrays.asList(surface1,surface2),                         new CameraCaptureSession.StateCallback() {                             @Override                             public void onConfigured(CameraCaptureSession session) {                                 mSession = session;                                  try {                                     mSession.setRepeatingRequest(mPreviewBuilder.build(), null, mBackgroundHandler);                                 } catch (CameraAccessException e) {                                     e.printStackTrace();                                 }                             }                             @Override                             public void onConfigureFailed(CameraCaptureSession session) {                             }                         }, mBackgroundHandler);             } catch (CameraAccessException e) {                 e.printStackTrace();             }         }         public boolean isOpen() {             if (mCameraDevice == null) {                 return false;             } else {                 return true;             }         }         public void openCamera() {             try {                 if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {                     mCameraManager.openCamera(mCameraID, mCameraCallback, mBackgroundHandler);                 }             } catch (CameraAccessException e) {                 Log.i(LOG_TAG, e.getMessage());             }         }         public void closeCamera() {             if (mCameraDevice != null) {                 mCameraDevice.close();                 mCameraDevice = null;             }         }     }     @Override     public void onPause() {         if (myCameras[CAMERA1].isOpen()) {             myCameras[CAMERA1].closeCamera();         }         stopBackgroundThread();         super.onPause();     }     @Override     public void onResume() {         super.onResume();         startBackgroundThread();     } }   <\/code><\/pre>\n<p>  \u0414\u0430, \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;manifest xmlns:android=&quot;http:\/\/schemas.android.com\/apk\/res\/android&quot;     package=&quot;com.example.twovideosurfaces&quot;&gt;     &lt;uses-permission android:name=&quot;android.permission.CAMERA&quot; \/&gt;     &lt;uses-permission android:name=&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot; \/&gt;     &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;\/&gt;     &lt;application         android:allowBackup=&quot;true&quot;         android:icon=&quot;@mipmap\/ic_launcher&quot;         android:label=&quot;@string\/app_name&quot;         android:roundIcon=&quot;@mipmap\/ic_launcher_round&quot;         android:supportsRtl=&quot;true&quot;         android:theme=&quot;@style\/Theme.AppCompat.NoActionBar&quot;         &gt;         &lt;activity android:name=&quot;.MainActivity&quot;&gt;             &lt;intent-filter&gt;                 &lt;action android:name=&quot;android.intent.action.MAIN&quot; \/&gt;                 &lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; \/&gt;             &lt;\/intent-filter&gt;         &lt;\/activity&gt;     &lt;\/application&gt; &lt;\/manifest&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u0432 VR \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443 \u0438 \u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0434\u043e\u043c\u0443, \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u044f\u0441\u044c \u0437\u0440\u0435\u043d\u0438\u0435\u043c \u043a\u0438\u0431\u043e\u0440\u0433\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c 1280 \u0445 1024 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043b\u0430\u0437. \u041e\u0449\u0443\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435, \u0441 \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0437\u0440\u0435\u043d\u0438\u044f, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u043e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0433\u043a\u0430 \u0442\u0435\u043c\u043d\u043e\u0432\u0430\u0442\u043e, \u043d\u043e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u0430\u044f \u043f\u0430\u043d\u0435\u043b\u044c \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0435\u0439 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0434\u044b\u0440\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u043a\u0430\u043c\u0435\u0440\u044b \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u041d\u043e \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u043d\u0430 \u0441\u0430\u043c\u044b\u0445 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u044b\u0445 VR \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0442\u0430\u043a\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0431\u044b\u0442\u044c, \u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u0438 \u043d\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0441\u043a\u0432\u0435\u0440\u043d\u044f\u0442\u044c \u0441\u0435\u0431\u044f \u0440\u0443\u0447\u043d\u044b\u043c \u0442\u0440\u0443\u0434\u043e\u043c.<\/p>\n<p>  \u0412\u0441\u0451 \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c Google camera API, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u044c\u043c\u0430 \u043a\u0440\u043e\u043c\u0435\u0448\u043d\u0430\u044f, \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c Night Vision, \u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0432\u0441\u0435 \u044d\u0442\u0438 RAW, HDR-\u0441\u0442\u0435\u043a\u0438\u043d\u0433 \u0438 <s>\u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438<\/s>.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0432 \u0441\u0435\u0441\u0441\u0438\u0438:<\/p>\n<pre><code class=\"java\">  mPreviewBuilder.set(CaptureRequest.CONTROL_SCENE_MODE,                                             CaptureRequest.CONTROL_SCENE_MODE_NIGHT);  <\/code><\/pre>\n<p>  \u0438 \u0432\u044b\u043a\u0440\u0443\u0442\u0438\u043c \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0441\u0432\u0435\u0442\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/p>\n<pre><code class=\"java\"> mPreviewBuilder.set(CaptureRequest.CONTROL_AE_MODE,         CaptureRequest.CONTROL_AE_MODE_OFF); mPreviewBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME,Long.valueOf(&quot;100000000&quot;));  mPreviewBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 30000);  <\/code><\/pre>\n<p>  <b>\u041e\u0439, \u044f \u043e\u0441\u043b\u0435\u043f!<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ua\/o1\/ys\/uao1ysbhaojz55mqjwuevrqwu1c.jpeg\"><\/p>\n<p>  \u0412\u043e\u0442 \u0447\u0442\u043e, \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u0438\u0434\u0438\u0442 \u043a\u043e\u0442, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442 \u0438\u0437 \u0441\u043f\u0430\u043b\u044c\u043d\u0438, \u0433\u0434\u0435 \u043e\u043d \u043c\u0435\u0448\u0430\u0435\u0442 \u043b\u044e\u0434\u044f\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u043a\u0441\u043e\u043c, \u0432 \u0433\u043e\u0441\u0442\u0438\u043d\u0443\u044e. <br \/>  \u041d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0430 \u0438\u0445 \u0432 API \u043d\u0435\u043c\u0430\u043b\u043e \u0438 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u043e\u0447\u043a\u0430) \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0447\u0438. \u041d\u0435 \u0431\u0435\u0437\u043b\u0443\u043d\u043d\u043e\u0439, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 \u043f\u043b\u043e\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0442\u0430\u0439\u0433\u0435, \u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0439 \u043d\u043e\u0447\u0438 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0437\u0430\u043b\u0435\u0442\u043d\u044b\u043c\u0438 \u0444\u043e\u0442\u043e\u043d\u0430\u043c\u0438.<br \/>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442\u2026<br \/>  \u0425\u043e\u0442\u044f \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u044a\u0451\u043c\u043a\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u043e.<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/dBDfXKoMe5Q?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u041d\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u044b\u0435 \u043a\u0430\u043c\u0435\u0440\u044b \u0442\u0432\u043e\u0440\u044f\u0442 \u0447\u0443\u0434\u0435\u0441\u0430 \u0438 \u0442\u0430\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442 \u0447\u0435\u0440\u043d\u0443\u044e \u043a\u043e\u0448\u043a\u0443\u2026<\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/WVkyLheyA8s?rel=0&amp;showinfo=1&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0433\u0443\u043b\u044f\u0442\u044c \u043f\u043e \u043d\u043e\u0447\u0430\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043d\u0451\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0437-\u0437\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430. \u041f\u043e \u0438\u0434\u0435\u0435 \u0438 \u043d\u043e\u0447\u044c\u044e \u0442\u043e\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u043e \u043a\u0442\u043e \u0436 \u0432\u0430\u0441 \u0443\u0432\u0438\u0434\u0438\u0442, \u043a\u0440\u0430\u0434\u0443\u0449\u0438\u0445\u0441\u044f \u0432\u043e \u043c\u0440\u0430\u043a\u0435 \u043d\u043e\u0447\u0438 \u0441 VR-\u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0430\u043c\u0438 \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u0430\u0445\u2026<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/493922\/\"> https:\/\/habr.com\/ru\/post\/493922\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/493922\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tx\/oq\/s6\/txoqs60bhzv_4rncgu5ptr9ucw8.jpeg\"><\/p>\n<p>  \u041f\u0440\u043e\u0436\u0438\u0432\u0430\u044f \u0432 \u044d\u043f\u043e\u0445\u0443 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0440\u044b\u0432\u043e\u0432 \u0438 \u0441\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0439, \u0432\u0437\u0438\u0440\u0430\u044f \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u0435\u043c\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u0431\u043e \u0440\u0430\u043a\u0435\u0442\u044b \u041c\u0430\u0441\u043a\u0430 \u0438 \u0411\u0435\u0437\u043e\u0441\u0430, \u043c\u044b, \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043b\u044e\u0434\u0438 \u0441 \u0432\u044b\u0441\u0448\u0438\u043c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0440\u044b\u0432 \u043d\u0435 \u0442\u0430\u043c, \u0434\u0430\u043b\u0435\u043a\u043e \u0432 \u043a\u043e\u0441\u043c\u043e\u0441\u0435, \u0430 \u0437\u0434\u0435\u0441\u044c \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0430\u043c\u0438, \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0430\u044f <s>\u0441 \u0434\u0438\u0432\u0430\u043d\u0430 <\/s>\u0438\u0437-\u0441\u0442\u043e\u043b\u0430.<br \/>  \u0421\u0443\u0434\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u043c\u0438 \u0434\u043e\u0445\u043e\u0434\u0430\u043c\u0438.<\/p>\n<blockquote><p>\u0412\u0435\u0440\u0448\u0438\u043d\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0447\u043d\u0443\u044e \u0441\u044a\u0435\u043c\u043a\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u00ab\u041d\u043e\u0447\u043d\u043e\u0439 \u0420\u0435\u0436\u0438\u043c\u00bb \u0432 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 Google Pixel. \u0412 \u043d\u0451\u043c IT \u0433\u0438\u0433\u0430\u043d\u0442\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u044a\u0451\u043c\u043a\u0443 \u0432 RAW, HDR-\u0441\u0442\u0435\u043a\u0438\u043d\u0433, \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044e \u00ab\u0441\u043c\u0430\u0437\u043e\u0432\u00bb, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044f\u043c\u0438. \u0410 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u043c Pixel 4 \u0441\u0434\u0435\u043b\u0430\u043b\u043e \u00abNight Sight\u00bb \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0441\u044a\u0435\u043c\u043a\u0438 \u0437\u0432\u0435\u0437\u0434. \u0412 \u0441\u0443\u043c\u043c\u0435 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u0432\u043e\u043b\u0448\u0435\u0431\u0441\u0442\u0432\u0430: <b>\u0433\u043b\u0430\u0437\u0430 \u0432\u0438\u0434\u044f\u0442 \u043a\u0440\u043e\u043c\u0435\u0448\u043d\u0443\u044e \u0442\u044c\u043c\u0443, \u0430 \u043d\u0430 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043b\u0451\u0433\u043a\u0438\u0435 \u0441\u0443\u043c\u0435\u0440\u043a\u0438<\/b>. \u041a\u0430\u043a \u0448\u0443\u0442\u044f\u0442 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445, \u0441\u043a\u043e\u0440\u043e \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u044f\u0442\u044c \u0447\u0451\u0440\u043d\u0443\u044e \u043a\u043e\u0448\u043a\u0443 \u0432 \u0442\u0451\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0438 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0439.<\/p><\/blockquote>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0435 \u0434\u0435\u043b\u043e, \u0447\u0442\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u043d\u043e\u0447\u044c\u044e \u0438 \u0442\u044b\u0440\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u043a\u0440\u0430\u043d \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0438\u043a\u0430 \u043a\u0430\u043a-\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0434\u0430\u0436\u0435 \u0432 \u043d\u043e\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u0418 \u0442\u0443\u0442 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u043f\u0430\u043b \u043d\u0430 VR-\u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430, \u0432\u0430\u043b\u044f\u0432\u0448\u0443\u044e\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u043a\u0435. \u041f\u0440\u043e\u0440\u044b\u0432 \u0441\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f! \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0451 \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0441\u0442\u0430 \u0437\u043d\u0430\u043d\u0438\u044f \u043e Android Camera2 API, \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u00abNight Sight\u00bb \u043f\u0440\u044f\u043c\u043e \u0432 \u0433\u043b\u0430\u0437. \u0417\u0430\u043e\u0434\u043d\u043e \u0438 \u0440\u0443\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0447\u0451\u0440\u043d\u0443\u044e \u043a\u043e\u0448\u043a\u0443 \u0432 \u0442\u0451\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435. \u0421\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437 \u0441\u0432\u0435\u0442\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0444\u043e\u0442\u043e\u043d\u043e\u0432, \u0445\u043e\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u0434\u0430 \u043d\u0443\u0436\u043d\u043e. \u041d\u043e \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u043e\u0442\u0430\u043d\u043e\u0432\u0441\u043a\u0438\u0445 \u0433\u043b\u044f\u0434\u0435\u043b\u043e\u043a \u0432 \u0442\u0435\u043c\u043d\u043e\u0442\u0435 \u043c\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044c (\u0430 \u043c\u043e\u0436\u0435\u0442, \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0432\u0437\u043e\u0439\u0442\u0438) \u043e\u0431\u044f\u0437\u0430\u043d\u044b.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-301066","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301066"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/301066\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}