Как показать настройки распознавания голоса Google в моем приложении? - PullRequest
4 голосов
/ 15 января 2012

Я работаю над приложением для Android, в котором я реализовал распознавание голоса и TTS. Поэтому я подумал о том, чтобы запустить экран настроек для распознавания голоса Google и TTS, чтобы позволить пользователю изменять настройки из приложения. Я успешно реализовал настройки TTS, используя следующий код:

intent = new Intent();
intent.setAction("com.android.settings.TTS_SETTINGS");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);

Теперь я хочу показать системные "настройки распознавания голоса google" в моем приложении, чтобы позволить пользователю изменять языковые параметры и т. Д. Я много искал ... Сделал много попыток, но не смог загрузить экран настроек распознавания голоса. , Пожалуйста, скажите мне, как я могу это реализовать. Заранее спасибо ...

Ответы [ 2 ]

10 голосов
/ 12 января 2016

Ответ @brandall не работает на Android 5.1 для меня, например, для настроек распознавания голоса используется другое имя компонента.

/**
 * Open speech recognition settings activity
 *
 * @return true in case activity was launched, false otherwise
 **/
public boolean openSpeechRecognitionSettings() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    boolean started = false;
    ComponentName[] components = new ComponentName[]{
            new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.settingsui.VoiceSearchPreferences"),
            new ComponentName("com.google.android.voicesearch", "com.google.android.voicesearch.VoiceSearchPreferences"),
            new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.voicesearch.VoiceSearchPreferences"),
            new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.apps.gsa.velvet.ui.settings.VoiceSearchPreferences")
    };
    for (ComponentName componentName : components) {
        try {
            intent.setComponent(componentName);
            startActivity(intent);
            started = true;
            break;
        } catch (final Exception e) {
            Timber.e(e, null);
        }
    }
    return started;
}

РЕДАКТИРОВАТЬ: обновлено с использованием последнего имени компонента

5 голосов
/ 17 марта 2012

Я застрял на этом тоже целую вечность.версия Jelly Bean в приложении Google Search.Чтобы выявить возможные проблемы с обновлением, когда вы не можете использовать Build.Version, вы можете использовать что-то вроде этого:

try {
final Intent vsInt = new Intent(Intent.ACTION_MAIN);
vsInt.setComponent(new ComponentName("com.google.android.voicesearch",
                            "com.google.android.voicesearch.VoiceSearchPreferences"));
vsInt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(vsInt);

} catch (final Exception e) {

try {
final Intent vsjInt = new Intent(Intent.ACTION_MAIN);
vsjInt.setComponent(new ComponentName("com.google.android.googlequicksearchbox", "com.google.android.voicesearch.VoiceSearchPreferences"));
vsjInt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(vsjInt);

} catch (final Exception e1) {
e1.printStackTrace();
}
}
...