- 論壇徽章:
- 0
|
另外在上層, 不是framework, 而是packages目錄里面有寫(xiě)媒體庫(kù)掃描的服務(wù)(MediaProvider), 那里面在掃描之前有l(wèi)ocale設(shè)定. 代碼文件是MediaScannerService.java.
LZ你貼的代碼是MediaScannerService通過(guò)JNI調(diào)過(guò)來(lái)的中間層. 中間層我記得里面還有獲取locale的一個(gè)操作(即, 你的mLocalEncoding是由MediaScannerService設(shè)定, 你這里的mLocalEncoding應(yīng)該是根據(jù)MediaScannerService的設(shè)定而來(lái)). 所以可以試試是否可以通過(guò)改上層locale來(lái)搞定. 不然就是LZ你貼的代碼需要改了.
MediaScannerService.java中設(shè)定locale的代碼如下(還是2.2 froyo版本的. 這段代碼我直接搜出來(lái)的, 手上沒(méi)環(huán)境和源碼, 因?yàn)槲液芫脹](méi)碰Android了):- private MediaScanner createMediaScanner() {
- MediaScanner scanner = new MediaScanner(this);
- Locale locale = getResources().getConfiguration().locale;
- if (locale != null) {
- String language = locale.getLanguage();
- String country = locale.getCountry();
- String localeString = null;
- if (language != null) {
- if (country != null) {
- scanner.setLocale(language + "_" + country);
- } else {
- scanner.setLocale(language);
- }
- }
- }
- return scanner;
- }
復(fù)制代碼 |
|