Служба потоковой передачи запущена с помощью 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" />