首页 文章

媒体播放器在准备服务时如何添加加载对话框(Android)

提问于
浏览
1

我 Build 了应用程序来播放来自互联网的音频,我使用服务在后台播放音频,问题是如何在媒体播放器准备服务(背景)中使用我的代码时显示loding对话框 .

活动

package com.uqifm.onlineradio;
.......
public class MainActivity extends AppCompatActivity {

    Button b_play;
    Boolean started = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b_play = (Button) findViewById(R.id.b_play);

        b_play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(started){
                    started = false;
                    stopService(new Intent(MainActivity.this,MyService.class));
                    b_play.setText("PLAY");
                }else{
                    started = true;
                    startService(new Intent(MainActivity.this,MyService.class));
                    b_play.setText("STOP");
                }
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopService(new Intent(MainActivity.this,MyService.class));
    }
}

服务

package com.uqifm.onlineradio;
....................
public class MyService extends Service {

    MediaPlayer mediaPlayer;
    String stream = "http://xxxxx:36365";

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

    @Override
    public void onCreate() {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            mediaPlayer.setDataSource(stream);
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        mediaPlayer.start();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        mediaPlayer.release();
    }
}

3 回答

  • 1

    注册广播,在启动服务之前启动 ProgressDialog . 然后等待广播 . 广播后,隐藏对话框 . 请参阅此主题中的示例 . Send data from Service back to my activity

  • 0

    将ProgressDialog放在xml中,并根据您的要求设置可见性 . 使用界面与服务进行通信 .

  • 0

    您可以使用 Broadcast 或尝试 EventBus ,这样更容易 . 您可以使用 EventBus 从服务发布事件,并在 MainActivity 中接收广播并更新进度对话框 .
    Please follow the link.

相关问题