From 5e824f740ab85f54e1896de710203497ee30de12 Mon Sep 17 00:00:00 2001 From: Steven 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 d3f0891..d7ad034 100644 --- a/DeviceSettings/res/values/strings.xml +++ b/DeviceSettings/res/values/strings.xml @@ -39,4 +39,9 @@ Radio HSPA Enable HSDPA/HSUPA + + Dock + DOCK AUDIO + Use Dock USB Audio + Use the passive audio out on the dock 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 @@ + + + + + + + + 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