Как использовать приложение Google translator



Я закодировал программу о предложении словаря, и я хочу иметь функцию, чтобы перейти к приложению "google translator" в моем приложении



Как я могу его использовать, Должен ли я что-либо импортировать?

472   5  

5 ответов:

Из того, что я могу сказать, приложение Google Translate для Android не предоставляет никаких стандартных Intents, которые вы могли бы использовать (это жалко, но в то же время странно. Можно подумать, что Google поощряет такой тип взаимодействия между приложениями.. в любом случае).

Однако, похоже, Google открыл API translate через веб-сервис . Таким образом, вы можете сделать перевод самостоятельно и показать его в своем приложении. Это немного больше работы, но она должна делать свою работу.

Вы можете посмотреть на google-api-translate-java Если вы хотите избавить себя от написания оболочки API.

Ответ Фи Ван Нгока был фантастическим, спасибо за это.

Однако это не сработало изначально для меня, и после изучения Translate apk, похоже, что они немного изменили свою файловую структуру, поэтому имя компонента intent теперь должно быть:

i.setComponent(
    new ComponentName(
        "com.google.android.apps.translate",
        "com.google.android.apps.translate.translation.TranslateActivity"));

Разница в том, что "translation" был добавлен перед "TranslateActivity"

Таким образом, моя окончательная версия, включая жесткий перевод с испанского на английский, выглядит следующим образом:
Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.putExtra("key_text_input", "Me gusta la cerveza");
i.putExtra("key_text_output", "");
i.putExtra("key_language_from", "es");
i.putExtra("key_language_to", "en");
i.putExtra("key_suggest_translation", "");
i.putExtra("key_from_floating_window", false);
i.setComponent(
    new ComponentName(
        "com.google.android.apps.translate",
        "com.google.android.apps.translate.translation.TranslateActivity"));
startActivity(i);

У меня та же проблема. Изначально я пытался использовать Google Translate Ajax API, но так как Google устарел API версии 1 и сделал версию 2 платной услугой, мой код перестает работать. Затем я декомпилировал приложение Google Translate, заглянул в код Smali и получил некоторые подсказки о логике внутри него. Используйте этот код, он работает для меня:

private void callGoogleTranslateApps(String word, String fromLang, String toLang) {
    Intent i = new Intent();

    i.setAction(Intent.ACTION_VIEW);
    i.putExtra("key_text_input", word);
    i.putExtra("key_text_output", "");
    i.putExtra("key_language_from", fromLang);
    i.putExtra("key_language_to", toLang);
    i.putExtra("key_suggest_translation", "");
    i.putExtra("key_from_floating_window", false);

    i.setComponent(new ComponentName("com.google.android.apps.translate", "com.google.android.apps.translate.TranslateActivity"));
    startActivity(i);
}

ОМГ! Они снова изменили его! Они сделали его более разумным, но не совместимым с предыдущей версией.

Intent i = new Intent();
i.setAction(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_TEXT, "What is going on?");
i.putExtra("key_text_input", "Oh my God!");
i.putExtra("from", "en");
i.putExtra("to", "zh-CN");
i.setComponent(new ComponentName("com.google.android.apps.translate",
                "com.google.android.apps.translate.HomeActivity"));

Похоже, что это намерение отправки с двумя дополнительными (кстати, необязательными) параметрами "to"и " from".

Тут есть одна загвоздка:" key_text_input " отдает предпочтение перед Intent.EXTRA_TEXT, а "в" и "с" работают только с "key_text_input".

Для людей, которые меняют API с каждой новой версией, может показаться разумным переименовать его "key_text_input", скажем, просто "text_input", поэтому мы будем с нетерпением ждать следующего релиза...

Чтобы быть в безопасности, я бы предложил установить оба намерения.EXTRA_TEXT и "key_text_input" к одному и тому же значению.

Добавить следующие ответы:

Важно, чтобы вы прошли две буквы коды языков. С 3-буквенными кодами это может выглядеть так, как будто приложение google translate не получает никаких данных.

Кроме того, если Intent.ACTION_VIEW не работает, вы можете использовать Intent.ACTION_SEND.

        intent = new Intent();
        //intent.setAction(Intent.ACTION_VIEW); // this did not work for me initially
        intent.setAction(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_TEXT, m_text);
        intent.putExtra("key_text_input", m_text);
        intent.putExtra("key_text_output", "");
        intent.putExtra("key_language_from", m_language);
        intent.putExtra("key_language_to", lang_to);
        intent.putExtra("key_suggest_translation", "");
        intent.putExtra("key_from_floating_window", false);
        intent.setComponent(
            new ComponentName(
                "com.google.android.apps.translate",
                "com.google.android.apps.translate.HomeActivity"
                ));
    //try {
        startActivityForResult(intent, REQUEST_CODE_TRANSLATE);
    //...

Comments

    Ничего не найдено.