我有一个问题,我想在同一时间开始声音.
我在循环播放3-5个短音(钢琴音色),我在前1ms延迟,在第二个17ms延迟,依此类推,最后声音最多60-90ms.
我正在使用SoundPool.
任何人都有这样的问题,或曾使用它可以解决这个问题(启动多个短的声音同步)库?
下面是示例测试示例(我使用RxJava但我已经使用和不使用RxJava测试了它):
Observable.timer(150, TimeUnit.MILLISECONDS, Schedulers.single())
.repeat()
.subscribe(aLong -> {
for (int soundId = 55; i < 60; i++) {
soundPool.play(soundId , 1f, 1f, 1, 0, 1);
}
});
Run Code Online (Sandbox Code Playgroud) 我在 Google Play Console 上报告了一些 ANR 错误。我像这样打开严格模式:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.build());
Run Code Online (Sandbox Code Playgroud)
而且我只注意到 AdMob 方法中的违规行为:
MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
Run Code Online (Sandbox Code Playgroud)
和:
interstitialAd.loadAd(adReqest);
Run Code Online (Sandbox Code Playgroud)
MobileAds.initialize() 上的错误日志:
StrictMode policy violation; ~duration=827 ms:
android.os.StrictMode$StrictModeDiskReadViolation:
Run Code Online (Sandbox Code Playgroud)
在 InterstitialAd.loadAd() 上:
stack=android.os.StrictMode$StrictModeCustomViolation:
policy=4259871 violation=8 msg=gcore.dynamite
at android.os.StrictMode$AndroidBlockGuardPolicy.onCustomSlowCall(StrictMode.java:1280)
at android.os.StrictMode.noteSlowCall(StrictMode.java:2225)
Run Code Online (Sandbox Code Playgroud)
我想问一下有没有人发现这个问题?如果是,错误是否有可能提供给 ANR?如何消除这些问题?