作者givemepass (〆)
看板AndroidDev
标题Re: [问题] 呼叫google translate翻译
时间Mon Jul 18 17:04:23 2011
※ 引述《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
1F:推 ericinttu:有解有推 07/18 17:18
2F:推 k11926:哇~~谢谢解答,第一种方我目前在尝试,的确是有一些慢 07/19 06:20
3F:→ k11926:但网路速度好像有差,因为在学校就快一些,改天来研究你说 07/19 06:22
4F:→ k11926:的第二种方法,真是太谢谢你罗 07/19 06:22
※ 编辑: givemepass 来自: 61.221.115.4 (07/19 09:54)
5F:推 k11926:但我有问题了,我不知道localhost是什麽? 07/19 11:02
6F:推 k11926:然後我用你的程式码开起来会有错误耶,载入的API有问题 07/19 11:05
7F:→ givemepass:你要把GOOGLE API ADD进去ECLIPSE 07/19 11:49
8F:→ givemepass:localhost就是你的主机位址 07/19 11:49
9F:推 k11926:我Load进去 但是他一直说错误耶 07/19 13:53
10F:→ givemepass:你试着把bin里面的apk install到你的android系统里 07/19 14:43
11F:→ givemepass:跑看看 07/19 14:43
13F:→ k11926:一选到字长按 webview就会显示翻译 不需要再按webview里面 07/19 15:16
14F:→ k11926:的连结 但一直试不出来 真是感谢你超有耐心 07/19 15:17