Звук ToneGenerator гладкий? - PullRequest
       21

Звук ToneGenerator гладкий?

1 голос
/ 29 августа 2011

У кого-нибудь есть такая же проблема?

В приложении 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);
...