根据地理位置多语言切换(2)-地理位置监听

在手机应用的实现中经常会遇到需要语言切换用于满足用户环境的多样性。可以根据所处地理位置信息进行经纬度及国家/城市/地区的获取,可以根据此内容进行多语言情况的推荐及切换。
完成上述的想法需要进行几个功能的开发:

  • 需要通过手机进行地理位置信息获取
  • 需要根据地理位置信息进行多语言内容的推荐(涉及地理位置监听)
  • 需要将应用内的多语言进行切换

地理位置信息的监听

由于地理位置信息获取时必须填入activity,对于需要在多个acticity中使用地理位置信息此时就不是十分的方便。将地理位置信息保存为全局变量,便于各个activity或者fragment进行地理位置信息的调用。

  • 设置live data

设置数据类型

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...
}
  • 进行livedata的数值传入

在地理位置信息获取位置进行地理位置信息数值的传入

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
  • 进行livedata的数值监听

在地理位置更新时进行对应逻辑或数据的获取
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值