关于安卓的Earpiece和扬声器speaker切换问题

安卓的Earpiece和扬声器speaker切换要怎么用代码实现,用如下的代码切换会报错,求解

     AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);  
     private void setSpeakerphoneOn(boolean on) {  
                     if(on) {  
                             audioManager.setSpeakerphoneOn(true);  
                     } else {  
                             audioManager.setSpeakerphoneOn(false);//关闭扬声器  
                             audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);  
                             setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);  
                             //把声音设定成Earpiece(听筒)出来,设定为正在通话中  
                             audioManager.setMode(AudioManager.MODE_IN_CALL);  
                     }  
     }  

http://blog.csdn.net/ouyangtianhan/article/details/47023353