Android SeekBar对讲,说话太多 [英] Android SeekBar talkback, talking too much

查看:149
本文介绍了Android SeekBar对讲,说话太多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(Android)在音乐播放器上,您可以按预期的方式更新搜索栏:

(Android) On a music player, you update the seekbar as expected with this:

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%,寻求控制25%,寻求控制26%,寻求控制26%,寻求控制27%

However, if the focus is on the seek bar, talkback steadily and nonstop gives feedback for the progress. Like "seek control 25%", "seek control 25%", "seek control 25%", "seek control 26%", "seek control 26%", "seek control 27%"

我遗漏了某事,但无法解决问题。 @null以外的contentDescription。

I'm missing sth but couldnot solve the problem. I have set the contentDescription to other than @null. But then it reads the content description this time without stopping.

在Spotify客户端上,我检查了一下,它仅将进度读取为 xx%。

On Spotify client, I checked, it reads the progress as "xx percent" just once. Despite saving the focus on the seekbar.

当我将精度编辑为1或100时,您会丢失搜索栏上的精度。歌曲中似乎有几个部分。您可以通过滑动搜索栏来玩一个或另一个。

When I edit the precision for 1 or 100, then you lose the precision on the seekbar. It looks like there are a few parts in the song. You either play one or another by swiping on the seekbar.

有人经历过这样的事情吗?我在Google文档,堆栈网络或其他地方找不到任何内容。

Has anybody experienced sth like this? I couldn't find anything on google docs, stack network or somewhere else.

推荐答案

我遇到了问题,发现SeekBar读取了

I had the problem and found that SeekBar reads the percentage on every update.

这很有帮助,我只在百分比变化时才更新SeekBar,但仍然保持较高的精度(以我的情况为单位)。

It helped, that I update the SeekBar only when the percentage changes but still keep a high precision (in my case in 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种效果:

Please note that this solution is not the same as Spotify does it.
Spotify overrides the message announced by the system when the SeekBar gets selected.
This has following 2 effects:


  • 可以根据需要进行多次更新,而无需重复蜂鸣百分比

  • 当选择SeekBar时百分比发生变化时,则什么都不会宣布

第二点可能是我的缺点,具体取决于您要实现的目标。

Point 2 might me a drawback depending on what you want to achieve.

这篇关于Android SeekBar对讲,说话太多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆