проигрывать аудио при звонках динамика в андроиде> = 8 - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь воспроизвести звук через динамик вызовов в Android с помощью mediaPlayer, но он всегда звучит во внешнем динамике. Вот код, который я использую для изменения места воспроизведения звука.

try {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(tmp_audio_file.getPath());
    } catch (IOException e) {
        e.printStackTrace();
    }

    AudioAttributes attributes;
    if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

        if (event.values[0] >= -SENSOR_SENSITIVITY && event.values[0] <= SENSOR_SENSITIVITY) {
            // Speak in the internal speaker
            Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
            // audioManager.setMode(AudioManager.STREAM_VOICE_CALL);
            attributes =  new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build();
            this.mediaPlayer.setAudioAttributes(attributes);

        } else {
            // Speak in the external speaker
            Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show();
            // audioManager.setMode(AudioManager.MODE_NORMAL);
            attributes =  new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build();
            this.mediaPlayer.setAudioAttributes(attributes);
        }
    }

    if (this.play) {
        try {
            mediaPlayer.prepare();
            mediaPlayer.start();
            Toast.makeText(getApplicationContext(), "playing", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Цель приложения - SDK 28, поэтому mp.setAudioStreamType(AudioManager.STREAM_VOICE_CALL) также не работает.

Как правильно настроить динамик для воспроизведения звука?

...