9

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

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

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

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

+1

мой ответ работает на вас? –

ответ

2

Возможно воспроизведение звука, который вы хотите воспроизвести, как Alarm.

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

Это работает для меня на Android 4.4.2 (Huawei Ascend Р7) с каждый объем системы (Media, Мелодия, 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(); 
} 

Я надеюсь, что это работает для вас. :)

+1

Я не знаю, почему награда была присуждена этому ответу - она ​​не была выбрана в качестве принятого ответа - также этот ответ не имеет отношения к заданному вопросу. – Jasper

+0

Это был единственный вопрос, который был задан и имел 2+ голосов после истечения времени. –

+0

mode_alarm не предназначен для голосовой связи. – shantanu