當前位置:成語大全網 - 漢語詞典 - 如何通過安卓代碼將漢字轉換成拼音

如何通過安卓代碼將漢字轉換成拼音

用HanziToPinyin類實現android代碼並將漢字轉換成拼音

如果妳了解聯系人,妳會知道每個聯系人都有壹個sort_key字段。如果查詢中沒有設置sortOrder,默認情況下將使用sort_key字段作為排序依據。其實姓名檢索也是按照sort_key來做的(比如dial的模糊匹配:數字轉換成字母,再轉換成拼音,最後得到漢字)。Sort_key根據姓名生成:如果聯系人姓名包含字母,sort_key和姓名壹致;如果名字是漢字,生成的sort_key,拼音-漢字-拼音-漢字。。。其中拼音全部大寫,用空格隔開,如“張三”——sort _ key:“張三三”。

名稱改變時,在packages/providers/Contacts provider/src/com/Android/providers/Contacts/Contacts provider 2 . Java中生成Sort_key,具體調用如下:

【java】?查看plaincopyprint?

如果?(displayNameStyle?==?FullNameStyle。中國人?||

displayNameStyle?==?FullNameStyle。CJK)?{

sortKeyPrimary?=?sortKeyAlternative?=

ContactLocaleUtils.getIntance()。getSortKey(

displayNamePrimary,?displayname style);

}

調用packages \ providers \ contacts provider \ src \ com \ Android \ providers \ contacts \ contactlocaleutils.java中的ChineseContactUtils.getSortKey()方法,具體實現如下:

【java】?查看plaincopyprint?

contactlocaleutils . getint ance();

獲取實例,然後調用:

【java】?查看plaincopyprint?

1.public?字符串?getSortKey(String?顯示名稱,int?nameStyle)?{

回歸?getForSort(integer . value of(name style))。get sort key(display name);

}

2.?@覆蓋

公共?字符串?getSortKey(String?displayName)?{

ArrayList & ltToken & gt?代幣?=?HanziToPinyin.getInstance()。get(顯示名稱);

如果?(代幣?!=?null?& amp& amp?tokens.size()?& gt?0)?{

StringBuilder?sb?=?新的?StringBuilder();

為了什麽?(Token?token?:?代幣)?{

//?放?中國人?人物的?拼音,?然後呢?繼續嗎?用什麽?這

//?人品?本身。

如果?(Token。拼音?==?token.type)?{

如果?(sb.length()?& gt?0)?{

某人追加('?'));

}

sb追加(token . target);

某人追加('?'));

sb . append(token . source);

}?不然呢?{

如果?(sb.length()?& gt?0)?{

某人追加('?'));

}

sb . append(token . source);

}

}

回歸?sb . tostring();

}

回歸?super . get sort key(display name);

}

上面調用了FrameWorks/base/core/Java/com/Android/internal/util/hanzitopinyin . Java(下面附上源代碼)中的方法,得到了拼音。當然轉換需要本地支持,但是只要獲取這個文件就可以在這裏完成漢字到拼音的轉換。從路徑可以看出,HanziToPinyin.java是內部類,不能直接調用,但是妳可以把這個文件拿出來放到自己的項目中直接使用。調用也很簡單方便,上面基本都給了。看看HanziToPinyin的源代碼就更清楚了。下面是我寫的壹個調用:輸入漢字,返回拼音,字母原樣返回,全部轉換成小寫(默認得到的拼音全是大寫)。

【java】?查看plaincopyprint?

包裹?com . spare . pinyin;

進口?Java . util . ArrayList;

進口?com . spare . pinyin . hanzitopinin . token;

公共?班級?拼音?{

//漢字返回拼音,字母原樣返回,全部轉換成小寫(默認得到的拼音全部大寫)。

公共?靜電?字符串?getPinYin(字符串?輸入)?{

ArrayList & ltToken & gt?代幣?=?HanziToPinyin.getInstance()。get(輸入);

StringBuilder?sb?=?新的?StringBuilder();

如果?(代幣?!=?null?& amp& amp?tokens.size()?& gt?0)?{

為了什麽?(Token?token?:?代幣)?{

如果?(Token。拼音?==?token.type)?{

sb追加(token . target);

}?不然呢?{

sb . append(token . source);

}

}

}

回歸?某人很緊張。toLowerCase();

}

}