在手机应用的实现中经常会遇到需要语言切换用于满足用户环境的多样性。可以根据所处地理位置信息进行经纬度及国家/城市/地区的获取,可以根据此内容进行多语言情况的推荐及切换。
完成上述的想法需要进行几个功能的开发:
- 需要通过手机进行地理位置信息获取
- 需要根据地理位置信息进行多语言内容的推荐(涉及地理位置监听)
- 需要将应用内的多语言进行切换
地理位置信息的监听
由于地理位置信息获取时必须填入activity,对于需要在多个acticity中使用地理位置信息此时就不是十分的方便。将地理位置信息保存为全局变量,便于各个activity或者fragment进行地理位置信息的调用。
设置数据类型
class LocationInfo {
var longitude : Float = 0.0f
var latitude : Float = 0.0f
lateinit var location_info : String
}
设置livedata的viewModel
public class AddressViewModel extends ViewModel {
// Create a LiveData with a String
private SingleLiveEvent<LocationInfo> currentName;
public SingleLiveEvent<LocationInfo> getCurrentName() {
if (currentName == null) {
currentName = new SingleLiveEvent<>();
}
return currentName;
}
// Rest of the ViewModel...
}
在地理位置信息获取位置进行地理位置信息数值的传入
val loginViewModel: AddressViewModel =
ViewModelProvider(mainActivity).get(
AddressViewModel::class.java
)
mlocation?.latitude = latitude.toFloat()
mlocation?.longitude = longitude.toFloat()
mlocation?.location_info = (tvAddress).toString()
loginViewModel.currentName.value = mlocation
在地理位置更新时进行对应逻辑或数据的获取