如何从位置更改城市名称语言?

时间:2018-03-13 08:01:11

标签: java android location

在我的应用程序中,我希望从纬度经度获取用户城市名称。
为此,我写下面的代码,但显示英语语言的城市名称,例如“德黑兰”

但我希望显示波斯语的这个城市名称,例如“تهران”

我怎样才能改变语言?

我的代码:

public class MainActivity extends Activity {

    private SimpleLocation mLocation;
    private Geocoder geocoder;
    private List<Address> addresses;
    private String cityName;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // construct a new instance
        mLocation = new SimpleLocation(this);

        // reduce the precision to 5,000m for privacy reasons
        mLocation.setBlurRadius(5000);

        geocoder = new Geocoder(this, Locale.getDefault());

        // if we can't access the location yet
        if (!mLocation.hasLocationEnabled()) {
            // ask the user to enable location access
            SimpleLocation.openSettings(this);
        }

        final double latitude = mLocation.getLatitude();
        final double longitude = mLocation.getLongitude();

        try {
            addresses = geocoder.getFromLocation(latitude, longitude, 1);
            cityName = addresses.get(0).getAddressLine(0);
        } catch (IOException e) {
            e.printStackTrace();
        }

        findViewById(R.id.textView).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Toast.makeText(MainActivity.this, "" + cityName, Toast.LENGTH_SHORT).show();
            }

        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        // make the device update its location
        mLocation.beginUpdates();
    }

    @Override
    protected void onPause() {
        // stop location updates (saves battery)
        mLocation.endUpdates();

        super.onPause();
    }
}

4 个答案:

答案 0 :(得分:2)

只需在下面的构造函数中传递语言环境:

Geocoder geo = new Geocoder(MainActivity.this, new Locale("Your desired locale code"));

答案 1 :(得分:1)

使用区域设置更改TextView

Locale loc = new Locale("ar"); // change locale as per your requirement
textView.setTextLocale(loc);
textView.setText("Farsi");

答案 2 :(得分:0)

使用string.xml更改语言的用户本地化。 pl跟随https://developer.android.com/guide/topics/resources/localization.html以了解有关Android应用程序本地化的更多信息。

答案 3 :(得分:0)

不是传递Locale.getDefault(),而是传递new Locale("fa_IR")

并使用addresses.get(0).getLocality()获取城市名称。

查看支持的语言环境列表。

https://stackoverflow.com/a/7989085/5722608