首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android之通话跟短信

2013-12-28 
Android之通话和短信通话和短信通信和短信功能依托于底层硬件和驱动的支持,不同设备有不同标准的基带BaseB

Android之通话和短信
通话和短信

通信和短信功能依托于底层硬件和驱动的支持,不同设备有不同标准的基带BaseBand硬件。在底层之上,Android抽象了通信接口层RIL,由通信守护服务和设备厂商的通信类库组成。设备启动时,守护服务会加载通信类库,并监听特定的端口启动通话相关的Socket服务。

?

??? 通信接口联通了上层类库和底层设备。用户需要拨号等通信请求时,上层类库会将请求转换成特定指令,通过Socket连接并发送至守护服务,通信守护服务调用通信类库,通过底层硬件将请求发送出去。

?

在Android的框架层,通话和短信功能定义在telephony包,负责建立于RIL服务的连接,并将用户的请求转换成指令和数据进行传输。不同的通话协议中的一些特殊的功能都由各自的Java包提供,如gsm提供获取GSM协议相关的参数。

在应用层,处理通话请求的通话应用Phone Application是Android中最为特殊的应用。和框架耦合密切,负责所有通话请求相关的处理。系统提供的通话应用不能被第三方取代,一次保证通话的可靠。

?

通话的处理

telephonyManager查看通话状态、SIM卡信息

telephonyManager.getPhoneType通话网络类型

telephonyManager.getCallState通话状态

使用telephonyManager.listen函数,注册telephonyManager.phoneStateListener适时监听通话状态的变更,适时查询来电显示。

?

出于安全考虑,没有将拨号呼叫、接听电话的接口暴露,应用中需要打电话,需要Intent实现。

StartActivity(new Intent(Intent.ACTION_DIAL, new URI.parse(“tel:XX”)))

StartActivity(new Intent(Intent.ACTION_CALL, new URI.parse(“tel:XX”)))

?

短信的发送和接受

SmsManager可以控制发送短信或彩信。

//构造回掉事件,短信发送结束后,会发出对应的Intent请求

Intent intent = new Intent(“com.sample.sms_sent”);

Intent.putExtra(“sms_id”, GenerateSmsId());

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

//发送文本短信

SmsManager smsManager = SmsManager .getDefault();

smsManager.sendTextMessage(phone_number, null, text_content,? pendingIntent,null);

?

PendingIntent是异步Intent对象,当短信发送完成后,会触发预设的广播事件,通过监听该广播事件,可获知短信发送结果。

热点排行