Как сделать систему входящих звонков на Android с Jitsi?
Я хотел бы знать, как лучше всего реализовать систему вызовов (с экраном входящих звонков) на телефоне Android.
В настоящее время я работаю с Jitsi (открытым потоковым репозиторием) и у меня есть система аутентификации с Firebase, но я не знаю, как создавать звонки между зарегистрированными пользователями с одного мобильного телефона на другой мобильный.
Это код для запуска видеозвонка в "комнате", но в настоящее время пользователи входят только в общую комнату без экрана для входящих вызовов (с возможностью либо принять запрос, либо отклонить вызов):
public class MainActivity extends JitsiMeetActivity
{
private JitsiMeetView view;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.startCall();
}
public String generateJWS(String name, String email)
{
//MAP FOR TAG: "CONTEXT"
Map<String, Map<String,String>> context = new HashMap<String,Map<String,String>>();
//MAP FOR TAG: "USER"
Map<String,String> user = new HashMap<String, String>();
//ADD USER INFORMATION TO MAP (USER SETTINGS FOR A NEW CALL)
user.put("avatar", new String("https://vignette.wikia.nocookie.net/dragonball/images/3/35/Esfera_del_dragon_4_estrellas.png/revision/latest?cb=20140105064853&path-prefix=es"));
user.put("name", new String(name));
user.put("email", new String(email));
//INSERT "USER" TAG INSIDE OF "CONTEXT" TAG
context.put("user",user);
//SECRET KEY (HS256) FOR SIGN THE TOKEN.
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
//CONSTRUCTION OF JWS
String jws = Jwts.builder()
.claim("context",context)
.setSubject("meet.jit.si")
.claim("room","*")
.signWith(key)
.compact();
return jws;
}
public void startCall()
{
setWelcomePageEnabled(true);
//NEW INSTANCE OF JITSI MEET VIEW
view = new JitsiMeetView(this);
//CALL SETTINGS BUNDLE
Bundle config = new Bundle();
config.putBoolean("startWithAudioMuted", true);
config.putBoolean("startWithVideoMuted", false);
//WEB TOKEN WITH USER PARAMETERS
//THIS DATA WILL BE GET FROM FIREBASE (I GET ID, NAME, AND EMAIL FROM THE OFICIAL PROJECT), CURRENTLY THIS IS ONLY A TEST
String token = this.generateJWS("Felipe Morales","fmorales@gn.cl");
//CALL URL BUNDLE (ROOM+SETTINGS+JWT)
Bundle urlObject = new Bundle();
urlObject.putBundle("config", config);
urlObject.putString("url", "https://meet.jit.si/1234f?jwt="+token);
//LOAD URLOBJECT IN THE CURRENT VIEW
view.loadURLObject(urlObject);
//START STREAMING VIEW
setContentView(view);
}
}
В официальном проекте у меня есть ListView зарегистрированных пользователей (из этого списка я получаю идентификатор этого пользователя в базе данных), и идея такова: когда текущий зарегистрированный пользователь нажимает на элемент списка, он / она может либо текстовые сообщения или позвонить выбранному пользователю.
Я искал решение и знал о "Firebase Cloud Messaging". Я думаю, что это лучшее решение (потому что я работаю с базой данных Firebase) для создания системы чата, но я не знаю, смогу ли я использовать тот же API для отправки запроса между пользователями, чтобы начать вызов.
Jitsi включает в свой репозиторий вид входящего звонка, в общем, мой вопрос, как я могу создать систему между зарегистрированными пользователями для отправки / получения запроса на Android? Могу ли я использовать "Firebase Cloud Messaging" для этого? Какое лучшее решение?