Android:设备间收发语音需要设置什么音频模式?



我正在尝试在两个Android设备平板电脑和移动设备(通过java套接字)之间流式传输语音/音频(双向)。

平板电脑可以清晰地播放接收到的音频(语音),而手机播放接收到的音频为噪音。
然后我在平板电脑上的代码中设置了这个音频模式:
audioManager.setMode (AudioManager.MODE_IN_CALL);

这现在导致手机接收清晰的声音。但是平板电脑静音了,它不播放接收到的音频(或者说它听不见)。

我不确定AudioManager模式的什么组合(如果有的话)我应该在这里使用?

这是可能的处理你想要播放的声音作为Alarm

创建一个名为AlarmController的新类并尝试下面的代码

我在Android 4.4.2(华为ascend P7)上使用每个系统音量(媒体,铃声,闹钟)设置为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();
}

我希望这对你有用。:)

相关内容

  • 没有找到相关文章

最新更新