说话手机在Android 4.2.2以上版本的MODE_IN_CALL中无效

时间:2015-10-01 07:11:10

标签: android bluetooth android-bluetooth android-audiomanager

我有一个耳机设备,它连接到我的手机。我试图打开手机的扬声器(因为我想将我的声音从耳机转移到我的手机)。但是,虽然我调用了setSpeakerphoneOn(true),但它没有工作。问题是我的耳机听到了我的声音,而不是我的扬声器电话。你能看到我的配置,让我知道什么是问题吗?感谢

_audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
_audioManager.startBluetoothSco();
_audioManager.setMode(AudioManager.STREAM_VOICE_CALL); 
_audioManager.setSpeakerphoneOn(true);
setVolumeControlStream(AudioManager.MODE_IN_CALL);

int maxJitter = AudioTrack.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
track = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION, SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, maxJitter, AudioTrack.MODE_STREAM);

1 个答案:

答案 0 :(得分:2)

我使用以下代码进行远程警报。连接耳机后,手机会发出声音。尝试一次。但不确定这会对你有所帮助。

AudioManager audioManager = 
            (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    DataFields.volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

    audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    audioManager.setSpeakerphoneOn(true);
    audioManager.setMode(AudioManager.MODE_IN_CALL);

    int max = audioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC);
    Log.v("MAXVOLUME",""+max);
    int volume;
    while((volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC))<max) {
        audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0);
    }
    int resID=context.getResources().getIdentifier("alarm", "raw", context.getPackageName());
    mediaPlayer=MediaPlayer.create(context,resID);
    mediaPlayer.setLooping(true);
    mediaPlayer.start();