У кого-нибудь есть такая же проблема?
В приложении Android для телефона, когда нажимается номер, тон всегда плавный.
Но когда я использовал очень похожий код в качестве телефонаприложение, тон, который я получаю регулярно, не ровный ... есть пробелы.Есть ли способ решить эту проблему?
Некоторые из моих теорий заключаются в том, что эмулятор вызывает такие прерывания звука, поскольку при обработке возникают задержки во времени.Приложение Phone на эмуляторе также более «скомпилировано» / нативно, чем мой код.И т.д. Не знаю, в чем причина того, что эти тоны не являются непрерывными.
Вот код (буквально такой же, как в приложении для телефона):
...
playTone(ToneGenerator.TONE_DTMF_1,150);
...
void playTone(int tone) {
// if local tone playback is disabled, just return.
if (!mDTMFToneEnabled) {
return;
}
// Also do nothing if the phone is in silent mode.
// We need to re-check the ringer mode for *every* playTone()
// call, rather than keeping a local flag that's updated in
// onResume(), since it's possible to toggle silent mode without
// leaving the current activity (via the ENDCALL-longpress menu.)
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audioManager.getRingerMode();
if ((ringerMode == AudioManager.RINGER_MODE_SILENT)
|| (ringerMode == AudioManager.RINGER_MODE_VIBRATE)) {
return;
}
synchronized (mToneGeneratorLock) {
if (mToneGenerator == null) {
Log.w("test", "playTone: mToneGenerator == null, tone: " + tone);
return;
}
// Start the new tone (will stop any playing tone)
mToneGenerator.startTone(tone, TONE_LENGTH_MS);