gpt4 book ai didi

android - 尝试使用服务暂停/恢复音乐 Activity

转载 作者:行者123 更新时间:2023-11-30 03:19:15 25 4
gpt4 key购买 nike

我正在尝试在其布局中创建一个带有一个按钮的 Activity ,该按钮将在按下时暂停或继续播放音乐。问题是,当它被按下以恢复音乐时,它会重新启动音频文件。知道如何让它从停止的最后一点开始播放而不是重新启动吗?

主要 Activity

public class MainActivity extends Activity implements OnClickListener {

private Boolean isMusicPlaying;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View musicButton = findViewById(R.id.music_button);
musicButton.setOnClickListener(this);
startService(new Intent(getBaseContext(), MusicService.class));
isMusicPlaying = true;
}

@Override
public void onClick(View v) {
if (v.getId() == R.id.music_button)
if (isMusicPlaying) stopService(new Intent(getBaseContext(),
MusicService.class));
else startService(new Intent(getBaseContext(), MusicService.class));
isMusicPlaying = !isMusicPlaying;
}
}

服务等级

public class MusicService extends Service {

MediaPlayer player;

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

public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.song);
player.setLooping(true); // Set looping
player.setVolume(100, 100);
}

public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return START_STICKY;
}

@Override
public void onDestroy() {
player.pause();
}
}

最佳答案

当您停止服务时,您服务中的 MediaPlayer 对象似乎没有保留。在停止服务之前,您可以使用 getCurrentPosition() 方法获取歌曲的当前位置,

player.pause();
currentPos = player.getCurrentPosition();

并在 Activity 停止之前将此值发送回 Activity 。

然后,您可以使用seekTo(int)方法移动到指定的时间位置再播放。

player.seekTo(currentPos);
player.start();

对于您的服务和 Activity 之间的通信,您可以注册 broadcastreceiver 并使用 intent 或使用 bound service 进行通信。 .

更新:我找到了以下教程,您最好按照此进行操作。它是关于使用 MediaPlayer 的服务。特别是,初始化 MediaPlayer 时根本没有使用 prepare 方法。把这些行:

player.setOnPreparedListener(this);
player.prepareAsync();

并添加监听器:

public void onPrepared(MediaPlayer player) {
player.start();
}

http://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices

关于android - 尝试使用服务暂停/恢复音乐 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467840/

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