Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [Android] 解決HanziToPinyin類在HTC One等手機上轉換拼音失敗BUG

[Android] 解決HanziToPinyin類在HTC One等手機上轉換拼音失敗BUG

編輯:關於Android編程

原因:

讓我們看看源碼是怎麼寫的,我做了一下修復,稍後再介紹:

 

	public static HanziToPinyin getInstance() {
		synchronized (HanziToPinyin.class) {
			if (sInstance != null) {
				return sInstance;
			}
			// Check if zh_CN collation data is available
			final Locale locale[] = Collator.getAvailableLocales();
			Locale newChina = new Locale("zh", "HANS", "CN");//這部分是我做的修復,解決HTC兼容性問題
			for (int i = 0; i < locale.length; i++) {
				if (locale[i].equals(Locale.CHINA) || locale[i].equals(newChina)) {
					// Do self validation just once.
					if (DEBUG) {
						Log.d(TAG, "Self validation. Result: " + doSelfValidation());
					}
					sInstance = new HanziToPinyin(true);
					return sInstance;
				}
			}
			Log.w(TAG, "There is no Chinese collator, HanziToPinyin is disabled");
			sInstance = new HanziToPinyin(false);
			return sInstance;
		}
	}

上面的代碼可以看到做了一下檢測,看看是不是支持中文,而HTC手機裡返回的是zh-Hans-CN,所以自然會返回失敗,但是手機確實支持中文,經過調試以後發現返回的Locale數組裡有這個東西zh-Hans-CN,我們再看下zh-Hans-CN是什麼

 

 

zh-Hans 簡體中文
zh-Hans-CN 大陸地區使用的簡體中文
zh-Hans-HK 香港地區使用的簡體中文
zh-Hans-MO 澳門使用的簡體中文
zh-Hans-SG 新加坡使用的簡體中文
zh-Hans-TW 台灣使用的簡體中文
zh-Hant 繁體中文
zh-Hant-CN 大陸地區使用的繁體中文
zh-Hant-HK 香港地區使用的繁體中文
zh-Hant-MO 澳門使用的繁體中文
zh-Hant-SG 新加坡使用的繁體中文
zh-Hant-TW 台灣使用的繁體中文
可以看出,Hans是簡體中文,Hant是繁體中文。而這樣劃分更明確。貌似Win8也是這樣劃分的。

 

解決方案:

解決方案我已經在原因裡貼上去了,其實也就是加入對hans這樣的判斷,希望兼容5.0,感覺5.0應該也會這樣寫吧。
 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved