Android based smart phones are very famous and common worldwide. Many time we want to record our phone calls on phone. But in android phone there is no inbuilt call recording feature(except some Chines and Korean android phones). There is not preloaded app for recording our call on android phone.
Call recordings are illegal in some countries and regions.
In android market place you will find lot of apps claiming to record your call on android phone. But these app are not working properly on every phone and in every scenario because android api?s for call recording are blocked intentionally from OS and hardware makers. Most of the app are using MIC to record calls. But that will not work in case of head phone or Bluetooth head sets. And incoming voice quality will depend upon you phone hardware how MIC is designed.
On some models some api?s works but overall it is not possible to record call using Android api?s.
If you are a developer the you will get following Android SDK api?s to record call?s.
MediaRecorder and MediaRecorder.AudioSource classes are exposed to record audio and call?s.
For recording call android has expose three audio sources but these are not working properly.
- VOICE_CALL - Voice call uplink + downlink audio source
- VOICE_DOWNLINK - Voice call downlink (Rx) audio source
- VOICE_UPLINK - Voice call uplink (Tx) audio source
VOICE_CALL source is exposed for call uplink and downlink both side voices but on most of the phone this API source will not work and it will throw some exception so you or anyone can not use this.
VOICE_DOWNLINK and VOICE_UPLINK can record only one side voices and on android technically you can record only one source at a time. And voice quality for uplink and downlink is crap no use so we can not use these two options.
So if you want to record voice using MIC then it will work for your purpose but don?t use head piece when you want to record some calls.
So please be careful before downloading any app. Try to use only free apps .
or just make your own app if you are a developer.
Use MediaRecorder class
final MediaRecorder recorder = new MediaRecorder();
final String path;