确保中兴 T815 Android phone 的 Action HEADSET_PLUG 交付的方法

Way to ensure delivery of Action HEADSET_PLUG for ZTE T815 Android phone

我已经注册了一个 BroadcastReceiver 来接收 ACTION_HEADSET_PLUG,它适用于大多数设备,即无论何时插入或拔下耳机都会调用它。但在其他设备上,例如中兴 T815,当耳机为 plugged/unplugged.

时,Intent 永远不会是 sent/received

接收者注册代码供参考:

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));
}

更多信息: Intent 被调度,但仅在耳机上触发 HEADSET_HOOK 命令后。

并且当 Intent 被分派时

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

始终returns 0(即没有麦克风)。

所以

  1. 是否有一些 config/code 可以强制传送这个 意图?
  2. 如何获得 Intent 以正确报告是否 麦克风存在与否?

事实证明,中兴 T815 的音频插座有一个 OMTP TRRS 配置,而不是像其他所有现代 Android 设备一样 CTIA/AHJ。

http://en.wikipedia.org/wiki/Phone_connector_%28audio%29

令人难过的事态,尤其是在尝试跨产品使用音频馈送输入时。