在Android Studio中使用Geocoder获取位置类别的解决方法如下:
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private Geocoder geocoder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化Geocoder
geocoder = new Geocoder(this, Locale.getDefault());
// 获取位置信息
getLocationInfo(37.7749, -122.4194);
}
private void getLocationInfo(double latitude, double longitude) {
try {
List addresses = geocoder.getFromLocation(latitude, longitude, 1);
if (addresses != null && addresses.size() > 0) {
Address address = addresses.get(0);
// 获取位置类别
Log.d(TAG, "Location Category: " + address.getFeatureName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例代码中,我们首先在onCreate
方法中初始化了Geocoder,并调用getLocationInfo
方法来获取位置信息。然后,在getLocationInfo
方法中,我们使用geocoder.getFromLocation
方法来获取给定经纬度的地址信息,然后从中获取位置类别。最后,我们使用Log.d
方法将位置类别打印出来。
请注意,getFromLocation
方法是一个耗时操作,所以最好在子线程中进行。此外,Geocoder可能会失败或返回空结果,所以在使用时要进行错误处理。