2

ServiceクラスにProgressダイアログボックスを追加したい。私のアプリはラジオライブストリーミングを再生していますが、アプリはチャンネルをロードしているので、進行状況ダイアログを追加したいです。ラジオ進行状況ダイアログを開始すると、却下します。アイデアがありますか?前もって感謝します..

public class MusicService extends Service {

    private static final String TAG = "MyService";
    public static MediaPlayer mediaplayer;
    String musicfile;

    @Override
    public IBinder onBind(Intent intent) {
        Log.i(" ibinder ", "");
        return null;
    }

    @Override
    public void onCreate() {
        Toast.makeText(this, "My Service Created", 0).show();
        Log.i(TAG, "onCreate");

        mediaplayer = new MediaPlayer();
        mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "My Service Stopped", 0).show();
        Log.w(TAG, "onDestroy");
        mediaplayer.stop();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        Toast.makeText(this,
                "My Service Started :" + intent + " start id :" + startid, 0)
                .show();

        Log.d(TAG, "onStart");
        if (intent.getExtras().getString("paths") == null) {
            Log.i("Intent Null", "Null");
        } else {
            Log.i("Intent Not Null", "Not Null");
            musicfile = intent.getExtras().getString("paths");
            Log.i("musicfile", "" + musicfile);
            startPlayer();
            Log.i("startplayer() called","");
        }
    }

    public void startPlayer() {
        new Thread(startPlayer).start();
    }

    private Runnable startPlayer = new Runnable() {
        public void run() {
            try {
                mediaplayer.reset();
                mediaplayer.setDataSource(musicfile);
                mediaplayer.prepare();
                mediaplayer.start();
                Log.i("playchannel", musicfile);
                Log.e("Media Player Create", "player Create");
                Log.i("End startpayer called","");
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
}

これは私のサービスクラスで、ライブラジオストリーミングを再生したいのですが、ライブラジオストリーミングを再生するにはある程度の負荷がかかります。だから私はラジオプレーヤーが少し時間がかかるときに何かプロセスをしたいです。

4

1 に答える 1

3

メディアプレーヤーの開始時に進行状況ダイアログを停止したいのですが、ラジオチャネルをロードするのに時間がかかるとメディアプレーヤーが開始するので、メインアクティビティオブジェクトを使用してサービスクラスで進行状況ダイアログを閉じます。このような

FMActivity.pDialogs.dismiss();

私はそれがあなたの問題の解決策だと思います。

于 2012-09-11T17:22:56.727 に答える