Java 如何使用MusicPlayService播放音乐

Java 如何使用MusicPlayService播放音乐,java,android,service,media-player,Java,Android,Service,Media Player,我是一名学生,刚刚开始学习java和android(目前正在使用android studio)。我一直在学习视频流和音乐流的教程。但我目前正在关注音乐流媒体 代码是好的,但问题是它不会流式播放音乐。此外,没有错误显示我错过了程序中的某些内容或任何内容。它正在模拟器上运行,但它只是不播放音乐 下面是我的MainActivity.java代码: package com.name.package.yb; import android.content.pm.ActivityInfo; import a

我是一名学生,刚刚开始学习java和android(目前正在使用android studio)。我一直在学习视频流和音乐流的教程。但我目前正在关注音乐流媒体

代码是好的,但问题是它不会流式播放音乐。此外,没有错误显示我错过了程序中的某些内容或任何内容。它正在模拟器上运行,但它只是不播放音乐

下面是我的MainActivity.java代码:

package com.name.package.yb;

import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.widget.Toast;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;


public class MainActivity extends AppCompatActivity {

    private Button btnPlayStop;
    private boolean boolMusicPlaying = false;
    Intent myService;

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

        try{
            myService = new Intent(MainActivity.this, MusicPlayService.class);
            initViews();
            setListeners();
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), e.getClass().getName() + " " + e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

    private void initViews() {
        btnPlayStop = (Button) findViewById(R.id.myButton);
        btnPlayStop.setText("Stream Music");
    }

    private void setListeners() {
        btnPlayStop.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                btnPlayStopClick();
            }
        });
    }

    private void btnPlayStopClick() {
        if (!boolMusicPlaying) {
            btnPlayStop.setText("Pause Streaming");
            playAudio();
            boolMusicPlaying = true;
        } else {
            if(boolMusicPlaying){
                btnPlayStop.setText("Play Stream");
                stopPlayService();
                boolMusicPlaying = false;
            }
        }
    }

    private void stopPlayService() {
        try {
            stopService(myService);
        } catch (Exception e){
            e.printStackTrace();
            Toast.makeText(getApplicationContext(),
                    e.getClass().getName() + " " + e.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
        boolMusicPlaying = false;
    }

    private void playAudio() {
        try {
            startService(myService);
        } catch (Exception e) {
            e.printStackTrace();
           Toast.makeText(getApplicationContext(),e.getClass().getName() + " " + e.getMessage(),Toast.LENGTH_LONG).show();
        }
    }
}
我的服务名为MusicPlayService.java(我想在后台播放音乐,就像手机上的音乐播放器一样):


p.S apk已成功安装在模拟器中,按钮可单击。它只是不能播放音乐

您的代码似乎很好,您是否将服务添加到清单中

<service android:enabled="true" android:name=".MusicPlayService" />

[

欢迎使用Android编程,调试Android代码的最佳方法是向代码中添加日志。您可以使用Log.d、Log.e等打印变量pass-by方法的值

]

试试这个:

1:代码

mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
你可以试试

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

如果在线播放音乐,您还需要获得INTERNET权限;如果从内存播放音乐,您需要读取外部存储。

您可以共享manifest.xml代码吗?您是否授予INTERNET权限?是:,我的清单文件中有此权限,但没有serviceOops。不。我没有。顺便问一下,android:name=“”是我的服务类的名称吗?是的。我希望即使我已经添加了服务,它仍能起作用。@Harix您必须在清单中声明服务,否则它将无法运行该服务。由于它还没有运行,我想你错过了一些声明的地方,我会尝试再次查看。那是我的舱单服务。无论如何,提前谢谢你的帮助。我还在谷歌文档中寻找一些有帮助的答案。:)在任何地方可能是单击listener或onCreate我已将其添加到我的onCreate:@Override public void onCreate(){super.onCreate();mediaPlayer.setVolume(100100);mediaPlayer=mediaPlayer.create(this,Uri.parse(“);//mediaPlayer.reset();}但仍然不工作。我只得到一个错误:找不到符号变量Uri,可能我需要导入一些东西?请在浏览器中打开链接。它显示的是找不到您请求的文件。如果没有文件,它如何流式传输…?链接工作正常我可以播放它。Ps我编辑了原始链接(我不拥有它,它来自我哥哥的无线电工作文件)。
mediaPlayer.setDataSource(AUDIO_STRING);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });