2016-04-12 48 views
0

我正在使用小型library對位置進行反向地理編碼。 我的問題是我的用戶界面中的位置名稱(我使用反向地理編碼設置爲位置名稱的TextView,例如「英國阿伯丁」)與手機的默認語言(如保加利亞語)使用相同的語言手機語言是保加利亞語),我的應用程序中的其他所有內容都是英語。所以我在尋找一種方式如何設置Locale.ENGLISH(或類似的東西)下面的方法,我使用了獲取地點名稱:ReverseGeocoding僅限EN語言環境中的地址名稱

Observable<List<Address>> reverseGeocodeObservable; 
String locationName = ""; 
.... 

public void getLocationName(){ 
    reverseGeocodeObservable 
      .subscribeOn(Schedulers.io())// use I/O thread to query for addresses 
      .observeOn(AndroidSchedulers.mainThread())// return result in main android thread to manipulate UI 
      .subscribe(new Subscriber<List<Address>>() { 
       @Override 
       public void onCompleted() { 

       } 

       @Override 
       public void onError(Throwable e) { 
        Log.d(TAG,"OnError Geocode"); 
        locationName = sharedPref.getString(getString(R.string.location_name_on_error),"unknown"); 
       } 

       @Override 
       public void onNext(List<Address> addresses) { 
        if(addresses.size() > 0) { 
         Address address = addresses.get(0); 
         Log.v(MainActivity.class.getSimpleName(),"Locality: "+address.getLocality() + ", CountryName " + address.getCountryName()); 
         //check if cityName is null... 
         String cityName = "unknown"; 
         if(address.getLocality() != null) { 
          cityName = address.getLocality(); 
          //if it is, try to get the subAdmin Area instead... 
         }else if (address.getSubAdminArea() != null){ 
          cityName = address.getSubAdminArea(); 
         } 
         String countryName = address.getCountryName(); 
         editor.putString(getString(R.string.location_name_on_error),cityName + ", " + countryName); 
         editor.apply(); 
         locationName = getString(R.string.location_name, cityName, countryName); 
        } 
       } 
      }); 
} 

任何意見或想法將不勝感激!

回答

1

來自庫中的ReverseGeocodeObservable使用Geocoder來獲取地址,但它使用沒有Locale的Geocoder。嘗試編譯你自己的這個庫的版本並添加一個Locale屬性,參見public Geocoder (Context context, Locale locale)

+0

這是一個好的觀點。然而,我正在使用Gradle導入這個庫,並且我不知道如何在其他庫中包含庫(我曾嘗試過,但沒有運氣):/ –

+1

最簡單的方法是下載Java代碼並將其放入項目中 –

+1

但是,除非你必須刪除你的gradle構建腳本中的依賴項;-) –

相關問題