Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Mediaplayer在Android中播放稳定的声音_Android_Audio - Fatal编程技术网

使用Mediaplayer在Android中播放稳定的声音

使用Mediaplayer在Android中播放稳定的声音,android,audio,Android,Audio,我正在开发我的应用程序,但我遇到了一个问题 启动我的应用程序时,它会从数据库中检索信息。然后,它根据数据库中的信息在屏幕上绘制注释,绘制hi hat、snare和kick注释,如果必须播放,则注释为黑色,而不是灰色 下一步是im使用RXJava调用名为highLightNotes()的方法 snarePlayer是一个媒体播放器 我在这里遇到的第一个问题是,听音符要花太多的时间。节奏变得不稳定,因为有时需要更多的时间,有时需要更少的时间 第二个问题是,我显然有点像rxjava noob,我想知道

我正在开发我的应用程序,但我遇到了一个问题

启动我的应用程序时,它会从数据库中检索信息。然后,它根据数据库中的信息在屏幕上绘制注释,绘制hi hat、snare和kick注释,如果必须播放,则注释为黑色,而不是灰色

下一步是im使用RXJava调用名为highLightNotes()的方法

snarePlayer是一个媒体播放器

我在这里遇到的第一个问题是,听音符要花太多的时间。节奏变得不稳定,因为有时需要更多的时间,有时需要更少的时间

第二个问题是,我显然有点像rxjava noob,我想知道为什么第一次点击播放rhytm需要几秒钟才能开始,然后播放得非常快,之后我变得稳定


请给我提供更多的信息,以便继续工作,我被卡住了。

您第一次启动了一个新线程。看到你告诉它订阅新线程的地方了吗


如果您需要像这样严格控制计时,那么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();
}