Pinyin4j:最流行的汉语转拼音库
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音输出格式可以定制,在项目中经常会遇到需求用户输入汉字后转换为拼音的场景。
官网:http://pinyin4j.sourceforge.net/
下载:https://sourceforge.net/projects/pinyin4j/files/
1、导入Pinyin4j
两种方式导入Pinyin4j库到项目中。
1.1、build.gradle中添加依赖
在项目的build.gradle添加依赖最简单的方式引入Pinyin4j
dependencies {
implementation 'com.github.open-android:pinyin4j:2.5.0'
... ...
}别忘了整个project的builder.gradle需要添加maven jitpack.io 仓库
allprojects {
repositories {
google()
jcenter()
//添加jitpack库
maven { url 'https://jitpack.io' }
}
}1.2、导入jar包
另一种导入方式,将下载Pinyin4j的jar包拷贝到Android工程libs/目录下。不推荐这种方式,不如依赖远程仓库便捷一些。

1.3、注意
添加或拷贝完成之后最好同步刷新一下Sync Project with Gradle Files。注意:两者选一即可,不要重复添加依赖,会导致重复冲突。出现这种情况,移除一种,rebuild一下即可解决。
2、使用Pinyin4j
可以直接在项目中使用了,核心的工具类是PinyinHelper,里面提供了一些static方法直接调用。
String[] pinyinStringArray = PinyinHelper.toTongyongPinyinStringArray('屉');上面返回String[]数组的结果是[ti4],表示"屉"的拼音是ti,第4声
上面的格式似乎不太友好,用HanyuPinyinOutputFormat格式化拼音
//指定Pinyin格式转换
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();①设置拼音大小写
// UPPERCASE:大写 (ZHONG)
// LOWERCASE:小写 (zhong)
//拼音大小写
hanyuPinyinOutputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);②设置音标是数字还是直接标注在拼音字母上
// WITHOUT_TONE:无音标 (zhong)
// WITH_TONE_NUMBER:1-4数字表示音标 (zhong4)
// WITH_TONE_MARK:直接用音标符(必须WITH_U_UNICODE否则异常) (zhòng)
//拼音音标
hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);③设置字符样式
// WITH_V:用v表示ü (nv)
// WITH_U_AND_COLON:用"u:"表示ü (nu:)
// WITH_U_UNICODE:直接用ü (nü
//拼音字符样式
hanyuPinyinOutputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);最后使用方法toHanyuPinyinStringArray转拼音设定指定拼音格式:
String[] pinyinStringArray = PinyinHelper.toHanyuPinyinStringArray('屉', hanyuPinyinOutputFormat);上面的方法会可能会抛出BadHanyuPinyinOutputFormatCombination受查异常,所以需要try-catch
输出结果:tì

