I want to do following in android.
Is it possible ?
1) call +xx xxxxxxx
2) wait to the first tone to end
3) insert pass: xxxx
4) wait for the short high tone to end
5) press 1 till you hear specific sound.
Here tones are DTMF tones and I tried to do it with call intent but how can i enter pass in ongoing call using code?
Can anybody guide me ?
Thanks in advance !
You may not be able to do it directly from an Android device but you could use a programmable service that uses Call Control XML (CCXML) to accomplish this. You would call the CCXML application which would in turn dial the phone number of the system you want to interact with. The CCXML application would then take over the automated process you describe. Listening for the tones, as described in your process, is often referred to as Call Progress Analysis. A platform that has a great CCXML and Call Progress Analysis is Voxeo's Prophecy. You can try it out for free. Since you are listening for DTMF tones you may want to use a combination of CCXML and VoiceXML. Prophecy supports both. VoiceXML can detect specific DTMF tones. There is no method for telling VoiceXML or CCXML to send DTMF. The way this is handles is playing audio recordings of DTMF. You can get audio recordings of DTMF tones that work on Prophecy here.
Writing to phone call stream is not possible, sorry.
Related
Is there any way to build our own Call screening application(Incoming call answer bot) to transfer the specific audio recording to an incoming call? To do that
The application should answer the call. (There is an official API to answer the phone call in recent versions of Android)
The application should be able to receive the voice.
The application should be able to transmit the recording as an outgoing voice.
Is it possible to do 2,3?
In short - I'd be very surprised if 2 and 3 are possible because of legal issues - it is not legal to record conversations in the US (and other parts of the world, probably) and Google, like Apple, do not allow it. This is the main reason call recording has always been clunky on Android (e.g. forcing the user to use the speaker).
If applications have access to voice calls, there will not be a problem recording them
It gets worse on Android 9 onwards...
I’m using Twilio Android API to perform a VoIP call between two Android clients. Is it possible to track the current volume of the call?
The need for such possibility comes from the following use case: I want to request audio focus only when another party is talking and abandon it as soon as the silence is detected on the line.
Twilio developer evangelist here.
As far as I can see in the Android Programmable Voice documentation, there is no access to the audio stream in order to track the volume of the call.
This is likely something you could achieve if you were making audio calls between apps using the Twilio Video SDK for Android. (And if you are only making app to app calls, then sound quality will be better too as it's not downsampled for the phone network.)
We are looking to make an application in which a bot answers the call for us and says a predefined text like one sentence or two and the other person on their phone says/tells their work to the bot. Then after the call bot gives a speech to text.
As per my research we can automatically pick call in Android Oreo using android.permission.ANSWER_PHONE_CALLS
But I don't know further steps. Can anyone help me?
Actually this is almost impossible and very unreliable. Most phones don't have access to line audio since it is illegal to record calls in most countries.
This is the reason why most voice recorders can't record incoming audio in a call, at best they use the microphone to capture the audio coming from the speaker and some of them even require the phone to be rooted.
The permission android.permission.ANSWER_PHONE_CALLS only allows you to automatically "Pick up" the phone, but does not give you access to the call audio.
I wish to make automated calls to a list of numbers to then play a recorded audio message to them. The ones that don't pick up get a call back later.
What's the cheapest and easiest way to develop this using some pre-existing tools? Any directions welcome.
Note: You can play back the audio data only to the standard output
device. Currently, that is the mobile device speaker or a Bluetooth
headset. You cannot play sound files in the conversation audio during
a call.
from the official docs
I ended up using automated flow apps (Automate [link below] is one such app that I used. Disclaimer: I've no affiliation with app) to trigger automated calls. The flow was initiate on a GCM notification to the phone, which provided the number for call. With all permissions granted and conditions fulfilling (network, sim, call credits, etc.), app should be able to make call to the number.
Now, I'm trying to figure out how to play an audio message for the receiver.
So, if you were looking for 'how' part, here's the how part. If you know the next steps, enlighten me!
https://play.google.com/store/apps/details?id=com.llamalab.automate&hl=en&gl=US
I have an Android application that begins recording from the microphone when the application starts. In my current version, the user must press a STOP button to stop recording.
How do I detect that the user has stopped talking and use that to trigger the recorder to stop?
Similar to what is implemented in the Speech Recognition functionality in Android. The user stops talking and then the speech is translated. I have seen other apps that do it, like Talking Tom type apps.
As a side note I would also love to show some type of visual indicating that the microphone is receiving sound. Something to show the sound level coming in.
Any help appreciated.
An approach is to use threads on recording and the speech power analyzing process on the recorded bytes,
there's a sample code for your reference: http://musicg.googlecode.com/files/musicg_android_demo.zip
What are you using to record audio? This may provide some clues:
android.media.MediaRecorder:
the constant MEDIA_RECORDER_INFO_MAX_DURATION_REACHED can be used with an onInfoListener.
android.speech.SpeechRecognizer:
attach a RecognitionListener and call onEndofSpeech().