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

OSCHINA-MIRROR/ts_ohos-RxOhosAudio

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

RxAndroidAudio

Преобразование проекта RxAndroidAudio (https://github.com/Piasy/RxAndroidAudio) для использования в HarmonyOS. Библиотека для работы с аудио, поддерживающая часть функционала Rx.

Проект является адаптацией открытого проекта Piasy/RxAndroidAudio для использования в HarmonyOS. Подробнее можно узнать по адресу https://github.com/Piasy/RxAndroidAudio.

Переделка версия: v1.7.0

Описание проекта

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

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

Функции:

  1. Запись и воспроизведение аудиофайлов.
  2. Запись и воспроизведение потока аудиофайлов.
  3. Воспроизведение записанных аудиофайлов с эффектами изменения голоса.

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

  1. Основные функции уже реализованы.
  2. Пример приложения для тестирования работает корректно.

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

Интеграция

Метод 1:

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

Метод 2:

Используйте Maven для интеграции:

allprojects {
    repositories {
        mavenCentral()
    }
}
implementation 'com.gitee.ts_ohos:rxohosaudio:1.0.0'
implementation 'com.gitee.ts_ohos:audioProcessor:1.0.0'

Использование кода#### Запись аудиофайла

запись аудиофайла```java mAudioRecorder = AudioRecorder.getInstance(); mAudioFile = new File( Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + System.nanoTime() + ".file.m4a"); источник = new Источник(); источник.setRecorderAudioSource(Recorder.AudioSource.MIC); audiоСвойство = new СвойствоЗвука.Builder() .setRecorderSamplingRate(AUDIO_SAMPLE_RATE_HZ) .setRecorderBitRate(AUDIO_BIT_RATE_HZ) .setRecorderAudioEncoder(Recorder.AudioEncoder.AAC) .build(); storageProperty = new СвойствоУчета.Builder() .setRecorderFile(mAudioFile) .setRecorderMaxDurationMs(-1) .setRecorderMaxFileSizeBytes(-1) .build();


Запись аудиофайла осуществляется следующими методами:

```java
mAudiorecorder.prepareRecord(source, Recorder.OutputFormat.MPEG_4,
                             audiopropery, storageproperty);
mAudiorecorder.startRecord();
// ...
mAudiorecorder.stopRecord();

Проигрывание аудиофайла

С помощью PlayConfig можно настроить источник звука, установить громкость или включить циклический воспроизведение:

проигрывание аудиофайла
mRxAudioPlayer.play(PlayConfig.file(audioFile).looping(true).build())
        .subscribeOn(Schedulers.io())
        .observeOn(HarmonySchedulers.mainThread())
        .subscribe(new Observer<Boolean>() {
            @Override
            public void onSubscribe(final Disposable disposable) {

            }

            @Override
            public void onNext(final Boolean aBoolean) {
                // готово к проигрыванию
            }
        });
```            @Override
            public void onError(final Throwable throwable) {

            }

            @Override
            public void onComplete() {
                // завершение проигрывания
                // ВАЖНОЕ УПРАЖНЕНИЕ: если воспроизведение циклическое, то Observable никогда не завершится, вам потребуется остановить воспроизведение
                // в onDestroy, иначе произойдет утечка памяти!
            }
        });

Полный пример использования PlayConfig

PlayConfig.file(audioFile) // проигрывание локального файла
    //.res(getApplicationContext(), R.raw.audio_record_end) // или проигрывание ресурса raw
    .looping(true) // циклическое воспроизведение или нет
    .leftVolume(1.0F) // громкость слева, но данный проигрыватель не поддерживает отдельную регулировку громкости слева и справа
    .rightVolume(1.0F) // громкость справа, но данный проигрыватель не поддерживает отдельную регулировку громкости слева и справа
    .build(); // сборка конфигурации и запуск!

Запись потока аудиофайлазапись потока аудиофайла```java

mOutputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + System.nanoTime() + ".stream.m4a"); mOutputFile.createNewFile(); mFileOutputStream = new FileOutputStream(mOutputFile); mStreamAudioRecorder.start(new StreamAudioRecorder.AudioDataCallback() { @Override public void onAudioData(final byte[] data, final int size) { if (mFileOutputStream != null) { try { mFileOutputStream.write(data, 0, size); } catch (IOException e) { e.printStackTrace(); } } } });

@Override
public void onError() {
    new EventHandler(EventRunner.getMainEventRunner()).postSyncTask(new Runnable() {
        @Override
        public void run() {
            new ToastDialog(StreamAbility.this).setText("Запись не удалась").setDuration(DIALOG_DURATION).show();
            mBtnStart.setText("Старт");
            mIsRecording = false;
        }
    });
}
}### Проигрывание аудио потока (Play a stream)

<img src="./pic/audioStreamPlay.jpg" alt="Проигрывание аудио потока" style="zoom:25%;" div align=center />

```java
Observable.just(mOutputFile).subscribeOn(Schedulers.io()).subscribe(new Action1<File>() {
    @Override
    public void call(File file) {
        try {
            mStreamAudioPlayer.init();
            FileInputStream inputStream = new FileInputStream(file);
            int read;
            while ((read = inputStream.read(mBuffer)) > 0) {
                mStreamAudioPlayer.play(mBuffer, read);
            }
            inputStream.close();
            mStreamAudioPlayer.release();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

Изменение звуковых эффектов в режиме потока (Change the sound effect in stream mode)

Изменение проигрывания аудио потока
mStreamAudioPlayer.play(
    mAudioProcessor.process(mRatio, mBuffer, StreamAudioRecorder.DEFAULT_SAMPLE_RATE),
    read);

Версии и изменения

  • v1.0.0 Первый выпуск проекта

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

Внесите свой вклад (Contributions are welcome)

https://gitee.com/ts_ohos/RxOhosAudio/pulls

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

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

Введение

Возможно, это самая надёжная библиотека инкапсуляции OhosAudio с частичной поддержкой Rx. Адаптирована для ohos. Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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