Figured it out. It looks as though the Microphone.activityLevel is -1 until you add a SampleDataEvent listener. You do not need to add this if you are streaming to the server. In my tests I was updating my reference to the mic for checking the activityLevel in an update loop. I did not update the SampleDataEvent lsitenre since I was not actaully recording, just checking the mic input level, and did not think it needed tobe in place.
It seams possible that the Microphone checks that it either has a SampleDataEvent listener, or is connected to a server before updating activityLevel, I just have never seen that kind of thing done.
I am not certain this is the case, but it is what it looks like. If anyone has more infomation, please share.