Я создал простой SIP-вызов с помощью Android SipManager. Я хотел спрятать и показать список плавающих кнопок действий на разных этапах состояния вызова. Например, когда пользователь нажимает кнопку вызова, я хочу отобразить некоторые плавающие кнопки действий и скрыть другие. Но как только между двумя пользователями используется вызов, я хочу отобразить и скрыть какую-нибудь другую кнопку с плавающим действием. но это, кажется, не работает вообще. Я пытался скрыть плавающую кнопку действия внутри функции oncallEstablished. но это не работает. Моя главная идея, как только я смогу успешно соединить оба агента, хочу показать одну плавающую кнопку действия. но плавающая кнопка действия внутри функции oncallEstablised не работает.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.voip);
make();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
FloatingActionButton fab1 = (FloatingActionButton) findViewById(R.id.fab1);
FloatingActionButton fab6 = (FloatingActionButton) findViewById(R.id.fab6);
FloatingActionButton fab7 = (FloatingActionButton) findViewById(R.id.fab7);
fab.setOnClickListener(this);
fab1.setOnClickListener(this);
fab1.setVisibility(View.GONE);
fab6.setVisibility(View.GONE);
fab7.setVisibility(View.GONE);
}
/**
* Used to create the local profile
*/
private void make()
{
// Determines if the device is capable of VOIP
if (SipManager.isVoipSupported(getApplicationContext()) &&
SipManager.isApiSupported(getApplicationContext())) {
Log.e("$$", "VoipActivity");
// Creates a Sip Manager for the App
makeSipManager();
// Creates the User's Sip Profile
makeSipProfile();
Log.d("Test", SENDCALL.toString());
call = new SipAudioCall(this, profile); // set up your calling profile
// Listener object to handle SIP functions
SipAudioCall.Listener listener = new SipAudioCall.Listener() {
/**
* Name: onCallEstablished
* Description: onCallEstablished is called when the
* user establishes a call. This method
* will enable the User to talk to the
* person on the opposite line.
*/
@Override
public void onCallEstablished(SipAudioCall call) {
super.onCallEstablished(call);
call.startAudio();
call.setSpeakerMode(true);
//below list of floating action button hiding statement doesnt works
FloatingActionButton fab7 = (FloatingActionButton) findViewById(R.id.fab7);
FloatingActionButton fab6 = (FloatingActionButton) findViewById(R.id.fab6);
fab6.setVisibility(View.GONE);
fab7.setVisibility(View.VISIBLE);
Log.d("call", "Call established");
if (call.isMuted()) {
call.toggleMute();
}
}
/**
* Name: onCallEnded
* Description: onCallEnded is called when the call is ended
*/
@Override
public void onCallEnded(SipAudioCall endedCall) {
super.onCallEnded(endedCall);
Log.d("call", "Call ended");
try {
endedCall.endCall();
} catch (SipException e) {
e.printStackTrace();
}
}
};
call.setListener(listener);
// Set up Intent filter to receive calls
IntentFilter filter = new IntentFilter();
filter.addAction("android.VOIPDEMO.INCOMING_CALL");
receiver = new IncomingReceiver();
this.registerReceiver(receiver, filter);
}
else {
setText("Your device does not support VOIP");
}
}
public void onClick(View v)
{
if (v.getId() == R.id.fab) {
View view = findViewById(R.id.fab1);
View view3 =findViewById(R.id.fab3);
View view4 =findViewById(R.id.fab4);
View view6 =findViewById(R.id.fab6);
view.setVisibility(View.VISIBLE);
View view1 = findViewById(R.id.fab);
view1.setVisibility(View.GONE);
view3.setVisibility(View.VISIBLE);
view4.setVisibility(View.VISIBLE);
view6.setVisibility(View.GONE);
// Make a Call
setText("Alarm Call Made");
SipProfile.Builder builder;
SipProfile toCall;
try {
builder = new SipProfile.Builder(SENDCALL.toString(), DOMAIN);
toCall = builder.build();
SipSession.Listener ssl = new SipSession.Listener() {
@Override
public void onCallEnded(SipSession session) {
super.onCallEnded(session);
try {
call.endCall();
} catch (SipException e) {
e.printStackTrace();
}
session.endCall();
}
};
call.makeCall(toCall, manager.createSipSession(profile, ssl), 30);
}
}
else { // if v.getId() == R.id.endCall
View view = findViewById(R.id.fab1);
view.setVisibility(View.GONE);
View view1 = findViewById(R.id.fab);
view1.setVisibility(View.VISIBLE);
View view6 = findViewById(R.id.fab6);
view6.setVisibility(View.GONE);
setText("Alarm Call Ended");
try {
call.endCall();
} catch (SipException e) {
e.printStackTrace();
}
}
}