Произнести записанный текст при получении звонка в Android - PullRequest
0 голосов
/ 19 мая 2018

Я разрабатываю приложение, в котором я хочу генерировать речевой файл, т.е. письменный текст, используя текст в речь каждый раз при исходящем звонке.Я могу определить, когда получатель отвечает на вызов, используя службу специальных возможностей.Вот код: -

public class CallDetection extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

    if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) {
        Log.i("myaccess", "in window changed");


        AccessibilityNodeInfo info = event.getSource();
        if (info != null && info.getText() != null) {
            String duration = info.getText().toString();
            String zeroSeconds = String.format("%02d:%02d", new Object[]{Integer.valueOf(0), Integer.valueOf(0)});
            String firstSecond = String.format("%02d:%02d", new Object[]{Integer.valueOf(0), Integer.valueOf(1)});
            Log.d("myaccess", "after calculation - " + zeroSeconds + " --- " + firstSecond + " --- " + duration);
            if (zeroSeconds.equals(duration) || firstSecond.equals(duration)) {
                Toast.makeText(getApplicationContext(), "Call answered", Toast.LENGTH_SHORT).show();
                // Your Code goes here

            }
            info.recycle();
        }

    }
}

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    Toast.makeText(this, "Service connected", Toast.LENGTH_SHORT).show();
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    info.notificationTimeout = 0;
    info.packageNames = null;
    setServiceInfo(info);
}

@Override
public void onInterrupt() {

}

}

Теперь я использую текст в речь для воспроизведения голоса, но здесь это не работает.Ни я не могу использовать это в сервисе, ни я не могу здесь ни одного голоса на другом телефоне.Я искал и обнаружил, что Android не позволяет приложению отправлять голос во время звонка.Это правда?Помогите мне в решении этой проблемы.

1 Ответ

0 голосов
/ 25 мая 2018

То, что вы нашли, абсолютно верно.Android API не разрешает доступ к голосовому вводу напрямую из соображений безопасности.Поэтому нет способа добиться того, что вы пытаетесь сделать на обычных устройствах.

Еще одна возможность, которая приходит нам в голову, - это воспроизводить аудиоклип, используя во время разговора. См. Эту цитатуиз официальных документов об использовании медиаплеера во время вызова

Аудиоданные можно воспроизводить только на стандартном устройстве вывода.В настоящее время это динамик мобильного устройства или гарнитура Bluetooth.Вы не можете воспроизводить звуковые файлы во время разговора во время разговора.

Единственный переход - это пользовательская ОС / аппаратное обеспечение , которое принимает предоставленный звук в качестве входа микрофона в обычных устройствах.

...