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 )