idl_capture工具的代码路径:

drivers_peripheral/audio/test/sample/idl_capture.c

选择菜单:

static void PrintMenu2(void)
{
    printf(" ================== Play Capture Menu ================== \n");
    printf("| 1. Capture Start                                      |\n");
    printf("| 2. Capture Stop                                       |\n");
    printf("| 3. Capture Resume                                     |\n");
    printf("| 4. Capture Pause                                      |\n");
    printf("| 5. Capture SetVolume                                  |\n");
    printf("| 6. Capture SetGain                                    |\n");
    printf("| 7. Capture SetMute                                    |\n");
    printf("| 8. Capture SetAttributes                              |\n");
    printf("| 9. Capture SelectScene                                |\n");
    printf("| 10. Capture GetExtParams                              |\n");
    printf("| 11. Capture getMmapPosition                           |\n");
    printf("| 12.Exit                                               |\n");
    printf(" ======================================================= \n");
}

static struct ProcessCaptureMenuSwitchList g_processCaptureMenuSwitchList[] = {
    {CAPTURE_START,            StartButtonCapture    },
    {CAPTURE_STOP,             StopButtonCapture     },
    {CAPTURE_RESUME,           SetCaptureResume      },
    {CAPTURE_PAUSE,            SetCaptyrePause       },
    {SET_CAPTURE_VOLUME,       SetCaptureVolume      },
    {SET_CAPTURE_GAIN,         SetCaptureGain        },
    {SET_CAPTURE_MUTE,         SetCaptureMute        },
    {SET_CAPTURE_ATTRIBUTES,   SetCaptureAttributes  },
    {SET_CAPTURE_SLECET_SCENE, SelectCaptureScene    },
    {GET_CAPTURE_EXT_PARAMS,   GetCaptureExtParams   },
    {GET_CAPTURE_POSITION,     GetCaptureMmapPosition},
};

支持开始录音,停止录音,恢复,暂停录音,设置音量,增益,静音,选择场景等功能。

选择录音场景,媒体,蓝牙,通话:

static void SelectSceneMenu(void)
{
    printf(" ====================  Select Scene ==================== \n");
    printf("0 is Midea.                                             |\n");
    printf("1 is Communication.                                     |\n");
    printf("2 is Voice-all.                                         |\n");
    printf(" ======================================================= \n");
}

static int32_t SelectCaptureScene(struct IAudioCapture **capture)
{
    (void)capture;
    int32_t val = 0;
    struct AudioSceneDescriptor captureScene;
    system("clear");
    SelectSceneMenu();
    printf("Please input your choice:\n");

    int32_t ret = CheckInputName(INPUT_INT, (void *)&val);
    if (ret < 0) {
        AUDIO_FUNC_LOGE("Invalid value,");
        SystemInputFail();
        return HDF_FAILURE;
    }

    switch (val) {
        case AUDIO_IN_MEDIA:
            captureScene.scene.id = AUDIO_IN_MEDIA;
            break;
        case AUDIO_IN_COMMUNICATION:
            captureScene.scene.id = AUDIO_IN_COMMUNICATION;
            break;
        case AUDIO_IN_CALL - 1:
            captureScene.scene.id = AUDIO_IN_CALL;
            break;
        default:
            AUDIO_FUNC_LOGE("Select Scene invaild.");
            return HDF_FAILURE;
    }
    ret = PrintCaptureSelectPin(&captureScene);
    if (ret != HDF_SUCCESS) {
        AUDIO_FUNC_LOGE("Select pin failed");
        return HDF_FAILURE;
    }

    captureScene.desc.desc = "mic";

    if (g_capture == NULL || g_capture->SelectScene == NULL) {
        AUDIO_FUNC_LOGE("Record already stop,");
        SystemInputFail();
        return HDF_FAILURE;
    }

    ret = g_capture->SelectScene((void *)g_capture, &captureScene);
    if (ret < 0) {
        AUDIO_FUNC_LOGE("Select scene fail");
    }
    return ret;
}

idl_capture工具的编译

编译测试程序 ./build.sh --product-name oriole --ccache --build-target drivers/peripheral/audio/test/sample_audio_sample

修改权限 14 / 15 hdc_std shell mount -o rw,remount /

hdc_std shell mount -o rw,remount /vendor

将测试程序推送到板子上 hdc_std file send F:\idl_capture /data

修改测试文件权限 hdc_std shell chmod 777 /data/idl_capture

运行测试程序 ./data/idl_capture /data/single_short2.wav

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐