簡體   English   中英

Android MediaPlayer暫停

[英]Android MediaPlayer pause

我目前遇到的問題是暫停並不總是有效。 我的主要活動是通過ActionBarSherlock和onClick偵聽器操作的MediaPlayer。 MediaPlayer正在將ArrayList與MP3文件的URL(某些文件的長度為1秒)一起使用。

暫停代碼:

       if (player.isPlaying()) {
            if (player != null) {
                player.pause();
                swapPlayIcon(1);
                isPaused = true;
                pauseMenuButt.setVisible(false);
                playMenuButt.setVisible(true);
            }
        }

swapPlayIcon(int)僅處理可見性和可繪制交換。

起始碼:

    Iterator<Uri> iterUri = tracks.iterator();
    while (iterUri.hasNext()) {
        Uri tmpUri = iterUri.next();
        try {
            player.reset();
            player.setDataSource(String.valueOf(tmpUri));
            player.prepare();
            player.start();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

編輯

經過更多測試后,我發現問題以“介於”狀態出現。

我的意思是,當我的MP3文件長2秒並且我單擊“暫停”時,它沒有停止,因為它剛讀完一個文件,現在移到下一個文件了。

我已經添加了:

      } else {
          pauseLocked = true;
      }

在測試時暫停並在聲明中完全沒有出現。 因此,我不確定之前發現的“中間”問題。

您的暫停按鈕不起作用,因為在您啟動最后一個URL之前,其消息永遠無法到達MediaPlayer。 您完全阻塞了MediaPlayer所運行的線程(由於MediaPlayer在您的主要活動中,所以我假設它是UI線程)。 如果要在與UI相同的線程上創建MediaPlayer,則應使用prepare的異步版本:prepareAsync。 收到onMediaPrepared回調后,您需要做出響應,然后啟動媒體。 一旦發生這種情況,您就無需執行任何操作並等待媒體播放完畢,然后再加載另一個URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM