"Вы можете говорить по-русски?" sounds awkward to me. As if something can prevent the speaker from speaking in Russian. Like he is in CIA headquarters and if he starts speaking in Russian he's going to be arrested right away.
"Вы умеете говорить по-русски" is what I consider the right way to say "Can you speak Russian".
...Можете... = Can you say this in Russian? - Вы можете сказать это по-русски?
Speaking about languages:
Уметь говорить ... is about whether a person has the knowledge of Russian or not.
Мочь говорить ... is about whether a person can use the knowlege or not.