安卓收不到glonass_android接收不到广播的可能原因

1. android 4.0为了防止一些malware(恶意软件)不经用户启动就在后台运行,默认安装的程序在用户启动前是完全被系统忽略的,即使程序注册了广播,系统也不会给该程序传递广播。只有程序被用户运行过之后,消息广播才会生效。而且,即使程序已经运行过了,如果被用户Force Stop(强制停止),又会回到被系统忽略的状态。

这种情况下第三方应用只有在运行状态下(包括Activity在后台)才能接收广播,系统应用在任何情况下都可以接收。

2. 广播指定了dataType,而我们注册的intent-filter中没有指定。

通过intent-filter隐性启动一个Activity,Service,隐性组件的intent-filter必须如下写:

"我是组件XXXX,我想要接收这样的隐式事件:它的ACTION必须是 XXX,它的 category 必须是 YYYY ,它包含的data必须是ZZZZ "

如果组件不声明IntentFilter,那么所有的隐式事件都不会发送给该组件。(注意,这并不影响向该组件发送显式事件。)

这也就是为什么最简单的隐性启动Activity的intent-filter如下:

因为默认的intent除了action之外还有一个默认的category值。

相机拍摄一张照片时会发送如下广播:

public static void broadcastNewPicture(Context context, Uri uri){

context.sendBroadcast(new Intent(ACTION_NEW_PICTURE, uri));

context.sendBroadcast(new Intent("com.android.camera.NEW_PICTURE", uri));

}

要想接收广播必须如下写:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GLONASS是俄罗斯的一个全球导航卫星系统,用于提供全球定位、导航和时间服务。广播星历计算是指将导航卫星的轨道参数和钟差等信息编码成广播星历数据,并广播给用户接收设备,以便用户设备能够计算出准确的定位信息。 GLONASS系统中的导航卫星持续地向地面广播星历数据,而用户设备在接收卫星信号时会同时接收到星历数据。星历数据包含了卫星的位置、速度、时钟差等关键参数,用户设备利用这些信息能够计算出卫星与设备之间的距离,从而实现定位。 广播星历计算的过程分为两步:星历数据的接收和星历计算。 首先,用户设备通过接收卫星信号获取到卫星广播的星历数据。接收到星历数据后,用户设备会将数据进行解码和解析,提取出其中的轨道参数和时钟差。 接下来,用户设备使用接收到的星历数据,结合设备自身的观测数据,通过计算算法来计算出自己的位置。计算过程中会使用到卫星的位置和时钟信息,以及卫星与设备之间的距离等参数,从而得到较为准确的定位结果。 需要注意的是,星历数据会不断地更新,因为卫星的轨道和钟差都可能会有变化。为了获取最新的星历数据,用户设备需要定期更新星历信息。 总结起来,GLONASS广播星历计算是通过接收卫星广播的星历数据,解析并计算出设备的位置信息的过程。它是GLONASS系统能够为用户提供准确定位的重要基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值