gpt4 book ai didi

java - 如何使用 MusicPlayService 播放音乐

转载 作者:太空狗 更新时间:2023-10-29 14:38:45 24 4
gpt4 key购买 nike

我是一名学生,刚开始学习 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(我想像手机上的音乐播放器一样在后台播放音乐):

package com.name.package.yb;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.widget.Toast;
import java.io.IOException;


public class MusicPlayService extends Service {

private MediaPlayer mediaPlayer = new MediaPlayer();
private static final String AUDIO_STRING = "http://musicsite.streammusic.com/file";

@Override
public void onCreate(){
super.onCreate();
//mediaPlayer.setOnCompletionListener(this);
//mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setVolume(100,100);
//mediaPlayer.reset();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId){
if (!mediaPlayer.isPlaying()) {
try {
mediaPlayer.setDataSource(AUDIO_STRING);
// Prepare mediaplayer
mediaPlayer.prepareAsync();
mediaPlayer.start();

} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
}
}
return START_STICKY;
}

@Override
public void onDestroy() {
super.onDestroy();
if(mediaPlayer != null) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
}
}

public IBinder onBind(Intent arg0) {
return null;
}

public IBinder onUnBind(Intent arg0) {
return null;
}

}

P.S apk 已成功安装到模拟器中,按钮可以点击。它只是不会播放音乐。

最佳答案

您的代码看起来不错,也许您向 list 添加了服务?

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

[

欢迎使用 Android 进行编程,调试 Android 代码的最佳方法是在您的代码中添加日志。您可以使用 Log.d、Log.e 等通过方法打印变量传递的值。

]

关于java - 如何使用 MusicPlayService 播放音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51721006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com