Потоковое аудио с удаленного сервиса и воспроизведение в динамиках - PullRequest
1 голос
/ 09 июля 2019

Служба потоковой передачи запущена с помощью RTP Stream class. Я мог бы транслировать аудио с удаленного IP. Я использовал wireshark для проверки соединения, и он получает пакеты с сервера. Теперь я хотел бы воспроизвести полученный звук в колонках или наушниках Android. Я пытался использовать Mediaplayer class, но, похоже, чего-то не хватает. Как я могу двигаться вперед?

public class audioService extends Service {

AudioStream audioStream;
Handler handler;
Runnable runnable;
Context context;

@Override
public IBinder onBind(Intent intent) {
    throw new UnsupportedOperationException("Not yet implemented");
}

@Override
public void onCreate(){
    super.onCreate();

}

@Override
public int onStartCommand(Intent intent, int flags, int startId){
    new Thread(new audioRunnable()).start();
    return super.onStartCommand(intent, flags, startId);
}

private class audioRunnable implements Runnable {
    @Override
        public void run() {

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
            StrictMode.setThreadPolicy(policy);
            AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
            audioManager.setSpeakerphoneOn(true);
            AudioGroup audioGroup = new AudioGroup();
            audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);
            MediaPlayer mediaPlayer = new MediaPlayer();
            mediaPlayer.setAudioStreamType(audioManager.STREAM_RING);
            InetAddress inetAddress;

            try {

                inetAddress = InetAddress.getByName("10.0.0.0");
                audioStream = new AudioStream(inetAddress);
                audioStream.setCodec(AudioCodec.PCMU);
                audioStream.setMode(RtpStream.MODE_NORMAL);
                InetAddress inetAddressRemote = InetAddress.getByName("192.00.00.00");
                audioStream.associate(inetAddressRemote, 8088);
                audioStream.join(audioGroup);

                // start the media player
                mediaPlayer.setDataSource(context, Uri.parse("10.0.0.0"));
                mediaPlayer.prepare();
                mediaPlayer.start();

            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}

    @Override
    public void onDestroy(){
        super.onDestroy();
    }

}

Примечание: у меня есть разрешения в файлах манифеста <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...