(Android)ネットラジオ受信のための基本機能サンプルプログラム

softdown-icon-android.png (Android)ネットラジオ受信のための基本機能サンプルプログラム
(Android) Internet Streaming Receiver sample program



戻る一つ前のメニューに戻る

目次

ソフトウエアのダウンロード

soft-ico-download.gif 各プログラムのソースコードをSubversionからダウンロード
soft-ico-download.gif 各プログラムのソースコードをGitHubからダウンロード(バックアップ コピー)
soft-ico-download.gif 各プログラムのソースコードをGoogle Codesからダウンロード(2015年8月で更新停止)
soft-ico-download.gif プロジェクトディレクトリの全ファイルをGoogle ドライブからダウンロード
soft-ico-download.gif このサイトよりapkファイルのみをダウンロード(Version 1.2 apkのみ)

機能の概要

Androidの標準クラスandroid.media.MediaPlayerを使った、インターネット・ラジオ(ストリーミング)を受信するアプリケーションのサンプルコード。

Google Playで入手できる無料のメディアプレーヤーは、ストリーミング受信に必要無い権限を要求し、個人情報を流出させているのではという懸念から、単純機能のみのアプリケーションを作成してみた。

soft-android-netradio-screen.jpg
実行画面例 (左:受信状態、中央:メニュー表示、右:設定画面)


動作確認済み

  • Android 4.3
  • Android 2.3.3


読み込み可能なPlayListファイル例

[playlist]
 
Title3=181.FM - Power 181
File3=http://relay.181.fm:8128/
Length3=-1
 
Title5=181.FM - UK Top 40
File5=http://uplink.duplexfx.com:8070
Length5=-1
 
Title36=Radio Suisse Classique
File36=http://stream.srg-ssr.ch/m/rsc_fr/mp3_128
Length36=-1
 
Title37=Radio Swiss Pop
File37=http://stream.srg-ssr.ch/m/rsp/mp3_128
Length37=-1
 
Title40=RadioTunes - Café de Paris
File40=http://pub2.radiotunes.com/radiotunes_cafedeparis
Length40=-1
 
Title48=RadioTunes - Solo Piano
File48=http://pub3.radiotunes.com/radiotunes_solopiano
Length48=-1

制限事項

戻るボタンのタップや、画面回転はActivityが破棄されるため、Destroy関数で受信を強制中止している。バッググラウンドで稼働させるためにはホーム・ボタンをタップする。

PLSファイルに悪意のある文字列を記述されることは想定していない。(チエックしていない)

MeidiaPlayerクラス関数で処理中は画面が固まるのは、スレッドに分離していないから。(このアプリケーションは、単なるサンプルコードのため)

PLSファイルの選択には、別途ファイルエクスプローラなどがインストールされている必要がる。

MeiaPlayerクラスによる受信処理部分のソースコード抜粋

// ネットラジオの受信開始処理
private void mediaplayer_start(){
    Toast.makeText(MainActivity.this, "接続中 ...", Toast.LENGTH_LONG).show();
    // スレッドで利用する経過時間表示フラグをプリファレンスから読み込む
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    flag_pref_disp_time = pref.getBoolean("pref_disp_time", false);
    // 経過時間表示をクリア
    text_time.setText("");
    try{
        // メディアプレーヤーの受信処理
        media_player.reset();
        media_player.setAudioStreamType(AudioManager.STREAM_MUSIC);
        media_player.setDataSource(array_uri.get(spinner_stations.getSelectedItemPosition()));
//      setDataSourceの引数形式は "file://mnt/sdcard/test.mp3", "http://example.com/test"
        media_player.prepare();
        media_player.start();
        // ボタン表示の更新
        button_play.setText("停止");
        // テキストの更新
        String strDisp = "受信中 ...";
        if(media_player.getDuration() > 0)
            strDisp += String.format("\n曲長 %d 秒", media_player.getDuration()/1000);
        text.setText(strDisp);
        // Uri表示テキストの更新
        if(pref.getBoolean("pref_disp_uri", false))
            text_uri.setText(array_uri.get(spinner_stations.getSelectedItemPosition()));
        // 経過時刻表示の有効化
        elapsed_time = System.currentTimeMillis()/1000L;
        flag_disp_elapsed_time = true;
    } catch (Exception e) {
        Toast.makeText(MainActivity.this, "接続失敗", Toast.LENGTH_LONG).show();
        button_play.setText("受信");
        text.setText("接続に失敗。次の操作を待機中\n code:"+e.toString());
    }
}

インストール方法

binディレクトリ内の.apkファイルがインストールパッケージです。


バージョンアップ情報

  • Version 1.0 (2015/02/03)
    当初
  • Version 1.2 (2015/10/25)
    タイマー追加、画面回転でリセット防止


使用許諾条件

GNU GPL フリーソフトウエア

GNU 一般公衆利用許諾書 (GNU General Public License v3)

戻る一つ前のメニューに戻る