Androidでsipを使用して通話を確立しようとしています。マニフェストの権限は次のとおりです。
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.USE_SIP"/>
<uses-permission android:name="android.permission.INTERNET"/>
私のアプリは通常の番号も呼び出すため、CALL_PHONE権限があります。
これはアクティビティコードです:
package x.x.x;
import java.text.ParseException;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.sip.SipAudioCall;
import android.net.sip.SipException;
import android.net.sip.SipManager;
import android.net.sip.SipProfile;
import android.os.Bundle;
import android.util.Log;
public class CallScreen extends Activity{
public SipManager manager = null;
public SipProfile me = null;
public SipAudioCall call = null;
//IncomingCallReceiver callReceiver;
String domain = "myserver.net";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.callscreen);
initManager();
Log.d("Z:","Done initManger()");
Thread waiter = new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
sleep(10000);
Log.d("Z:","Done waiting");
initCall();
Log.d("Z:","Done initCall");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
waiter.start();
//initCall();
}
public void initManager()
{
manager = SipManager.newInstance(this);
initLocalProfile();
}
public void initLocalProfile()
{
String username = "user";
String password = "12345";
String domain = "myserver.net";
try {
SipProfile.Builder builder = new SipProfile.Builder(username,domain);
builder.setPassword(password);
me = builder.build();
//Intent intent = new Intent();
//PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, Intent.FILL_IN_DATA);
//manager.open(me,pi,null);
manager.open(me);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SipException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void initCall()
{
SipAudioCall.Listener listener = new SipAudioCall.Listener(){
@Override
public void onCallEstablished(SipAudioCall call) {
// TODO Auto-generated method stub
//super.onCallEstablished(call);
call.startAudio();
call.setSpeakerMode(true);
call.toggleMute();
}
@Override
public void onCallEnded(SipAudioCall call) {
// TODO Auto-generated method stub
super.onCallEnded(call);
}
};
try {
call = manager.makeAudioCall(me.getUriString(), "12345678910", listener, 30);
} catch (SipException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
logcatに表示されるエラー:
01-26 22:20:25.710: D/SipAudioCall(31060): sip session error: CLIENT_ERROR: libcore.io.ErrnoException: getaddrinfo failed: ENOENT (No such file or directory)
このコードを少し異なる方法で整理する前に、この小さな例を機能させようとしています(たとえば、ユーザー名とパスはハードコーディングされていません)。私も一口にあまり慣れていません。本当にアドバイスをお願いします。
何か案は?ありがとう!