android-为什么SystemClock.currentThreadTimeMillis()似乎以一半速度运行?

android-为什么SystemClock.currentThreadTimeMillis()似乎以一半速度运行?,第1张

概述我正在尝试编写一个能够与用户输入同步播放MIDI文件的音乐应用.我已经创建了一个自定义视图,播放声音和读取MIDI数据.我在视图的onDraw()方法中运行MIDI数据的回放,因此可以将用户输入应用于它.音符数据存储为音符音高和演奏时间的数组,从开始算起以毫秒为单位.我的测试数据每500

我正在尝试编写一个能够与用户输入同步播放MIDI文件的音乐应用.我已经创建了一个自定义视图,播放声音和读取MIDI数据.我在视图的onDraw()方法中运行MIDI数据的回放,因此可以将用户输入应用于它.音符数据存储为音符音高和演奏时间的数组,从开始算起以毫秒为单位.

我的测试数据每500毫秒(半秒)播放一次不同音调的音符.我在每个音符的时间间隔旁记录了currentThreadTimeMillis(),这与我期望的一样.每500个滴答声稍有变化,便会发出一个音符.但是,这种以毫秒为单位的计数大约是实际速度的一半,需要一秒钟才能计算出500毫秒!我在galaxy Ace上运行,因此这不是慢模拟器的问题.

SystemClock.currentThreadTimeMillis()为什么花两秒钟来计算1000ms?

    public voID onDraw(Canvas canvas) {        // Todo : Draw notes       canvas.drawcolor(color.BLACK);       canvas.drawBitmap(aNote.img, aNote.x, aNote.y, null);       if (ready>0){            elapsed_time = SystemClock.currentThreadTimeMillis() - start_time;            mIDi_note_data = MIDI.track_data.get(current_note);            if (mIDi_note_data.start_time <= elapsed_time){                current_note++;                pitch = mIDi_note_data.pitch;                Log.d("MUSIC", "Note time " + mIDi_note_data.start_time + " ThreadTime "+ elapsed_time);                sounds.play(tone, 1.0f, 1.0f, 0, 0, notes[pitch]);                              }            if (current_note > MIDI.track_data.size()-1){                ready = -2;            }       }else if (ready == 0){            start_time = SystemClock.currentThreadTimeMillis();            Log.d("MUSIC", "Start time "+start_time);            ready = 1;       }    }

解决方法:

您正在使用SystemClock.currentThreadTimeMillis(),这是当前线程已运行的时间.在AndroID上,我猜测UI线程实际上只在一半时间运行. (另一半用于其余的 *** 作系统!)

切换到System.currentTimeMillis(),您的问题将得到解决.

您可以阅读有关different time measuring systems here的更多信息.

总结

以上是内存溢出为你收集整理的android-为什么SystemClock.currentThreadTimeMillis()似乎以一半速度运行?全部内容,希望文章能够帮你解决android-为什么SystemClock.currentThreadTimeMillis()似乎以一半速度运行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存