Android手机联系人快速索引(手机通讯录)

2019-12-10 19:43:55于海丽

联系人类:

/**
 * 联系人类
 * @author lxd
 *
 */
public class Friend implements Comparable<Friend> {
 private String name;
 private String pinyin;
 public Friend(String name) {
  super();
  this.name = name;
  pinyin = PinYinUtils.getPinYin(name);
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getPinyin() {
  return pinyin;
 }
 public void setPinyin(String pinyin) {
  this.pinyin = pinyin;
 }
 @Override
 public String toString() {
  return "Friend [name=" + name + ", pinyin=" + pinyin + "]";
 }
 @Override
 public int compareTo(Friend another) {
  return this.pinyin.compareTo(another.getPinyin());
 }
}

工具类:用于将汉字转换为拼音

/**
 * 将汉字转换为拼音
 * @author lxd
 *
 */
public class PinYinUtils {
 /**
  * 得到指定汉字的拼音
  * 注意:不应该被频繁调用,它消耗一定内存
  * @param hanzi
  * @return
  */
 public static String getPinYin(String hanzi){
  String pinyin = "";
  HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();//控制转换是否大小写,是否带音标
  format.setCaseType(HanyuPinyinCaseType.UPPERCASE);//大写
  format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  //由于不能直接对多个汉字转换,只能对单个汉字转换
  char[] arr = hanzi.toCharArray();
  for (int i = 0; i < arr.length; i++) {
   if(Character.isWhitespace(arr[i]))continue;//如果是空格,则不处理,进行下次遍历
   //汉字是2个字节存储,肯定大于127,所以大于127就可以当为汉字转换
   if(arr[i]>127){
    try {
     //由于多音字的存在,单 dan shan
     String[] pinyinArr = PinyinHelper.toHanyuPinyinStringArray(arr[i], format);
     if(pinyinArr!=null){
      pinyin += pinyinArr[0];
     }else {
      pinyin += arr[i];
     }
    } catch (BadHanyuPinyinOutputFormatCombination e) {
     e.printStackTrace();
     //不是正确的汉字
     pinyin += arr[i];
    }
   }else {
    //不是汉字,
    pinyin += arr[i];
   }
  }
  return pinyin;
 }
}

以上代码是关于Android手机联系人快速索引(手机通讯录)的全部叙述,希望大家喜欢。



注:相关教程知识阅读请移步到Android开发频道。