Android: какой аудиорежим должен быть настроен для отправки приема голоса между устройствами

Я пытаюсь передать голос / звук (два пути) между двумя Android-устройствами Tablet и Mobile (через java-сокеты).

Планшет может воспроизводить принятый звук (голос) четко, но Mobile воспроизводит звук как шум.
Затем я устанавливаю этот аудиорежим в коде на планшете:
audioManager.setMode (AudioManager.MODE_IN_CALL);

Теперь это приводит к тому, что мобильный получает четкий голос. Но планшет молчит, он не воспроизводит полученный звук (или, скорее, его не слышно).

Я не уверен, какую комбинацию (если есть) режима AudioManager, которую я должен использовать здесь?

Можно обрабатывать звук, который вы хотите воспроизвести в качестве Alarm .

Создайте новый класс с именем AlarmController и попробуйте этот код.

Это работало для меня на Android 4.4.2 (Huawei ascend P7), каждый системный том (Media, Ringtone, Alarm) установлен на 0.

 Context context; MediaPlayer mp; AudioManager mAudioManager; int userVolume; public AlarmController(Context c) { // constructor for my alarm controller class this.context = c; mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); //remeber what the user's volume was set to before we change it. userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM); mp = new MediaPlayer(); } public void playSound(String soundURI){ Uri alarmSound = null; Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); try{ alarmSound = Uri.parse(soundURI); }catch(Exception e){ alarmSound = ringtoneUri; } finally{ if(alarmSound == null){ alarmSound = ringtoneUri; } } try { if(!mp.isPlaying()){ mp.setDataSource(context, alarmSound); mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.setLooping(true); mp.prepare(); mp.start(); } } catch (IOException e) { Toast.makeText(context, "Your alarm sound was unavailable.", Toast.LENGTH_LONG).show(); } // set the volume to what we want it to be. In this case it's max volume for the alarm stream. mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_PLAY_SOUND); } public void stopSound(){ // reset the volume to what it was before we changed it. mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, userVolume, AudioManager.FLAG_PLAY_SOUND); mp.stop(); mp.reset(); } public void releasePlayer(){ mp.release(); } 

Надеюсь, это сработает для вас. 🙂