2014-03-05 72 views
0

我有一個搜索欄的問題,當我用mediaplayer的音頻搜索欄不以它開頭。 我不明白爲什麼seekbar不「刷新」進度。Android SeekBar不要去音頻播放

謝謝你的幫助。

下面我發佈的代碼,我不明白當我錯了。

MediaPlayer player=new MediaPlayer(); 
SeekBar seekBar; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    try { 
     AssetFileDescriptor afd = this.getResources().openRawResourceFd(R.raw.mymp3); 
     player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     afd.close(); 
     player.prepare(); 

    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException 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(); 
    } 

    Button pausa=(Button)findViewById(R.id.button2); 
    pausa.setOnClickListener(new OnClickListener(){ 
       @Override 
       public void onClick(View arg0) { 
        player.pause(); 
       } 
      }); 
    Button vai=(Button)findViewById(R.id.button3); 
    vai.setOnClickListener(new OnClickListener(){ 
       @Override 
       public void onClick(View arg0) { 
        player.start(); 
       } 
      }); 

    int tutto=player.getDuration(); 

    seekBar = (SeekBar)findViewById(R.id.seekBar1); 

    seekBar.setMax(tutto); 
    seekBar.setProgress(player.getCurrentPosition()/1000); 
} 

回答

0

一個簡單的方法,你可以做到這一點是創建一個Timer對象,每秒觸發。

定時器的代碼中調用

seekBar.setProgress(player.getCurrentPosition()/1000); 

此外,您可能要實現setOnCompletionListener得到通知時播放已經達到了它的終點,因此您可以停止計時器。如果播放到達結束,應用程序結束或者您手動停止音樂(例如,響應停止按鈕),則應停止計時器。

0

因爲你設置onCreate()的進展和被調用一次 - 你猜對了,創建Activity時。我不熟悉MediaPlayer,所以我不知道是否有某種更新偵聽器,但是您需要某種計時器來更新每秒鐘左右的進度。