{"id":314012,"date":"2020-11-30T09:00:37","date_gmt":"2020-11-30T09:00:37","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314012"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314012","title":{"rendered":"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 HMS: \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u044a\u0451\u043c\u043a\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0432 \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yg\/9f\/oc\/yg9focunx9wp4tbnuo4j4ihxaba.jpeg\" \/><\/div>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 HUAWEI \u0438 HONOR \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0441\u044a\u0451\u043c\u043a\u0438: \u043d\u043e\u0447\u043d\u0430\u044f \u0441\u044a\u0451\u043c\u043a\u0430, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d, HDR, \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u0430 \u0438 \u0442. \u0434. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Camera Engine \u044d\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u0442\u043e\u0433\u043e SDK \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Camera Engine<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/9yM8b64QlPSRbTQsodG3L_3_52WQBg7E9piXrwbTBqQiMeFKNiM2kw2125Nzfca3VoFChZI36be0XNO4zQZT2Z-RgZUBXwT3nqsJq6BNDAKK3Vp4Xuh6sQOvUcJvgd_X8eHWuKxv\" \/><\/div>\n<p>  Camera Engine \u2014 \u044d\u0442\u043e SDK \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0441\u044a\u0451\u043c\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 IDE. \u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441 Camera Engine, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Android Studio \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u043d\u0438\u0436\u0435 3.0.1. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 Huawei \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c Kirin 980 \u0438\u043b\u0438 \u043d\u043e\u0432\u0435\u0435 \u0438 \u041e\u0421 \u043d\u0435 \u0441\u0442\u0430\u0440\u0448\u0435 EMUI 10.0.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u0430\u0448\u0435\u043c <a href=\"https:\/\/developer.huawei.com\/consumer\/en\/codelab\/HiAIImageCategoryLabel\/index.html\">\u043f\u043e\u0440\u0442\u0430\u043b\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <a href=\"https:\/\/developer.huawei.com\/consumer\/en\/doc\/start\/10104\">\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f Huawei ID<\/a>. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 SDK.<\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c <a href=\"https:\/\/developer.huawei.com\/consumer\/en\/doc\/development\/Media-Guides\/3180102\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0432 \u043e\u0431\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435<\/h2>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0440\u0435\u0436\u0438\u043c Camera Kit, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440:<\/p>\n<pre><code class=\"kotlin\">\/\/ It is recommended that exceptions be captured in the 1.0.1 version. In the 1.0.2 and later versions, exceptions do not need to be captured, but the CameraKit instance is obtained. if (!isGetInstance) {    try {        mCameraKit = CameraKit.getInstance(getApplicationContext());    } catch (NoSuchMethodError e) {        Log.w(TAG, &quot;this version camerakit does not contain VersionInfoInterface&quot;);    } finally {        isGetInstance = true;    } } \/\/ If a mobile phone does not support CameraKit, or the CameraKit SDK version is incompatible with the capability layer, the return result is empty. if (mCameraKit == null) {    return; } \/\/ Query the camera list of the mobile phone. Currently, only the rear camera supports the super night mode. String[] cameraLists = mCameraKit.getCameraIdList(); \/\/ Query the modes supported by the current cameras. int[] modes = mCameraKit.getSupportedModes(cameraLists[0]); \/\/ Create a mode. mCameraKit.createMode(cameraLists[0], mCurrentModeType, mModeStateCallback, mCameraKitHandler);<\/code><\/pre>\n<p>  \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0440\u0435\u0436\u0438\u043c\u0430 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043b\u0443\u0436\u0431\u044b:<\/p>\n<pre><code class=\"kotlin\">\/\/ Configure the preview surface. modeConfigBuilder.addPreviewSurface(surface); \/\/ Set photographing parameters. modeConfigBuilder.addCaptureImage(mCaptureSize, ImageFormat.JPEG) \/\/ Configure the action data listener. modeConfigBuilder.setDataCallback(actionDataCallback, mCameraKitHandler); \/\/ Configure the action status listener. modeConfigBuilder.setStateCallback(actionStateCallback, mCameraKitHandler); \/\/ Configure the mode. mMode.configure(); <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e mode status callback \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f mode configuration success:<\/p>\n<pre><code class=\"kotlin\">mMode.startPreview();<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the functions supported by the mode. List&lt;CaptureRequest.Key&lt;?&gt;&gt; parameters = mModeCharacteristics.getSupportedParameters(); \/\/ Set zoom. int zoomSetResult = mMode.setZoom(level);<\/code><\/pre>\n<p>  \u041a\u0430\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0441\u0430\u043d\u0438\u044f UI:<\/p>\n<pre><code class=\"kotlin\">\/\/ In this example, the portrait mode is used by default, which simplifies the rotation angle setting logic. mMode.setImageRotation(90); \/\/ This example uses the default photo storage path. mFile = new File(getExternalFilesDir(null), &quot;pic.jpg&quot;); \/\/ Take a photo. The photo is asynchronously called back through ActionDataCallback.onImageAvailable. mMode.takePicture();<\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"kotlin\">private final ModeStateCallback mModeStateCallback = new ModeStateCallback() {    @Override    public void onCreated(Mode mode) {        \/\/ Configure the mode after the mode is created successfully.    }    @Override    public void onConfigured(Mode mode) {        \/\/ Start the preview after the mode is configured successfully.    }    \/\/ ... };<\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0445 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0444\u043e\u0442\u043e:<\/p>\n<pre><code class=\"kotlin\">private final ActionDataCallback = new ActionDataCallback() {    @Override    public void onImageAvailable(Mode mode, @Type int type, Image image) {        \/\/ Store photos.    } };<\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0435\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430, \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"kotlin\">private final ActionStateCallback = new ActionStateCallback() {    @Override    public void onPreview(Mode mode, int state, PreviewResult result) {        \/\/ Preview starting callback.    }    @Override    public void onTakePicture(Mode mode, int state, TakePictureResult result) {        \/\/ Photographing action callback.    } };<\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0437\u0430\u043d\u044f\u0442\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f:<\/p>\n<pre><code class=\"kotlin\">mMode.release();<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u043d\u043e\u0447\u043d\u043e\u0439 \u0441\u044a\u0451\u043c\u043a\u0438<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/d9HcC5h3MBvpQjZQWPkNvupnsM10enLqiC5pV3ZA_9RRmht8pfg31eIKQeUiOeHd7Wwn9gLGolWICSogkNUclL6ND36Q1xBxNp_0tK53s_L32NgrOllUNM_QhaHyu8d_3roAJO6x\" \/><\/div>\n<p>  <b>\u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u043e\u0447\u043d\u043e\u0439 \u0441\u044a\u0451\u043c\u043a\u0438<\/b> \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0438\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445, \u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.SUPER_NIGHT_MODE. \u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u0432\u0440\u0435\u043c\u044f \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (UI) \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u043c\u0435\u0440\u044b; \u043c\u0435\u0442\u043e\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0438 (RequestKey.HW_SUPER_NIGHT_EXPOSURE) \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d.<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the functions supported by the mode. List&lt;CaptureRequest.Key&lt;?&gt;&gt; parameters = mModeCharacteristics.getSupportedParameters(); \/\/ If the sensitivity can be set if ((parameters != null) && (parameters.contains(RequestKey.HW_SUPER_NIGHT_ISO))) {    \/\/ Query the supported sensitivity range.    List&lt;Long&gt; values = mModeCharacteristics.getParameterRange(RequestKey.HW_SUPER_NIGHT_ISO);    \/\/ Set the first sensitivity parameter.    mMode.setParameter(RequestKey.HW_SUPER_NIGHT_ISO, values.get(0)); } <\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438. \u0412\u044b\u0437\u043e\u0432 API \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"kotlin\">mMode.stopPicture();<\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0435\u0433\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430, \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"kotlin\">private final ActionStateCallback = new ActionStateCallback() {    @Override    public void onPreview(Mode mode, int state, PreviewResult result) {        \/\/ Preview starting callback.    }    @Override    public void onTakePicture(Mode mode, int state, TakePictureResult result) {        \/\/ Photographing action callback.        switch (state) {            case TakePictureResult.State.CAPTURE_STARTED:                Log.d(TAG, &quot;onState: STATE_CAPTURE_STARTED&quot;);                break;            case TakePictureResult.State.CAPTURE_EXPOSURE_BEGIN:                \/* When the long-time exposure mode is enabled, use the result class to obtain the exposure time required for the super night mode.                   After receiving the exposure time return using the callback, you can call stopPicture to stop the exposure before the exposure time ends. *\/                break;            case TakePictureResult.State.CAPTURE_EXPOSURE_END:                \/\/ The long-time exposure ends. When the exposure ends at the specified time or in advance, this status is called back.                break;            case TakePictureResult.State.CAPTURE_COMPLETED:                \/\/ Photographing is complete.                break;            default:                break;        }    } };<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u044b<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/Zmeqz3FsKbD34BXU5kwhMAmeplkP7V_ZNJ-L_4N6oIEZeVMMp6ud4JMWQAgv8l34AEf1_J3i3TjnXgTX0etJGwixKmBUzlS-SzvifXqRDxmTQjvrtGgat-3NinSWQL-guMpsxHeG\" \/><\/div>\n<p>  <b>\u0428\u0438\u0440\u043e\u043a\u0430\u044f \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u0430<\/b> \u2014 \u0440\u0435\u0436\u0438\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0444\u043e\u043d \u0440\u0430\u0437\u043c\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u043e \u0447\u0451\u0442\u043a\u0438\u043c, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.BOKEH_MODE. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0451\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u044b:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the functions supported by the mode. List&lt;CaptureRequest.Key&lt;?&gt;&gt; parameters = mModeCharacteristics.getSupportedParameters(); \/\/ If the ultra-wide angle function is supported, if ((parameters != null) && (parameters.contains(RequestKey.HW_APERTURE))) {    \/\/ Query the supported ultra-wide angle level range.    List&lt;Float&gt; values = mModeCharacteristics.getParameterRange(RequestKey.HW_APERTURE);    \/\/ Set the first ultra-wide angle parameter.    mMode.setParameter(RequestKey.HW_APERTURE, vales.get(0)); } <\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0432\u0438\u0434\u0435\u043e<\/h2>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u044f <b>AI movie<\/b> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0435 \u044f\u0440\u043a\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \u043f\u043b\u0451\u043d\u043a\u0438 \u0438 \u0442. \u0434., \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043b\u044f mCurrentModeType \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.VIDEO_MODE, \u0437\u0430\u0434\u0430\u0451\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code class=\"kotlin\">\/\/ Configure the preview surface. modeConfigBuilder.addPreviewSurface(surface); \/\/ Configure the recording surface. modeConfigBuilder.addVideoSurface(videoSurface); \/\/ Set photographing parameters. modeConfigBuilder.addCaptureImage(mCaptureSize, ImageFormat.JPEG) \/\/ Configure the action data listener. modeConfigBuilder.setDataCallback(actionDataCallback, mCameraKitHandler); \/\/ Configure the action status listener. modeConfigBuilder.setStateCallback(actionStateCallback, mCameraKitHandler); \/\/ Configure the mode. mMode.configure();<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 AI movie:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the functions supported by the mode. List&lt;CaptureRequest.Key&lt;?&gt;&gt; parameters = mModeCharacteristics.getSupportedParameters(); \/\/ If the AI movie feature is supported, (parameters != null) && (parameters.contains(RequestKey.HW_AI_MOVIE)) \/\/ Query the supported range of the AI movie feature. List&lt;Byte&gt; lists = modeCharacteristics.getParameterRange(RequestKey.HW_AI_MOVIE) \/\/ Set the AI movie feature parameter. mMode.setParameter(RequestKey.HW_AI_MOVIE, value)<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c API \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e:<\/p>\n<pre><code class=\"kotlin\">\/\/ Start recording. mMode.startRecording() mMediaRecorder.start(); \/\/ Pause recording. mMode.pauseRecording(); mMediaRecorder.pause(); \/\/ Resume recording. mMode.resumeRecording(); mMediaRecorder.resume(); \/\/ Stop recording. mMode.stopRecording(); mMediaRecorder.stop();<\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u043a\u0430\u043a \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u043e\u0431\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c HDR<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/wow1r56ldW504cVnDXBkrjB1h7dQ3k7ill8WRjTNgbTAsPboavaym91SLupuTSp9TvquPQrfES4wK1Syw5JLlUwsfWf8yx-wTpPUrPBCalZVe1KTDoj_tsfXuqn-YnCSucBe8oIZ\" \/><\/div>\n<p>  <b>HDR <\/b>(High Dynamic Range) \u2014 \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u0441\u044a\u0451\u043c\u043a\u0438 \u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043c. \u041e\u043d \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u0438\u043c\u043a\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u0434\u0440\u0430 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0447\u0451\u0442\u043a\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.\u00a0<\/p>\n<p>  \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.HDR_MODE. \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u043a\u0430\u043a \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043e\u0431\u0449\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c.<\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p>  <b>\u0420\u0435\u0436\u0438\u043c\u044b \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f<\/b> \u2014 Slow-mo \u0438 Super slow-mo \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 60 fps, 120 fps, 480 fps \u0438\u043b\u0438 960 fps.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <b>Slow-mo<\/b> \u0437\u0430\u0434\u0430\u0451\u043c mCurrentModeType \u043a\u0430\u043a Mode.Type.SLOW_MOTION_MODE.\u00a0<\/p>\n<pre><code class=\"kotlin\">\/\/ Set the recording frame rate. modeConfigBuilder.setVideoFps(recordFps);<\/code><\/pre>\n<p>  \u0420\u0435\u0436\u0438\u043c \u0444\u043e\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<pre><code class=\"kotlin\">\/\/ Start recording. mMode.startRecording() \/\/ Stop recording. mMode.stopRecording() <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u043f\u044b\u0448\u043a\u0443, \u0437\u0443\u043c, \u0430\u0432\u0442\u043e\u0444\u043e\u043a\u0443\u0441, \u0440\u0435\u0436\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u0438 \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u0446. Slow-mo \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043d\u0438\u043c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0430\u0443\u0437\u044b \u0438 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0438\u0434\u0435\u043e\u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 <b>Super slow-mo<\/b> \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.SUPER_SLOW_MOTION.<\/p>\n<pre><code class=\"kotlin\">\/\/ Start recording. mMode.startRecording() \/\/ Stop recording. mMode.stopRecording()<\/code><\/pre>\n<p>  \u042d\u0442\u0438 \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u043f\u0430\u0440\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 <b>Map<\/b>, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 modeCharacteristics.getSupportedVideoSizes (). \u0420\u0435\u0436\u0438\u043c \u0444\u043e\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 \u043d\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>  \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u0436\u0435, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Super slow-mo. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 API:<\/p>\n<pre><code class=\"kotlin\">\/\/ Obtain the motion detection area. modeCharacteristics.getParameterRange(RequestKey.HW_SUPER_SLOW_CHECK_AREA)<\/code><\/pre>\n<p>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442:<\/p>\n<pre><code class=\"kotlin\">\/\/ Start recording. Mode.startRecording(file);<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0438, \u0432\u044b\u0437\u043e\u0432\u0438\u0442\u0435 mMode.startRecording (file) \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u0417\u0430\u043f\u0438\u0441\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u0430\u0443\u0437\u0443.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b Super slow-mo \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0451\u043c \u043a\u0430\u0434\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"kotlin\">mMode.setParameter(RequestKey.HW_SUPER_SLOW_CHECK_AREA,rect); <\/code><\/pre>\n<p>  \u0420\u0430\u043c\u043a\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0439, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043b\u0435\u0432\u044b\u0439 \u0443\u0433\u043e\u043b \u043f\u0440\u0435\u0432\u044c\u044e. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d\u044b \u043a\u0440\u0430\u044f \u043a\u0430\u0434\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u043c 7680 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0434\u043b\u0438\u043d\u0430 \u043a\u0440\u0430\u044f \u043a\u0430\u0434\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u200b\u200b\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 [1\/3, 1] \u043e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 1\/3 \u043e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.<\/p>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f mMode.startRecording(file). \u0414\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0443\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0451\u043d RecordingResult.State.RECORDING_STARTED, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c mMode.stopRecording (), \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0443\u0449\u0435\u0433\u043e\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.\u00a0<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f mMode.stopRecording (), \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0435 RecordingResult.State.RECORDING_STOPPED. \u041f\u043e\u0441\u043b\u0435 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0443\u0447\u043d\u043e\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c, \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043e\u043d\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"kotlin\">\/\/ Action status callback. class ModeActionStateCallback extends ActionStateCallback {    @Override    public void onRecording(Mode mode, int state, RecordingResult result) {        switch (state) {            \/\/ An IO error occurs.            case RecordingResult.State.ERROR_FILE_IO:            \/\/ An unknown error occurs.            case RecordingResult.State.ERROR_UNKNOWN:            \/\/The bottom-layer initialization is not ready.            case RecordingResult.State.ERROR_RECORDING_NOT_READY:                break;            \/\/ The bottom layer is ready.            case RecordingResult.State.RECORDING_READY:                break;            \/\/ Recording is started. This parameter is returned only in automatic mode.            case RecordingResult.State.RECORDING_STARTED:                break;            \/\/ Recording is stopped.            case RecordingResult.State.RECORDING_STOPPED:                break;            \/\/ Recording is complete.            case RecordingResult.State.RECORDING_COMPLETED:                break;            \/\/ The recorded file is saved.            case RecordingResult.State.RECORDING_FILE_SAVED:                break;            default:                break;        }    } } <\/code><\/pre>\n<p>  Super slow-mo \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u043f\u044b\u0448\u043a\u0443, \u0437\u0443\u043c \u0438 \u0430\u0432\u0442\u043e\u0444\u043e\u043a\u0443\u0441, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u043e\u0439.<\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u044a\u0451\u043c\u043a\u0438<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/8xPjEJ4tiCkuLMUUcui9scxDJQ_nWG8nxtmEHXJyCfVoZhehzcY0ETydy_qNfrR_Wy9ATPrNq12E3ZYZ8OK8evR8UAJMO25NAJrfxsc7HlBhCaLl9UtW8cYMDFPfxjQ2Q5HoA4LR\" \/><\/div>\n<p>  <b>\u0420\u0435\u0436\u0438\u043c \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u044a\u0451\u043c\u043a\u0438<\/b> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b: \u043b\u0438\u0446\u0430, \u0443\u043b\u044b\u0431\u043a\u0438 \u0438 \u0434\u0440. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.PORTRAIT_MODE. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0430\u0433\u0438 \u2014 \u043a\u0430\u043a \u0432 \u043e\u0431\u0449\u0435\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0451\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the facial beautification functions supported by the mode. modeCharacteristics.getSupportedBeauty(Metadata.BeautyType.HW_BEAUTY_SKIN_SMOOTH) modeCharacteristics.getSupportedBeauty(Metadata.BeautyType.HW_BEAUTY_FACE_SLENDER) modeCharacteristics.getSupportedBeauty(Metadata.BeautyType.HW_BEAUTY_SKIN_COLOR) modeCharacteristics.getSupportedBeauty(Metadata.BeautyType.HW_BEAUTY_BODY_SHAPING) \/\/ Configure the facial beautification functions. mMode.setBeauty(Metadata.BeautyType.HW_BEAUTY_SKIN_SMOOTH, value) mMode.setBeauty(Metadata.BeautyType.HW_BEAUTY_FACE_SLENDER, value) mMode.setBeauty(Metadata.BeautyType.HW_BEAUTY_SKIN_COLOR, value) mMode.setBeauty(Metadata.BeautyType.HW_BEAUTY_BODY_SHAPING, value <\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0440\u0435\u0436\u0438\u043c\u043e\u043c Pro<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/SDHxRvYCUZwZ8pPDxhJxlsyu1qVmjcqcoMv68e4TTXuNZyfPvfD8k38EmdUl_88hABbmTQzOpaZH-TpUOxpWnPU1YXvnN4HKrMFKQHYPYvAzWMEySBAS8Wv3CRs8OEwWKaoY6APz\" \/><\/div>\n<p>  <b>\u0420\u0435\u0436\u0438\u043c Pro<\/b> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0441 \u0444\u043e\u0442\u043e, \u0442\u0430\u043a \u0438 \u0441 \u0432\u0438\u0434\u0435\u043e. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e API \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c ISO \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0440\u0435\u0436\u0438\u043c \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0435\u0436\u0438\u043c Pro \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u043f\u044b\u0448\u043a\u0443, \u0437\u0443\u043c, \u0430\u0432\u0442\u043e\u0444\u043e\u043a\u0443\u0441, \u0440\u0435\u0436\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043a\u043e\u0440\u0440\u0435\u043a\u0446\u0438\u0438 \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u0446. \u041d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u043e\u0439.<\/p>\n<p>  \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 Pro \u043d\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043a\u043b\u044e\u0447\u0435\u0439. \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ol>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 PRO_PHOTO_MODE \u0438\u043b\u0438 PRO_VIDEO_MODE.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c mCurrentModeType \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Mode.<\/li>\n<li>\u0412\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 setParameter \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Mode, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/li>\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TakePicture, startRecording \u0438 \u043c\u0435\u0442\u043e\u0434\u044b stopRecording \u043e\u0431\u044a\u0435\u043a\u0442\u0430 Mode \u0434\u043b\u044f \u0444\u043e\u0442\u043e\u0441\u044a\u0451\u043c\u043a\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e.<\/li>\n<\/ol>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0436\u0438\u043c\u0430 Pro.<\/p>\n<pre><code class=\"kotlin\">\/\/ Query the functions supported by the mode. List&lt;CaptureRequest.Key&lt;?&gt;&gt; parameters = mModeCharacteristics.getSupportedParameters(); \/\/ Query the supported ISO range. List&lt;Integer&gt; values = mModeCharacteristics.getParameterRange(RequestKey.HW_PRO_SENSOR_ISO_VALUE); \/\/ Set the ISO value. The first value is used as an example. mMode.setParameter(RequestKey.HW_ PRO_SENSOR_ISO_VALUE, values.get(0));<\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b. \u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u0434\u043b\u044f ISO \u0438 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0. \u041d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0436\u0438\u043c Pro \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u0430\u043c\u0435\u0440\u0443 \u0438 \u0441\u0435\u0440\u0438\u0439\u043d\u0443\u044e \u0441\u044a\u0451\u043c\u043a\u0443.<\/p>\n<pre><code class=\"kotlin\">\/\/ Deliver the parameters. mMode.setParameter(); \/\/ Start shooting. mMode.takePicture()<\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 RAW, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c getSupportedCaptureSizes (ImageFormat.RAW_SENSOR) \u0432 ModeCharacteristics. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 captureSize \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c addCaptureImage (captureSize, ImageFormat.RAW_SEOSOR) \u0438\u0437 ModeConfig.Builder.<\/p>\n<pre><code class=\"kotlin\">modeConfigBuilder.addCaptureImage(captureSize,ImageFormat.RAW_SENSOR)<\/code><\/pre>\n<p>  \u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <b>Pro video<\/b>:<\/p>\n<pre><code class=\"kotlin\">\/\/ Deliver the parameters. mMode.setParameter();<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c API \u0437\u0430\u043f\u0438\u0441\u0438. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2014 \u043a\u0430\u043a \u0432 Pro foto, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<pre><code class=\"kotlin\">\/\/ Start recording. mMode.startRecording() mMediaRecorder.start(); \/\/ Pause recording. mMode.pauseRecording(); mMediaRecorder.pause(); \/\/ Resume recording. mMode.resumeRecording(); mMediaRecorder.resume(); \/\/ Stop recording. mMode.stopRecording(); mMediaRecorder.stop();<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c<\/h2>\n<p>  \u0412 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0418\u0418-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0430 ML Kit. \u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u0435\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0446\u0432\u0435\u0442\u0430, \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0448\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 1500 \u0441\u0446\u0435\u043d \u0438\u0437 25 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439: \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0435, \u0440\u0430\u0441\u0442\u0435\u043d\u0438\u044f, \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0438 \u0438 \u043f\u0440.<\/p>\n<p>  \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f mCurrentModeType \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Mode.Type.NORMAL_MODE. \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0451\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u041d\u0438\u0436\u0435 \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query whether the AI capability is supported. If true is returned, AI scenario identification is supported. modeCharacteristics. getSupportedSceneDetection(); \/\/ Enable AI scene identification. You can disable it afterwards by setting the input parameter to false. mMode. setSceneDetection (true); \/\/ Identify the scene and perceive the identified scene based on the callback information. class ModeActionStateCallback extends ActionStateCallback { \u00a0\u00a0\u00a0@Override \u00a0\u00a0\u00a0public void onSceneDetection(Mode mode, @SceneDetectionResult.State int state, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@Nullable SceneDetectionResult result) { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Confirm the effect of the scene to be enabled. For example, the scene &quot;flower&quot; is identified here. \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ After the scene is enabled, the parameters are adjusted to make the flowers look brighter. \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mMode.setParameter(RequestKey.HW_SCENE_EFFECT_ENABLE, true); \u00a0\u00a0\u00a0} }  \/\/ Disable the scene effects. If the scene effect is enabled and then disabled, parameter adjustment will be canceled. mMode.setParameter(RequestKey.HW_SCENE_EFFECT_ENABLE, false);<\/code><\/pre>\n<p>  \u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u044a\u0451\u043c\u043a\u0430 (burst shooting) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u0430\u043c\u0435\u0440\u044b:<\/p>\n<pre><code class=\"kotlin\">\/\/ Query whether burst shooting is supported. If true is returned, burst shooting is supported. modeCharacteristics. isBurstSupported(); \/\/ Start burst shooting. mMode. takePictureBurst();<\/code><\/pre>\n<p>  \u0418\u043b\u0438:\u00a0<\/p>\n<pre><code class=\"kotlin\">mMode. takePictureBurst (filename); \/\/ Stop burst shooting. mMode.stopPicture();<\/code><\/pre>\n<p>  <\/p>\n<hr\/>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0451. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043a\u0430\u043c\u0435\u0440\u043e\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 HMS, \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/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\/company\/huawei\/blog\/530108\/\"> https:\/\/habr.com\/ru\/company\/huawei\/blog\/530108\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yg\/9f\/oc\/yg9focunx9wp4tbnuo4j4ihxaba.jpeg\" \/><\/div>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 HUAWEI \u0438 HONOR \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0441\u044a\u0451\u043c\u043a\u0438: \u043d\u043e\u0447\u043d\u0430\u044f \u0441\u044a\u0451\u043c\u043a\u0430, \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d, HDR, \u0448\u0438\u0440\u043e\u043a\u0430\u044f \u0434\u0438\u0430\u0444\u0440\u0430\u0433\u043c\u0430 \u0438 \u0442. \u0434. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Camera Engine \u044d\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u0442\u043e\u0433\u043e SDK \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443.  <\/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-314012","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314012","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=314012"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314012\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}