重读更新
对不起,我没有意识到这个问题只与短信有关。 SIP 本身不支持文本消息,SIMPLE 或 MSRP 扩展支持。您需要找到一个您乐于使用的堆栈,这里有一个示例Doubango 和他们的演示产品IMSDroid,但谷歌“Android MSRP”还有很多其他选项。我仍然对 XMPP 一无所知,但请查看 this thread 以获取大量库和用途列表。
结束更新
到目前为止,您尝试了什么?对于您问题的 SIP(语音)部分,这里是 Android Developers site 上的文档,其中包含您需要知道的所有内容,这里是一个免费的 SIP 提供商:Getonsip。
简化的代码示例,大部分来自 Android 开发者网站。
基本上您需要确保 minSDK 设置为 9,因为 SIP 库直到 2.3 才添加。将服务添加到您的清单中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_SIP" />
如果您希望您的应用不安装在无法运行的设备上,可以选择添加 uses-feature voip 指令。
<uses-feature android:name="android.hardware.sip.voip" />
创建一个 SipManager:
android.net.sip.SipManager manager = SipManager.newInstance(this);
创建用于通过您的提供商拨打/接听电话的个人资料:
android.net.sip.SipProfile.Builder builder = new SipProfile.Builder(username, domain);
builder.setPassword(password);
android.net.sip.SipProfile sipProfile = builder.build();
如果你只关心打电话:
manager.open(profile);
要打电话给你,你需要和听众一起工作:
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
@Override
public void onCallEstablished(SipAudioCall call) {
call.startAudio();
call.setSpeakerMode(true);
call.toggleMute();
...
}
@Override
public void onCallEnded(SipAudioCall call) {
// Do something.
}
};
现在,只要您有对等方的 SIP 地址,您就可以使用:
SipProfile friendProfile = ...;
manager.makeAudioCall(sipProfile.getUriString(), friendAddress, listener, 30);
这应该可以帮助您入门。不幸的是,我没有使用 XMPP 的经验。