AK47

AK47

0个粉丝

5

问答

0

专栏

0

资料

AK47  发布于  2013-01-04 20:05:05
采纳率 0%
5个问答
3737

在Android framework中支持第二个modem

在Android framework中支持第二个modem
1.        Overview
在android系统基础上采用双rild方案、最小化的修改framework中的telephony模块来实现第二个modem的支持。主要构造如下:

       
此改动不影响原有功能的运行,也就是说单模和双模使用同一套代码,第二个模是否支持完全取决于HW的功能,最终通过系统配置来完成的。

新增的API都是在原有的函数功能基础上变化而来,要么变化函数名增加‘Second’关键字,要么增加phone ID函数参数,因此相应的API说明可以参考原有对应功能的API即可,如:
        1)PhoneFactory.java:
                原有的API为:
                        public static void makeDefaultPhones(Context context)
public static Phone getDefaultPhone()

为second phone增加的API为:
public static void makeSecondPhone(Context context)
public static Phone getSecondPhone()

        2)SmsMessage.java:
                原有的API为:
public static int getTPLayerLengthForPDU(String pdu)

为second phone增加的API为:
public static int getTPLayerLengthForPDU(String pdu, int phoneId)

2.        framework中的telephony针对应用层的改动点或接口
1)        Phone.java
a)        Add two ID to match default phone or second phone

static final int PHONE_ID_MAIN;
static final int PHONE_ID_SUB;

b)        Add API to return phone ID of phone class instance

public int getPhoneID()


2)        StkService.java
Add API to return the StkService instance of second phone

        public static getSecondInstance()

3)        PhoneFactory.java
a)        Add API to create Phone Class instance of second phone

public static void makeSecondPhone(Context context)

b)        Add API to return Phone Class instance of second phone

public static Phone getSecondPhone ()

4)        TelephonyManager.java
Add API to return the TeleponyManager instance of second phone

                        public static getSecond()

5)        SmsManager.jav
Add API to return the SmsManager instance of second phone

                        public static getSecond()

6)        IccProvider.java
Add ‘icc2’ provider to access second phone book

7)        SmsMessage.java
Add lists of the following function with phoneId parameter(based on orignal defines) to support second phone. When use SMS APIs of the following for second phone. phoneId must be applied with Phone.PHONE_ID_SUB( it also can be return with API of getPhoneID())

public static SmsMessage createFromPdu(byte[] pdu, int phoneId)
public static SmsMessage newFromCMT(String[] lines, int phoneId)
protected static SmsMessage newFromCMTI(String line, int phoneId)
public static SmsMessage newFromCDS(String line, int phoneId)
public static SmsMessage newFromParcel(Parcel p, int phoneId)
public static SmsMessage createFromEfRecord(int index, byte[] data, int phoneId)
public static int getTPLayerLengthForPDU(String pdu, int phoneId)
public static int[] calculateLength(CharSequence msgBody, boolean use7bitOnly, int phoneId)
public static int[] calculateLength(String messageBody, boolean use7bitOnly, int phoneId)
public static ArrayList fragmentText(String text, int phoneId)
public static SubmitPdu getSubmitPdu(String scAddress, String destinationAddress, String message, boolean statusReportRequested, byte[] header, int phoneId)
public static SubmitPdu getSubmitPdu(String scAddress, String destinationAddress, String message, boolean statusReportRequested, int phoneId)
public static SubmitPdu getSubmitPdu(String scAddress, String destinationAddress, short destinationPort, byte[] data, boolean statusReportRequested, int phoneId)

3.        Phone 应用程序的要求
Phone 应用程序必须要完成两件事才成让framework的telephony模块支持second phone:

a)        调用PhoneFactory中的makeSecondPhone来创建second phone instance

b)        create instance of  PhoneInterfaceManager with phone parameter which from PhoneFactory.getSecondPhone


4.        Emulator的使用
原来的emulator不支持双模运行,为了能够让双模能够在emulator上运行,对emulator进行了修改。目前的定义为:缺省的模走原有功能(通过emulator中的模拟modem来响应AT命令),第二模走PC 串口和手机相连(把手机当成独立的modem来响应AT命令), 因此要在emulator调试双模应用程序需要在运行emulator时增加两个命令选项:
     -prop rw.baseband=dualmodem
     -radio COM1
调试的过程中要确保手机不要进入sleep模式。

我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区