- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为本地社区广播电台构建 Android 应用程序,但我在 LogCat 中收到此错误:
2862-2862/pmelia.bcrfm V/MediaPlayer﹕ callback application
2862-2862/pmelia.bcrfm V/MediaPlayer﹕ back from callback
2862-2862/pmelia.bcrfm V/MediaPlayer﹕ isPlaying: 0
2862-2862/pmelia.bcrfm E/MediaPlayer﹕ Error (-38,0)
这是我的 Activity 代码
public class MainActivity extends ActionBarActivity implements View.OnClickListener, View.OnTouchListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnBufferingUpdateListener {
private Toolbar toolbar;
private Button btnPlay;
private Button btnPause;
private Button btnStop;
private SeekBar seekBar;
private MediaPlayer mediaPlayer;
private int lengthOfAudio;
//official broadcasting URL
private final String URL = "http://37.187.193.36:8002/listen.pls";
private final Handler handler = new Handler();
private final Runnable r = new Runnable() {
@Override
public void run() {
updateSeekProgress();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_appbar);
init();
}
private void init() {
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer,(DrawerLayout)findViewById(R.id.drawer_layout), toolbar);
btnPlay = (Button) findViewById(R.id.btnPlay);
btnPlay.setOnClickListener(this);
btnPause = (Button) findViewById(R.id.btnPause);
btnPause.setOnClickListener(this);
btnPause.setEnabled(false);
btnStop = (Button) findViewById(R.id.btnStop);
btnStop.setOnClickListener(this);
btnStop.setEnabled(false);
seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setOnTouchListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Toast.makeText(this, "Hey you just hit " + item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) {
seekBar.setSecondaryProgress(percent);
}
@Override
public void onCompletion(MediaPlayer mp) {
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
btnStop.setEnabled(false);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (mediaPlayer.isPlaying()) {
SeekBar tmpSeekBar = (SeekBar)v;
mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() );
}
return false;
}
@Override
public void onClick(View view) {
try {
mediaPlayer.setDataSource(URL);
mediaPlayer.prepare();
lengthOfAudio = mediaPlayer.getDuration();
}
catch (Exception e) {
Log.e("Error", e.getMessage());
}
switch (view.getId()) {
case R.id.btnPlay:
playAudio();
break;
case R.id.btnPause:
pauseAudio();
break;
case R.id.btnStop:
stopAudio();
break;
default:
break;
}
updateSeekProgress();
}
private void updateSeekProgress() {
if (mediaPlayer.isPlaying()) {
seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / lengthOfAudio) * 100));
handler.postDelayed(r, 1000);
}
}
private void stopAudio() {
mediaPlayer.stop();
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
btnStop.setEnabled(false);
seekBar.setProgress(0);
}
private void pauseAudio() {
mediaPlayer.pause();
btnPlay.setEnabled(true);
btnPause.setEnabled(false);
}
private void playAudio() {
mediaPlayer.start();
btnPlay.setEnabled(false);
btnPause.setEnabled(true);
btnStop.setEnabled(true);
}
}
如有任何帮助,我将不胜感激,这是我第一次进行此类开发。
最佳答案
我遇到了同样的问题...它必须只是带有端口号的 IP 地址。
为此:私有(private)最终字符串 URL = "http://37.187.193.36:8002/listen.pls ";
替换为:私有(private)最终字符串 URL = "http://37.187.193.36:8002/ ";
关于android - 媒体播放器 Shoutcast 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047492/
我正在尝试构建一个 php/jquery 面板来启动和停止 Shoutcast dnas 和 Shoutcast Transcoder。 到目前为止,一切正常,但我遇到了问题。 如果我从 php 启动
多年来我一直在寻找解决方案,但没有任何明确的记录。有很多 Shoutcast Flash 播放器(例如 radio.de),所以我知道这是可能的。然而,我的大部分研究都得出这样的结论: s = new
嗨,我已经实现了 Shoutcast 流协议(protocol)来获取 Stream 元信息(如网络上某处所述)。我得到了带有歌曲标题和作者的字符串,但是当在流中,一首歌曲结束,另一首歌曲开始时会发生
我有一个在 Ubuntu 上运行的 SHOUTcast 服务器。服务器进程运行良好,但我似乎无法让守护程序脚本正常运行。按照几个教程,我发现我想到了这个: #!/bin/sh CONFIG="/hom
我已经用 Java 编写了一些代码来解码 SHOUTcast 流并返回元数据。此代码按预期工作,但当我将其移植到 Android 时,相同的代码不起作用。具体来说,我似乎无法解析来自 SHOUTcas
我正在寻找一个网络播放器来播放来自 SHOUTcast 服务器的音乐流。 我在 CentOS 上设置了 SHOUTcast DNAS 2.0 服务器。 SHOUTcast 可以将音乐流式传输到 Win
我想创建一个程序来播放shoutcast流。我从 here 复制此代码我收到以下错误消息。我使用BasicPlayer库,如果您有任何其他库建议,这将对我非常有帮助! import java.net.
我正在处理 PHP/HTML 脚本。 我想在歌曲更改时通过自动刷新获取 Shoutcast 流的当前歌曲。 Shoutcast 不允许 HTTP 请求,所以我使用这个脚本在另一个文件中获取页面: ";
我只是想在我的 Android 应用程序上拆分 ShoutCast 提供的元数据(艺术家 - 歌曲)。直到现在,我为处理此问题而实现的代码一直运行良好(大约 5 个月,然后管理员更新了 shoutca
我在自己构建的 HTML 播放器中有一个 70x70 的小盒子,我希望将其放入专辑插图中,以与我正在播放的来 self 的 shoutcast 服务器的信息一致。有没有办法使用 shoutcast 服
我想自己扫描 SHOUTcast 元数据。我意识到有很酷的类,例如 IcyStreamMeta 等,但我想知道为什么我自己看不到数据。 我正在使用这个 URL(也尝试过其他 URL): http://
我开发了 Shoutcastinternet Radio Streaming,我能够成功地进行流式传输和播放。 但问题是:当我执行我的应用程序时,我能够连续播放半小时,之后流停止(无法播放,之后如果我
我正在为本地社区广播电台构建 Android 应用程序,但我在 LogCat 中收到此错误: 2862-2862/pmelia.bcrfm V/MediaPlayer﹕ callback applic
我正在从 shoutcast 服务器获取最近播放的 10 首歌曲,并想将它们插入我的数据库,以便跟踪在特定日期和时间播放的歌曲。 表结构如下: `id_played` int(11)
为了我的论文,我收到了以下作业: “使用 3 台 Windows/Linux 双启动计算机使用以下软件从 mp3 文件设置实时音频流: -Windows -> Your choice, I
我制作了一个 radio 应用程序,效果非常好。我也可以播放 radio 流并获取元数据。流媒体服务来自 shoutcast。 唯一的问题是,我将 URL 作为数据源添加到媒体播放器,然后每 5 秒获
我正在为 android 创建一个互联网广播应用程序。到目前为止,我已经成功地使用 shoutcast url 为各个电台进行了流式传输和播放。这是我的代码: String url = "
背景:我正在使用双缓冲方法为 html shoutcast 流式传输广播。我使用 http://www.smackfu.com/stuff/programming/shoutcast.html 从流中
我正在开发一个带有多个 radio 的 radio 应用程序,流媒体播放正常。但我目前正在努力显示艺术家和正在播放的音乐。 这是我用来从 shoutcast 流中获取元数据的类: import jav
我只知道 ShoutCast 的功能是它流式传输广播列表。 但不知道如何在 iPhone 应用程序中使用它。 现在我只是在浏览它的网站 http://www.shoutcast.com/因为我通过谷歌
我是一名优秀的程序员,十分优秀!