Java Kindle Fire HD 8(第10代)平板电脑FireOS 7.3.1.4上的音乐应用程序存在兼容性问题-发生了什么?
我们的应用程序在使用FireOS 5.1.x的旧版本Kindle Fire HD时运行良好。应用程序仅在FireOS 7.3.1.4的Kindle HD 8(第10代)上出现问题。 这个问题是随机的,有时应用程序工作正常,但有时应用程序表现不好 FireOS 7.3.1.4使用android API级别28(android Pie) 我们的音乐应用程序有3个媒体播放器,我们在应用程序中使用的是Androids标准媒体播放器 所有3个媒体播放器同时运行,我们在每个媒体播放器上运行的曲目具有相同的持续时间 我们在后台线程中进行所有处理,比如在所有媒体播放器上播放音乐,因此总共有3个线程并行运行 问题出现在Kindle HD 8(第10代)上,因为出现了一些故障,第一个媒体播放器上运行的曲目与第二个媒体播放器上的曲目重叠,或者超出了第二个媒体播放器上的曲目 总的来说,我的意思是,3台媒体播放器上的曲目不同步,即使它们的持续时间相同,并且在同一时间开始播放 还有一件事,歌曲开始时没有任何问题,它们在开始时是同步的,但大约50秒后,它们开始变得不同步 该问题在随机时间发生。 同样,该应用程序在旧版本的KindleFire平板电脑和三星手机上运行良好,问题只发生在KindleHD8(10代)上 那么,如果有人能帮助我们解决新Kindle Fire HD的问题?我将非常感谢您的帮助 我的猜测是,运行媒体播放器的后台线程在随机时间出现一些问题,导致媒体播放器不同步。但我不知道如何纠正这种行为 请帮助我们,因为我们被困在这个问题上,我们的用户无法在新款Kindle Fire HD 8平板电脑上使用我们的应用程序。多谢各位 下面是我们拥有的3个媒体播放器的一些代码片段 我们创建了一个新的媒体播放器,并在其中添加了一个曲目。For循环在代码中执行了3次Java Kindle Fire HD 8(第10代)平板电脑FireOS 7.3.1.4上的音乐应用程序存在兼容性问题-发生了什么?,java,android,kindle-fire,fireos,Java,Android,Kindle Fire,Fireos,我们的应用程序在使用FireOS 5.1.x的旧版本Kindle Fire HD时运行良好。应用程序仅在FireOS 7.3.1.4的Kindle HD 8(第10代)上出现问题。 这个问题是随机的,有时应用程序工作正常,但有时应用程序表现不好 FireOS 7.3.1.4使用android API级别28(android Pie) 我们的音乐应用程序有3个媒体播放器,我们在应用程序中使用的是Androids标准媒体播放器 所有3个媒体播放器同时运行,我们在每个媒体播放器上运行的曲目具有相同的持
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);
}
}
此方法有一个run方法,用于在start()中指定播放器的start
我会检查控制MinSDK版本和
targetSdkVersion并对其进行了修改。我会检查控制minSdkVersion和的文件或模块
targetSdkVersion并对其进行了修改。您是否修改了minSdkVersion并使其保持原样?您是否修改了minSdkVersion并使其保持原样?我确实将targetSdkVersion从26提高到了API级别28,但问题仍然存在:(.我的minSdkVersion是API级别21,我确实将targetSDKVersion从26提高到了API级别28,但问题依然存在:(.我的minSdkVersion是API级别21,我保持minSdkVersion不变,修改的targetSdkVersionI保持minSdkVersion不变,修改的targetSDKVersion不变
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();
}
}
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;
}
}
private void start() {
switch (entityState) {
case PLAYER:
try {
player.start();
Log.d(TAG, "player.start();");
} catch (IllegalStateException e) {
e.printStackTrace();
}
break;
}
}