Jas*_*per 7 android android-networking android-audiomanager android-audiorecord
我正在尝试在两个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();
}
Run Code Online (Sandbox Code Playgroud)
我希望这对你有用。:)
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |