2015-11-12 10 views
8

Bu question cevabı, AudioTrack numaralı telefonu kullanarak güvenilir ve hassas bir metronom oluşturabileceğimizi ifade eder. MediaPlayer, SoundPool, Thread ve Timer'u da kullanabiliriz, ancak her zaman bir gecikmeye neden olurlar. AudioTrack'u kullanarak sentezlenmiş bir ses oluşturmak yerine, özel ses dosyalarını kullanarak aynı efekti nasıl elde edebiliriz?Android için hassas metronom

cevap

4

System.nanoTime() numaralı telefonu kullanarak kendi zaman sayacınızı oluşturmaya çalışabilir, hassasiyete ihtiyacınız olduğunda, bunu her zaman kullanabilirsiniz.

public static long nanoTime()

nanosaniye, en hassas mevcut sistem zamanlayıcı geçerli değerini döndürür. Bu yöntem sadece geçen süreyi ölçmek için kullanılabilir ve sistem veya duvar saati süresinin diğer herhangi bir fikriyle ( ) ilgili değildir. Döndürülen değer, bazı sabit ancak isteğe bağlı süreden (belki de geleceğinde, bu nedenle değerler negatif olabilir) beri nanosaniyeyi temsil eder. Bu yöntem nanosaniye kesinliği sağlar, ancak nanosaniye doğruluğu gerektirmez. Değerlerin ne sıklıkta değiştiğine ilişkin garantileri yoktur. Ardışık arasındaki farklar, yaklaşık 292 yıl (263 nanosaniye) 'dan daha büyük bir açıklığın, sayısal taşma nedeniyle geçen zamanı doğru olarak hesaplayamayacağını belirtir.

Örneğin, bazı kod çalıştırmak için ne kadar sürer ölçmek için:

uzun startTime = System.nanoTime(); // ... kodunun ölçüldüğü ... long estimTime = System.nanoTime() - startTime;
İadeler: Sistem zamanlayıcısının geçerli değeri, nanosaniye cinsinden. Süresi: 1,5

Kaynak:

Oracle Belgeler https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime()

İlgili konular