2013-01-03 142 views
0

我正在使用管理seekbar的Android服務。 下面是代碼(我只是把有關搜索條的代碼):Android服務:seekbar無法正常工作

public class MediaPlayerService extends Service implements 
     Runnable, 
     SeekBar.OnSeekBarChangeListener { 

    private MediaPlayer mediaPlayer = null; 
    private AudioManager audioManager; 
    private SeekBar seekBarTime; 

    @Override 
    public void onCreate() { 

     //SET SEEKBAR 
     LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.play_song , null); 
     seekBarTime = (SeekBar) layout.findViewById(R.id.seekBarTime); 
     seekBarTime.setOnSeekBarChangeListener(this); 
     Thread thread = new Thread(this); 
     thread.start(); 
    } 

    public void run() { 

     if(mediaPlayer != null) { 
      int currentPosition = 0; 
      int total = mediaPlayer.getDuration(); 
      seekBarTime.setMax(total); 
      while (currentPosition < total && mediaPlayer != null) { 
       try { 
        Thread.sleep(1000); 
        currentPosition = mediaPlayer.getCurrentPosition(); 
       } catch (InterruptedException e) { 
        return; 
       } catch (Exception e) { 
        return; 
       } 
       seekBarTime.setProgress(currentPosition); 
      } 
     } 
    } 

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
     Log.w("disgustingapps", "seekbar"); 
     if (fromUser == true) { 
      mediaPlayer.seekTo(progress); 
     } 
    } 

    public void onStartTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 

    public void onStopTrackingTouch(SeekBar seekBar) { 
     // TODO Auto-generated method stub 

    } 
} 

的問題有兩個。我將嘗試用我的英語不好解釋: 1)我想讓服務自動更新seekbar以顯示歌曲的當前時間(mediaPlayer.getCurrentPosition()) 2)我希望用戶被允許移動搜索欄以便在歌曲的時間間移動 這兩件事都不起作用。似乎seekbar與代碼完全「獨立」。我的意思是:光標根本不移動,而且如果用戶移動它,則歌曲繼續而不做任何事情。 請幫我 預先感謝您

回答

1

您不能在Android服務中使用SeekBar(或任何UI控件)