2017-06-19 46 views
0

我正在開發我的應用程序,但我遇到了一個問題。穩定的聲音在Android與Mediaplayer玩

當啓動我的應用程序時,它從數據庫中檢索信息。然後它根據數據庫中的信息在屏幕上繪製筆記,它會繪製喜歡的帽子,圈套和踢球筆記,如果必須播放,那麼在不是灰色的時候音符是黑色的。

下一步是使用rx java調用名爲highLightNotes()的方法。

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(); 
} 

snarePlayer是媒體播放。

我的第一個問題在於,它需要太多時間才能聽到筆記。這種流行趨勢正在變得不穩定,因爲有時需要更多的時間纔能有時減少。

第二個問題是,那種類型的rxjava noob明顯,我想知道爲什麼通過點擊第一次播放rhytm它需要幾秒鐘才能開始,然後播放真的很快,之後我變得穩定。

請給我提供一些更多的信息,以繼續工作,我卡住了。

回答

1

您第一次啓動新的線程。看看你在哪裏告訴它訂閱一個新的線程?

如果您需要嚴格控制像這樣的時間,RxJava是不可行的。你不希望巨大的代碼庫在線程之間交換。你只是要求痛苦。

+0

那麼你在這種情況下建議使用什麼? – trOnk12

+0

我會推薦一個單線程,並且只在主線程上進行UI更新(您必須)。根據需要使用睡眠延遲線程。不過,Android一般都有音頻延遲問題,讓所有東西都起作用並不簡單。你可能想開始閱讀這裏https://developer.android.com/ndk/guides/audio/audio-latency.html –

+0

因此,而不是使用rxjava只是使用線程和計時器?請你可以更具體地說:P – trOnk12