使用Mediaplayer在Android中播放稳定的声音
我正在开发我的应用程序,但我遇到了一个问题 启动我的应用程序时,它会从数据库中检索信息。然后,它根据数据库中的信息在屏幕上绘制注释,绘制hi hat、snare和kick注释,如果必须播放,则注释为黑色,而不是灰色 下一步是im使用RXJava调用名为highLightNotes()的方法 snarePlayer是一个媒体播放器 我在这里遇到的第一个问题是,听音符要花太多的时间。节奏变得不稳定,因为有时需要更多的时间,有时需要更少的时间 第二个问题是,我显然有点像rxjava noob,我想知道为什么第一次点击播放rhytm需要几秒钟才能开始,然后播放得非常快,之后我变得稳定使用Mediaplayer在Android中播放稳定的声音,android,audio,Android,Audio,我正在开发我的应用程序,但我遇到了一个问题 启动我的应用程序时,它会从数据库中检索信息。然后,它根据数据库中的信息在屏幕上绘制注释,绘制hi hat、snare和kick注释,如果必须播放,则注释为黑色,而不是灰色 下一步是im使用RXJava调用名为highLightNotes()的方法 snarePlayer是一个媒体播放器 我在这里遇到的第一个问题是,听音符要花太多的时间。节奏变得不稳定,因为有时需要更多的时间,有时需要更少的时间 第二个问题是,我显然有点像rxjava noob,我想知道
请给我提供更多的信息,以便继续工作,我被卡住了。您第一次启动了一个新线程。看到你告诉它订阅新线程的地方了吗
如果您需要像这样严格控制计时,那么RxJava就不是一个好办法。您不希望在线程之间交换巨大的代码库。你只是在自讨苦吃。那么,在这种情况下,你建议使用什么呢?我建议使用一个线程,只在主线程上进行UI更新(你必须这样做)。根据需要使用sleep延迟线程。但众所周知,安卓系统普遍存在音频延迟问题,让一切正常运行并不简单。您可能想从这里开始阅读,而不是仅仅使用线程和计时器来使用rxjava?请你能说得更具体一点吗
Observable.interval(400, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Long>() { @Override
public void onNext(@NonNull Long aLong) {
highLightNotes(aLong);
}
public void playSnare(){
snarePlayer.seekTo(0);
snarePlayer.start();
}