从零开始学androidBroadCast广播.四十五.
与Service相似,在android中还有一种运行在后台的4大组件之一,他就是broadCcast,但是他不用考虑是否有接受的对象,只需要考虑发送即可。
要想使用BroadCast我们可以使用两种方法
第一:将broadCcast配置到配置文件当中。
第二:将broadCcast与class文件进行绑定。
下面我们分别来进行说明。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="134dp"android:text="开启通知" /></RelativeLayout>
广播类
package com.example.broadcast;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class BroadCastUtil extends BroadcastReceiver {
public void BroadcastReceiver(){System.out.println("**一个广播事件被建立");
}@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub
Toast.makeText(context, "广播已经启动", 2).show();}}
主文件
package com.example.broadcast;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置过滤Intent intent = new Intent(Intent.ACTION_EDIT);// 开启广播MainActivity.this.sendBroadcast(intent);}});}}
在 application节点下增加 配置
<receiver android:name="BroadCastUtil" android:enabled="true" ><intent-filter ><action android:name="android.intent.action.EDIT"/></intent-filter> </receiver>
使用registerReceiver(BroadcastReceiver, IntentFilter)进行绑定过滤操作
其他的不用进行改变只用改变
主文件 就OK
package com.example.broadcast;import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.activity_main);button = (Button) this.findViewById(R.id.button1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置过滤Intent intent = new Intent("com.example.broadcast");IntentFilter filter=new IntentFilter("com.example.broadcast");BroadCastUtil broadCastUtil=new BroadCastUtil();MainActivity.this.registerReceiver(broadCastUtil, filter);// 开启广播MainActivity.this.sendBroadcast(intent);}});}}
这样进行绑定和配置的话,配置文件中就不需要配置信息了 。
使用广播启动Service
Service
package com.example.broadecast2;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;public class MyService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubSystem.out.println("** SERVICE onCreate");super.onCreate();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubSystem.out.println("** SERVICE onDestroy");super.onDestroy();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubSystem.out.println("** SERVICE onStartCommand");return Service.START_CONTINUATION_MASK;}}<strong>
</strong>
BroadCask
package com.example.broadecast2;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyBroadeCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent1) {context.startService(new Intent(context,MyService.class)) ;}
}
Main
package com.example.broadecast2;import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.Menu;
//使用 广播启动服务
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent =new Intent("com.example.broadecast2.DEMO");MainActivity.this.sendBroadcast(intent);}}
使用广播进行闹钟的控制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TimePickerandroid:id="@+id/timePicker1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/button1"android:layout_alignBottom="@+id/button1"android:layout_alignParentRight="true"android:text="取消闹钟" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/timePicker1"android:layout_alignParentBottom="true"android:layout_marginBottom="30dp"android:text="设置闹钟" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/button1"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_marginBottom="62dp"android:text="当前未设置闹钟"android:textAppearance="?android:attr/textAppearanceLarge" /></RelativeLayout><strong>
</strong>
对话框
package com.example.broadcast3;import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;public class AlertMessage extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);new AlertDialog.Builder(this).setIcon(R.drawable.b9).setTitle("闹钟时间到").setMessage("当前时间为:"+ new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒").format(new Date())).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubAlertMessage.this.finish();}}).create().show();}
}
广播类
package com.example.broadcast3;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;public class MyBroadCast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubIntent it = new Intent(context, AlertMessage.class);it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(it);}}
Main
package com.example.broadcast3;import java.util.Calendar;import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
import android.widget.Toast;public class MainActivity extends Activity {
private Button set,delete;
private TextView info;
private TimePicker time;
private int hour ;
private int minute;
private Calendar calendar = Calendar.getInstance() ;
private AlarmManager alarm;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);set=(Button)this.findViewById(R.id.button1);delete=(Button)this.findViewById(R.id.button2);info=(TextView)this.findViewById(R.id.textView1);time=(TimePicker)this.findViewById(R.id.timePicker1);time.setIs24HourView(true);this.alarm = (AlarmManager) super.getSystemService(Context.ALARM_SERVICE) ;time.setOnTimeChangedListener(new OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {// TODO Auto-generated method stubMainActivity.this.hour=hourOfDay;MainActivity.this.minute=minute;MainActivity.this.calendar.setTimeInMillis(System.currentTimeMillis()) ;MainActivity.this.calendar.set(Calendar.HOUR_OF_DAY, hourOfDay) ;MainActivity.this.calendar.set(Calendar.MINUTE, minute) ;MainActivity.this.calendar.set(Calendar.SECOND, 0) ;MainActivity.this.calendar.set(Calendar.MILLISECOND, 0) ;}});set.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent =new Intent(MainActivity.this, AlertMessage.class);intent.setAction("com.example.broadcast3");PendingIntent sender=PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);MainActivity.this.alarm.set(AlarmManager.RTC_WAKEUP,MainActivity.this.calendar.getTimeInMillis(), sender);MainActivity.this.info.setText("闹钟响起的时间是:"+ MainActivity.this.hour + "时"+ MainActivity.this.minute + "分。");Toast.makeText(MainActivity.this, "闹钟设置成功!",Toast.LENGTH_LONG).show();}});delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (MainActivity.this.alarm != null) {Intent intent = new Intent(MainActivity.this,MyBroadCast.class);intent.setAction("org.lxh.action.setalarm") ;PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);MainActivity.this.alarm.cancel(sender) ; // 取消MainActivity.this.info.setText("当前没有设置闹钟。") ;Toast.makeText(MainActivity.this, "闹钟删除成功!",Toast.LENGTH_LONG).show();}}});}}
下节预报:android基本绘图
从零开始学androidBroadCast广播.四十五.相关推荐
- 猫猫学iOS(四十五)之常用的小功能比如打电话、打开网址、发邮件、发短信打开其他应用。...
猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 简介 iOS中的很多小功能都 ...
- 四十五岁还能学计算机专业吗,女人40到45岁之间该学点什么技术好?
四十岁到四十五岁之间,学电脑比较好. 最基本的学习步骤包括以下四个方面: 第一步:学会启动电脑. 把电脑的各个部分都连接好之后,检查主机和显示器的电源线是否已经接好,然后就可以启动电脑了. 主机的电源 ...
- 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8607864 作者:毛星云(浅墨 ...
- [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 40岁想在职读计算机博士,年龄超过四十五岁还有机会报考在职博士吗
我国一直都在强调"活到老,学到老",所以我国正在向学习型社会发展.因此,我们每一个人都要树立终身学习的理念,只有让自己不断的进步,才不会被快速发展的社会所淘汰.有很多人想要报考在职 ...
- [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自学 ...
- 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...
- Python编程基础:第四十五节 方法链Method Chaining
第四十五节 方法链Method Chaining 前言 实践 前言 方法链是指一个对象一次调用其自身的多个方法,通常写作对象.方法1.方法2.由于这种调用方法看起来像一个链条,所以我们将其称作方法链. ...
- 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)
从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...
最新文章
- tf.keras.optimizers.Adam 优化器 示例
- 处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理
- oracle yum 本地源,Linux YUM本地源配置
- 和php结合实现分页js代码,无JS,完全php面向过程数据分页实现代码
- oa提醒模块要素_OA系统进军贸易行业,高效完成CRM管理
- C# MD5加密与解密
- 六石管理学:使用排除法解决问题
- Python实现扫码工具
- 如何理解希尔伯特空间?
- 典型相关分析(CCA)原理及例子
- Python实现二维码扫码登录
- 一文带你认清云服务器和轻量应用服务器的区别
- 信息安全从业者书单推荐(2020.6.28更新)
- Centos 安装 glib
- 长阳土家族自治县政府与升哲科技达成战略合作
- Unity 制作旋转门 推拉门 柜门 抽屉 点击自动开门效果 开关门自动播放音效 (附带编辑器扩展代码)
- linux之mmc子系统
- Linux高并发服务器开发---笔记2(多进程)
- java字符串替换多个字符串_java 字符串替换函数replaceAll 一次同时替换多个字符串...
- 定制你的语音识别-并行语音识别解码空间