java - 如何在 Android 上使用 Google Translate API v2

标签 java android google-api google-translate android-httptransport

我正在尝试使用 Google Translation Api(“google-api-services-translate-v2-rev48.1.22.0.jar”)制作 Android 翻译应用程序。

我设法获得了一个有效的 key ,并且我已经从一个简单的 Java 项目中对其进行了测试,一切都很完美。 但是,当我尝试在 Android 应用程序中使用相同的代码时,没有任何效果。

这是来自android的代码:

Translate translator = new Translate.Builder (new NetHttpTransport(), GsonFactory.getDefaultInstance(), null)
                .setApplicationName("MyAppName")
                .build();
  try {
            TranslationsListResponse response = getListOfParameters(fromLanguage, toLanguage, textToTranslate).execute();
            StringBuffer sb = new StringBuffer();
            for (TranslationsResource tr : response.getTranslations()) {
                sb.append (tr.getTranslatedText() + " ");
            }
            return sb.toString();
        }
        catch (IOException e) {
            Log.e("ERROR", "Got error while trying to translate");
        }

private Translate.Translations.List getListOfParameters (String fromLanguage, String toLanguage, String textToTranslate) throws IOException {
        Translate.Translations.List list = translator.new Translations().list (Arrays.asList(textToTranslate), toLanguage.toUpperCase());
        list.setKey (TranslatorManager.TRANSLATION_GOOGLE_API_KEY);
        list.setSource (fromLanguage.toUpperCase());

        return list;
    }

我不确定问题出在哪里。我在尝试翻译时得到的唯一结果是:

I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false

在android中,我尝试过com.google.api.client.http.javanet.NetHttpTransport()AndroidHttp.newCompatibleTransport()

在我最初的 java 项目中,我使用了 GoogleNetHttpTransport.newTrustedTransport(),但是在 Android 中使用它时,出现了一些异常:

java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found

最佳答案

正如 Nick 所写,解决方案需要更改所使用的 HTTP 传输。链接线程“[stackoverflow.com/a/39285052/322738 – Rafael Steil][1]”中提出的两种解决方案在某种程度上是等效的,并且在某些条件下会类似地工作。

第一个回复建议使用 HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();

而第二个: HTTP_TRANSPORT = new com.google.api.client.http.javanet.NetHttpTransport();

AndroidHttp 类的[文档][2]在最后一段“方法详细信息”中指出,从 Android 版本 Gingerbread 开始,调用“new com.google.api.client.http.javanet.NetHttpTransport();”被推荐。

AndroidHttp 类的 newCompatibleTransport() 方法返回一个新的线程安全 HTTP 传输实例,该实例与 Gingerbread 之前的 Android SDK 兼容。

关于java - 如何在 Android 上使用 Google Translate API v2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41538552/

相关文章:

android - 如何为小米、红米、三星、华为等创建Android虚拟设备AVD

google-api - 如何找到通过Google Gmail API检索的附件的确定的附件ID?

javascript - Google API 热图层异常,为什么?

java - 如何跳过某些数组索引?

java - 迭代有序的 HashMap 条目对的最快方法

android - 为按钮设置 OnClickListener

java - Camera 2 Api Error - 不拍照的错误

java - 授权在本地工作但不托管

java - 如何创建具有两个键(键对、值)的 HashMap?

java - 如何解析网页中的动态内容?