2016-05-01 2 views
1

(アンドロイド)あまり話を、あなたはシークバーを更新は:Androidのシークバーのトークバック、これで期待通りの音楽プレーヤーで

PRECISION_SEEKBAR = 100000; 
((SeekBar) findViewById(R.id.seekBar2)).setMax(PRECISION_SEEKBAR); 

timerSeekBarUpdate.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       final SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar); 

       @Override 
       public void run() { 
        if (control == null || player == null) { 
         cancel(); 
         return; 
        } 
        seekBar.setProgress((int) (player.getCurrentPosition() * PRECISION_SEEKBAR/player.getDuration())); 
        ... 

しかし、フォーカスがシークバー、着実にトークバックとノンストップが与える上にある場合進行状況のフィードバック。 「シークコントロール25%」「シークコントロール25%」「シークコントロール26%」「シークコントロール26%」「シークコントロール27%」など

欠けているしかし、問題を解決することはできませんでした。私はcontentDescriptionを@null以外に設定しました。しかし、今度は停止せずにコンテンツの説明を読み込みます。

Spotifyクライアントでは、進捗状況を「xxパーセント」として1回だけ読み取ることを確認しました。シークバーに焦点を当てたにもかかわらず。

精度を1または100に編集すると、シークバーの精度が失われます。歌にいくつかの部分があるように見えます。シークバーをスワイプして、どちらかをプレイします。

誰もこのようなsthを経験したことがありますか?私はGoogleのドキュメント、スタックネットワークまたは他のどこかで何かを見つけることができませんでした。

答えて

0

私は問題があり、SeekBarがすべてのアップデートでパーセンテージを読み取ることがわかりました。

これは、パーセンテージが変更された場合でもSeekBarを更新するのに役立ちましたが、高精度を維持しています(私の場合はms)。

@Override 
public void updateSeekBar(final int currentPosInMillis, final int durationInMillis) { 
    long progressPercent = calculatePercent(currentPosInMillis, durationInMillis); 

    if (progressPercent != previousProgressPercent) { 
     seekBar.setMax(durationInMillis); 
     seekBar.setProgress(currentPosInMillis); 
    } 
    previousProgressPercent = progressPercent; 
} 

private int calculatePercent(int currentPosInMillis, int durationInMillis) { 
    if(durationInMillis == 0) { 
     return 0; 
    } 
    return (int) (((float)currentPosInMillis/durationInMillis) * 100); 
} 

previousProgressPercentは-1に初期化されます。

このソリューションはSpotifyと同じではありません。
Spotifyは、SeekBarが選択されたときにシステムによって通知されたメッセージを無効にします。
この次ました2つの効果:

  • シークバーが、その後何も発表していない取得し、選択されている間
  • ときの割合の変化を繰り返しbeeingて割合ずにできるだけ頻繁にあなたが望むとすることができるアップデート

ポイント2は、あなたが達成したいことに応じて、私には欠点かもしれません。

+0

ありがとう、良いアドバイス。 – JSBach

関連する問題