streaming – ProgramaciónExtrema.com https://programacionextrema.com Tutoriales de programación! Sun, 22 Nov 2015 20:48:18 +0000 es hourly 1 https://wordpress.org/?v=5.6.15 https://programacionextrema.com/wp-content/uploads/2015/10/cropped-icon-programacion-extrema-32x32.png streaming – ProgramaciónExtrema.com https://programacionextrema.com 32 32 Streaming de audio en HTML5 https://programacionextrema.com/2015/11/08/streaming-de-audio-en-html5/ https://programacionextrema.com/2015/11/08/streaming-de-audio-en-html5/#respond Sun, 08 Nov 2015 22:46:41 +0000 http://programacionextrema.com/?p=526 HTML5 nos brinda muchas características nuevas, entre ellas la posibilidad de transmitir audio. En este tutorial aprenderemos a realizar un streaming de audio en HTML5, esto nos puede ser de gran utilidad para reproducir una radio. Para realizar esta tarea vamos a utilizar la librería audiojs que se la pueden descargar desde su sitio oficial:… Read More

La entrada Streaming de audio en HTML5 aparece primero en ProgramaciónExtrema.com.

]]>
HTML5 nos brinda muchas características nuevas, entre ellas la posibilidad de transmitir audio. En este tutorial aprenderemos a realizar un streaming de audio en HTML5, esto nos puede ser de gran utilidad para reproducir una radio.

Para realizar esta tarea vamos a utilizar la librería audiojs que se la pueden descargar desde su sitio oficial: http://kolber.github.io/audiojs.

Librería audiojs

Librería audiojs

¿Cómo hacer un streaming de audio en HTML5?

Para realizar esto primero debemos importar la librería audiojs en nuestro HTML con la etiqueta script, luego debemos inicializar el audio y agregar nuestra URL del streaming con la etiqueta HTML5 audio:

<!DOCTYPE html>
<html>
  <head>
    <title>Streaming de audio en HTML5</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
	<!--Importamos la librería-->
	<script src="audiojs/audio.min.js"></script>
	<script>
	  // Inicializando los audios
	  audiojs.events.ready(function() {
		var as = audiojs.createAll();
	  });
	</script>
  </head>
  <body>
	<audio src="http://listen.radionomy.com/abc-jazz" preload="none"></audio>
  </body>
</html>

Bueno gente, de esta forma vamos a poder reproducir nuestra radio shoutcast con HTML5 en una página web. Espero que les sea de gran utilidad y ante cualquier problema no duden en dejar un comentario.

La entrada Streaming de audio en HTML5 aparece primero en ProgramaciónExtrema.com.

]]>
https://programacionextrema.com/2015/11/08/streaming-de-audio-en-html5/feed/ 0
Streaming de radio con Android usando Java (parte 2) https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java-parte-2/ https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java-parte-2/#comments Thu, 29 Oct 2015 20:49:15 +0000 http://programacionextrema.com/?p=382 Este tutorial es la continuación del anterior, en el que aprendimos a crear una streaming de radio muy básico donde al iniciar la aplicación comenzaba automáticamente la radio. En este vamos a incluirle una simple barra de control para manipular el audio y darle pausa o play. ¿Cómo agregar una barra de control a un… Read More

La entrada Streaming de radio con Android usando Java (parte 2) aparece primero en ProgramaciónExtrema.com.

]]>
Este tutorial es la continuación del anterior, en el que aprendimos a crear una streaming de radio muy básico donde al iniciar la aplicación comenzaba automáticamente la radio.
En este vamos a incluirle una simple barra de control para manipular el audio y darle pausa o play.

¿Cómo agregar una barra de control a un streaming de radio con Android usando Java?

Para realizar esto y siguiendo con lo que habíamos hecho en el anterior tutorial vamos a comenzar agregando los componentes en la vista. En nuestro xml (activity_main.xml en mi caso) agregaremos el siguiente código:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.programacionextrema.radio.MainActivity" >

    <LinearLayout
        android:id="@+id/controlLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:layout_margin="5dp"
        android:gravity="center_horizontal" >

        <RelativeLayout
            android:id="@+id/volumeLayout"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="10dp"
            android:background="@drawable/volume_background"
            android:gravity="center_vertical"
            android:padding="3dp" >

            <ImageView
                android:id="@+id/volumeImageView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="@string/iconVolumeDescription"
                android:src="@android:drawable/ic_lock_silent_mode_off" />

            <SeekBar
                android:id="@+id/volumeSeekBar"
                android:layout_width="180dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="36dp"
                android:indeterminate="false" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/layoutButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/volume_background"
            android:padding="3dp" >

            <ToggleButton
                android:id="@+id/playPauseButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/start_pause_button_selector"
                android:contentDescription="@string/clear"
                android:minHeight="64dp" />
        </RelativeLayout>
    </LinearLayout>

</RelativeLayout>

Seguido de esto debemos agregar los siguientes strings en res/values/strings.xml:

<string name="clear"></string>
<string name="iconVolumeDescription">Volumen</string>

Luego debemos crear (si no la tenemos) una carpeta llamada drawable dentro del directorio res. Ahí vamos a incluir los siguientes tres archivos que representan el diseño de la barra de control que incluimos en nuestra vista:

media_button_layer.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:dither="true"
            android:shape="oval" >
            <size
                android:height="15dp"
                android:width="15dp" />

            <solid android:color="#000" />
        </shape>
    </item>
    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:dither="true"
            android:shape="oval" >
            <size
                android:height="13dp"
                android:width="13dp" />

            <gradient
                android:angle="90"
                android:endColor="#0099FF"
                android:startColor="#003399"
                android:type="linear" />
        </shape>
    </item>
    <item>
        <selector>
            <item
                android:drawable="@android:drawable/ic_media_pause"
                android:state_checked="true"/>
            <item
                android:drawable="@android:drawable/ic_media_play"
                android:state_checked="false"/>
            <item android:drawable="@android:drawable/ic_media_play"/>
        </selector>
    </item>

</layer-list>

start_pause_button_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:drawable/ic_media_pause" android:state_checked="true"/>
    <item android:drawable="@android:drawable/ic_media_play" android:state_checked="false"/>
    <item android:drawable="@android:drawable/ic_media_play" />
</selector>

volume_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid android:color="#000" />
    <corners android:radius="5dp" />
</shape>

Una vez que ya terminamos con los pasos anteriores debemos agregar la funcionalidad con Java para que al apretar play o stop realice la acción adecuada y además que se pueda manejar el volumen. Para esto vamos a incluir el siguiente código, el cual es una versión mejorada del tutorial anterior:

package com.programacionextrema.radio;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Toast;
import android.widget.ToggleButton;

public class MainActivity extends Activity {

	private MediaPlayer player;
	private String url = "Aquí va la URL";
	protected boolean isPlay = false;
	private ToggleButton buttonStreaming;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// Inicializo el objeto MediaPlayer
		initializeMediaPlayer();

		// Inicializando el volumen
		initializeVolume();

		buttonStreaming = (ToggleButton) findViewById(R.id.playPauseButton);
		buttonStreaming.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				buttonStreaming.setEnabled(false);
				isPlay = !isPlay;

				if (isPlay) {
					startPlaying();
				} else {
					stopPlaying();
				}
			}
		});
	}

	public void stopPlaying() {
		if (player.isPlaying()) {
			player.stop();
			player.release();
			initializeMediaPlayer();
			buttonStreaming.setEnabled(true);
		}
	}

	private void initializeVolume() {
		try {
			final SeekBar volumeBar = (SeekBar) findViewById(R.id.volumeSeekBar);
			final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

			volumeBar.setMax(audioManager
					.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
			volumeBar.setProgress(audioManager
					.getStreamVolume(AudioManager.STREAM_MUSIC));

			final OnSeekBarChangeListener eventListener = new OnSeekBarChangeListener() {
				@Override
				public void onStopTrackingTouch(SeekBar seekBar) {
				}

				@Override
				public void onStartTrackingTouch(SeekBar seekBar) {
				}

				@Override
				public void onProgressChanged(SeekBar seekBar, int progress,
						boolean fromUser) {
					audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
							progress, 0);
				}
			};

			volumeBar.setOnSeekBarChangeListener(eventListener);
		} catch (Exception e) {
			Log.e("MainActivity", e.getMessage());
		}
	}

	private void initializeMediaPlayer() {
		player = new MediaPlayer();

		player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

			public void onBufferingUpdate(MediaPlayer mp, int percent) {
				Log.i("Buffering", "" + percent);
			}
		});
	}

	public void startPlaying() {

		try {

			Toast.makeText(getApplicationContext(),
					"Conectando con la radio, espere unos segundos...",
					Toast.LENGTH_LONG).show();

			player.reset();
			player.setDataSource(url);
			player.setAudioStreamType(AudioManager.STREAM_MUSIC);

			player.setOnPreparedListener(new OnPreparedListener() {

				public void onPrepared(MediaPlayer mp) {

					player.start();
					buttonStreaming.setEnabled(true);
				}
			});

			player.prepareAsync();

		} catch (IllegalArgumentException | SecurityException
				| IllegalStateException | IOException e) {
			Toast.makeText(getApplicationContext(),
					"Error al conectar con la radio", Toast.LENGTH_LONG).show();
		}

	}

}

Para que esta aplicación funcione es importante recordar que hay que agregar el permiso para poder conectarse a internet en el AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>

Luego podemos compilar e instalar nuestra aplicación en un dispositivo. El resultado tendría que ser el siguiente:

Ejemplo de streaming de radio con Android

Ejemplo de streaming de radio con Android

Bueno, hemos llegado al final de este tutorial como ya saben ante cualquier problema no duden en dejar un comentario.

La entrada Streaming de radio con Android usando Java (parte 2) aparece primero en ProgramaciónExtrema.com.

]]>
https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java-parte-2/feed/ 2
Streaming de radio con Android usando Java https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java/ https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java/#comments Thu, 29 Oct 2015 19:18:25 +0000 http://programacionextrema.com/?p=374 En este tutorial aprenderemos a realizar una aplicación de streaming de radio con android usando el lenguaje de programación Java. El streaming se utiliza para optimizar la descarga y reproducción de archivos de audio y vídeo que suelen tener un cierto peso. ¿Cómo hacer streaming de radio con android usando Java? Realizar esta tarea en… Read More

La entrada Streaming de radio con Android usando Java aparece primero en ProgramaciónExtrema.com.

]]>
En este tutorial aprenderemos a realizar una aplicación de streaming de radio con android usando el lenguaje de programación Java.
El streaming se utiliza para optimizar la descarga y reproducción de archivos de audio y vídeo que suelen tener un cierto peso.

¿Cómo hacer streaming de radio con android usando Java?

Realizar esta tarea en Android no es nada difícil, para esto vamos a utilizar el objeto MediaPlayer que nos proporciona la API de Android y nos permite manipular en este caso un streaming de música con solo ingresar la URL.
Antes de comenzar a programar es necesario agregar un permiso en el archivo AndroidManifest.xml para que la aplicación se pueda conectar a internet:

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>

A continuación el código fuente del streaming de radio:

package com.programacionextrema.radio;

import java.io.IOException;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends Activity {

	private MediaPlayer player;
	private String url = "Aquí va la URL";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// Inicializo el objeto MediaPlayer
		initializeMediaPlayer();

		// Inicio el streaming de radio
		startPlaying();
	}

	private void initializeMediaPlayer() {
		player = new MediaPlayer();

		player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

			public void onBufferingUpdate(MediaPlayer mp, int percent) {
				Log.i("Buffering", "" + percent);
			}
		});
	}

	public void startPlaying() {

		try {

			Toast.makeText(getApplicationContext(),
					"Conectando con la radio, espere unos segundos...",
					Toast.LENGTH_LONG).show();

			player.reset();
			player.setDataSource(url);
			player.setAudioStreamType(AudioManager.STREAM_MUSIC);

			player.setOnPreparedListener(new OnPreparedListener() {

				public void onPrepared(MediaPlayer mp) {

					player.start();

				}
			});

			player.prepareAsync();

		} catch (IllegalArgumentException | SecurityException
				| IllegalStateException | IOException e) {
			Toast.makeText(getApplicationContext(),
					"Error al conectar con la radio", Toast.LENGTH_LONG).show();
		}

	}

}

Al ejecutar el código anterior en Android se reproducirá automáticamente la radio. Si queremos agregar una barra de control para manipular el audio podemos seguir el siguiente tutorial: http://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java-parte-2

Bueno hemos llegado al final de este tutorial, ante cualquier problema no duden en dejar un comentario.

La entrada Streaming de radio con Android usando Java aparece primero en ProgramaciónExtrema.com.

]]>
https://programacionextrema.com/2015/10/29/streaming-de-radio-con-android-usando-java/feed/ 9