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

OSCHINA-MIRROR/archermind-ti-voice-overlay-ohos

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

Voice-Overlay-ohos

Проект: краткое описание

Voice overlay помогает преобразовывать речь пользователя в текст и обеспечивает удобный пользовательский опыт, одновременно обрабатывая необходимые разрешения.

Демонстрация функций

Интеграция

Способ 1:

Скачайте исходный код voice-overlay_ohos, запустите DevEco Studio и откройте этот проект для непосредственной компиляции и запуска примера entry.

Способ 2:

Добавьте ссылку на mavenCentral() в build.gradle проекта:

repositories {   
    ...   
    mavenCentral()   
     ...           
 }

Добавьте зависимость в build.gradle entry:

dependencies { 
... 
implementation 'com.gitee.archermind-ti:voice:1.0.0-beta' 
... 
}

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

Базовое использование:

В приложении определите наличие разрешений с помощью следующего кода:

if (!Voice.isRecordAudioPermissionGranted(getApplicationContext())) {
    ((FractionAbility)getAbility()).getFractionManager()
            .startFractionScheduler()
            .replace(ResourceTable.Id_main_fraction, new VoicePermissionDialogFraction(this))
            .submit();
} else {
    ((FractionAbility)getAbility()).getFractionManager()
            .startFractionScheduler()
            .replace(ResourceTable.Id_main_fraction, new VoicePermissionDialogFraction(this))
            .submit();
}

См. реализацию.

Если у вас нет разрешения MICROPHONE, появится диалоговое окно запроса разрешений. После подтверждения вы перейдёте на страницу распознавания речи.

Используйте VoiceSpeechRecognizer.ResultsListener для получения текста, преобразованного из речи пользователя:

@Override
public void onResults(List<String> possibleTexts) {
    // Do something with the results, for example:
    StringBuilder sb = new StringBuilder();
    for (String text : possibleTexts) {
        sb.append(text);
        sb.append('\n');
    }
    resultsText.setText(sb.toString());
}

См. реализацию.

Если запрос разрешений отклонён:

Если пользователь отказывается предоставить разрешение, объясните ему причину использования разрешений; если пользователь хочет использовать функцию преобразования речи после отказа, помогите ему восстановить разрешения:

@Override
public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {
    if (Voice.isRecordPermissionWithResults(requestCode, grantResults)) {
        if (Voice.isPermissionGranted(grantResults)) {
            if (currentSlice.get() != null) {
                currentSlice.get().showVoiceDialog();
            }
        } else {
            Voice.showPermissionRationale(this, null, null);
        }
    }
}

См. реализацию.

Этот код демонстрирует процесс объяснения и восстановления разрешений.

Настройка:

Вы можете настроить информацию в Behavior и Suggestions, например:

String[] suggestions = {
    "64GB Smartphone",
    "Red running shoes",
    "Cheap TV screen"};
voiceInput.setSuggestions(suggestions);

Запуск речи:

Можно отключить автоматический запуск речи с помощью:

// Requires the user to click the mic to start listening. 
voiceInput.setAutoStart(false);
// [...]
// you can also start listening programmatically with
VoiceInputDialogFraction.start()

Замена текста:

Замените текст в strings.json:

{
  "string": [
    {
      "name": "app_name",
      "value": "voice"
    },
    {
      "name": "input_title_listening",
      "value": "Listening…"
    },
    {
      "name": "input_subtitle_listening",
      "value": "Say something"
    },
    {
      "name": "input_subtitle_suggestions",
      "value": "Say something like:"
    },
    {
      "name": "input_title_error",
      "value": "Sorry, we didn't quite get that."
    },
    {
      "name": "input_subtitle_error",
      "value": "Try repeating your request."
    },
    {
      "name": "input_hint_error",
      "value": "Try again"
    },
    {
      "name": "permission_title",
      "value": "You can use voice search to find products."
    },
    {
      "name": "permission_subtitle",
      "value": "May we access your device’s microphone to enable voice search?"
    },
    {
      "name": "permission_button_allow",
      "value": "Allow microphone access"
    },
    {
      "name": "permission_button_reject",
      "value": "No"
    },
    {
      "name": "permission_rationale",
      "value": "Voice"
    }
  ]
}
``` **Макет**

Вы можете заменить макет приложения, но необходимо соблюдать следующую структуру макета:
* На странице разрешений используйте файл макета `voice_permission.xml`, который включает в себя:
    * кнопку закрытия страницы с идентификатором `$+id:close`;
    * текст заголовка с идентификатором `$+id:title`;
    * текст подзаголовка с идентификатором `$+id:subtitle`.
* На странице преобразования голоса используйте файл макета `voice_input.xml`, который включает в себя: 
    * компонент `VoiceMicrophone` для обработки голосовых операций с идентификатором `$+id:microphone`;
    * текст инструкции по эксплуатации с идентификатором `$+id:suggestions`;
    * кнопку закрытия страницы с идентификатором `$+id:close`;
    * текст заголовка с идентификатором `$+id:title`;
    * текст подзаголовка с идентификатором `$+id:subtitle`;
    * текст подсказки с идентификатором `$+id:hint`;
    * объект анимации `RippleView` с идентификатором `$+id:ripple`.

**Версии**

v1.0.0-beta

**Информация об авторских правах и лицензиях**

Лицензия MIT

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

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

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