Re: [問題] 呼叫google translate翻譯

看板AndroidDev作者 (〆)時間13年前 (2011/07/18 17:04), 編輯推噓6(608)
留言14則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《k11926 (ki)》之銘言: : 開發層: (應用/框架/庫/核心) : 問題: : 上次解決了edittext鍵盤的問題後,持續我的進度,就是翻譯啦,想要做到的效果是,一 : 篇文章可以讓使用者選取文字(英文)後,可以進行翻譯的動作,用google translate可以 : 做到翻譯 : 但是沒有辦法直接選取完就可以顯示在webview裡面,一定要現選取文字,然後 : 長按(或是另外放一個button)選取的文字後,再按下webview中的文字呼叫,才有辦法 : 翻譯,不知道有沒有什麼比較好的翻譯方法呢? : 希望是可以直接選取完文字以後,點選選取的範圍,就可以翻譯的功能 我的方法有兩種 第一種是透過瀏覽器連上google翻譯, 優點: 簡單,只需要寫出android程式即可 缺點: 很慢 第二種是自己用javascript透過google api寫一支翻譯程式 優點:速度快 缺點:必須學一下Javascript, 我試著寫第一種方法,結果真的很慢= = 程式碼(片段): import com.google.api.translate.Language;//必須下載google translate的api import com.google.api.translate.Translate; ... editText = (EditText)findViewById(R.id.EditView01); editText.setOnTouchListener(new OnTouchListener(){ @Override public boolean onTouch(View view, MotionEvent motion) { try{ String subSelectStr = ""; if(editText.getSelectionStart()<=editText.getSelectionEnd()){ subSelectStr = (editText.getText(). subSequence(editText.getSelectionStart(), editText.getSelectionEnd())).toString(); } else{ subSelectStr = (editText.getText(). subSequence(editText.getSelectionEnd(), editText.getSelectionStart())).toString(); } ClipboardManager clipboard = (ClipboardManager)getSystemService( Context.CLIPBOARD_SERVICE); clipboard.setText(subSelectStr); String pasteData = clipboard.getText().toString(); Translate.setHttpReferrer( "/*Enter the URL of your site here*/"); String strTranslatedText = Translate.execute(pasteData, Language.ENGLISH, Language.CHINESE_TRADITIONAL); Toast.makeText(mContext, strTranslatedText, Toast.LENGTH_SHORT).show(); } catch(Exception e){ e.printStackTrace(); } return false; } }); 稍微解釋一下, 首先我宣告一個EditText來存放原po所說的文章, 為了方便示範,所以我就放了一個英文單字,apple作為初始的文章, 然後利用xml將editText的屬性設為editable=false, 當使用者長按editText的時候,選擇select text模式, 然後進行選取,當選完放開手指的時候, 就會把文字貼入Clipboard,然後再從Clipboard裡面取出, 丟去google translate線上查詢, 查完的結果會利用Toast顯示出來 。 如果一開始所說的,會非常慢,不知道是因為我網路問題, 還是真的會很慢, 還是建議利用第二種方法,寫一支javascript吧! 補上程式碼 http://uploadingit.com/file/whpf92ve9ean12ne/TestAndroidWebView.zip -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.221.115.4

07/18 17:18, , 1F
有解有推
07/18 17:18, 1F

07/19 06:20, , 2F
哇~~謝謝解答,第一種方我目前在嘗試,的確是有一些慢
07/19 06:20, 2F

07/19 06:22, , 3F
但網路速度好像有差,因為在學校就快一些,改天來研究你說
07/19 06:22, 3F

07/19 06:22, , 4F
的第二種方法,真是太謝謝你囉
07/19 06:22, 4F
※ 編輯: givemepass 來自: 61.221.115.4 (07/19 09:54)

07/19 11:02, , 5F
但我有問題了,我不知道localhost是什麼?
07/19 11:02, 5F

07/19 11:05, , 6F
然後我用你的程式碼開起來會有錯誤耶,載入的API有問題
07/19 11:05, 6F

07/19 11:49, , 7F
你要把GOOGLE API ADD進去ECLIPSE
07/19 11:49, 7F

07/19 11:49, , 8F
localhost就是你的主機位址
07/19 11:49, 8F

07/19 13:53, , 9F
我Load進去 但是他一直說錯誤耶
07/19 13:53, 9F

07/19 14:43, , 10F
你試著把bin裡面的apk install到你的android系統裡
07/19 14:43, 10F

07/19 14:43, , 11F
跑看看
07/19 14:43, 11F

07/19 15:15, , 12F
http://ppt.cc/HNQe 喔喔我上傳我檔案了 我現在想要讓他
07/19 15:15, 12F

07/19 15:16, , 13F
一選到字長按 webview就會顯示翻譯 不需要再按webview裡面
07/19 15:16, 13F

07/19 15:17, , 14F
的連結 但一直試不出來 真是感謝你超有耐心
07/19 15:17, 14F
文章代碼(AID): #1E8_SQif (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1E8_SQif (AndroidDev)