2012-12-13 24 views
0

我想路由到藍牙語音。路由語音藍牙在Android

下面的代碼是我的播放器。

AudioTrack at; 
try { 
      minbuffer = AudioTrack.getMinBufferSize(8000, 
        AudioFormat.CHANNEL_OUT_MONO, 
        AudioFormat.ENCODING_PCM_16BIT); 
      if (minbuffer < VOICE_SPEECH_SIZE) 
       minbuffer = VOICE_SPEECH_SIZE; 
      at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 8000, 
        AudioFormat.CHANNEL_OUT_MONO, 
        AudioFormat.ENCODING_PCM_16BIT, minbuffer, 
        AudioTrack.MODE_STREAM); 
      at.play(); 

      while (PlayOutblinker == Thread.currentThread()) { 
       byte[] tt = vbuff.take(); 
       at.write(tt, 0, tt.length); 
      } 
     } finally { 
      at.stop(); 
      at.release(); 
      at = null; 
     } 

我搜索,找到如下:

public static void SetRouteBT(Context context, boolean isRoute) {// TODO 
    AudioManager mAudioManager = (AudioManager) context 
      .getSystemService(Context.AUDIO_SERVICE); 
    mAudioManager.setMode(AudioManager.MODE_IN_CALL); 
    mAudioManager.startBluetoothSco(); 
    mAudioManager.setBluetoothScoOn(isRoute); 
} 

,但它不工作。 當我setBluetoothScoOn(true)語音不路由,但斷開揚聲器和麥克風。 問題在哪裏?

回答

1

功能應更改爲下面的代碼:

public static void SetRouteSco(Context context, boolean isRoute) { 
    AudioManager mAudioManager = (AudioManager) context 
      .getSystemService(Context.AUDIO_SERVICE); 
    mAudioManager.setBluetoothScoOn(isRoute); 
    if (isRoute) 
     mAudioManager.startBluetoothSco(); 
    else 
     mAudioManager.stopBluetoothSco(); 
} 

,我需要以下權限了。

<uses-permission android:name="android.permission.BROADCAST_STICKY"/> 
<uses-permission android:name="android.permission.BLUETOOTH"/> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>