Due to topographical issues I can't pick up the Otsego County, New York, fire/EMS scanner with a portable scanner. So the first thing was to get a big antenna and put it on my roof. Check.
And a scanner. It's actually not so much scanning, but permanently set to my local dispatch frequency of 46.440 MHz.
That gets fed into one of my computers that's always running. A server running in Apache Tomcat (Java) listens to the audio input, locates the silence, and splits the incoming audio transmission into individual transmissions. It's separate app on the theory that I could deploy this on inexpensive single board computers to remote locations since that part doesn't take much CPU or bandwidth.
The fun happens on the second Tomcat webapp. Since dispatch calls are preceded by tones, it divides the sample into smaller buckets and runs a fast Fourier transform (FFT) on each bucket. From this I can detect the frequency and length of the tones. And from that, short tone pairs, long tones, and some other things that they use where I used to live. From a list I found online and some experimentation I know which department the call is for.
That was a good start, but the next step was making a native iPhone app. That made it work a little more smoothly than having to open up Safari.
The real improvement was after I made it configurable.
With a few clicks I can configure which squads I get push notifications for. It dramatically cut down on the number of notifications I got, because I was really only interested in what happened in the few towns closest to me, anyway.
And that's it! It's currently not open to the public mainly because I'd have to deploy it on a larger public server and pay for bandwidth, and it's not entirely clear if there's a lot of demand or benefit to doing so. And get the app approved by Apple. But it was a cool project, and I use it all the time.