1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ts_ohos-lingorecorder-for-ohos

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Lingorecorder

Данный проект основан на открытом проекте lingochamp/LingoRecorder и адаптирован для использования в HarmonyOS. Отслеживать исходный проект можно по его тегам и адресу GitHub: https://github.com/lingochamp/LingoRecorder.

1. Проект

Название проекта: lingorecorder.

Серия: адаптация сторонних компонентов для HarmonyOS.

Функции:

  1. Многопоточный механизм обеспечивает производительность и целостность данных PCM.
  2. Абстрагирование AudioProcessor позволяет внедрить Recorder для поддержки разделения на обработку и запись.
  3. WavFileRecorder поддерживает замену рекордера файлами для генерации данных записи.
  4. Интерфейс idl упрощает обработку данных записи в другом процессе.

Состояние адаптации проекта:

  1. Основные функции адаптированы.
  2. В демоверсии не работает функция воспроизведения wav-файлов по умолчанию, что не является основной функцией.

Адрес документации исходного проекта: https://github.com/lingochamp/LingoRecorder

Язык программирования: Java.

2. Руководство по интеграции

Способ 1:

  1. Скачайте или скомпилируйте файл lingo_recorder-for-ohos.har, который находится по пути ./entry/libs/lingo_recorder-debug.har.
  2. При самостоятельной компиляции обратите внимание на необходимость добавления подписи.
  3. Импортируйте файл .har в модуль вашего проекта HarmonyOS в каталог ./libs.
  4. Убедитесь, что в файле build.gradle модуля указан пакет .jar и .har из каталога ./libs: implementation fileTree(dir: 'libs', include: ['.jar', '.har']).
  5. Используйте код.

Способ 2:

  1. Добавьте mavenCentral() в файл build.gradle верхнего уровня:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    ...
    buildscript {
        repositories {
            ...
            mavenCentral()
        }
        ...
    }
    
    allprojects {
        repositories {
            ...
            mavenCentral()
        }
    }
  2. Добавьте в файл build.gradle модуля:

    ...
    dependencies {
        ...
        implementation 'com.gitee.ts_ohos:silicompressor-for-ohos:1.0.1'
    }

3. Использование

  • См. документацию исходного проекта. Использование LingoRecorder:
lingoRecorder = new LingoRecorder();
lingoRecorder.setOnRecordStopListener(new LingoRecorder.OnRecordStopListener() {
    @Override
    public void onRecordStop(Throwable throwable, Result result) {
        //any execeptions occur during recording will be received at here.
        //you can get duration and output file from Result.
    }
});
lingoRecorder.setOnProcessStopListener(new LingoRecorder.OnProcessStopListener() {
    @Override
    public void onProcessStop(Throwable throwable, Map<String, AudioProcessor> map) {
        //any execeptions occur during processing will be received at here.
        //you can get any processors you inject into recorder.
        //the callback will be invoked after "onRecordStop".
    }
});

Создание собственного AudioProcessor: Можно реализовать интерфейс AudioProcessor для создания собственного обработчика:

public interface AudioProcessor {

    void start() throws Exception;

    void flow(byte[] bytes, int size) throws Exception;

    boolean needExit();

    void end() throws Exception;

    void release();
}

Запуск AudioProcessor в отдельном процессе: LingoRecorder предоставляет интерфейс aidl для запуска AudioProcessor в отдельном процессе. Пример демонстрирует использование LocalScorerProcessor в процессе «score».

Flac Encoder: Пример также демонстрирует использование Codec для кодирования Flac. Этот пример предназначен для пользователей, которым требуется жёсткое кодирование.

Измерение/мониторинг громкости: Настройка монитора громкости:

//只设置 OnVolumeListener 的时候,计算音量的方式使用的是一个默认的内部实现
//内部默认实现的返回值是[0, 90]的分贝值
lingoRecorder.setOnVolumeListener(new OnVolumeListener() {
    @Override
    public void onVolume(double volume) {

    }
});
//也可以提供自己的计算音量的实现
lingoRecorder.setOnVolumeListener(new OnVolumeListener() {
    @Override
    public void onVolume(double volume) {

    }
}, new IVolumeCalculator() {
    @Override
    public double onAudioChunk(byte[] chunk, int size, int bitsPerSample) {
        return 0;
    }
});

4. Демонстрация эффекта

Эффект громкости: мониторинг изменений громкости и построение графика.

Другие эффекты: см. примеры demo, файлы записей находятся по пути /data/data/com.liulishuo.engzo.lingorecorderforohos.demo/outputs/.

5. Итерация версии

  • v1.0.0 — первый выпуск и публикация проекта.
  • v1.0.1 — обновление HarmonyOS API до версии 5.

6. Информация о версии и лицензии

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ts_ohos-lingorecorder-for-ohos.git
git@api.gitlife.ru:oschina-mirror/ts_ohos-lingorecorder-for-ohos.git
oschina-mirror
ts_ohos-lingorecorder-for-ohos
ts_ohos-lingorecorder-for-ohos
ohos_main