开发者

How to create auto answering machine for Android [closed]

开发者 https://www.devze.com 2023-02-05 12:56 出处:网络
Closed. This question needs to be more focused. It is not currently accepting answers. Want to improve this question? Update the question so it focuses on one problem only by editing this
Closed. This question needs to be more focused. It is not currently accepting answers.

Want to improve this question? Update the question so it focuses on one problem only by editing this post.

Closed 6 years ago.

Improve this question

Is it possible to write an auto answering machine for Android? For example, when an incoming call event occurs, the application plays a voice message.

How ca开发者_高级运维n I do this?


Android applications do not have access to the in-call audio stream at this time. So, presently, your application is not possible, sorry.


At the end of 2013, it's still not possible. There are many other answers (possibly I'll write a FAQ sum-up after finishing this task), but shortly,

  • it is required for phone hardware's vendor to implement additional "input pin" in the modem and expose it to Android audio layers (kernel -> HAL) to accept prepared audio streams (like 8khz wav).

Currently, some Qualcomm procs supports that.

Why it's done so? My opinion: to avoid audio processing latency to be heard by non-Android users -> to avoid humiliation from non-Android users. (Well, android is created for lags). Other opinions include: privacy reasons, will of phone manufacturers (especially these Chinese, who sell 1000's kinds of GSM-based alarms, sensors, etc), lazyness, and energy saving.

When you're in call on Android, something like this happens:

  1. OS -> chipset: set microphone volume to 100%, disable energy saving, activate DSP/DAC/ADC components.
  2. voice -> microphone -> GSM baseband processor: encoded raw data
  3. voice -> microphone -> mirror to Android's mediarecorder audio source: mic data

(someone expected microphone -> Android -> own filter -> GSM route, ha?)

This architecture simply has no common defined place for sending data from Android to GSM channels; from an ordinary manufacturer's point of view, this is like giving a direct access to GSM radio chip to enable turning Android into soft-radio working in 900-2400 MHZ range.. e.g. something esotheric, illegal and unnecessary for end-user. Anything available in libmedia, MediaSource etc - has nothing in common with raw uplink access.

For unknown reasons, there are back-doors available from different vendors; I still found nothing with MTK chipset, but googling for Qualcomm/Android/voice/uplink/alsa/root seems to be giving a good start here :)

P.S. There is also a DTMF signalling facility, available with a little undocumented API usage.


P. P.S. Answering machine is something that plays voice to someone who called the number of that certain answering machine. Its not a recorder, and is different from voice mail. I don't get why 100% of the answering machine questions are about recording or auto-accepting the call.


AirVoice can do that. Requires root access and works on certain phones only.

Can someone explain why is it so hard?

The vrecorder application can record the in-call audio stream and AutoAnswer can automatically answer incoming call, without requiring rooting the phone.

The solution (if it works) is not reliable as the phone might be powered off or have bad or no signal reception.

Serious users would be better off to using dedicated VoiceMail (VM) providers, such as http://freephoneline.ca or http://www.youmail.com. To use these services you purchase virtual phone number (with a subscription plan) from them and configure your carrier to forward unanswered incoming phone calls to the virtual phone number. They would then pickup the phone call, play greeting of your choice, do voice-to-text transcription (if available) and send the message to a dedicated app on your phone.

0

精彩评论

暂无评论...
验证码 换一张
取 消