首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kindle 8(第10代)平板电脑上的音乐应用程序兼容性问题- FireOS 7.3.1.4 -发生了什么?

Kindle 8(第10代)平板电脑上的音乐应用程序兼容性问题- FireOS 7.3.1.4 -发生了什么?
EN

Stack Overflow用户
提问于 2020-08-16 15:36:59
回答 2查看 60关注 0票数 1

,我们的应用程序很好地工作在较早版本的Kindle有FireOS 5.1.x。只有Kindle 8(第10代)与FireOS 7.3.1.4.有问题。

这个问题是随机的,有时应用程序可以正常工作,但其他时候,应用程序表现不好。

FireOS 7.3.1.4是使用android级别28 (Android )的

我们有音乐应用程序,有3个媒体播放器,我们正在使用Android标准媒体播放器在我们的应用程序。

所有3台媒体播放器同时运行,我们在每个媒体播放器上运行的轨迹都有相同的持续时间。

我们在后台执行所有的处理,比如在所有的媒体播放器上播放音乐,所以总共有3个线程在并行运行。

问题是在Kindle 8(第10代)上,由于一些小故障,运行在第一媒体播放器上的轨道与第二媒体播放器上的轨道重叠,或者超越了第二媒体播放器上的轨道。

总的来说,我的意思是,3个媒体播放器的轨道不同步,即使他们有相同的持续时间,他们在同一时间开始。

还有一件事是,歌曲一开始就没有同步问题,但大约50秒后,它们就开始不同步了。

这个问题是随机发生的.

同样,应用程序在较旧版本的Kindle平板电脑和三星手机上运行良好,问题只发生在Kindle 8 (10 Gen)上。

因此,如果有人可以帮助我们提供任何解决方案,在新的Kindle?上正在发生的事情,我将非常感谢您的帮助。

我的猜测是,运行媒体播放器的后台线程在随机时间出现了一些问题,使得媒体播放器无法同步。但我不知道如何纠正这种行为

请帮助我们,因为我们被困在这个问题上,我们的用户不能使用我们的应用在新的Kindle 8平板电脑上。谢谢

下面是我们拥有的3台媒体播放器的代码片段

我们创建了一个新的媒体播放器,并在其中添加了一个曲目。在代码中执行3次For循环。

代码语言:javascript
复制
protected void initTracks(boolean high) {

        this.mWavPlayers = new ArrayList<>();

        HashMap<TrackType, String> map = null;

        if (high) {
            map = mPathHigh;
        } else {
            map = mPathLow;
        }

        try {
            for (Map.Entry<TrackType, String> entry : map.entrySet()) {
                MediaPlayer player = new MediaPlayer();
                player.setDataSource(entry.getValue());
                player.prepare();
                mWavPlayers.add(new WavPlayerItem(entry.getValue(), entry.getKey(), player));
                if (entry.getKey().equals(TrackType.BACKING_MUSIC)) {
                    mDuration = player.getDuration();
                }
            }
        } catch (IOException e) {
            Log.e(TAG, "Map exception", e);
        }
    }

此方法创建并启动后台线程,在for循环中创建3个后台线程。

代码语言:javascript
复制
 protected void sendState(WavPlayerEvent.State state) {
       
 CyclicBarrier barrier = new CyclicBarrier(mWavPlayers.size() + 1);
  
        for (WavPlayerItem item : mWavPlayers) {
            MediaPlayer player = (MediaPlayer) item.getPlayer();
            new Thread(new SyncedStateRunnable(state, player, barrier, STATE.PLAYER)).start();
        }
    }

此方法有一个run方法,该方法在start()中启动播放机。

代码语言:javascript
复制
    private class SyncedStateRunnable<T> implements Runnable {
        private WavPlayerEvent.State state;
        private MediaPlayer player;
        private NativeSuperpoweredRecorder recorder;
        private CyclicBarrier cyclicBarrier;
        private STATE entityState;

        SyncedStateRunnable(WavPlayerEvent.State state, T entity, CyclicBarrier cyclicBarrier, STATE entityState) {
            this.state = state;
            this.cyclicBarrier = cyclicBarrier;
            this.entityState = entityState;
            switch (entityState) {
                case PLAYER:
                    player = (MediaPlayer) entity;
                    break;
            }
        }

        @Override
        public void run() {
            awaitBarrier();
            switch (state) {
                case PLAYING:
                    start();
                    break;
                case STOP:
                    stop();
                    break;
                case PAUSE:
                    pause();
                    break;
            }
        }
代码语言:javascript
复制
        private void start() {
            switch (entityState) {
                case PLAYER:
                    try {
                        player.start();
                        Log.d(TAG, "player.start();");
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    }
                    break;
            }
        }
EN

回答 2

Stack Overflow用户

发布于 2020-08-16 15:43:39

我会检查控制minSdkVersion和targetSdkVersion并对其进行修改的文件或模块。

票数 0
EN

Stack Overflow用户

发布于 2020-08-16 16:00:32

您是否修改了minSdkVersion并保持了targetSdkVersion的原样?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63438748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档