I'm trying to plunge into Android and after an afternoon of looking around (online and in books) I'm seeing very little discussion of CALL AUDIO itself. That is, the full two-way audio stream that is handled during a phone call.
What I'd like to do is save that stream out to a file. But the few references I've seen, seem to indicate
1-That's easy, there's a hook for just that call audio stream
2-That's conditional on the telephoney application having allowed that audio stream to be shared, and by default it is not shared/accessible.
So if the telephony application itself, as shipped in the phone, does not set a flag for sharing that audio stream, it cannot be shared. Unless you manage to break in and rewrite the telephony app in the phone itself, which I imagine is a non-trivial exercise for a newb!
The phone in question being an Atrix, or the Droids in general, which appear to all have this telephony audio stream in an ivory tower. (At least, a couple of programmers have told me they'll never be able to touch it.)
So...anyone with a rather specialized knowledge in this area to share? Has Motorola locked up their telephony audio out of reach? Or, am I totally missing the picture?
Seems like the SDK, the online references, the books (yes, I looked at books!) all don't bother to discuss telephony functions in any great depth, besides making calls.
Related
Hi,
I'm trying to record both uplink and downlink speech streams of my XDA II during a phone call.
I tried many different things but couldn't get working any of them:
- I first tried the waveIn/waveOut API and thought, in the first place, that I was able to record the incoming and outgoing audio streams, mixed together. But I quickly realise that what I was recording was only the sound from the mike, and that the speech of the downlink speech was going from the speaker through the air to the mike. So I was recording my own voice (from the mike) and the voice of the other part (from the mike too as the sound was going from the speaker to the mike).
- Then I had a look to the TAPI API. I was able to answer calls but it was impossible for me to access to any of the audio streams. I think it's a limitation of the device, and that the TAPI API hasn't been fully implemented on the XDA2. But I can't be sure of that.
- Now I'm trying to use RIL, which seems to be a layer below the other APIs. I believe it might be possible to access to the audio streams, but I have no idea how.
- I also think that the audio data of both streams must be stored in the memory, somewhere in the device. But where?
Any ideas or suggestions on this? Do you think I should keep investigating RIL?
Thanks a lot
Ben
There is 3rd party software that will do this.
cruisin-thru said:
There is 3rd party software that will do this.
Click to expand...
Click to collapse
...which one is it please?
THANX
buzz
Re: Record uplink/downlink speech streams? (WaveIn, TAPI, RI
there is no such a program. The only thing yor program can record is the sound from microphone. This can be tested by connecting a headset to the device and trying to record anything during call. Only ugly devices like Anextek SP230 can record both sides because microphone is wired to the speaker.
You cannot use RIL or TAPI to record calls. It is a limitation of both hardware and OS. Maybe WM2005 would support this.
Yes I don't thinck there is such a program (I've been looking for such a program for the past 2 weeks). All recording softwares you can find don't do much more than using the waveIn/waveOut API and so they record only the sound from the microphone.
Mamaich: Would the Anextek SP230 allow me to record properly both sides even if I use a headset while recording? How come the microphone is wired to the speaker? Does that mean that the sound going to the speaker goes also to the microphone? Wouldn't that introduce a lot of echo in the network during phone calls?
Even if we are limited by the OS there must be a way of getting the speech, because somehow the audio data must be stored somewhere in the device (either the GSM memory or the device memory). And that's what I would like to find out.
Thanks.
serbenet said:
Would the Anextek SP230 allow me to record properly both sides even if I use a headset while recording?
Click to expand...
Click to collapse
Yes. I owned Rover S1 which is based on Anextek and checked this.
How come the microphone is wired to the speaker? Does that mean that the sound going to the speaker goes also to the microphone? Wouldn't that introduce a lot of echo in the network during phone calls?
Click to expand...
Click to collapse
There is no echo during phone calls, but when using VoIP and similar programs the echo is terrible.
Even if we are limited by the OS there must be a way of getting the speech, because somehow the audio data must be stored somewhere in the device (either the GSM memory or the device memory).
Click to expand...
Click to collapse
Call is processed by the GSM module that has its own CPU (some sort of ARM with DSP extensions). You may reverse engeneer its firmware, but it is very complex. On XDAs its OS is based on "Nucleus PLUS - Version 1.0.G1.1" by ATI. In Anextek it is Siemens MC45 module.
Well all the people that claim that Vito sound software and others record both sides of conversation on the forum are lying?
Also it seems this article must be untrue
http://asia.internet.com/news/article.php/1383691
It says that 2 way recording is possible on the xda.
excerpt: Designed for busy people on the move, the device combines a color personal digital assistant (PDA) and General Packet Radio Services (GPRS) handset into one compact unit. Among the things that the users are able to do with the unit include recording a two-way phone conversation or a 'live' conversation, listening to music, watching video clips and reading e-books.
I have now tried vito sound recorder 2005 and it doesnt allow both sides of conversation to be recorded on my xda, I took a look around and it seems the old siemens sx45 had the capability with its recorder software, here is an excerpt.
The sound recorder lets you record from the built in microphone or for ultimate fun, both sides of a phone conversation, which can be played back whilst in conversation. Confuses the hell out of folks when they hear what they’ve just said.
In a sens they are not really lying because you can record both sides of conversation, if you allow the sound from the speaker to go to the microphone. If you don't use a headset and the volume of your speaker is high enough, that will be the case. The voice of the other part will go through the air before being recorded. That's why people claim that you can record both sides of conversation even though the quality of your recording is rubbish.
With vito you get perfect reproduction of the caller but zero from yourself.
Hi All
I'm wondering if the above is possible, that is to redirect sound from the main speakers of devices to the receiver port which is the part which we put to our ears when answering traditional calls usually.
Reason for my asking is because Eten (now called Glofiish) phones have this capability and is especially useful for Skype calls. Right now my Skype calls are coming out from the speakers and I would really love to use my Universal like those new WIFI phones for Skype.
Is this possible?
Can't be done.
I wouldn't go as far as impossible. But it certainly would require a lot of very low level hacking, if it is possible at all. Simular questions have been asked here and nobody knows how to do it. The problem is (at least on my phone) the receive is connected to the GSM/CDMA chip set and the speaker is connected to the CPU that runs Windows Mobile. During a normal phone call the audio stream goes directly to the receiver without going the main CPU. So Windows Mobile doesn't need or have access to the receiver. So programs that run on the main CPU like Skype also don't have access to the receiver either. You might want to try using a head set.
ps the more common question that has the same issue: Can I get access to (or record) the inbound audio stream during a regular phone call?
Has anyone had any experience here writing code to take advantage of the internal speaker on our phone devices?
I know the external speaker is a standard peice of WM hardware, but there must be a way to call the internal speaker as well... this would be very useful for coding VOIP apps, as you can imagine.
Any thoughts?
Apparently the elusive Cicero networks product "Cicerophone" handled VOiP calls using the internal speaker!
This is something that other developing apps, such as Skype for WM, have failed to figure out so far.
Unfortunately, Cicero is very secretive, and as of yet no one else seems to know how to achieve this.
Anyone here know anything?
Which one is the internal speaker?
I think I wrote some audio routing code for this once...
V
By "internal" I mean the handset speaker usually reserved only for phone calls.
Windows Mobile devices have always had an audio speaker which is easily accessible to developers as a standard audio device. However, phone devices have a SECOND speaker, one that is smaller and not as amplified, which is used to listen to phone conversations when the device is held up to your head. This smaller speaker is what I've seen called the "internal", although I admit that it may not be the correct term for it.
I'm asking because I would actually like to route audio to that speaker for certain applications, especially VoIP, which until now has been going to loudspeaker (which causes audio feedback and privacy issues).
Do you have experience with this sort of thing?
Devices from Eten, e.g. X500, M700 have a skype service programe that redirect vioces from speaker to earphone. I don't know how it works but i just made a test to trick the service and direct the sound to earphone when making VOIP calls.
Dishe said:
Apparently the elusive Cicero networks product "Cicerophone" handled VOiP calls using the internal speaker!
Click to expand...
Click to collapse
Hi! Where can i buy/download cicerophone ?
Partially Solved!!!!!!!!!!!!!!!!!!!!!
I apologize for cross posting, but if you use the provided wired headset, everything is OK and voip (i.e.: Fring, etc) runs great, no echo e no voice feedback.
TRY IT!!!!!!!
I thought we all knew that already...
I've been using a BT headset and the BTAudio app to reroute all sound input/output to the headset. Problem is, you have to initialize it every time you want to make/receive a VOIP call, otherwise it will eat your battery very quickly since it keeps a constant audio channel live to your headset, even when there is no sound currently being played.
The problem is, when I leave voip on and slip the phone in my pocket, I'm not always using my wired headset and/or BT headset when the phone rings, and its silly that I can't use hardware that's sitting on my device in my hands.
Hi ,
I searched and couldn't find cicerophone anywehere .
do u know by any chance where we can download or buy it ?
tnx
no, its not for sale.
It was developed to sell to a telecom, and they are still trying to sell the technology. There never was a consumer edition of the software, only beta and evaluation versions that some people were fortunate enough to get their hands on for review purposes. They have done a very good job of keeping a VERY tight lid on this- its not available ANYWHERE, and they don't have any plan of making it available to the general public.
This tree has been barked up many times, its a lost cause.
Maybe some guy can have a look at the SkypeSettings.exe and SkypeSettings.dll files from Eten.
From what I saw, it only deals with the WAV1: device. No more devices are listed. Probably it captures the audio from it and than sends it to front speaker.
It does not run on my PDA. The settings tab also appears grayed out, so the app know it is not an Eten.
Unfortunately I could not debug the file on my device, given that IDA does not work on WM6, but probably both files have a check for Eten device, and if it is of a different brand the apps terminate.
This may be off topic for the forum, but I'm wondering if I could throw some ideas around in the hopes that perhaps someone from here has done something similar and could offer suggestions.
I've got this old IBM thinkpad attached to my stereo system which I use as a streaming media computer for my music (obsolete laptop, but good for playing internet streams or media files on my home network over the stereo).
I very often attach my pocket pc (HTC Titan) as my music player to the stereo as well, usually using a portable a2dp receiver with a 3.5" port (i.tech r35, to be exact) to stream music wirelessly.
Problem with this is that I constantly need to charge the r35 adapter because it won't charge the battery while playing music (poor design choice).
The obvious solution, since my laptop is always hooked up anyway, would be to add a bluetooth dongle to the laptop and use it at a receiver.
I tried this, but sadly WinXP does not support the A2DP profile in its native stack, and I don't have a valid license for any of the third party ones (broadcomm, Bluesoleil, etc).
Is there a simple way to support a2dp stream receiving from this laptop? An open-source bluetooth stack perhaps?
The truth is, I don't really need *windows* on there for what I use it for, I would be open to installing a linux distro if it had a2dp support built in (and wasn't too complicated to install and use... I've got very limited linux experience).
What do you guys think?
nobody has any pointers?
Wouldnt it be easier to do via wifi? Better range and higher quality than A2DP too?
i've used my wizard to stream to my laptop before with just the native bluetooth stack on the laptop
i'm sure you could just buy a bluetooth dongle and sync it via A2DP that way
Download bluesoleil, it has an A2DP server you can use to send audio from PPC to the laptop.
shandar said:
Wouldnt it be easier to do via wifi? Better range and higher quality than A2DP too?
Click to expand...
Click to collapse
Um... I'm not sure that you understood the concept here. First of all, when properly configured, a2dp is virtually indistinguishable to wired speakers when dealing with mp3 files (you lose a slight amount since it IS compressing the data, but not any more than a well encoded mp3). Second, range isn't an issue since I plan to control the music from the room I'm in (why would u want to play the music in a room far enough away that u can't hear it?).
Third, unless I haven't heard of a new Wifi audio protocol, I think what you're talking about is TOTALLY different. I stream music to my stereo from networked computers all the time, but thats not what I'm talking about here.
I use my ppc as my personal music player, and sometimes I want my playlist on the ppc to come out of the stereo system in my house. A2dp lets u do that by simply BEING IN THE SAME ROOM AS IT. I frankly don't see how WiFi would be an acceptable alternative to this since there is no audio transport support built in- its designed mostly for just networking.
I'd love to be proved wrong, so please share with me if I'm missing something here, but how would Wifi be better?
thenext1, I actually have bluesoleil, but its not registered to my device so its stuck on a 5mb trial version (5mb of info and it stops). I was thinking of something free / open source, which is why I thought about a linux option. if there is a free windows stack for A2dp, I'd love to try it...
This looks intersting I am about to try this bluesolei
What I'm looking to do is actually route calls to my laptop mic and speakers when my phone is docked in the cradle...
I'm thinking since this is the same principle that it can be accomplished?
Let me know if anyone has done this before...
it is kind of "off-topic" but i think it was relavent to post here because it deals with the same principles
surgex0 said:
This looks intersting I am about to try this bluesolei
What I'm looking to do is actually route calls to my laptop mic and speakers when my phone is docked in the cradle...
I'm thinking since this is the same principle that it can be accomplished?
Let me know if anyone has done this before...
it is kind of "off-topic" but i think it was relavent to post here because it deals with the same principles
Click to expand...
Click to collapse
It's not the same principle, A2DP is for hi-quality audio, you are trying to make the handsfree profile work.... It should work, since bluesoleil can also do that
Dishe said:
Um... I'm not sure that you understood the concept here. First of all, when properly configured, a2dp is virtually indistinguishable to wired speakers when dealing with mp3 files (you lose a slight amount since it IS compressing the data, but not any more than a well encoded mp3). Second, range isn't an issue since I plan to control the music from the room I'm in (why would u want to play the music in a room far enough away that u can't hear it?).
Third, unless I haven't heard of a new Wifi audio protocol, I think what you're talking about is TOTALLY different. I stream music to my stereo from networked computers all the time, but thats not what I'm talking about here.
I use my ppc as my personal music player, and sometimes I want my playlist on the ppc to come out of the stereo system in my house. A2dp lets u do that by simply BEING IN THE SAME ROOM AS IT. I frankly don't see how WiFi would be an acceptable alternative to this since there is no audio transport support built in- its designed mostly for just networking.
I'd love to be proved wrong, so please share with me if I'm missing something here, but how would Wifi be better?
Click to expand...
Click to collapse
Wow. You have got some aggression issues.
First of all, read through the entire post above and replace A2DP with WiFi and see what comes out. There is no advantage of using A2DP over Wifi if you have wifi on your phone. Set up a simple streaming server on your mobile then stream it over Wifi to your laptop. After the first configuration you run one application on your phone and press play in whichever media player you have on your laptop to start the music. Dead easy. Full quality, no reencoding or anything. Control the music from your PDA etc etc.
Not entirely sure what you are on about with the range? Wifi works perfectly if you're in the same room, what's A2DPs advantage? You dont have to stand 100 m from your stereo just because you're using wifi
Oh, and reencoded A2DP is _not_ indistinguishable from MP3s on normal speakers. Unless you mean laptop speakers. A2DP is a lossy encoding that is limited by the connection speed (and thus signal strength) which means that you have to be right next to the bluetooth receiver to get maximum quality. As you move away from the receiver the signal will drop, thus the speed will drop along with sound quality. Same thing happens with Wifi but the lowest connection speed over Wifi is still way beyond what you need to stream music at decent quality.
And.. ehm.. Both wifi and bluetooth are ways to transfer data, A2DP is just a protocol like FTP or HTTP. No magic there, Bluetooth and Wifi are basically the same thing but with different bandwidth and range capacities. In this case you'd use HTTP to transfer the music over Wifi instead of A2DP over Bluetooth, result is the same.
why isn't it the same principle?
my motorols HT820 headphones are A2DP and it has a microphone on them and i use it as a headset and to play music
...
BTW if you're looking for something free and linuxy why not use VLC over wifi
i'm almost positive they have a mobile client and it would def. be better than a2dp
I have to say I share the thread starter's frustration on this. Perhaps a little clarification is in order.
A2DP is far better suited to the purpose than a stream server on wifi in this case, because was simply designed to do exactly what Dishe is trying to do - connect an audio source to an audio sink without wires. Given the right software stack, all this should involve is a quick pairing procedure.
Streaming audio on the other hand, especially from a mobile device, is somewhat tedious - hacky at best, but certainly not "dead simple". You'd have to set up a stream server, probably third party and definitely not part of standard wifi installs. A audio streaming server on a mobile device could prove to be quite a resource hog as well. Attempting to this so in a time where bluetooth dongles (especially the made in china ones) that come with Bluesoleil go for next to nothing sounds like unnecessary fuss to me.
About a solution, I think picking up a cheap bluetooth dongle with Bluesoleil installed would be the most painless way to go. Linux and bluetooth don't exactly play nice from experience, but I've never actually tried to run an A2DP sink on it. You could do some reading on BlueZ, which is linux's standard stack and see if anyone else has had any luck.
Right now, A2DP sources are more common on PC stacks than A2DP sinks - people usually want to send audio out to a wireless headset or something instead of recieve audio - so google doesn't seem to be of much help. I'm currently trying to get it to work as well, and will test BlueSoleil within the week or so on a Windows computer and post back here if it works. Don't hold your breath, though.
I want to play some background music, so my GF and I can both hear the music or song, how can I do it?
Theoretically, you'd need to write a script to play the music over the Windows Mobile TAPI (Telephony API), which would require you to write a piece of software (not easy) to hijack (take ownership of) the call in progress, and switch the audio input stream to the stereo output.
Or you could just try playing the sound while you're in the call and hoping she hears it.
Either way, the sound quality is going to be dreadful. You know how, when your signal is weak, everything the other person says seems to become choppy? This is because you're communicating over a digital audio stream- as you go into a low-signal state, the bandwidth available for that stream decreases.
As bandwidth is a measure of the amount of data you can send per unit time, a lack of bandwidth means a limited amount of data is going to be able to trans-navigate the stream, causing you to only get certain pieces of the audio, causing that choppy jitter sound. In order to minimize the amount of data loss in a telephone, the stream is optimized to operate best near the vocal range.
When you start playing music over the telephone line, you're rapidly increasing the amount of data that needs to be sent per unit time; and, as your bandwidth remains constant, there's going to be a noticeable loss in data, especially data pertaining to non-vocal ranges.
In short, playing music over your mobile phone isn't the greatest of ideas- and that's why very few developers even consider the idea when writing applications.
Most of the time, I got pretty good signal in new york city. I don't really worry about the choppy sound. just for fun some time. but I just can't find any related software. I heard about that it's impossible to do this on Windows mobile system.