Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 300bdcd3 authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "frameworks: Fix audio routing when plugged to docks" into ics

parents f0b7008a 259b7f23
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -21,13 +21,14 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.UEventObserver;
import android.provider.Settings;
import android.util.Slog;
import android.media.AudioManager;
import android.util.Log;

import java.io.FileReader;
@@ -39,13 +40,11 @@ import java.io.FileNotFoundException;
class WiredAccessoryObserver extends UEventObserver {
    private static final String TAG = WiredAccessoryObserver.class.getSimpleName();
    private static final boolean LOG = true;
    private static final int MAX_AUDIO_PORTS = 4; /* h2w, dock, USB Audio & hdmi */
    private static final int MAX_AUDIO_PORTS = 3; /* h2w, USB Audio & hdmi */
    private static final int MAX_AUDIO_PORTS_DOCK = 1;
    private static final String uEventInfo[][] = { {"DEVPATH=/devices/virtual/switch/h2w",
                                                    "/sys/class/switch/h2w/state",
                                                    "/sys/class/switch/h2w/name"},
                                                   {"DEVPATH=/devices/virtual/switch/dock",
                                                    "/sys/class/switch/dock/state",
                                                    "/sys/class/switch/dock/name"},
                                                   {"DEVPATH=/devices/virtual/switch/usb_audio",
                                                    "/sys/class/switch/usb_audio/state",
                                                    "/sys/class/switch/usb_audio/name"},
@@ -53,6 +52,10 @@ class WiredAccessoryObserver extends UEventObserver {
                                                    "/sys/class/switch/hdmi/state",
                                                    "/sys/class/switch/hdmi/name"} };

    private static final String uEventInfoDock[][] = { {"DEVPATH=/devices/virtual/switch/dock",
                                                        "/sys/class/switch/dock/state",
                                                        "/sys/class/switch/dock/name"} };

    private static final int BIT_HEADSET = (1 << 0);
    private static final int BIT_HEADSET_NO_MIC = (1 << 1);
    private static final int BIT_USB_HEADSET_ANLG = (1 << 2);
@@ -88,9 +91,18 @@ class WiredAccessoryObserver extends UEventObserver {
        // one on the board, one on the dock and one on HDMI:
        // observe three UEVENTs
        init();  // set initial status

        for (int i = 0; i < MAX_AUDIO_PORTS; i++) {
            startObserving(uEventInfo[i][0]);
        }

        // Do we actually need/want to hack the system and look at the dock uevents?
        if (Settings.System.getInt(context.getContentResolver(),
                Settings.System.DOCK_USB_AUDIO_ENABLED, 0) == 1) {
            for (int i = 0; i < MAX_AUDIO_PORTS_DOCK; i++) {
                startObserving(uEventInfoDock[i][0]);
            }
        }
      }
  }