Automatic switching to the strongest Wi-Fi Access Point
While not the easiest way around the problem, it is possible to do this using Tasker. This is a program that allows you to script various things within Android (e.g. I have it set to turn off the keyguard when I connect to my home SSID.) The following profile for detecting Wi-Fi signal is quoted from this thread:

Profile: Low WiFi (1)
Event: Display Unlocked  Enter: WiFi (2)  Task: WiFi Sig (1) 
A1: Variable Set [ Name:%wfs To:%WIFII Do Maths:Off Append:Off ] 
A2: Variable Split [ Name:%wfs Splitter:Sig: Delete Base:Off ] 
A3: Variable Clear [ Name:%wfs1 Pattern Matching:Off ] 
A4: Variable Split [ Name:%wfs2 Splitter: Delete Base:On ] 
A5: Variable Set [ Name:%WIFISG To:%wfs22 Do Maths:Off Append:Off ] 
A6: Array Clear [ Name:%wfs2 ]  Task: WiFi (2) 
A1: Write File [ File:wifitest.txt Text:Task start: %DATE %TIME  Append:On ] 
&lt;Signal check&gt; 
A2: Wait [ MS:0 Seconds:15 Minutes:0 Hours:0 Days:0 ] 
A3: Goto [ Type:Action Label Number:1 Label:End ] If [ %SCREEN ~ off ] 
A4: Goto [ Type:Action Label Number:1 Label:End ] If [ %WIFII !~  *CONNECTION* ] 
A5: Perform Task [ Name:WiFi Sig Stop:Off Priority:5 Parameter 1  (%par1): Parameter 2 (%par2): Return Value Variable: ] 
A6: If [ %WIFISG &lt; 3 ] 
A7: WiFi [ Set:Off ] 
A8: Wait [ MS:0 Seconds:0 Minutes:5 Hours:0 Days:0 ] 
A9: WiFi [ Set:On ] 
A10: End If 
A11: Goto [ Type:Action Label Number:1 Label:Signal check ] 
&lt;End&gt; 
A12: Write File [ File:wifitest.txt Text:Task end: %DATE %TIME  Append:On ]


I've never personally done anything that complicated with the Wi-Fi, but the profiles I have set around SSID work like a charm.