I'm not going to use Intent to invoke default system Phone App, such as Google Hangout. Can we make a call or receive a income call inside our own app rather than system phone app?
Yes,You can do that with the help of a VOIP account. Try over internet you can find lot of VOIP providers and you just have to create an account and use the given instructions.
Android provides an API that supports the Session Initiation Protocol (SIP). This lets you add SIP-based internet telephony features to your applications. Android includes a full SIP protocol stack and integrated call management services that let applications easily set up outgoing and incoming voice calls, without having to manage sessions, transport-level communication, or audio record or playback directly.
Here are examples of the types of applications that might use the SIP API:
Video conferencing.
Instant messaging
Check this Example or Example 2
Related
i am using agora.io sdk in my mobile apps for audio video calling, but i want dedicated signalling servers (both turn and stun) which if got from https://xirsys.com/ and want to transfer all calls from agora server to my own.
Any one who can help is this regard?
Thanks in advance.
If you are looking for how to enable cloud proxy with Agora's network, their documentation provides some information:
https://docs.agora.io/en/Video/cloudproxy_native?platform=Android
https://docs.agora.io/en/Video/cloud_proxy_web?platform=Web
The one thing to note, it says you have to contact sales#agora.io to enable the feature.
Contact sales-us#agora.io and provide your App ID, and the information on the regions using the cloud proxy, the concurrent scale, and network operators.
I am trying to implement a sample application using the Media Router API and the RemotePlaybackClient class. I do not want to implement Google Cast SDK (simply because I want to support other remote devices than Google Cast ones).
Everything works quite fine until I want to retrieve the session currently playing on the remote device.
By that I mean that for example, I have a mobile device A casting to a specific remote player (RM) with my sender app. If I kill my app, then launch it again, how can I retrieve the info of the current playback session on the remote device ? The same situation occurs if I try to select the media route from another mobile device B with the same application.
Also, how should this be implemented on MediaRouterProvider side ?
When you use Netflix for example, it is able to retrieve info of the currently playing session, up to the item currently playing.
There is not so much documentation on the subject, and the samples provided by Google do not seem to implement this feature.
Fling can also be implemented using RemotePlaybackClient, and specifies at the end of their online doc that some callbacks are just not called at all by Cast devices (#CommonsWare also noted that).
Found this subject, but no answer to this specific situation has been provided.
Any idea ?
Thanks !
Edit: Basically, I am trying to join the current session from another device / instance (feature is available for the Cast SDK). How can I do that using the media router provider ? There is no application id using only the media router...
The feature you are talking about (i.e. joining an on-going session) is a Cast feature and not supported/covered by Media Router. The reason that apps such as Netflix can do that is because they are using the Google Cast SDK.
We are developing an Android app with VoIP call feature like WhatsApp's calls.
Following quick-start guides and examples provided by Twilio in their web we managed to make a simple VoIP app for testing (Android Client Tutorial), but when we configured server side app (provided in their examples) we were asked to enter a callerID that must be a valid phone number.
Why is this callerId needed and why it has to be a valid number phone if we just want to make app to app VoIP calls, without using any real mobile number?
Twilio developer evangelist here.
Using Twilio Client you can make both app to app calls and app to phone calls. You only need a calledId if you are calling out to the phone network. You can get a free phone number with your Twilio trial account and use that if you want to follow the Android Client Tutorial exactly.
Otherwise, you can skip the bits of the app where you call phones and just send calls out to other Clients. When you do that, you need only to set the callerId as your Client name.
Let me know if that helps at all.
I'm developing an android application. The app should be able to make audio calls to other users using the app. I don't want to call using phone numbers, but I want them to go through the internet. Like Skype for example. Maybe using VoIP ? I don't really know.
I was reading about SIP, but I don't understand it perfectly.
On this link, under Requirements and Limitations it says:
Each participant in the application's communication session must have
a SIP account. There are many different SIP providers that offer SIP
accounts.
What exactly is a SIP account ?
I was also looking for SIP providers, but I couldn't find any free ones. Does anyone know any ?
The main problem is that I want my app to be free and also I don't really want to spend any money making it. So am I able to make this app for free ?
Thanks for helping!
Not really clear about your use case. You may try to use rtsp and stream the voice to a media server like Wowza and then listen to it just like you do on youtube. The user listening it may also have another session and translate his voice stream to you via an standard media server like I said before. Not exactly a phone call but... doable in android and interface may hide all the tech specifics. It will look like a call. I did something like this + video couple years ago for android 4.0+
Is it possible to create a listener to get a message from whatsApp in android?
I mean like you have a broadcastReceiver to listen to incoming SMS in android...
Is any API is needed for that thing, or is it legal thing to do or I need to get any permission from whatsApp?
Whatsapp did not publish any official APIs.
There's this open source API for communicating with whatsapp, it's not official and might stop working if Whatsapp update their protocols.
https://github.com/venomous0x/WhatsAPI
Regarding the legality of using this or other non-official API, it depends on the service agreement that you agreed to with Whatsapp. Read it and see if they frown upon using their communication protocols with clients other than theirs. My guess would be they do not allow it.
UPDATE: This GitHub repository seems to have been taken offline due to legal threats.
It is possible, an example of an Android app that does this is Snowball - basic notification manager that can access WhatsApp message content. I'm not quite sure on how that works, but research Snowball to get more information on how it works.
It is also possible without Android, the source repository on GitHub has been taken down and put back up a few times due to legal threats.
If you do, however, manage to connect to WhatsApp's servers to access incoming and outgoing messages with a desktop app and you don't hide it well, your account will be blocked. WhatsApp notices accounts that send messages faster than it would take for a normal person to send - easy to notice because a human takes time to type, try delaying messages by a random number of seconds to try and hide this. Also note that WhatsApp's terms of service state that you may not run any automated system using the service, i.e. any external app. You may not use the service to advertise or spam (raises red flags pretty fast and gets your account blocked).
There is also another library written in Python which you can use write custom application.
It also has terminal client and you run it in interactive mode and also supports group messaging.
There are lots of issues to fix.However you should not be abusive with whatsapp service.Don't use it to spam users.This is reverse engineered library and therefore unofficial.
Here the link:-yowsup