Я зарегистрировал 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
- Есть ли какая-то конфигурация/код, который может принудительно реализовать это намерение?
- Как заставить Intent правильно сообщать о наличии микрофона?