Способ обеспечения доставки Action HEADSET_PLUG для телефона Android ZTE T815

Я зарегистрировал BroadcastReceiver для получения ACTION_HEADSET_PLUG, который отлично работает для большинства устройств, т.е. он вызывается всякий раз, когда гарнитура подключена или отключена. Но на других, например ZTE T815, Intent никогда не отправляется/не принимается, когда гарнитура подключена/отключена.

Для справки вот код для регистрации приемника:

private final BroadcastReceiver headsetPlugReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Received intent=" + intent);
        if (intent.getAction().equalsIgnoreCase(Intent.ACTION_HEADSET_PLUG)) {
            // do stuff
        }
    }
};

public void onCreate(Bundle savedState) {
    super.onCeate(savedState);
    // ...
    registerReceiver(headsetPlugReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
}

Дополнительная информация: намерение отправляется, но только после запуска команды HEADSET_HOOK на гарнитуре.

И когда намерение отправлено

final int microphone = intent.getIntExtra("microphone", 0);

всегда возвращает 0 (т.е. нет микрофона).

So

  1. Есть ли какая-то конфигурация/код, который может принудительно реализовать это намерение?
  2. Как заставить Intent правильно сообщать о наличии микрофона?

person William    schedule 20.02.2015    source источник
comment
Вы уверены, что это зависит от устройства или от микрофона?   -  person Amit K. Saha    schedule 02.03.2015
comment
Зависит от устройства. Несколько микрофонов прекрасно работают на нескольких десятках других устройств. На этом устройстве не работают микрофоны.   -  person William    schedule 02.03.2015


Ответы (1)