2016-04-12 20 views
0

小さいlibraryを使用して、場所の逆ジオコーディングを行っています。 私の問題は、私のUIの場所名です(逆のジオコーディングを「Aberdeen、United Kingdom」などの地名に使用して設定した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

ライブラリのReverseGeocodeObservableGeocoderを使用してアドレスを取得しますが、ロケールなしのジオコーダーが使用されます。このライブラリの独自のバージョンをコンパイルし、Localeプロパティを追加してみてください。public Geocoder (Context context, Locale locale)

+0

これは良い点です。しかし、私はGradleを使ってこのライブラリをインポートしていますが、それ以外の方法でライブラリをインクルードする方法はわかりません:/ –

+1

最も簡単な方法は、Javaコードをダウンロードしてプロジェクトに入れます。 –

+1

しかし、あなたのgradleビルドスクリプトの依存関係を削除する必要があります;-) –

関連する問題