媒体播放器的错误-38,0 [英] mediaPlayer error -38,0

查看:260
本文介绍了媒体播放器的错误-38,0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试做简单的网上电台播放器。这里是流 http://radio-electron.ru:8000/96 这是我的code的联系地址。

I try to do simple online radio player. Here is adress of stream http://radio-electron.ru:8000/96 Here is my code.

MyActivity.java

MyActivity.java

package com.example.untitled2;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.IOException;

public class MyActivity extends Activity {

    MediaPlayer mediaPlayer;
    Button playButton;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public void onStart() {
        super.onStart();
    }

    @Override
    public void onResume() {
        super.onResume();
        mediaPlayer = new MediaPlayer();
        playButton = (Button)findViewById(R.id.button);

        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(mediaPlayer.isPlaying())
                    mediaPlayer.stop();
                else {
                    try {

                        mediaPlayer.setDataSource(getApplicationContext(), Uri.parse("http://radio-electron.ru:8000/96"));
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                            @Override
                            public boolean onError(MediaPlayer mediaPlayer, int i, int i2) {
                                Toast.makeText(getApplicationContext(), "ERROR " + i, Toast.LENGTH_LONG).show();
                                playButton.setEnabled(false);
                                Log.d("radio", "error " + i + " " + i2);
                                return false;  //To change body of implemented methods use File | Settings | File Templates.
                            }
                        });
                        mediaPlayer.prepareAsync();
                    }
                    catch (IOException e) {
                        Toast.makeText(getApplicationContext(), "ERROR " + e, Toast.LENGTH_LONG).show();
                        Log.d("radio", "error " + e);
                    }
                    mediaPlayer.start();
                }
            }
        });
    }
}

main.xml中

main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:orientation="vertical"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
        >
    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button"
            android:layout_gravity="center"/>
</FrameLayout>

我不知道,为什么我得到 - (38,0)code和是什么意思。 我用的IntelliJ IDEA,并在Android 2.3和4.2模拟器尝试此code,并得到一些问题。

I have no idea, why i get -(38, 0) code and what does it mean. I using Intellij IDEA and trying this code on Android 2.3 and 4.2 emulators and get some problem.

推荐答案

-38指 ENOSYS 错误code从的errno.h (见这样的解释<一个href="http://stackoverflow.com/a/15206308/768935">http://stackoverflow.com/a/15206308/768935)

-38 refers to ENOSYS error code from errno.h (see this explanation http://stackoverflow.com/a/15206308/768935)

您似乎尝试启动播放的preparation完成之前。使用<一个href="http://developer.android.com/reference/android/media/MediaPlayer.html#setOn$p$pparedListener%28android.media.MediaPlayer.On$p$pparedListener%29"><$c$c>setOn$p$pparedListener()方法来设置preparation监听器,并调用的start()后,才preparation手段齐全。

You seem to try to start the playing before the preparation is complete. Use the setOnPreparedListener() method to set a preparation listener and call the start() method only after the preparation is complete.

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
  public void onPrepared(MediaPlayer mp) {
      mp.start();
  }
});
mediaPlayer.prepareAsync();

和删除从code中的电流 mediaPlayer.start()调用。

And remove the current mediaPlayer.start() invocation from the code.

这篇关于媒体播放器的错误-38,0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆