七、广播详解

Broadcast 广播使用详解 和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、Broadcast概述二、Broadcast的注册三、Broadcast的注册类型四、静态注册开机广播的实现五、动态监听亮灭屏幕广播实现六、广播的发送方法七、参考文献一、Broadcast概述在了解广播之前,我们先了解Broadcast继承关系 ,Broadcast的继承关系如下:java.lang.O... 阅读详情

1. 为什么需要广播接受者

生活中的广播:

电台:发送一定频道的广播消息,50mhz;

收音机:调整到一定频道,接收广播消息;

android应用程序里面的电台:系统内置的一个服务,会把事件(电量不足、电量充满、开机启动完成)作为一个广播消息发送其他的接收者;

android应用程序里面的收音机:自己写的一个广播接收者的一个类。

2. 广播接受者案例1-ip拨号器(重点)

  • 开发广播接收者的步骤:

    (1)买个收音机:

    public class OutCallBroadCastReceiver extends BroadcastReceiver {
        public void onReceive(Context context, Intent intent) {
    
        }
    

    }

    (2)插上电池:

    <receiver android:name="com.lile.ipcall.OutCallBroadCastReceiver" />
    

    (3)调整到一个频道:

    <intent-filter >
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
    </intent-filter>
    

3. 广播接受者案例2-短信监听器(重点)

pdus : protocol data unit s 协议数据单元

特点:

(1)即使广播接收者没有运行,当广播消息到达的时候,系统会自动启动广播接收者的进程,调用onReceive方法,接收消息。

(2)4.0版本之后为了安全考虑,要求应用程序必须要有界面,必须被用户运行过一次,广播接受者才会生效

(3)4.0版本的强行停止相当于冻结一个应用,一旦应用程序被用户强行停止了,广播接受者就不会生效了。直到用户手工打开这个应用程序为止。

(4)4.0版本之前没有这样的安全设计

步骤:

(1)买个收音机

(2)插上电池

(3)调整到一个频道

配置文件:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <receiver android:name="com.lile.smslistener.SMSBroadCastReceiver">
        <intent-filter >
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

代码:

package com.itheima.smslistener;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.gsm.SmsMessage;

public class SMSBroadCastReceiver  extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        Object[] objs = (Object[]) intent.getExtras().get("pdus");
        for(Object obj : objs){
            SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj);
            String content = sms.getMessageBody();

            String srcPhone = sms.getOriginatingAddress();

            System.out.println("content========"+content);
            System.out.println("srcPhone========"+srcPhone);
        }
    }
}

4. 广播接受者案例3_sd卡状态监听(重点)

测试的时使用2.3的模拟器,4.0之后版本没有卸载、挂载、移除SD卡的功能。

步骤:

(1)买个收音机

(2)插上电池

(3)调整到一个频道

配置文件:

<receiver android:name="com.lile.sdlistener.SDBroadCastReceiver">
    <intent-filter >
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
        <action android:name="android.intent.action.MEDIA_REMOVED" />
        <!-- 必须加上data这个属性 -->
        <data android:scheme="file"/>
    </intent-filter>
</receiver>

代码:

package com.itheima.sdlistener;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class SDBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if("android.intent.action.MEDIA_MOUNTED".equals(action)){
            Toast.makeText(context, "已经插上了SD卡.................", 0).show();
        }
        if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){
            Toast.makeText(context, "拔掉了SD卡.................", 0).show();
        }

        if("android.intent.action.MEDIA_REMOVED".equals(action)){
            Toast.makeText(context, " 移除了SD卡.................", 0).show();
        }
    }
}

5. 广播接受者案例_开机启动(重点)

步骤:

(1)买个收音机

(2)插上电池

(3)调整到一个频道

要做的事情:让软件开启后关闭不了,禁用返回键和最小化键(小房子键);

配置文件:

<receiver android:name="com.lile.lesuo.BootCompletedBroadCastReceiver">
    <intent-filter >
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

代码:

package com.itheima.lesuo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootCompletedBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        // 开启mainactivity
        Intent i = new Intent(context, MainActivity.class);
        // 告诉activity自己来维护任务栈,如果任务栈没有当前任务,就会重新创建一个任务放入任务栈
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        context.startActivity(i);
        System.out.println("***********88888888888启动完成*********************************");
    }
}

6. 广播接受者案例_卸载安装(重点)

配置文件:

<receiver android:name="com.lile.azxz.AZXZBroadCastReceiver">
    <intent-filter >
        <action android:name="android.intent.action.PACKAGE_INSTALL" />
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <!--   必须添加这个属性 -->
        <data android:scheme="package"/>
    </intent-filter>
</receiver>

代码:

package com.itheima.azxz;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AZXZBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();

        if("android.intent.action.PACKAGE_INSTALL".equals(action)){
            Toast.makeText(context, "安装了一个新软件...................", 0).show();
        }

        if("android.intent.action.PACKAGE_REMOVED".equals(action)){
            Toast.makeText(context, "卸载了一个软件...................", 0).show();
        }

        if("android.intent.action.PACKAGE_REPLACED".equals(action)){
            Toast.makeText(context, "重新安装了一个软件...................", 0).show();
        }
    }
}

7. 发送自定义广播

创建广播电台的步骤:

// 创建一个传递消息的意图对象
Intent intent = new Intent();

// 设置要广播的事件类型
intent.setAction("com.lile.broadcast.HMSSDT");

// 设置广播的消息数据
intent.putExtra("news", "阿乐广播,晚上12点半准时开播.........");

// 发送一个广播消息
sendBroadcast(intent);

8. 有序广播和无序广播(重点)

  • 无序广播:

    广播接收者只要注册接收相应的事件类型,就能接收到的广播;

// 发送一个广播消息(无序广播)
sendBroadcast(intent);
  • 有序广播:

    当广播把消息发送出去后,消息会根据广播接收者的优先级从高到低一级一级地下发消息。
    可以拦截消息,也可以修改消息。

发送有序广播:

Intent intent = new Intent();

intent.setAction("com.lile.orderedbroadcast.ZYFFNTBT");
// 发送一个有序的广播
// intent 意图
// permission 指定接收者需要添加了权限
// resultReceiver 指定哪个广播接收者最后接到消息
// scheduler 消息处理器
// initialCode 给消息指定初始代码
// initialData 指定消息的数据
// initialExtras 指定额外的参数
sendOrderedBroadcast(intent, null, null, null, 1, "国务院开始发放2017年农田补贴:900元", null);

广播接收者的配置文件:

<receiver android:name="com.lile.zf.ProvinceBroadCastReceiver">
    <intent-filter android:priority="1000" >
        <action  android:name="com.lile.orderedbroadcast.ZYFFNTBT"/>
    </intent-filter>
</receiver>

广播接收者的代码:

String info = getResultData();
System.out.println("我是省级人民政府,已经接收到了中央发的消息:"+info);

// Toast.makeText(context, "我是省级人民政府,已经接收到了中央发的消息:"+info, 0).show();
setResultData("国务院开始发放2014年农田补贴:400元");

9. 补间动画

/**
 * 透明度变化的动画
 * @param view
 */
public void alpha(View view) {
    AlphaAnimation aa = new AlphaAnimation(0, 1.0f);
    // 动画播放的时间
    aa.setDuration(2000);
    // 重复次数
    aa.setRepeatCount(2);
    //设置重复的模式
    aa.setRepeatMode(Animation.REVERSE);
    iv.startAnimation(aa);
}

/**
 * 旋转变化的动画
 * @param view
 */
public void rotate(View view) {
    RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    // 动画播放的时间
    ra.setDuration(2000);
    // 重复次数
    ra.setRepeatCount(2);
    ra.setRepeatMode(Animation.REVERSE);
    iv.startAnimation(ra);
}

/**
 * 位移变化的动画
 * @param view
 */
public void trans(View view) {
    TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.5f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, -0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
    ta.setDuration(2000);
    // 重复次数
    ta.setRepeatCount(2);
    ta.setRepeatMode(Animation.REVERSE);
    iv.startAnimation(ta);
}

/**
 * 缩放变化的动画
 * @param view
 */
public void scale(View view) {
    ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
    sa.setDuration(2000);
    // 重复次数
    sa.setRepeatCount(2);
    sa.setRepeatMode(Animation.REVERSE);
    sa.setFillAfter(true); // 设置填充after的效果
    iv.startAnimation(sa);
}

/**
 * 动画集合
 * @param view
 */
public void set(View view){
    // 动画插入器
    AnimationSet set = new AnimationSet(false);
    RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    // 动画播放的时间
    ra.setDuration(2000);
    // 重复次数
    ra.setRepeatCount(2);
    ra.setRepeatMode(Animation.REVERSE);
    TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.3f, Animation.RELATIVE_TO_PARENT, 0.3f, Animation.RELATIVE_TO_PARENT, -0.3f, Animation.RELATIVE_TO_PARENT, 0.3f);
    ta.setDuration(2000);
    // 重复次数
    ta.setRepeatCount(2);
    ta.setRepeatMode(Animation.REVERSE);
    ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f);
    sa.setDuration(2000);
    // 重复次数
    sa.setRepeatCount(2);
    sa.setRepeatMode(Animation.REVERSE);
    set.addAnimation(ra);
    set.addAnimation(sa);
    set.addAnimation(ta);
    iv.startAnimation(set);
}
易灵思FPGA实战:T35F324的PLL硬核配置全流程(附避坑指南) 本文详细解析了易灵思T35F324 FPGA中硬核PLL的配置全流程与核心避坑点。内容涵盖从架构理解、Interface Designer参数设置、VCO范围校验,到时钟网络冲突分析与动态重配置等实战环节,重点解决了引脚分配、资源约束和常见报错问题,为工程师提供了一套清晰可靠的配置指南。 阅读详情

相关推荐

TouchGFX在STM32上的移植全过程:超详细版指南

深入讲解将TouchGFX集成到STM32开发环境的每一步,涵盖配置、驱动适配与UI调试。无论是初学者还是进阶开发者,都能快速掌握TouchGFX在嵌入式平台的应用技巧。

weixin_42443533的博客 600

广播详解

广播简介 上小学时,个高的学生负责敲钟,用于上下课。钟声响起,相当于向每个人发送了一个广播。广播有两种:标准/普通广播,有序广播。标准广播(Normal broadcasts):在钟声响起之时,也就是向所有人发送了一条广播,所有人都能同一时刻收到,不考虑声音传播等问题,所以没有先后顺序可言,这类广播效率是最高的,也无法被截取。比如听到上课铃声的同学与老师都去上课。有序广播(Ordered bro

yancyang的博客 1万+

YT8531 PHY芯片硬件设计与MDIO/RGMII实战指南

以太网PHY芯片是FPGA系统实现网络通信的物理层核心,其关键在于标准接口(如MDIO管理总线和RGMII数据接口)的正确实现与协同。MDIO作为IEEE 802.3定义的低速配置通道,负责寄存器级控制与状态监控;RGMII则通过双沿采样精简引脚,在千兆速率下兼顾性能与PCB布线可行性。技术价值体现在电压兼容性(支持1.8V/2.5V/3.3V)、可编程时序调节(RX_DELAY/TX_DELAY)及多级环回测试能力,显著提升国产FPGA平台(如Xilinx Zynq)的工程鲁棒性。典型应用场景涵盖嵌入式网

weixin_42453228的博客 1337

广播的详解

标准广播和有序广播(第一行代码所抄袭,只为精简方便自己) 标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出之后,所有的 广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可 言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。 有序广播(Ordered broadcasts)则是一种同步执行的广播,在广播发出之后,同一时刻

jinrumorijuesha的博客 341

2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴

中科芯 (央企福利待遇好,但是百分百不解决户口,适合当地人进去躺平。) 现场面试,三个面试官,时间大约40min 首先介绍一下自己,介绍一下项目。所做项目用到了FIFO吗,深度是多少,位宽是多少,仲裁算法是什么? 验证环境中的reference model是自己写的还是本身就有的,仲裁怎么在参考模型中实现,参考模型怎么获取寄存器的值? 怎么配置RTL寄存器,通过平台的寄存器模型进行寄存器配置,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现? 寄存器如何实现前门访问和后门访问,后门访问时

weixin_48014653的博客 6319

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

计算机网络中的广播是指什么,计算机网络中的广播和多播指的是什么?

计算机网络中的广播和多播指的是什么?发布时间:2020-06-10 17:22:25来源:计算机网络中的广播和多播指的是什么?计算机网络中的广播是一种团体通信,其中发送方同时向接收方发送数据。这是一种全部通信模型,其中每个发送设备将数据传输到网络域中的所有其他设备。广播的运作方式可能是程序中的高级操作,例如在消息传递接口中进行广播。也可能是低级网络操作,例如在以太网上广播。广播如下图所示:广播优势...

weixin_42509931的博客 5249

经典脉冲激光测距原理&雷达方程

脉冲激光测距机的工作过程如下:首先用瞄准光学系统瞄准目标,然后接通激光电源,储能电容器充电,产生触发闪光灯的触发脉冲,闪光灯点亮,激光器受激辐射,从输出反射镜发射出一个前沿陡峭、峰值功率高的激光脉冲,通过发射光学系统压缩光束发射角后射向目标。通过计算激光发射功率经介质传输的衰减,目标表面截获和反射的光功率,到达接收视场的光功率,以及接收光学系统接收到的光功率,就可以得到到达光电探测器的光功率,即接收功率。⑤光東路程上的折射率变化;),测量光脉冲到达目标并由目标返回到接收机的时间,由此计算出目标的距离。

weixin_46153372的博客 2526

详解广播机制(上)

总结自郭神的《第一行代码》 Android中的广播类型 Android中的广播主要可以分为两种类型,标准广播和有序广播 标准广播(Normal broadcasts) 是一种完全异步执行的广播,在广播发出之后,所有的 广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可 言。这种广播的效率会比较高,但同时也意味着它是无法被截断的 有序广播...

Errol's Blog 1259

Hyper-V集群部署指南

工欲善其事,必先利其器。搭建一个方便管理的服务集群,是分布式学习很重要的环境。 目前流行的虚拟机产品主要为Vmware 和 win10自带的Hyper-V(win10家庭版无此功能),网上关于Vmware的教程更多,显然它更容易上手,但Hyper-V也算是一个很不错的产品,这里记录一下我的学习过程: 目录 Hyper-V的安装 服务集群的搭建 虚拟机的网络通信 NAT网络的搭建 端口映射 Linux的静态IP 虚拟机的自启动问题 Hyper-V的安装 也不能算说是安装,如果你的win1

Swing 6921

OpenClaw 多代理协同工作模式配置指南

OpenClaw 采用。

形上得其象,形下合于数;阴阳自济,玄理自明。 1万+

《第一行代码》第三版之详解广播机制(七)

本章我们介绍了广播分类(标准和有序)、接收系统广播(动态和静态注册)、标准和有序广播的用法和强制下线功能。此外,作者介绍了高阶函数、内联函数和noinline的用法。6.1.广播机制简介 Android允许程序自由发送和接收广播,发送基于Intent,接收则需要引入BroadCastReceiver。广播有两种类型:标准广播和有序广播。前者完全异步执行,广播发出之后,所有BroadCastReceiver均同时接收到,效率高,无法被截断;后者是同步执行,广播发出之后,同一时刻只会有...

云瀚的自习室 1882

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

生成扩散模型DDPM如下图所示分为前向、逆向两个过程,它首先通过不断往原始清晰数据中添加噪声使其变成标准高斯噪声(前向过程),而后期望从标准高斯噪声中还原原始数据(逆向过程)。若能实现,那便可从已知的标准高斯分布中采样一个噪声数据,而后利用DDPM模型生成符合原始数据分布的新数据。 Diffusion模型包含两个过程:数学符号:y∝xy\propto xy∝x:y正比于x,即y随着x增大而线性增大。 条件概率:贝叶斯公式:p(A∣B)=p(B∣A)×p(A)p(B)p(A|B)=\frac{p(B|A)\

小哲的博客 1512

《TCP/IP详解》学习笔记(七):广播和多播、IGMP协议

单播,多播,广播的介绍 1单播(unicast) 单播是说,对特定的主机进行数据传送。例如给某一个主机发送 IP 数据包。这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来说,就是网卡的 MAC 地址(不是 FF-FF-FF-FF-FF-FF 这样的地址)。现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网络接口则可以过滤掉和自己 MAC 地址不一致的数据。 ...

10点43的博客 763

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android广播详解

在Android系统粘性广播一般用来确保重要的状态改变后的信息被持久保存,并且能随时广播给新的广播接收器,比如电源的改变,因为耗电需要一个过程,前一个过程必须提前得到,否则可能遇到下次刚好接收到的广播后系统自动关机了,随之而来的是kill行为,所以对某些未处理完的任务来说,后果很严重。如果想要接受这些广播,就需要使用广播接收器。顾名思义,一种有序的,同步的广播,它是按照次序来传递,先被优先级高的接收器接收到,响应完成后再传递给接收器B然后C,同时可以进行截断,比如在A处截断,后续B和C就无法接收到广播。

weixin_40323532的博客 4579

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

广播域与冲突域详解

冲突域就是所有节点竞争同一带宽,从一个节点上发出的报文(无论是单播、组播、广播),除这个发送节点和接收节点会接收到相应的报文之外,和它同一个介质(也就是同一台物理设备)上其余所有的节点都会收到不应该出现在这些节点上的报文。一般普遍认为一个 HUB(集线器)就是一个冲突域。

业余幻想家的博客 2万+

AndroidStudio 广播详解

先做记录:未完!待更新! //备忘:下载安卓源代码 广播机制,先说一下广播分为:标准广播,和有序广播。 标准广播是一种完全异步的广播,在广播发出后,所有的广播接收器几乎会在同一时间,同时接收到广播,效率高但是无法截断。 有序广播是同步执行的操作。在每一个时刻只有一个广播接收器可以接受到这条广播,所有的广播接收器按照设置好的优先级进行接收,高优先级的广播接收器,可以将广播截断。 Andro...

weixin_42415553的博客 3931

Android广播机制详解

1 广播类型 从广播的注册方式来分,分为以下2种: (1)静态广播:通过的形式在AndroidManifest.xml中注册的广播; (2)动态广播:通过context. registerReceiver在程序中显示注册的广播; 上面静态广播和动态广播比较明显的2个区别:    1)静态广播在进程没有运行的时候,也可以收到,这时候会先启动进程,然后处理广播onReceive函数(静态广播

houliang120的专栏 1万+

Android wifi主要广播详解

wifi应用开发肯定会用到wifi开关和wifi连接状态监听的广播,有些广播比较容易混淆,本文进行详细总结。比如wifi网络变化广播:CONNECTIVITY_ACTION、WIFI_STATE_CHANGED_ACTION、NETWORK_STATE_CHANGED_ACTION 这三个比较容易搞混。SUPPLICANT_STATE_CHANGED_ACTION 和 SUPPLICANT_CONNECTION_CHANGE_ACTION 比较容易搞混。

wenzhi的博客 3530

Android-广播详解

分类:标准广播是一个完全异步执行的广播,几乎同时的接收器会收到这个广播,效率比较高,无法截断;有序广播是同步执行,同一时刻只有一个接受器才能接受到消息,优先级高的接收器先接受到,同时也可以进行截断。

2401_87366139的博客 1488

有序广播详解

有序广播详解前言概述有序广播注意项动态注册 接收有序广播静态注册 接收有序广播(Android8.0后不支持)发送有序广播特殊的广播接收者 前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制。 概述 类似于中央下发的红头文件,一级一级向下发送,中间如果接收失败,发送就会终止。 发送过程中,可以终止。终止后,后续的接收者则无法接收(有一种特殊情况)。 有序广播注意项...

凉拌西红柿 1402

广播机制详解

一、广播类型 1.标准广播: 异步执行的广播。广播发出后,所有广播接收器会在同一时刻接收到这条广播消息,没有先后顺序,广播也无法被截断。 2.有序广播 同步执行的广播。广播发出后,同一时刻只有一个广播接收器能接收到这条广播。有先后顺序,优先级高的广播接收器先接收,前面的接收器截断正传递的广播,则后面的接收器无法再收到广播消息。 二、接收系统广播 Android 广播接收器对想要监听的广播进行注册,则有相应的广播发出,广播接收器就能接收到该广播。 1.动态注册 (1)定义一个接收类继承自BroadcastRe

momoyxy的博客 1408

Android 广播机制 详解

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。欢迎大家一起交流讨论啊~网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!论啊~

2401_84520332的博客 1039

python的广播机制详解

更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net茂名一技http://www.enechn.comppt制作教程步骤 http://www.tpyjn.cn 兴化论坛http://www.yimoge.cn 电白论坛 http://www.fcdzs.com 目录为什么会有广播机制在矩阵或向量相关运算中的广播机制1、一般的运算2、一个矩阵一个向量的情况3、两个向量4、矩阵乘法的广播机制总结为什么会有广播机制

菜鸟教程 6181

BLE广播包的几种类型详解

蓝牙广播类型 可连接的非定向广播(ADV_IND) 这是一种用途最广,最常见的广播类型,包括广播数据和扫描响应数据,它表示当前设备可以接受任何设备的连接请求。进行通用广播的设备能够被扫描设备扫描到,或者在接收到连接请求时作为从设备进入一个连接。通用广播可以在没有连接的情况下发出,换句话说,没有主从设备之分。 可连接的定向广播(ADV_DIRECT_IND) 定向广播类型是为了尽可能快的连接,俗称...

qq_24179601的博客 1万+
上一篇: 六、Intent和Activity详解
下一篇: 八、服务详解
CoderLiLe
博客等级 码龄11年 2粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值