From e04c67da4bf663d21cd1fa3437e60b96b4a3cc46 Mon Sep 17 00:00:00 2001
From: Steven <stevenharperuk.aosp@gmail.com>
Date: Thu, 2 Aug 2012 19:22:38 +0100
Subject: Add Dock USB Audio Support for Samsung Car / Desk Docks 2 of 2

This adds a new Tab in the GalaxyS2Settings.apk called Dock

There is a new section in this for Dock Audio.
A new Checkbox sets the users preference to route the Dock Audio

On Startup or when the checkbox is changed, an intent is fired

This intent is recieved by the services/java/com/android/server/WiredAccessoryObserver.java

See 1 of 2
http://review.cyanogenmod.com/#/c/20586/
---
 DeviceSettings/res/values/strings.xml              |  5 ++
 DeviceSettings/res/xml/dock_preferences.xml        | 13 ++++
 .../settings/device/DeviceSettings.java            |  3 +
 .../settings/device/DockFragmentActivity.java      | 75 ++++++++++++++++++++++
 .../com/cyanogenmod/settings/device/Startup.java   |  1 +
 5 files changed, 97 insertions(+)
 create mode 100644 DeviceSettings/res/xml/dock_preferences.xml
 create mode 100644 DeviceSettings/src/com/cyanogenmod/settings/device/DockFragmentActivity.java

diff --git a/DeviceSettings/res/values/strings.xml b/DeviceSettings/res/values/strings.xml
index be525f1..43d1dbf 100644
--- a/DeviceSettings/res/values/strings.xml
+++ b/DeviceSettings/res/values/strings.xml
@@ -39,4 +39,9 @@
     <string name="category_radio_title">Radio</string>
     <string name="hspa_title_head">HSPA</string>
     <string name="hspa_summary_head">Enable HSDPA/HSUPA</string>
+
+    <string name="category_dock_title">Dock</string>
+    <string name="dockaudio_subcat_title">DOCK AUDIO</string>
+    <string name="use_dock_audio_title_head">Use Dock USB Audio</string>
+    <string name="use_dock_audio_summary_head">Use the passive audio out on the dock</string>
 </resources>
diff --git a/DeviceSettings/res/xml/dock_preferences.xml b/DeviceSettings/res/xml/dock_preferences.xml
new file mode 100644
index 0000000..5f5fdf4
--- /dev/null
+++ b/DeviceSettings/res/xml/dock_preferences.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+    <PreferenceCategory 
+                android:title="@string/dockaudio_subcat_title">
+    <!-- Use Dock Audio -->
+    <CheckBoxPreference
+                android:key="dock_audio"
+                android:title="@string/use_dock_audio_title_head"
+                android:summary="@string/use_dock_audio_summary_head"
+                />
+    </PreferenceCategory>
+</PreferenceScreen>
+
diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java b/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java
index a60d9e8..e60cd0c 100644
--- a/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java
+++ b/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java
@@ -47,6 +47,7 @@ public class DeviceSettings extends FragmentActivity {
     public static final String KEY_TOUCHKEY_LIGHT = "touchkey_light";
     public static final String KEY_TOUCHKEY_TIMEOUT = "touchkey_timeout";
     public static final String KEY_VIBRATOR_INTENSITY = "vibrator_intensity";
+    public static final String KEY_USE_DOCK_AUDIO = "dock_audio";
 
     ViewPager mViewPager;
     TabsAdapter mTabsAdapter;
@@ -73,6 +74,8 @@ public class DeviceSettings extends FragmentActivity {
                 SensorsFragmentActivity.class, null);
         mTabsAdapter.addTab(bar.newTab().setText(R.string.category_haptic_title),
                 HapticFragmentActivity.class, null);
+        mTabsAdapter.addTab(bar.newTab().setText(R.string.category_dock_title),
+                DockFragmentActivity.class, null);
 
         if (savedInstanceState != null) {
             bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/DockFragmentActivity.java b/DeviceSettings/src/com/cyanogenmod/settings/device/DockFragmentActivity.java
new file mode 100644
index 0000000..541d90b
--- /dev/null
+++ b/DeviceSettings/src/com/cyanogenmod/settings/device/DockFragmentActivity.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2012 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.cyanogenmod.settings.device;
+
+import android.app.ActivityManagerNative;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+
+import com.cyanogenmod.settings.device.R;
+
+public class DockFragmentActivity extends PreferenceFragment {
+
+    private static final String PREF_ENABLED = "1";
+    private static final String TAG = "GalaxyS2Parts_General";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        addPreferencesFromResource(R.xml.dock_preferences);
+        PreferenceScreen prefSet = getPreferenceScreen();
+
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+
+        String boxValue;
+        String key = preference.getKey();
+
+        Log.w(TAG, "key: " + key);
+
+        if (key.compareTo(DeviceSettings.KEY_USE_DOCK_AUDIO) == 0) {
+            boxValue = (((CheckBoxPreference)preference).isChecked() ? "1" : "0");
+            Intent i = new Intent("com.cyanogenmod.settings.SamsungDock");
+            i.putExtra("data", boxValue);
+            ActivityManagerNative.broadcastStickyIntent(i, null);
+        }
+
+        return true;
+    }
+
+    public static void restore(Context context) {
+        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+        boolean dockAudio = sharedPrefs.getBoolean(DeviceSettings.KEY_USE_DOCK_AUDIO, false);
+        Intent i = new Intent("com.cyanogenmod.settings.SamsungDock");
+        i.putExtra("data", (dockAudio? "1" : "0"));
+        ActivityManagerNative.broadcastStickyIntent(i, null);
+
+    }
+
+}
diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java b/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java
index cb3624a..a207ac8 100644
--- a/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java
+++ b/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java
@@ -33,6 +33,7 @@ public class Startup extends BroadcastReceiver {
         VibratorIntensity.restore(context);
         SensorsFragmentActivity.restore(context);
         TouchkeyTimeout.restore(context);
+        DockFragmentActivity.restore(context);
     }
 
 }
-- 
cgit v1.1