如何获得低于 3.0 版本的 Android 设备的实时流媒体音频?
Posted
技术标签:
【中文标题】如何获得低于 3.0 版本的 Android 设备的实时流媒体音频?【英文标题】:How can I get live streaming audio which Android device below version 3.0? 【发布时间】:2013-02-04 08:41:16 【问题描述】:我用过:
player = new MediaPlayer();
try
player.setDataSource(str_stream_url);
// player.setDataSource("http://cdn.concreteloop.com/wp-content/uploads/2011/01/Jennifer-Lopez-feat.-Pitbull-On-the-Floor.mp3");
catch (IllegalArgumentException e)
e.printStackTrace();
catch (IllegalStateException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
player.setOnBufferingUpdateListener(new OnBufferingUpdateListener()
public void onBufferingUpdate(MediaPlayer mp, int percent)
playSeekBar.setSecondaryProgress(percent);
Log.i("Buffering", "" + percent);
);
它在 android v4.0 中工作,但在 Android 2.3.3 中不工作..
我能做什么??
谢谢。
【问题讨论】:
“不工作”以什么方式?您在 logcat 输出中是否收到任何异常或其他相关错误? 我在 Logcat 中看到的以下错误:02-06 13:08:29.440: E/MediaPlayer(2448): start call in state 4 02-06 13:08:29.440: E/MediaPlayer( 2448): 错误 (-38, 0) 02-06 13:08:29.460: E/MediaPlayer(2448): 错误 (-38,0)start called in state 4
表示您在prepareAsync
完成之前调用了start
。当准备完成时,您应该使用onPreparedListener 接收回调,并且在此之前不要调用start
。
player.setDataSource(this, myUri); player.setAudiostreamType(AudioManager.STREAM_MUSIC); player.prepareAsync(); player.setOnPreparedListener(this); player.setOnBufferingUpdateListener(this); player.setOnErrorListener(this);好吗?
【参考方案1】:
我也在 Android 2.3.3 中尝试过这段代码,但没有成功。最后你可以看到错误。
Uri myUri = Uri
.parse("http://46.137.18.79:8000/;stream.nsv&type=mp3&autostart=true");
player = new MediaPlayer();
try
if (player == null)
this.player = new MediaPlayer();
else
player.stop();
player.reset();
player.setDataSource(this, myUri); // Go to Initialized state
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(this);
player.setOnBufferingUpdateListener(this);
player.setOnErrorListener(this);
player.prepareAsync();
Log.d(TAG, "LoadClip Done");
catch (Throwable t)
Log.d(TAG, t.toString());
02-06 13:49:03.730: E/MediaPlayer(2718): stop 在状态 1 中调用
02-06 13:49:03.730: E/MediaPlayer(2718): 错误 (-38, 0)
02-06 13:49:03.730: D/MediaPlayer(2718): 无法在客户端打开文件,正在尝试服务器端
02-06 13:49:03.870:D/MyMain(2718):加载剪辑完成
谢谢。
【讨论】:
我在 Android 4.0.3 中尝试过,它可以工作。但是在 Android 2.3.3 或 2.1 或 2.2 等中。它没有工作..以上是关于如何获得低于 3.0 版本的 Android 设备的实时流媒体音频?的主要内容,如果未能解决你的问题,请参考以下文章
从 Android Studio 3.0 构建时如何克服应用未安装错误?