3

Я пишу приложение для Android для записи звука с синего зуба, но я не могу записать аудио через синий зуб в Android. Вы можете увидеть ниже кодНевозможно записать аудио через Bluetooth в Android

AudioManager am; 
am = (AudioManager) getSystemService(AUDIO_SERVICE); 
    am.setMode(AudioManager.MODE_IN_CALL); 
    am.startBluetoothSco(); 
    am.setBluetoothScoOn(true); 
    Intent intent = getIntent(); 
if (intent.getBooleanExtra("privacy", false)) { 
     showServerPrompt(true); 
     return; 
    } 

    // If the Ringdroid media select activity was launched via a 
    // GET_CONTENT intent, then we shouldn't display a "saved" 
    // message when the user saves, we should just return whatever 
    // they create. 
    mWasGetContentIntent = intent.getBooleanExtra(
     "was_get_content_intent", false); 

    mFilename = intent.getData().toString(); 

    mSoundFile = null; 
    mKeyDown = false; 

    if (mFilename.equals("record")) { 
     try {Intent recordIntent = new Intent(
       MediaStore.Audio.Media.RECORD_SOUND_ACTION); 
      startActivityForResult(recordIntent, REQUEST_CODE_RECORD); 

     } catch (Exception e) { 
      showFinalAlert(e, R.string.record_error); 
     } 

    } 

    mHandler = new Handler(); 

    loadGui(); 

    mHandler.postDelayed(mTimerRunnable, 100); 

    if (!mFilename.equals("record")) { 
     loadFromFile(); 
    } 
} 

Это хорошо работает при использовании телефона в обычном режиме. Тем не менее, он не обнаруживает наличие Bluetooth-гарнитуру и до сих пор использует собственный микрофон телефона, даже если подключена гарнитура.

ответ

1

рабочего код ниже

am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

registerReceiver(new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1); 
     Log.d(TAG, "Audio SCO state: " + state); 

     if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state) { 
      /* 
      * Now the connection has been established to the bluetooth device. 
      * Record audio or whatever (on another thread).With AudioRecord you can record with an object created like this: 
      * new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
      * AudioFormat.ENCODING_PCM_16BIT, audioBufferSize); 
      * 
      * After finishing, don't forget to unregister this receiver and 
      * to stop the bluetooth connection with am.stopBluetoothSco(); 
      */ 
      unregisterReceiver(this); 
     } 

    } 
}, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED)); 

Log.d(TAG, "starting bluetooth"); 
am.startBluetoothSco(); 
+1

Я попробовал этот код, но регистратор не работает. – RaviPatidar

+1

Это работает, но стоит упомянуть, что для него требуются следующие разрешения: BLUETOOTH, MODIFY_AUDIO_SETTINGS и BROADCAST_STICKY. –

Смежные вопросы