0

インターネットに接続してストリームを再生するをIntent開始する があります。MusicService

final Intent i = new Intent(MusicService.ACTION_URL);
Uri uri = Uri.parse("http://31.3.242.244:8058");

i.setData(uri);
startService(i);

progressDialog = ProgressDialog.show(fmActivity.this, "", "connecting...");
progressDialog.setCancelable(true);

接続が確立されたらHandler、ダイアログ ボックスを閉じます。

static Handler closeHandler = new Handler() {
    public void handleMessage(Message msg) {
        if (progressDialog !=null) {
            progressDialog.dismiss();
        }
    }
};    
fmActivity.closeHandler.handleMessage(null); //from the MusicService

接続がハングしたり、サーバーの接続が遅い場合を除き、これはすべてうまく機能します。戻るボタンでIntent開始しようとしてからキャンセルできるようにする必要があります。MusicService常に接続されているため、インターネット接続を確認しても役に立ちません...サーバーへの接続が何らかの理由で失敗した場合、ユーザーは接続するために呼び出しをキャンセルできる必要があります。別の流れ。私はあちこち検索しましたが、これを行う方法がわかりません。ありがとう。

4

1 に答える 1

0

ProgressDialogキャンセルの内部を閉じる前に、音楽サービスを停止できますOnClickListener

例えば:

    progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int which) {
                stopService(i); // Stop the music service here
                dialog.dismiss();
            }
});
于 2012-09-05T18:23:32.993 に答える