等到处理程序完成Android

时间:2017-08-16 07:42:06

标签: java android

我只是试图通过媒体播放器播放音乐n秒。

我的第一个档案:

public void Play_Music() {
    mTestUtils.ConnectDevice();
    mTestUtils.playMusic(MUSIC_PATH, STREAM_TIME);
    mTestUtils.DisconnectDevice(();
}

我的第二档:

public void playMusic(String music_path, int stream_time) {

    MediaPlayer mMediaPlayer = new MediaPlayer();

    try {
        Log.i(TAG, "In Play mUsic");
        mMediaPlayer.setDataSource(music_path);
        mMediaPlayer.prepare();
        mMediaPlayer.start();
        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                Log.i(TAG, "In Handler");
                mMediaPlayer.stop();
                mMediaPlayer.release();
            }
        }, stream_time);

        Log.i(TAG, "Done Playing");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return;
}

这里我的问题是如何使处理程序等待给定的时间。 这里发生的是播放音乐被调用,它执行该函数并立即返回执行第一个文件中的下一个语句。我想等到处理程序函数完成后,我需要将控件传递给第一个文件。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我从你的问题中理解的是,当你调用playMusic()方法时,它会开始播放并立即停止你的音乐。因为代码从上到下运行。

  1. 首先,您正在连接设备
  2. 其次你正在播放音乐
  3. 第三,您正在断开设备
  4. 发生在第二步之后,您立即呼叫断开连接设备。我不知道那个功能是做什么的。如果要在处理程序完成后调用断开连接功能,则需要使用回调方法。处理程序将告诉(通过回调方法)何时调用disconnect方法。我希望我回答这个问题。

    有关如何回调接口现象工作的指导,请参阅以下链接。

    https://stackoverflow.com/questions/3398363/how-to-define-callbacks-in-android
    
    https://stackoverflow.com/questions/18054720/what-is-callback-in-android