0

メディア プレーヤー アプリを作成しています。

アプリケーションを開始または再開するときに、メディア プレーヤーが既に曲を再生しているかどうかを確認したいと考えています。

だった場合は Pause/PlayToggleButtonPauseに設定し、それ以外の場合は以前に再生していなかった場合、ボタンは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クラスでyorサービスへの参照を保持できます。例えば

    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;
        }
    };

}

そして、活動中の再開使用

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