




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 Android基本组件交互实验【实验目的】 本实验是Android基本组件实验,主要针对Activity、Service和Receiver实现和使用方法。通过实验使学生掌握Activity的跳转、Service的启动停止以及Receiver的接受等。【实验要求】u 使得学生熟悉Activity、Service和BroadCast基本使用;u 使得学生掌握短信接收实现和使用;u 使得学生掌握界面跳转基本原理和使用方法;u 使得学生掌握服务和广播的基本机制。【实验原理】1. Activity跳转startActivity跳转到目标页面,参数为Intent;startActivityForResult 跳转到下一个Activity,而当这个Activity被关闭以后,自动跳转前一个Activity,并调用onActivityResult( )方法,参数为Intent和requestcode2. IntentAndroid基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成Android各个组件之间的通讯 。Intent属性:n Action ,对执行动作的描述,在Intent类中定义了一些字符串常量作为标准动作;n data ,是对执行动作所要操作的数据的描述,Android中采用URI来表示数据;例:VIEW_ACTION content:/contacts/1表示显示标识符为”1的联系人的详细信息。n catagory 类别,是被执行动作的附加信息;n extra 附加信息,除了data之外,还可以通过extra附加信息,extra属性使用Bundle类型进行数据传递;n component 组件,显式指定Intent的目标组件的名称;n type 数据类型,显式指定Intent的数据类型;3. Service组件Service一般由一个Activity或其他Context对象来启动,当启动Service之后,该Service将会在后台运行,及时启动这个Service的Activity或其他组件的生命周期已经结束,Service仍然会继续运行,直到自己的生命周期结束为止。每个Service都应该在ndroidManifest.xml中进行声明。Service的启动方式有两种,对应的生命周期也各不相同。通过startService方法启动。当系统调用startService方法,如果该Service还未启动,则依法调用其onCreate方法和onStart方法来启动。当其他Context对象调用stopService方法、Service调用自身的stopSelf或stopService方法时才会停止Service的执行。通过bindService方法启动。当系统调用bindService方法时,如果该Service未启动,则会调用onCreate方法完成初始化工作,然后会将该Service和Context对象(如Activity)进行绑定,当被绑定的Context对象被销毁时,与之绑在一起的Service也会停止运行。4. Broadcast Receiver组件Broadcast Receiver同Service一样,并不提供与用户交互的表示层,其实是一种负责接收广播消息并对消息作出反应的组件。在Android的系统中就存在许多这样的广播,比如电池电量过低或信号过低时,系统就会发出广播进行通知。应用程序如果需要响应某一个广播消息,应该注册对应的BroadcastReceiver对象,该对象继承自BroadcastReceiver类,该类位于android.content包。这样一来当系统或另外的应用程序发出特定广播时,该应用程序就可以接受并做出回应,如启动Activity等。接受广播的时候就需要通过IntentFilter对象来进行过滤。BroadcastReceiver的生命周期比较简单,其只有一个回调方法-onReceiver,该方法在应用程序接受到发给自己的广播的时候调用,所以BroadcastReceiver的使用方法也相对简单,只需要对onReceive方法进行合理重写,在适当的地方注册该BroadcastReceiver即可。注册BroadcastReceiver对象的方式有以下两种。在AndroidMannifest.xml文件中声明。注册信息包裹在标签中,并在标签内设定过滤规则。在代码中创建并设置IntentFilter对象。该IntentFilter对象包含了对广播的过滤规则,然后在需要的地方调用Context.registerReceiver方法和Context.unregisterReceiver方法进行注册和取消注册,如果采用这种方式注册的话,当Context对象被销毁时,该BroadcastReceiver也就不复存在了。【实验内容】1.接收短信、开启和停止服务的界面布局;2.实现短信接收服务;3.接收广播信息。【实验代码】/strings.xml Intent Settings Hello world!无短信启动停止/activity_main.xml /AndroidManifest.xml !- - /MainActivity.javapackage ent;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.content.IntentFilter;import android.view.Menu;import android.view.View;import android.widget.Button;public class MainActivity extends Activity Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button bt1=(Button)findViewById(R.id.btn1);bt1.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View arg0) / TODO Auto-generated method stubIntent intent = new Intent(ent.SMSService);startService(intent);/启动服务);Button bt2=(Button)findViewById(R.id.btn2);bt2.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent = new Intent(ent.SMSService);stopService(intent);/停止服务);/SMSService.javapackage ent;import android.app.Service;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.widget.Toast;/* * author Administrator * */public class SMSService extends Serviceprivate static BCReceiver bcReceiver;static String SMS_ACTION = vider.Telephony.SMS_RECEIVED;public SMSService() / TODO Auto-generated constructor stubprivate void registerReceiver(BCReceiver bcReceiver2, IntentFilter filter) / TODO Auto-generated method stub/* (non-Javadoc) * see android.app.Service#onCreate() */Overridepublic void onCreate() / TODO Auto-generated method stubsuper.onCreate();bcReceiver = new BCReceiver();IntentFilter filter = new IntentFilter();filter.addAction(SMS_ACTION);SMSService.this.registerReceiver(bcReceiver,filter);System.out.println(Service create!);Overridepublic IBinder onBind(Intent intent) / TODO Auto-generated method stubreturn null;/BCReceiver.javapackage ent;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import .Uri;import android.os.Bundle;import android.telephony.SmsManager;import android.telephony.SmsMessage;import android.widget.Toast;public class BCReceiver extends BroadcastReceiverStringBuilder builder = new StringBuilder();public BCReceiver() / TODO Auto-generated constructor stubOverridepublic void onReceive(Context arg0, Intent arg1) / TODO Auto-generated method stubSystem.out.println(SMS Received!);Intent intent = null;Bundle bundle = intent.getExtras();/读取短消息的标签pdusObject myOBJpdus = (Object)bundle.get(pdus);SmsMessage messages = new SmsMessagemyOBJpdus.length;for(int i = 0; imyOBJpdus.length; i+)messagesi = SmsMessage.createFromPdu(byte) myOBJpdusi);builder.append(messagesi.getDisplayMessageBody();System.out.println(builder);Context context = null;Intent smsintent = new Intent(context,MainActivity.class);smsintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);smsintent.putExtra(SMS, builder.toString();context.startActivity(smsintent);builder.setLength(0);/回传消息String sender = messages0.getOriginatingAddress();System.out.println(sender+);SmsManager manager = SmsManager.getDefault();manager.sendTextMessage(sender, null, Hello World!, null, null);Toast.makeText(context, Message has been sent, 5000).show();/回拨电话Intent intentcall=new Intent(Intent.ACTION_CALL,Uri.parse(tel:+sender);intentcall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intentcall);【实验代码】界面布局按启动:发送信息:收到信息:六
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河南素描高考真题及答案
- 2025年泰语中级口译真题及答案
- 技术培训协议合同范本3篇
- 设备运输合同
- 钢结构防火安全施工方案
- 保障性住房项目施工人员培训与技术提升方案
- 离婚股权分割协议:股权价值评估与权益分配合同
- 新能源汽车齿轴零件生产线项目建筑工程方案
- 离婚后子女教育、医疗费用承担补充协议范本
- 离婚协议中知识产权归属与财产分配协议书
- 50000t天污水厂课程设计
- GB/T 44251-2024腿式机器人性能及试验方法
- DL∕T 5767-2018 电网技术改造工程工程量清单计价规范
- 人音版 (五线谱)一年级上册音乐-1 《玩具兵进行曲》教案
- 装配式建筑装饰装修技术 课件 模块二 装配式楼地面
- 物理化学实验B智慧树知到期末考试答案章节答案2024年北京科技大学
- 基层医疗卫生机构访谈问卷
- 美业市场培训课程课件
- 村民集体经济发展规划方案
- 软件测试升职述职报告
- 室内装饰测量放线专项方案
评论
0/150
提交评论