黑莓 - 从应用程序管理电话会议?
Posted
技术标签:
【中文标题】黑莓 - 从应用程序管理电话会议?【英文标题】:Blackberry - manage conference call from application? 【发布时间】:2011-01-19 13:59:31 【问题描述】:如何从应用程序创建电话会议?
【问题讨论】:
让我建议 SuperUser(SO 的姊妹网站)作为这个问题的更好论坛:superuser.com 【参考方案1】:我们必须:
开始通话 保持通话 开始新通话 加入会议 ...要开始通话,请参阅来自Blackberry - make a call from native address book的api 没有 api 可以持有和加入,但我们可以使用 Blackberry - run menu item from dialer Phone App 技术 要将应用程序屏幕带回前台,我们可以使用来自Blackberry - Create an application which will lock another application event的代码
完整代码:
class Scr extends MainScreen implements PhoneListener
private static final String STR_MODULE_NAME = "SOConferenceCall";
EditField mPhoneNumber = new EditField("phone number: ", "12345");
boolean mConnected = false;
Vector mPhoneCalls = new Vector();
public Scr()
Phone.addPhoneListener(this);
add(mPhoneNumber);
protected void makeMenu(Menu menu, int instance)
super.makeMenu(menu, instance);
if (isCalling())
menu.add(new MenuItem("add to conference", 0, 0)
public void run()
holdActiveCall();
makeCall(mPhoneNumber.getText());
);
else
menu.add(new MenuItem("call", 0, 0)
public void run()
makeCall(mPhoneNumber.getText());
);
private void holdActiveCall()
runMenuItem("Hold");
private void joinCalls()
runMenuItem("Join Conference");
private void makeCall(String number)
PhoneArguments call = new PhoneArguments(PhoneArguments.ARG_CALL,
number);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, call);
private void runMenuItem(String menuItemText)
Screen screen = Ui.getUiEngine().getActiveScreen();
Menu menu = screen.getMenu(0);
for (int i = 0, cnt = menu.getSize(); i < cnt; i++)
if (menu.getItem(i).toString().equalsIgnoreCase(menuItemText))
menu.getItem(i).run();
protected int switchToForeground()
int id = -1;
ApplicationManager appMan
= ApplicationManager.getApplicationManager();
ApplicationDescriptor appDes[]
= appMan.getVisibleApplications();
for (int i = 0; i < appDes.length; i++)
Sreing name = appDes[i].getModuleName();
if (name.equalsIgnoreCase(STR_MODULE_NAME))
id = appMan.getProcessId(appDes[i]);
appMan.requestForeground(id);
// give a time to foreground application
try
Thread.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();
break;
return id;
private boolean isCalling()
return mConnected;
public void callAdded(int callId)
switchToForeground();
public void callAnswered(int callId)
switchToForeground();
public void callConferenceCallEstablished(int callId)
switchToForeground();
public void callConnected(int callId)
if (mPhoneCalls.size() == 0)
mConnected = true;
else
joinCalls();
mPhoneCalls.addElement(Phone.getCall(callId));
switchToForeground();
public void callDirectConnectConnected(int callId)
switchToForeground();
public void callDirectConnectDisconnected(int callId)
switchToForeground();
public void callDisconnected(int callId)
mPhoneCalls.removeElement(Phone.getCall(callId));
if (mPhoneCalls.size() == 0)
mConnected = false;
switchToForeground();
public void callEndedByUser(int callId)
switchToForeground();
public void callFailed(int callId, int reason)
switchToForeground();
public void callHeld(int callId)
switchToForeground();
public void callIncoming(int callId)
switchToForeground();
public void callInitiated(int callid)
switchToForeground();
public void callRemoved(int callId)
switchToForeground();
public void callResumed(int callId)
switchToForeground();
public void callWaiting(int callid)
switchToForeground();
public void conferenceCallDisconnected(int callId)
switchToForeground();
【讨论】:
以上是关于黑莓 - 从应用程序管理电话会议?的主要内容,如果未能解决你的问题,请参考以下文章
自动驾驶未来汽车将由软件来定义 黑莓QNX为自动驾驶安全性护航