0

我正在创建一个媒体播放器应用程序。

当我启动或恢复应用程序时,我想检查媒体播放器是否已经在播放歌曲。

因此,如果是,我会将我的 Pause/Play 设置ToggleButtonPause,否则它没有更早播放,那么按钮将设置为Play

(例如,如果用户已经在使用媒体播放器并通过按主页或返回按钮离开应用程序,现在他恢复播放器。那么应该正确配置按钮。)

实际的 MediaPlayer 对象在Service& 所有通信都通过AIDL interface方法完成。

我打算实现一个方法:

public boolean isMediaPlaying() throws RemoteException {
    if (mediaPlayer != null) {
        if (mediaPlayer.isPlaying()) {
        return true;
    }
    return false;
}

问题:但是ServiceConnection's onServiceConnected在恢复之后执行。

请建议我如何在活动简历上查看此状态?

提前致谢。

4

1 回答 1

1

您可以在 Application 类中保留对您的服务的引用。例如

    public class App extends Application {

    private static PlayerService player;

    @Override
    public void onCreate() {
        super.onCreate();

        if (player == null)
            bindService(new Intent(App.this, PlayerService.class), connection, Context.BIND_AUTO_CREATE);

    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        player.stop();
        player = null;
        getApplicationContext().unbindService(connection);
    }

    public static PlayerService getPlayer() {
        return player;
    }


    private ServiceConnection connection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
            player = ((PlayerService.PlayerServiceListener) service).getService();
        }

        public void onServiceDisconnected(ComponentName className) {
            player = null;
        }
    };

}

然后在activity onResume 中使用

App.getPlayer().isPlaying
于 2012-08-21T18:30:05.550 回答