이 글을 쓰는 시점에서, 나는이에 대한 정직 솔루션이 믿지 않는, 당신이 기대하는 답이 아니다. 나는 틀리게 증명되기를 아주 희망한다. 이 다음에 추가 사용에 대한
하면 그것은 반드시 사소한 것 : 강화는 추가 매개 변수 RecognizerIntent.EXTRA_SUPPORTED_OFFLINE_LANGUAGES
을 제안 here
-
내가 프로그래밍 오래 전에이 정보를 제공하기 위해 개선 요청 way :
final Intent vrIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
getContext().sendOrderedBroadcast(vrIntent, null, new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
final ArrayList<String> vrStringLocales = intent.getExtras().getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
// This would be nice
final ArrayList<String> vrStringOfflineLocales = intent.getExtras().getStringArrayList(
RecognizerIntent.EXTRA_SUPPORTED_OFFLINE_LANGUAGES);
}
}, null, 1234, null, null);
아아, 그것은 결코 일어난 적이 없다.
정상적으로이 두 가지 방법으로 처리 할 수 있습니다.
응용 프로그램이 루트 권한으로 실행되는 경우 해당 로케일별로 상당히 쉽게 레이블 된 오프라인 파일이 포함 된 /data/data/com.google.android.googlequicksearchbox/app_g3_models/
의 위치를 확인할 수 있습니다.
사용자가 누락 된 오프라인 파일을 설치할 것인지 묻는 메시지가 필요한 시점을 알 수 있습니다.
내 경험에 비추어 볼 때, SpeechRecognizer.ERROR_SERVER
의 인식 오류는이를 나타낼 수 있지만이를 반드시 확인하는 것은 아닙니다.
@Override
public void onError(final int error) {
switch (error) {
case SpeechRecognizer.ERROR_SERVER:
// TODO - prompt to install offline files
break;
}
}
발견되면 사용자를 올바른 설치 화면으로 안내 할 수 있습니다.
public static final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox";
public static final String ACTIVITY_INSTALL_OFFLINE_FILES = "com.google.android.voicesearch.greco3.languagepack.InstallActivity";
public static boolean showInstallOfflineVoiceFiles(@NonNull final Context ctx) {
final Intent intent = new Intent();
intent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW, ACTIVITY_INSTALL_OFFLINE_FILES));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
ctx.startActivity(intent);
return true;
} catch (final ActivityNotFoundException e) {
} catch (final Exception e) {
}
return false;
}
하드 코딩 된 값을 사용하면 물론 이상적이지는 않지만 이러한 상황도 아닙니다.
일단 위의 모든 내용을 살펴본 후 임시 솔루션을 생각해보십시오. 다시 생각해보십시오! 사용자가 누락 된 오프라인 파일을 올바르게 설치했는지 여부에 관계없이 여전히 작동하지 않을 가능성이 높습니다. .....
내 answer here은 여전히 내 사용자를 안내해야하는 프로세스를 설명합니다. 매우 실망 스럽습니다.
마지막으로 오류가없는 경우 RecognitionListener.onError(int)의 버그가 하나 더 발생할 수 있습니다. 내 요령 from the answer here에서 BugRecognitionListener
을 사용하도록 확인하면 콜백이 올바른 순서로 전송되고 있는지 확인하고 그렇지 않은 경우 무시할 수 있습니다. 내 대답은 이전 릴리스에서 수정 제안을에도 불구하고 이것은 문제가 남아 있습니다.
위 내용을 읽으면 바쁠 것입니다. 행운을 빌어 요 ....
아니요, "오프라인 음성 사용 방법", 오프라인 음성 작동은 가능하지만 언어 파일을 다운로드해야합니다.이 질문은 "언어 파일 검색 및 다운로드/설치 방법"입니다. – James
에 대한 향상을 요청했습니다. 이것은 오래 전이었으며 이제는 쓸데없는 것으로 표시됩니다. https://code.google.com/p/android/issues/detail?id=59145 – brandall
이 코드를 @gregm [여기]에서 시도하십시오 (http://stackoverflow.com/a/10548680/4394827) –