diff options
116 files changed, 7305 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..64c7ef9 --- /dev/null +++ b/Android.mk @@ -0,0 +1,23 @@ +# +# 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. +# + +LOCAL_PATH := $(call my-dir) + +ifneq ($(filter i9300 n7100,$(TARGET_DEVICE)),) + +include $(call all-makefiles-under,$(LOCAL_PATH)) + +endif diff --git a/BoardCommonConfig.mk b/BoardCommonConfig.mk new file mode 100644 index 0000000..5ad2bc2 --- /dev/null +++ b/BoardCommonConfig.mk @@ -0,0 +1,150 @@ +# +# 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. +# + +# This variable is set first, so it can be overridden +# by BoardConfigVendor.mk +USE_CAMERA_STUB := true +BOARD_USES_GENERIC_AUDIO := false + +TARGET_BOOTANIMATION_PRELOAD := true + +TARGET_CPU_ABI := armeabi-v7a +TARGET_CPU_ABI2 := armeabi +TARGET_CPU_SMP := true +TARGET_ARCH_VARIANT := armv7-a-neon +TARGET_ARCH_VARIANT_CPU := cortex-a9 +ARCH_ARM_HAVE_NEON := true +ARCH_ARM_HAVE_TLS_REGISTER := true +EXYNOS4X12_ENHANCEMENTS := true +EXYNOS4_ENHANCEMENTS := true + +ifdef EXYNOS4X12_ENHANCEMENTS +COMMON_GLOBAL_CFLAGS += -DEXYNOS4210_ENHANCEMENTS +COMMON_GLOBAL_CFLAGS += -DEXYNOS4X12_ENHANCEMENTS +COMMON_GLOBAL_CFLAGS += -DEXYNOS4_ENHANCEMENTS +COMMON_GLOBAL_CFLAGS += -DSURFACEFLINGER_FORCE_SCREEN_RELEASE +COMMON_GLOBAL_CFLAGS += -DDISABLE_HW_ID_MATCH_CHECK +endif + +TARGET_BOARD_PLATFORM := exynos4 +TARGET_SOC := exynos4x12 +TARGET_BOOTLOADER_BOARD_NAME := smdk4x12 + +TARGET_NO_BOOTLOADER := true +TARGET_NO_RADIOIMAGE := true + +TARGET_PROVIDES_INIT := true +TARGET_PROVIDES_INIT_TARGET_RC := true +TARGET_RECOVERY_INITRC := device/samsung/smdk4412-common/recovery.rc + +TARGET_SPECIFIC_HEADER_PATH := device/samsung/smdk4412-common/overlay/include + +# Kernel +BOARD_KERNEL_CMDLINE := "console=ttySAC2,115200" +BOARD_KERNEL_BASE := 0x40000000 +BOARD_KERNEL_PAGESIZE := 2048 + +# Filesystem +BOARD_NAND_PAGE_SIZE := 4096 +BOARD_NAND_SPARE_SIZE := 128 +BOARD_BOOTIMAGE_PARTITION_SIZE := 8388608 +BOARD_RECOVERYIMAGE_PARTITION_SIZE := 8388608 +BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 12381585408 +BOARD_FLASH_BLOCK_SIZE := 4096 +TARGET_USERIMAGES_USE_EXT4 := true + +# Graphics +BOARD_EGL_CFG := device/samsung/smdk4412-common/configs/egl.cfg +USE_OPENGL_RENDERER := true +BOARD_USES_SKIAHWJPEG := true +COMMON_GLOBAL_CFLAGS += -DSEC_HWJPEG_G2D + +# Enable WEBGL in WebKit +ENABLE_WEBGL := true + +# Audio +BOARD_USES_LIBMEDIA_WITH_AUDIOPARAMETER := true + +# HWComposer +BOARD_USES_HWCOMPOSER := true + +# TVOut & HDMI +BOARD_USE_SECTVOUT := true +BOARD_USES_SKTEXTBOX := true + +# Camera +BOARD_USES_PROPRIETARY_LIBCAMERA := true +BOARD_USES_PROPRIETARY_LIBFIMC := true +COMMON_GLOBAL_CFLAGS += -DSAMSUNG_CAMERA_HARDWARE + +# OMX +BOARD_HAVE_CODEC_SUPPORT := SAMSUNG_CODEC_SUPPORT +COMMON_GLOBAL_CFLAGS += -DSAMSUNG_CODEC_SUPPORT +BOARD_USES_PROPRIETARY_OMX := SAMSUNG +COMMON_GLOBAL_CFLAGS += -DSAMSUNG_OMX +BOARD_NONBLOCK_MODE_PROCESS := true +BOARD_USE_STOREMETADATA := true +BOARD_USE_METADATABUFFERTYPE := true +BOARD_USES_MFC_FPS := true +BOARD_USE_S3D_SUPPORT := true +BOARD_USE_CSC_FIMC := false + +# RIL +BOARD_MOBILEDATA_INTERFACE_NAME := "pdp0" + +# Wifi +BOARD_WLAN_DEVICE := bcmdhd +BOARD_WLAN_DEVICE_REV := bcm4334 +WPA_SUPPLICANT_VERSION := VER_0_8_X +BOARD_WPA_SUPPLICANT_DRIVER := NL80211 +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd +BOARD_HOSTAPD_DRIVER := NL80211 +BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd +WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/dhd.ko" +WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/dhd/parameters/firmware_path" +WIFI_DRIVER_FW_PATH_STA := "/system/etc/wifi/bcmdhd_sta.bin" +WIFI_DRIVER_FW_PATH_AP := "/system/etc/wifi/bcmdhd_apsta.bin" +WIFI_DRIVER_FW_PATH_P2P := "/system/etc/wifi/bcmdhd_p2p.bin" +WIFI_DRIVER_MODULE_NAME := "dhd" +WIFI_DRIVER_MODULE_ARG := "firmware_path=/system/etc/wifi/bcmdhd_sta.bin nvram_path=/system/etc/wifi/nvram_net.txt" +WIFI_BAND := 802_11_ABG +BOARD_HAVE_SAMSUNG_WIFI := true + +# Bluetooth +BOARD_HAVE_BLUETOOTH := true +BOARD_HAVE_BLUETOOTH_BCM := true +BOARD_HAVE_SAMSUNG_BLUETOOTH := true + +# Vold +TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/s3c-usbgadget/gadget/lun%d/file" + +# Recovery +BOARD_CUSTOM_RECOVERY_KEYMAPPING := ../../device/samsung/smdk4412-common/recovery/recovery_keys.c +BOARD_CUSTOM_GRAPHICS := ../../../device/samsung/smdk4412-common/recovery/graphics.c +BOARD_USE_CUSTOM_RECOVERY_FONT := \"roboto_15x24.h\" +BOARD_UMS_LUNFILE := "/sys/class/android_usb/android0/f_mass_storage/lun0/file" +BOARD_USES_MMCUTILS := true +BOARD_HAS_LARGE_FILESYSTEM := true +BOARD_HAS_NO_MISC_PARTITION := true +BOARD_HAS_NO_SELECT_BUTTON := true + +# Charging mode +BOARD_CHARGING_MODE_BOOTING_LPM := /sys/class/power_supply/battery/batt_lp_charging +BOARD_BATTERY_DEVICE_NAME := "battery" + +# inherit from the proprietary version +-include vendor/samsung/smdk4412-common/BoardConfigVendor.mk diff --git a/DeviceSettings/Android.mk b/DeviceSettings/Android.mk new file mode 100644 index 0000000..12c8de5 --- /dev/null +++ b/DeviceSettings/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +LOCAL_STATIC_JAVA_LIBRARIES := android-support-v13 + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := GalaxyS3Settings +LOCAL_CERTIFICATE := platform + +include $(BUILD_PACKAGE) + +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/DeviceSettings/AndroidManifest.xml b/DeviceSettings/AndroidManifest.xml new file mode 100644 index 0000000..d373ded --- /dev/null +++ b/DeviceSettings/AndroidManifest.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.cyanogenmod.settings.device" + android:sharedUserId="android.uid.system" > + + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> + <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> + + <application android:label="@string/app_name"> + <activity + android:name="com.cyanogenmod.settings.device.DeviceSettings" + android:icon="@drawable/ic_launcher_cmdevicesettings" + android:label="@string/app_name" > + <intent-filter> + <action android:name="com.cyanogenmod.action.LAUNCH_DEVICE_SETTINGS" /> + <action android:name="android.intent.action.MAIN" /> + </intent-filter> + </activity> + + <receiver android:name=".Startup"> + <intent-filter android:priority="100"> + <action android:name="android.intent.action.BOOT_COMPLETED" /> + </intent-filter> + </receiver> + + <activity android:name=".HapticFragmentActivity" /> + <activity android:name=".RadioFragmentActivity" /> + <activity android:name=".ScreenFragmentActivity" /> + + </application> +</manifest> diff --git a/DeviceSettings/res/drawable/ic_launcher_cmdevicesettings.png b/DeviceSettings/res/drawable/ic_launcher_cmdevicesettings.png Binary files differnew file mode 100755 index 0000000..66de9c3 --- /dev/null +++ b/DeviceSettings/res/drawable/ic_launcher_cmdevicesettings.png diff --git a/DeviceSettings/res/layout/top.xml b/DeviceSettings/res/layout/top.xml new file mode 100755 index 0000000..744b568 --- /dev/null +++ b/DeviceSettings/res/layout/top.xml @@ -0,0 +1,5 @@ +<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/viewPager" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + diff --git a/DeviceSettings/res/values-de/arrays.xml b/DeviceSettings/res/values-de/arrays.xml new file mode 100644 index 0000000..9edf346 --- /dev/null +++ b/DeviceSettings/res/values-de/arrays.xml @@ -0,0 +1,56 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (Standard)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="hspa_entries"> + <item>Nur UMTS</item> + <item>Nur HSDPA</item> + <item>HSDPA + HSUPA</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (Standard)</item> + <item>UI</item> + <item>Video</item> + <item>Video warm</item> + <item>Video kalt</item> + <item>Kamera</item> + <item>Navigation</item> + <item>Gallerie</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>Dynamisch (Standard)</item> + <item>Standard</item> + <item>Natürlich</item> + <item>Film</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>Normal</item> + <item>Invertiert</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>Blinken</item> + <item>Verblassen</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>Niemals</item> + <item>1 Sekunde</item> + <item>2 Sekunden</item> + <item>3 Sekunden (Standard)</item> + <item>4 Sekunden</item> + <item>5 Sekunden</item> + <item>6 Sekunden</item> + </string-array> + +</resources> diff --git a/DeviceSettings/res/values-de/strings.xml b/DeviceSettings/res/values-de/strings.xml new file mode 100644 index 0000000..50c66a6 --- /dev/null +++ b/DeviceSettings/res/values-de/strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Galaxy S III Einstellungen</string> + + <string name="category_haptic_title">Haptik</string> + <string name="vibrator_subcat_title">Vibrator</string> + <string name="vibrator_intensity_title_head">Vibrator Intensität</string> + <string name="vibrator_intensity_summary_head">Wähle Vibrator Intensität</string> + + <string name="category_radio_title">Mobilfunk</string> + <string name="hspa_title_head">HSPA</string> + <string name="hspa_summary_head">Aktiviere HSDPA/HSUPA</string> + + <string name="category_screen_title">Display</string> + <string name="mdnie_subcat_title">Farben</string> + <string name="mdnie_scenario_title_head">Szenario</string> + <string name="mdnie_scenario_summary_head">Wähle das mDNIe Szenario</string> + <string name="mdnie_mode_title_head">Modus</string> + <string name="mdnie_mode_summary_head">Wähle den mDNIe Modus</string> + <string name="mdnie_negative_title_head">Negativ Modus</string> + <string name="mdnie_negative_summary_head">Invertiere Farben</string> + + <string name="led_subcat_title">Benachrichtigungslicht</string> + <string name="led_fade_title_head">Modus</string> + <string name="led_fade_summary_head">Wähle zwischen sanftem Verblassen und Blinken</string> + + <string name="touchkey_subcat_title">Touchkeys</string> + <string name="touchkey_light_title_head">Beleuchtung</string> + <string name="touchkey_light_summary_off">Aktiviere Beleuchtung</string> + <string name="touchkey_light_summary_on">Deaktiviere Beleuchtung</string> + <string name="touchkey_timeout_title_head">Zeitabschaltung der Beleuchtung</string> + <string name="touchkey_timeout_summary_head">Setze Zeit für automatische Abschaltung</string> + +</resources> diff --git a/DeviceSettings/res/values-es/arrays.xml b/DeviceSettings/res/values-es/arrays.xml new file mode 100644 index 0000000..fd55bc4 --- /dev/null +++ b/DeviceSettings/res/values-es/arrays.xml @@ -0,0 +1,48 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (por defecto)</item> + <item>75%</item> + <item>100%</item> + </string-array> + <string-array name="hspa_entries"> + <item>Solo UMTS</item> + <item>Solo HSDPA</item> + <item>HSDPA + HSUPA</item> + </string-array> + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (por defecto)</item> + <item>UI</item> + <item>Vídeo</item> + <item>Vídeo cálido</item> + <item>Vídeo frío</item> + <item>Camara</item> + <item>Navegación</item> + <item>Galería</item> + <item>VT</item> + </string-array> + <string-array name="mdnie_mode_entries"> + <item>Estándar (por defecto)</item> + <item>Dinámico</item> + <item>Natural</item> + <item>Película</item> + </string-array> + <string-array name="mdnie_negative_entries"> + <item>Normal</item> + <item>Invertido</item> + </string-array> + <string-array name="led_fade_entries"> + <item>Parpadeo</item> + <item>Fundido</item> + </string-array> + <string-array name="touchkey_timeout_entries"> + <item>Nunca</item> + <item>1 segundo</item> + <item>2 segundos</item> + <item>3 segundos (por defecto)</item> + <item>4 segundos</item> + <item>5 segundos</item> + <item>6 segundos</item> + </string-array> +</resources> diff --git a/DeviceSettings/res/values-es/strings.xml b/DeviceSettings/res/values-es/strings.xml new file mode 100644 index 0000000..50674d3 --- /dev/null +++ b/DeviceSettings/res/values-es/strings.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">"Ajustes Galaxy S III"</string> + <string name="category_haptic_title">"Háptica"</string> + <string name="vibrator_subcat_title">"Vibración"</string> + <string name="vibrator_intensity_title_head">"Intensidad de vibración"</string> + <string name="vibrator_intensity_summary_head">"Establecer la intensidad de vibración"</string> + <string name="category_radio_title">"Radio"</string> + <string name="hspa_title_head">"HSPA"</string> + <string name="hspa_summary_head">"Habilitar HSDPA/HSUPA"</string> + <string name="category_screen_title">"Pantalla"</string> + <string name="mdnie_subcat_title">"Colores"</string> + <string name="mdnie_scenario_title_head">"Escenario"</string> + <string name="mdnie_scenario_summary_head">"Establecer escenario mDNIe"</string> + <string name="mdnie_mode_title_head">"Modo"</string> + <string name="mdnie_mode_summary_head">"Establecer modo mDNIe"</string> + <string name="mdnie_negative_title_head">"Modo negativo"</string> + <string name="mdnie_negative_summary_head">"Habilitar/deshabilitar colores invertidos"</string> + <string name="led_subcat_title">"Notificación LED"</string> + <string name="led_fade_title_head">"Fundido LED"</string> + <string name="led_fade_summary_head">"Habilitar fundido suave en vez de parpadeo intenso"</string> + <string name="touchkey_subcat_title">"Teclas táctiles"</string> + <string name="touchkey_light_title_head">"Retroiluminación"</string> + <string name="touchkey_light_summary_off">"Habilitar retroiluminación"</string> + <string name="touchkey_light_summary_on">"Deshabilitar retroiluminación"</string> + <string name="touchkey_timeout_title_head">"Tiempo de espera de retroiluminación"</string> + <string name="touchkey_timeout_summary_head">"Tiempo tras pulsar una tecla antes de apagar la retroiluminación"</string> +</resources> diff --git a/DeviceSettings/res/values-hu/arrays.xml b/DeviceSettings/res/values-hu/arrays.xml new file mode 100644 index 0000000..824296d --- /dev/null +++ b/DeviceSettings/res/values-hu/arrays.xml @@ -0,0 +1,56 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (Alapbeállítás)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="hspa_entries"> + <item>UMTS</item> + <item>HSDPA</item> + <item>HSDPA + HSUPA</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (Alapbeállítás)</item> + <item>Felhasználói felület</item> + <item>Videó</item> + <item>Videó (Meleg árnyalat)</item> + <item>Videó (Hideg árnyalat)</item> + <item>Kamera</item> + <item>Navigáció</item> + <item>Galéria</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>Dinamikus (Alapbeállítás)</item> + <item>Hagyományos</item> + <item>Természetes</item> + <item>Film</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>Normál</item> + <item>Fordított</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>Villogás</item> + <item>Elhalványulás</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>Soha</item> + <item>1 másodperc</item> + <item>2 másodperc</item> + <item>3 másodperc (Alapbeállítás)</item> + <item>4 másodperc</item> + <item>5 másodperc</item> + <item>6 másodperc</item> + </string-array> + +</resources> diff --git a/DeviceSettings/res/values-hu/strings.xml b/DeviceSettings/res/values-hu/strings.xml new file mode 100644 index 0000000..aecbf59 --- /dev/null +++ b/DeviceSettings/res/values-hu/strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Galaxy S III Beállítások</string> + + <string name="category_haptic_title">Érintési visszajelzés</string> + <string name="vibrator_subcat_title">Rezgés</string> + <string name="vibrator_intensity_title_head">Rezgés erőssége</string> + <string name="vibrator_intensity_summary_head">Rezgés erősségének beállítása</string> + + <string name="category_radio_title">GSM Rádió</string> + <string name="hspa_title_head">HSPA</string> + <string name="hspa_summary_head">HSDPA/HSUPA engedélyezése</string> + + <string name="category_screen_title">Kijelző</string> + <string name="mdnie_subcat_title">Színek</string> + <string name="mdnie_scenario_title_head">Megjelenítés</string> + <string name="mdnie_scenario_summary_head">mDNIe megjelenítési beállítások</string> + <string name="mdnie_mode_title_head">Üzemmód</string> + <string name="mdnie_mode_summary_head">mDNIe üzemmódok</string> + <string name="mdnie_negative_title_head">Negatív üzemmód</string> + <string name="mdnie_negative_summary_head">Fordított színek ki/be</string> + + <string name="led_subcat_title">LED értesítés</string> + <string name="led_fade_title_head">LED halványítás</string> + <string name="led_fade_summary_head">LED elhalványítása villogtatás helyett</string> + + <string name="touchkey_subcat_title">Érintőgombok</string> + <string name="touchkey_light_title_head">Háttérvilágítás</string> + <string name="touchkey_light_summary_off">Háttérvilágítás engedélyezése</string> + <string name="touchkey_light_summary_on">Háttérvilágítás tiltása</string> + <string name="touchkey_timeout_title_head">Háttérvilágítás időkorlátja</string> + <string name="touchkey_timeout_summary_head">Háttérvilágítás késleltetése</string> + +</resources> diff --git a/DeviceSettings/res/values-pt-rBR/arrays.xml b/DeviceSettings/res/values-pt-rBR/arrays.xml new file mode 100755 index 0000000..7ade7ea --- /dev/null +++ b/DeviceSettings/res/values-pt-rBR/arrays.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (Padrão)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="hspa_entries"> + <item>Somente UMTS</item> + <item>Somente HSDPA</item> + <item>HSDPA + HSUPA</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (Padrão)</item> + <item>IU</item> + <item>Vídeo</item> + <item>Vídeo Quente</item> + <item>Vídeo Frio</item> + <item>Câmera</item> + <item>Navegação</item> + <item>Galeria</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>Padrão</item> + <item>Dinâmico</item> + <item>Natural</item> + <item>Filme</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>Normal</item> + <item>Invertido</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>Piscando</item> + <item>Desvanecimento</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>Nunca</item> + <item>1 segundo</item> + <item>2 segundos</item> + <item>3 segundos (Padrão)</item> + <item>4 segundos</item> + <item>5 segundos</item> + <item>6 segundos</item> + </string-array> +</resources> diff --git a/DeviceSettings/res/values-pt-rBR/strings.xml b/DeviceSettings/res/values-pt-rBR/strings.xml new file mode 100755 index 0000000..668c59c --- /dev/null +++ b/DeviceSettings/res/values-pt-rBR/strings.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Config. Galaxy S III</string> + <string name="category_haptic_title">Resposta Tátil</string> + <string name="vibrator_subcat_title">Vibração</string> + <string name="vibrator_intensity_title_head">Intensidade da Vibração</string> + <string name="vibrator_intensity_summary_head">Define a intensidade da vibração</string> + <string name="category_radio_title">Rádio</string> + <string name="hspa_summary_head">Ativar HSDPA/HSUPA</string> + <string name="category_screen_title">Tela</string> + <string name="mdnie_subcat_title">Cores</string> + <string name="mdnie_scenario_title_head">Cenário</string> + <string name="mdnie_scenario_summary_head">Define o Cenário mDNIe</string> + <string name="mdnie_mode_title_head">Modo</string> + <string name="mdnie_mode_summary_head">Define o Modo mDNIe</string> + <string name="mdnie_negative_title_head">Modo Negativo</string> + <string name="mdnie_negative_summary_head">Ativar/Desativar cores invertidas</string> + <string name="led_subcat_title">Notificação com LED</string> + <string name="led_fade_title_head">Desvanecimento LED</string> + <string name="led_fade_summary_head">Ativar desvanecimento suave do LED em vez de piscar.</string> + <string name="touchkey_subcat_title">Teclas sensíveis ao toque</string> + <string name="touchkey_light_title_head">Luz de fundo</string> + <string name="touchkey_light_summary_off">Ativar luz de fundo</string> + <string name="touchkey_light_summary_on">Desativar luz de fundo</string> + <string name="touchkey_timeout_title_head">Tempo limite da luz de fundo</string> + <string name="touchkey_timeout_summary_head">Define o tempo limite para a luz de fundo</string> + <string name="hspa_title_head">HSPA</string> +</resources>
\ No newline at end of file diff --git a/DeviceSettings/res/values-ru/arrays.xml b/DeviceSettings/res/values-ru/arrays.xml new file mode 100644 index 0000000..ed61b6e --- /dev/null +++ b/DeviceSettings/res/values-ru/arrays.xml @@ -0,0 +1,54 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (По умолч.)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="hspa_entries"> + <item>Только UMTS</item> + <item>Только HSDPA</item> + <item>HSDPA + HSUPA</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (По умолч.)</item> + <item>Видео</item> + <item>Видео (тёпл.)</item> + <item>Видео (хол.)</item> + <item>Камера</item> + <item>Навигация</item> + <item>Галерея</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>Динамический (По умолч.)</item> + <item>Стандартный</item> + <item>Натуральный</item> + <item>Кино</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>Нормально</item> + <item>Инверсия</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>Мигание</item> + <item>Затухание</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>Никогда</item> + <item>1 секунда</item> + <item>2 секунды</item> + <item>3 секунды (По умолч.)</item> + <item>4 секунды</item> + <item>5 секунд</item> + <item>6 секунд</item> + </string-array> +</resources> diff --git a/DeviceSettings/res/values-ru/strings.xml b/DeviceSettings/res/values-ru/strings.xml new file mode 100644 index 0000000..d6d44b8 --- /dev/null +++ b/DeviceSettings/res/values-ru/strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Настройки Galaxy S III</string> + + <string name="category_haptic_title">Отклик</string> + <string name="vibrator_subcat_title">Вибрация</string> + <string name="vibrator_intensity_title_head">Интенсивность вибрации</string> + <string name="vibrator_intensity_summary_head">Установка интенсивности вибрации</string> + + <string name="category_radio_title">Модем</string> + <string name="hspa_title_head">HSPA</string> + <string name="hspa_summary_head">Включить HSDPA/HSUPA</string> + + <string name="category_screen_title">Экран</string> + <string name="mdnie_subcat_title">Цвета</string> + <string name="mdnie_scenario_title_head">Сценарий</string> + <string name="mdnie_scenario_summary_head">Установка сценария mDNIe</string> + <string name="mdnie_mode_title_head">Режим</string> + <string name="mdnie_mode_summary_head">Установка режима mDNIe</string> + <string name="mdnie_negative_title_head">Негатив</string> + <string name="mdnie_negative_summary_head">Вкл./выкл. инверсии цветов</string> + + <string name="led_subcat_title">Индикатор событий</string> + <string name="led_fade_title_head">Режим</string> + <string name="led_fade_summary_head">Плавное затухание или резкое мигание</string> + + <string name="touchkey_subcat_title">Сенсорные клавиши</string> + <string name="touchkey_light_title_head">Подсветка</string> + <string name="touchkey_light_summary_off">Подсветка включена</string> + <string name="touchkey_light_summary_on">Подсветка выключена</string> + <string name="touchkey_timeout_title_head">Тайм-аут подсветки</string> + <string name="touchkey_timeout_summary_head">Установка тайм-аута подсветки</string> + +</resources> diff --git a/DeviceSettings/res/values-zh-rCN/arrays.xml b/DeviceSettings/res/values-zh-rCN/arrays.xml new file mode 100644 index 0000000..3fe1780 --- /dev/null +++ b/DeviceSettings/res/values-zh-rCN/arrays.xml @@ -0,0 +1,56 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (默认)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="hspa_entries"> + <item>仅使用 UMTS</item> + <item>仅使用 HSDPA</item> + <item>使用 HSDPA + HSUPA</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (默认)</item> + <item>界面</item> + <item>影片</item> + <item>影片 (温)</item> + <item>影片 (冷)</item> + <item>相机</item> + <item>导航</item> + <item>图库</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>动态 (默认)</item> + <item>标准</item> + <item>自然</item> + <item>电影</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>正常</item> + <item>反色</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>闪烁</item> + <item>淡出</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>从不</item> + <item>1 秒</item> + <item>2 秒</item> + <item>3 秒 (默认)</item> + <item>4 秒</item> + <item>5 秒</item> + <item>6 秒</item> + </string-array> + +</resources> diff --git a/DeviceSettings/res/values-zh-rCN/strings.xml b/DeviceSettings/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..17451bd --- /dev/null +++ b/DeviceSettings/res/values-zh-rCN/strings.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Galaxy S III 设置</string> + + <string name="category_haptic_title">振动</string> + <string name="vibrator_subcat_title">振动器</string> + <string name="vibrator_intensity_title_head">振动器强度</string> + <string name="vibrator_intensity_summary_head">设置振动器强度</string> + + <string name="category_radio_title">无线电</string> + <string name="hspa_title_head">HSPA</string> + <string name="hspa_summary_head">启用 HSDPA/HSUPA</string> + + <string name="category_screen_title">屏幕</string> + <string name="mdnie_subcat_title">颜色</string> + <string name="mdnie_scenario_title_head">场景</string> + <string name="mdnie_scenario_summary_head">设置 mDNIe 场景</string> + <string name="mdnie_mode_title_head">模式</string> + <string name="mdnie_mode_summary_head">设置 mDNIe 模式</string> + <string name="mdnie_negative_title_head">负极模式</string> + <string name="mdnie_negative_summary_head">启用/禁用反色</string> + + <string name="led_subcat_title">LED 指示灯</string> + <string name="led_fade_title_head">LED 淡出</string> + <string name="led_fade_summary_head">启用后 LED 指示灯将会产生淡出效果而替代闪烁效果.</string> + + <string name="touchkey_subcat_title">触摸键</string> + <string name="touchkey_light_title_head">背光灯</string> + <string name="touchkey_light_summary_off">启用背光灯</string> + <string name="touchkey_light_summary_on">禁用背光灯</string> + <string name="touchkey_timeout_title_head">背光灯超时</string> + <string name="touchkey_timeout_summary_head">设置背光灯超时时间</string> +</resources> diff --git a/DeviceSettings/res/values/arrays.xml b/DeviceSettings/res/values/arrays.xml new file mode 100644 index 0000000..d82ffbc --- /dev/null +++ b/DeviceSettings/res/values/arrays.xml @@ -0,0 +1,109 @@ +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <string-array name="vibrator_intensity_entries"> + <item>0%</item> + <item>25%</item> + <item>50% (Default)</item> + <item>75%</item> + <item>100%</item> + </string-array> + + <string-array name="vibrator_intensity_entries_values" translatable="false"> + <item>0</item> + <item>25</item> + <item>50</item> + <item>75</item> + <item>100</item> + </string-array> + + <string-array name="hspa_entries"> + <item>UMTS Only</item> + <item>HSDPA Only</item> + <item>HSDPA + HSUPA</item> + </string-array> + + <string-array name="hspa_entries_values" translatable="false"> + <item>21</item> + <item>22</item> + <item>23</item> + </string-array> + + <string-array name="mdnie_scenario_entries"> + <item>CyanogenMod (Default)</item> + <item>UI</item> + <item>Video</item> + <item>Video Warm</item> + <item>Video Cold</item> + <item>Camera</item> + <item>Navigation</item> + <item>Gallery</item> + <item>VT</item> + </string-array> + + <string-array name="mdnie_scenario_entries_values" translatable="false"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + <item>5</item> + <item>6</item> + <item>7</item> + <item>8</item> + </string-array> + + <string-array name="mdnie_mode_entries"> + <item>Dynamic (Default)</item> + <item>Standard</item> + <item>Natural</item> + <item>Movie</item> + </string-array> + + <string-array name="mdnie_mode_entries_values" translatable="false"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + + <string-array name="mdnie_negative_entries"> + <item>Normal</item> + <item>Inverted</item> + </string-array> + + <string-array name="mdnie_negative_entries_values" translatable="false"> + <item>0</item> + <item>1</item> + </string-array> + + <string-array name="led_fade_entries"> + <item>Blinking</item> + <item>Fading</item> + </string-array> + + <string-array name="led_fade_entries_values" translatable="false"> + <item>0</item> + <item>1</item> + </string-array> + + <string-array name="touchkey_timeout_entries"> + <item>Never</item> + <item>1 second</item> + <item>2 seconds</item> + <item>3 seconds (Default)</item> + <item>4 seconds</item> + <item>5 seconds</item> + <item>6 seconds</item> + </string-array> + + <string-array name="touchkey_timeout_entries_values" translatable="false"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + <item>5</item> + <item>6</item> + </string-array> + +</resources> diff --git a/DeviceSettings/res/values/strings.xml b/DeviceSettings/res/values/strings.xml new file mode 100644 index 0000000..e842ae4 --- /dev/null +++ b/DeviceSettings/res/values/strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Galaxy S III Settings</string> + + <string name="category_haptic_title">Haptic</string> + <string name="vibrator_subcat_title">Vibrator</string> + <string name="vibrator_intensity_title_head">Vibrator Intensity</string> + <string name="vibrator_intensity_summary_head">Set vibrator intensity</string> + + <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_screen_title">Screen</string> + <string name="mdnie_subcat_title">Colors</string> + <string name="mdnie_scenario_title_head">Scenario</string> + <string name="mdnie_scenario_summary_head">Set the mDNIe Scenario</string> + <string name="mdnie_mode_title_head">Mode</string> + <string name="mdnie_mode_summary_head">Set the mDNIe Mode</string> + <string name="mdnie_negative_title_head">Negative Mode</string> + <string name="mdnie_negative_summary_head">Enable/Disable inverted colors</string> + + <string name="led_subcat_title">Notification LED</string> + <string name="led_fade_title_head">LED Fading</string> + <string name="led_fade_summary_head">Enable LED smooth fading instead of sharp blinking.</string> + + <string name="touchkey_subcat_title">Touchkeys</string> + <string name="touchkey_light_title_head">Backlight</string> + <string name="touchkey_light_summary_off">Enable backlight</string> + <string name="touchkey_light_summary_on">Disable backlight</string> + <string name="touchkey_timeout_title_head">Backlight timeout</string> + <string name="touchkey_timeout_summary_head">Set timeout for the backlight</string> + +</resources> diff --git a/DeviceSettings/res/xml/haptic_preferences.xml b/DeviceSettings/res/xml/haptic_preferences.xml new file mode 100644 index 0000000..31c0e21 --- /dev/null +++ b/DeviceSettings/res/xml/haptic_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/vibrator_subcat_title"> + <com.cyanogenmod.settings.device.VibratorIntensity + android:key="vibrator_intensity" + android:title="@string/vibrator_intensity_title_head" + android:summary="@string/vibrator_intensity_summary_head" + android:entries="@array/vibrator_intensity_entries" + android:entryValues="@array/vibrator_intensity_entries_values" + android:defaultValue="50" /> + </PreferenceCategory> +</PreferenceScreen> diff --git a/DeviceSettings/res/xml/radio_preferences.xml b/DeviceSettings/res/xml/radio_preferences.xml new file mode 100644 index 0000000..c173db7 --- /dev/null +++ b/DeviceSettings/res/xml/radio_preferences.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Hspa modes --> + <com.cyanogenmod.settings.device.Hspa + android:key="hspa" + android:title="@string/hspa_title_head" + android:summary="@string/hspa_summary_head" + android:entries="@array/hspa_entries" + android:entryValues="@array/hspa_entries_values" + android:defaultValue="23" /> + +</PreferenceScreen> diff --git a/DeviceSettings/res/xml/screen_preferences.xml b/DeviceSettings/res/xml/screen_preferences.xml new file mode 100644 index 0000000..aff39c0 --- /dev/null +++ b/DeviceSettings/res/xml/screen_preferences.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + + <PreferenceCategory + android:title="@string/mdnie_subcat_title"> + <!-- mDNIe Scenario modes --> + <com.cyanogenmod.settings.device.mDNIeScenario + android:key="mdnie_scenario" + android:title="@string/mdnie_scenario_title_head" + android:summary="@string/mdnie_scenario_summary_head" + android:entries="@array/mdnie_scenario_entries" + android:entryValues="@array/mdnie_scenario_entries_values" + android:defaultValue="0" /> + + <!-- mDNIe Mode --> + <com.cyanogenmod.settings.device.mDNIeMode + android:key="mdnie_mode" + android:title="@string/mdnie_mode_title_head" + android:summary="@string/mdnie_mode_summary_head" + android:entries="@array/mdnie_mode_entries" + android:entryValues="@array/mdnie_mode_entries_values" + android:defaultValue="0" /> + + <!-- mDNIe Negative mode --> + <com.cyanogenmod.settings.device.mDNIeNegative + android:key="mdnie_negative" + android:title="@string/mdnie_negative_title_head" + android:summary="@string/mdnie_negative_summary_head" + android:entries="@array/mdnie_negative_entries" + android:entryValues="@array/mdnie_negative_entries_values" + android:defaultValue="0" /> + </PreferenceCategory> + + <PreferenceCategory + android:title="@string/led_subcat_title"> + <!-- LED fading mode --> + <com.cyanogenmod.settings.device.LedFade + android:key="led_fade" + android:title="@string/led_fade_title_head" + android:summary="@string/led_fade_summary_head" + android:entries="@array/led_fade_entries" + android:entryValues="@array/led_fade_entries_values" + android:defaultValue="1" /> + </PreferenceCategory> + + <PreferenceCategory + android:title="@string/touchkey_subcat_title"> + <!-- Touchkey backlight --> + <CheckBoxPreference + android:key="touchkey_light" + android:title="@string/touchkey_light_title_head" + android:summaryOff="@string/touchkey_light_summary_off" + android:summaryOn="@string/touchkey_light_summary_on" + android:defaultValue="true" + /> + <com.cyanogenmod.settings.device.TouchkeyTimeout + android:key="touchkey_timeout" + android:title="@string/touchkey_timeout_title_head" + android:summary="@string/touchkey_timeout_summary_head" + android:entries="@array/touchkey_timeout_entries" + android:entryValues="@array/touchkey_timeout_entries_values" + android:defaultValue="3" /> + </PreferenceCategory> + +</PreferenceScreen> diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java b/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java new file mode 100644 index 0000000..152e361 --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/DeviceSettings.java @@ -0,0 +1,166 @@ +/* + * 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.ActionBar; +import android.app.ActionBar.Tab; +import android.app.Activity; +import android.app.Fragment; +import android.app.FragmentTransaction; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.FragmentActivity; +import android.support.v13.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.MenuItem; + +import com.cyanogenmod.settings.device.R; + +import java.util.ArrayList; + +public class DeviceSettings extends FragmentActivity { + + public static final String SHARED_PREFERENCES_BASENAME = "com.cyanogenmod.settings.device"; + public static final String ACTION_UPDATE_PREFERENCES = "com.cyanogenmod.settings.device.UPDATE"; + public static final String KEY_HSPA = "hspa"; + public static final String KEY_VIBRATOR_INTENSITY = "vibrator_intensity"; + public static final String KEY_MDNIE_SCENARIO = "mdnie_scenario"; + public static final String KEY_MDNIE_MODE = "mdnie_mode"; + public static final String KEY_MDNIE_NEGATIVE = "mdnie_negative"; + public static final String KEY_LED_FADE = "led_fade"; + public static final String KEY_TOUCHKEY_LIGHT = "touchkey_light"; + public static final String KEY_TOUCHKEY_TIMEOUT = "touchkey_timeout"; + + ViewPager mViewPager; + TabsAdapter mTabsAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mViewPager = new ViewPager(this); + mViewPager.setId(R.id.viewPager); + setContentView(mViewPager); + + final ActionBar bar = getActionBar(); + bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); + bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE); + bar.setTitle(R.string.app_name); + bar.setDisplayHomeAsUpEnabled(true); + + mTabsAdapter = new TabsAdapter(this, mViewPager); + mTabsAdapter.addTab(bar.newTab().setText(R.string.category_radio_title), + RadioFragmentActivity.class, null); + mTabsAdapter.addTab(bar.newTab().setText(R.string.category_screen_title), + ScreenFragmentActivity.class, null); + mTabsAdapter.addTab(bar.newTab().setText(R.string.category_haptic_title), + HapticFragmentActivity.class, null); + + + if (savedInstanceState != null) { + bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0)); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt("tab", getActionBar().getSelectedNavigationIndex()); + } + + public static class TabsAdapter extends FragmentPagerAdapter + implements ActionBar.TabListener, ViewPager.OnPageChangeListener { + private final Context mContext; + private final ActionBar mActionBar; + private final ViewPager mViewPager; + private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); + + static final class TabInfo { + private final Class<?> clss; + private final Bundle args; + + TabInfo(Class<?> _class, Bundle _args) { + clss = _class; + args = _args; + } + } + + public TabsAdapter(Activity activity, ViewPager pager) { + super(activity.getFragmentManager()); + mContext = activity; + mActionBar = activity.getActionBar(); + mViewPager = pager; + mViewPager.setAdapter(this); + mViewPager.setOnPageChangeListener(this); + } + + public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { + TabInfo info = new TabInfo(clss, args); + tab.setTag(info); + tab.setTabListener(this); + mTabs.add(info); + mActionBar.addTab(tab); + notifyDataSetChanged(); + } + + @Override + public int getCount() { + return mTabs.size(); + } + + @Override + public Fragment getItem(int position) { + TabInfo info = mTabs.get(position); + return Fragment.instantiate(mContext, info.clss.getName(), info.args); + } + + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + } + + public void onPageSelected(int position) { + mActionBar.setSelectedNavigationItem(position); + } + + public void onPageScrollStateChanged(int state) { + } + + public void onTabSelected(Tab tab, FragmentTransaction ft) { + Object tag = tab.getTag(); + for (int i=0; i<mTabs.size(); i++) { + if (mTabs.get(i) == tag) { + mViewPager.setCurrentItem(i); + } + } + } + + public void onTabUnselected(Tab tab, FragmentTransaction ft) { + } + + public void onTabReselected(Tab tab, FragmentTransaction ft) { + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + DeviceSettings.this.onBackPressed(); + default: + return super.onOptionsItemSelected(item); + } + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/HapticFragmentActivity.java b/DeviceSettings/src/com/cyanogenmod/settings/device/HapticFragmentActivity.java new file mode 100644 index 0000000..0f3313d --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/HapticFragmentActivity.java @@ -0,0 +1,66 @@ +/* + * 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.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.ListPreference; +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 HapticFragmentActivity extends PreferenceFragment { + + private static final String PREF_ENABLED = "1"; + private static final String TAG = "GalaxyS3Settings_Haptic"; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.haptic_preferences); + + PreferenceScreen prefSet = getPreferenceScreen(); + + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + + String boxValue; + String key = preference.getKey(); + + Log.w(TAG, "key: " + key); + + return true; + } + + public static boolean isSupported(String FILE) { + return Utils.fileExists(FILE); + } + + public static void restore(Context context) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/Hspa.java b/DeviceSettings/src/com/cyanogenmod/settings/device/Hspa.java new file mode 100644 index 0000000..f19eff7 --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/Hspa.java @@ -0,0 +1,67 @@ +/* + * 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.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.util.AttributeSet; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class Hspa extends ListPreference implements OnPreferenceChangeListener { + + private static final String FILE = "/system/app/SamsungServiceMode.apk"; + private Context mCtx; + + public Hspa(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + mCtx = context; + } + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore hspa setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + sendIntent(context, sharedPrefs.getString(DeviceSettings.KEY_HSPA, "23")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + sendIntent(mCtx, (String) newValue); + return true; + } + + private static void sendIntent(Context context, String value) { + Intent i = new Intent("com.cyanogenmod.SamsungServiceMode.EXECUTE"); + i.putExtra("sub_type", 20); // HSPA Setting + i.putExtra("data", value); + context.sendBroadcast(i); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/LedFade.java b/DeviceSettings/src/com/cyanogenmod/settings/device/LedFade.java new file mode 100644 index 0000000..6d11947 --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/LedFade.java @@ -0,0 +1,59 @@ +/* + * 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 java.io.IOException; +import android.content.Context; +import android.util.AttributeSet; +import android.content.SharedPreferences; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class LedFade extends ListPreference implements OnPreferenceChangeListener { + + public LedFade(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE = "/sys/class/sec/led/led_fade"; + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore led fading mode setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE, sharedPrefs.getString(DeviceSettings.KEY_LED_FADE, "1")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE, (String) newValue); + return true; + } + +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/RadioFragmentActivity.java b/DeviceSettings/src/com/cyanogenmod/settings/device/RadioFragmentActivity.java new file mode 100644 index 0000000..62b855c --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/RadioFragmentActivity.java @@ -0,0 +1,66 @@ +/* + * 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.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.ListPreference; +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 RadioFragmentActivity extends PreferenceFragment { + + private static final String PREF_ENABLED = "1"; + private static final String TAG = "GalaxyS2Parts_Radio"; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.radio_preferences); + + PreferenceScreen prefSet = getPreferenceScreen(); + + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + + String boxValue; + String key = preference.getKey(); + + Log.w(TAG, "key: " + key); + + return true; + } + + public static boolean isSupported(String FILE) { + return Utils.fileExists(FILE); + } + + public static void restore(Context context) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/ScreenFragmentActivity.java b/DeviceSettings/src/com/cyanogenmod/settings/device/ScreenFragmentActivity.java new file mode 100644 index 0000000..36180ae --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/ScreenFragmentActivity.java @@ -0,0 +1,102 @@ +/* + * 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.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.ListPreference; +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 ScreenFragmentActivity extends PreferenceFragment { + + private static final String PREF_ENABLED = "1"; + private static final String TAG = "GalaxyS3Settings_Screen"; + private mDNIeScenario mmDNIeScenario; + private mDNIeMode mmDNIeMode; + private mDNIeNegative mmDNIeNegative; + private LedFade mLedFade; + + private static final String FILE_TOUCHKEY_BRIGHTNESS = "/sys/class/sec/sec_touchkey/brightness"; + private static final String FILE_TOUCHKEY_DISABLE = "/sys/class/sec/sec_touchkey/force_disable"; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.screen_preferences); + + PreferenceScreen prefSet = getPreferenceScreen(); + mmDNIeScenario = (mDNIeScenario) findPreference(DeviceSettings.KEY_MDNIE_SCENARIO); + mmDNIeScenario.setEnabled(mDNIeScenario.isSupported()); + + mmDNIeMode = (mDNIeMode) findPreference(DeviceSettings.KEY_MDNIE_MODE); + mmDNIeMode.setEnabled(mDNIeMode.isSupported()); + + mmDNIeNegative = (mDNIeNegative) findPreference(DeviceSettings.KEY_MDNIE_NEGATIVE); + mmDNIeNegative.setEnabled(mDNIeNegative.isSupported()); + + mLedFade = (LedFade) findPreference(DeviceSettings.KEY_LED_FADE); + mLedFade.setEnabled(LedFade.isSupported()); + + if (((CheckBoxPreference)prefSet.findPreference(DeviceSettings.KEY_TOUCHKEY_LIGHT)).isChecked()) { + prefSet.findPreference(DeviceSettings.KEY_TOUCHKEY_TIMEOUT).setEnabled(true); + } else { + prefSet.findPreference(DeviceSettings.KEY_TOUCHKEY_TIMEOUT).setEnabled(false); + } + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + + String key = preference.getKey(); + Log.w(TAG, "key: " + key); + + if (key.compareTo(DeviceSettings.KEY_TOUCHKEY_LIGHT) == 0) { + if (((CheckBoxPreference)preference).isChecked()) { + Utils.writeValue(FILE_TOUCHKEY_DISABLE, "0"); + Utils.writeValue(FILE_TOUCHKEY_BRIGHTNESS, "1"); + preferenceScreen.findPreference(DeviceSettings.KEY_TOUCHKEY_TIMEOUT).setEnabled(true); + } else { + Utils.writeValue(FILE_TOUCHKEY_DISABLE, "1"); + Utils.writeValue(FILE_TOUCHKEY_BRIGHTNESS, "2"); + preferenceScreen.findPreference(DeviceSettings.KEY_TOUCHKEY_TIMEOUT).setEnabled(false); + } + } + return true; + } + + public static boolean isSupported(String FILE) { + return Utils.fileExists(FILE); + } + + public static void restore(Context context) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean light = sharedPrefs.getBoolean(DeviceSettings.KEY_TOUCHKEY_LIGHT, true); + + Utils.writeValue(FILE_TOUCHKEY_DISABLE, light ? "0" : "1"); + Utils.writeValue(FILE_TOUCHKEY_BRIGHTNESS, light ? "1" : "2"); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java b/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java new file mode 100644 index 0000000..dc9ec9c --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/Startup.java @@ -0,0 +1,38 @@ +/* + * 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.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class Startup extends BroadcastReceiver { + + @Override + public void onReceive(final Context context, final Intent bootintent) { + HapticFragmentActivity.restore(context); + Hspa.restore(context); + RadioFragmentActivity.restore(context); + ScreenFragmentActivity.restore(context); + mDNIeScenario.restore(context); + mDNIeMode.restore(context); + mDNIeNegative.restore(context); + LedFade.restore(context); + VibratorIntensity.restore(context); + TouchkeyTimeout.restore(context); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/TouchkeyTimeout.java b/DeviceSettings/src/com/cyanogenmod/settings/device/TouchkeyTimeout.java new file mode 100644 index 0000000..6ea9bfb --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/TouchkeyTimeout.java @@ -0,0 +1,59 @@ +/* + * 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 java.io.IOException; +import android.content.Context; +import android.util.AttributeSet; +import android.content.SharedPreferences; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class TouchkeyTimeout extends ListPreference implements OnPreferenceChangeListener { + + public TouchkeyTimeout(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE_TOUCHKEY_TIMEOUT = "/sys/class/sec/sec_touchkey/timeout"; + + public static boolean isSupported() { + return Utils.fileExists(FILE_TOUCHKEY_TIMEOUT); + } + + /** + * Restore touchscreen sensitivity setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE_TOUCHKEY_TIMEOUT, sharedPrefs.getString(DeviceSettings.KEY_TOUCHKEY_TIMEOUT, "3")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE_TOUCHKEY_TIMEOUT, (String) newValue); + return true; + } + +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/Utils.java b/DeviceSettings/src/com/cyanogenmod/settings/device/Utils.java new file mode 100644 index 0000000..d4df92f --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/Utils.java @@ -0,0 +1,143 @@ +/* + * 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.util.Log; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.SyncFailedException; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Context; + +public class Utils { + + private static final String TAG = "GalaxyS3Settings_Utils"; + private static final String TAG_READ = "GalaxyS3Settings_Utils_Read"; + private static final String TAG_WRITE = "GalaxyS3Settings_Utils_Write"; + + /** + * Write a string value to the specified file. + * + * @param filename The filename + * @param value The value + */ + public static void writeValue(String filename, String value) { + FileOutputStream fos = null; + try { + fos = new FileOutputStream(new File(filename), false); + fos.write(value.getBytes()); + fos.flush(); + // fos.getFD().sync(); + } catch (FileNotFoundException ex) { + Log.w(TAG, "file " + filename + " not found: " + ex); + } catch (SyncFailedException ex) { + Log.w(TAG, "file " + filename + " sync failed: " + ex); + } catch (IOException ex) { + Log.w(TAG, "IOException trying to sync " + filename + ": " + ex); + } catch (RuntimeException ex) { + Log.w(TAG, "exception while syncing file: ", ex); + } finally { + if (fos != null) { + try { + Log.w(TAG_WRITE, "file " + filename + ": " + value); + fos.close(); + } catch (IOException ex) { + Log.w(TAG, "IOException while closing synced file: ", ex); + } catch (RuntimeException ex) { + Log.w(TAG, "exception while closing file: ", ex); + } + } + } + + } + + /** + * Write a string value to the specified file. + * + * @param filename The filename + * @param value The value + */ + public static void writeValue(String filename, Boolean value) { + FileOutputStream fos = null; + String sEnvia; + try { + fos = new FileOutputStream(new File(filename), false); + if (value) + sEnvia = "1"; + else + sEnvia = "0"; + fos.write(sEnvia.getBytes()); + fos.flush(); + // fos.getFD().sync(); + } catch (FileNotFoundException ex) { + Log.w(TAG, "file " + filename + " not found: " + ex); + } catch (SyncFailedException ex) { + Log.w(TAG, "file " + filename + " sync failed: " + ex); + } catch (IOException ex) { + Log.w(TAG, "IOException trying to sync " + filename + ": " + ex); + } catch (RuntimeException ex) { + Log.w(TAG, "exception while syncing file: ", ex); + } finally { + if (fos != null) { + try { + Log.w(TAG_WRITE, "file " + filename + ": " + value); + fos.close(); + } catch (IOException ex) { + Log.w(TAG, "IOException while closing synced file: ", ex); + } catch (RuntimeException ex) { + Log.w(TAG, "exception while closing file: ", ex); + } + } + } + } + + /** + * Write the "color value" to the specified file. The value is scaled from + * an integer to an unsigned integer by multiplying by 2. + * @param filename The filename + * @param value The value of max value Integer.MAX + */ + public static void writeColor(String filename, int value) { + writeValue(filename, String.valueOf((long) value * 2)); + } + + /** + * Check if the specified file exists. + * @param filename The filename + * @return Whether the file exists or not + */ + public static boolean fileExists(String filename) { + return new File(filename).exists(); + } + + + public static void showDialog(Context ctx, String title, String message) { + final AlertDialog alertDialog = new AlertDialog.Builder(ctx).create(); + alertDialog.setTitle(title); + alertDialog.setMessage(message); + alertDialog.setButton("OK", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + alertDialog.dismiss(); + } + }); + alertDialog.show(); + } +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/VibratorIntensity.java b/DeviceSettings/src/com/cyanogenmod/settings/device/VibratorIntensity.java new file mode 100644 index 0000000..7a809a5 --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/VibratorIntensity.java @@ -0,0 +1,59 @@ +/* + * 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 java.io.IOException; +import android.content.Context; +import android.util.AttributeSet; +import android.content.SharedPreferences; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class VibratorIntensity extends ListPreference implements OnPreferenceChangeListener { + + public VibratorIntensity(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE = "/sys/vibrator/pwm_val"; + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore vibrator intensity setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE, sharedPrefs.getString(DeviceSettings.KEY_VIBRATOR_INTENSITY, "50")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE, (String) newValue); + return true; + } + +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeMode.java b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeMode.java new file mode 100644 index 0000000..7969637 --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeMode.java @@ -0,0 +1,59 @@ +/* + * 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.content.Context; + +import android.content.SharedPreferences; +import android.util.AttributeSet; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class mDNIeMode extends ListPreference implements OnPreferenceChangeListener { + + public mDNIeMode(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE = "/sys/class/mdnie/mdnie/mode"; + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore mdnie user mode setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE, sharedPrefs.getString(DeviceSettings.KEY_MDNIE_MODE, "0")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE, (String) newValue); + return true; + } + +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeNegative.java b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeNegative.java new file mode 100644 index 0000000..c2ccc7b --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeNegative.java @@ -0,0 +1,59 @@ +/* + * 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 java.io.IOException; +import android.content.Context; +import android.util.AttributeSet; +import android.content.SharedPreferences; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class mDNIeNegative extends ListPreference implements OnPreferenceChangeListener { + + public mDNIeNegative(Context context, AttributeSet attrs) { + super(context, attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE = "/sys/class/mdnie/mdnie/negative"; + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore mdnie user mode setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE, sharedPrefs.getString(DeviceSettings.KEY_MDNIE_NEGATIVE, "0")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE, (String) newValue); + return true; + } + +} diff --git a/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeScenario.java b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeScenario.java new file mode 100644 index 0000000..a9c935a --- /dev/null +++ b/DeviceSettings/src/com/cyanogenmod/settings/device/mDNIeScenario.java @@ -0,0 +1,59 @@ +/* + * 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.content.Context; + +import android.content.SharedPreferences; +import android.util.AttributeSet; +import android.preference.Preference; +import android.preference.ListPreference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceManager; + +public class mDNIeScenario extends ListPreference implements OnPreferenceChangeListener { + + public mDNIeScenario(Context context, AttributeSet attrs) { + super(context,attrs); + this.setOnPreferenceChangeListener(this); + } + + private static final String FILE = "/sys/class/mdnie/mdnie/scenario"; + + public static boolean isSupported() { + return Utils.fileExists(FILE); + } + + /** + * Restore mdnie "camera" setting from SharedPreferences. (Write to kernel.) + * @param context The context to read the SharedPreferences from + */ + public static void restore(Context context) { + if (!isSupported()) { + return; + } + + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + Utils.writeValue(FILE, sharedPrefs.getString(DeviceSettings.KEY_MDNIE_SCENARIO, "0")); + } + + public boolean onPreferenceChange(Preference preference, Object newValue) { + Utils.writeValue(FILE, (String) newValue); + return true; + } + +} diff --git a/camerawrapper/Android.mk b/camerawrapper/Android.mk new file mode 100644 index 0000000..46cce24 --- /dev/null +++ b/camerawrapper/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + CameraWrapper.cpp + +LOCAL_SHARED_LIBRARIES := \ + libhardware liblog libcamera_client libutils + +LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw +LOCAL_MODULE := camera.$(TARGET_BOARD_PLATFORM) +LOCAL_MODULE_TAGS := optional + +include $(BUILD_SHARED_LIBRARY) +#include $(BUILD_HEAPTRACKED_SHARED_LIBRARY) diff --git a/camerawrapper/CameraWrapper.cpp b/camerawrapper/CameraWrapper.cpp new file mode 100644 index 0000000..18f6da2 --- /dev/null +++ b/camerawrapper/CameraWrapper.cpp @@ -0,0 +1,583 @@ +/* + * 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. + */ + +/** +* @file CameraWrapper.cpp +* +* This file wraps a vendor camera module. +* +*/ + + +#define LOG_NDEBUG 0 +//#define LOG_PARAMETERS + +#define LOG_TAG "CameraWrapper" +#include <cutils/log.h> + +#include <utils/threads.h> +#include <utils/String8.h> +#include <hardware/hardware.h> +#include <hardware/camera.h> +#include <camera/Camera.h> +#include <camera/CameraParameters.h> + +static android::Mutex gCameraWrapperLock; +static camera_module_t *gVendorModule = 0; + +static int camera_device_open(const hw_module_t* module, const char* name, + hw_device_t** device); +static int camera_device_close(hw_device_t* device); +static int camera_get_number_of_cameras(void); +static int camera_get_camera_info(int camera_id, struct camera_info *info); + +static struct hw_module_methods_t camera_module_methods = { + open: camera_device_open +}; + +camera_module_t HAL_MODULE_INFO_SYM = { + common: { + tag: HARDWARE_MODULE_TAG, + version_major: 1, + version_minor: 0, + id: CAMERA_HARDWARE_MODULE_ID, + name: "Exynos4x12 Camera Wrapper", + author: "Teamhacksung <info@teamhacksung.org>", + methods: &camera_module_methods, + dso: NULL, /* remove compilation warnings */ + reserved: {0}, /* remove compilation warnings */ + }, + get_number_of_cameras: camera_get_number_of_cameras, + get_camera_info: camera_get_camera_info, +}; + +typedef struct wrapper_camera_device { + camera_device_t base; + int id; + camera_device_t *vendor; +} wrapper_camera_device_t; + +#define VENDOR_CALL(device, func, ...) ({ \ + wrapper_camera_device_t *__wrapper_dev = (wrapper_camera_device_t*) device; \ + __wrapper_dev->vendor->ops->func(__wrapper_dev->vendor, ##__VA_ARGS__); \ +}) + +#define CAMERA_ID(device) (((wrapper_camera_device_t *)(device))->id) + +static int check_vendor_module() +{ + int rv = 0; + ALOGV("%s", __FUNCTION__); + + if(gVendorModule) + return 0; + + rv = hw_get_module("vendor-camera", (const hw_module_t **)&gVendorModule); + if (rv) + ALOGE("failed to open vendor camera module"); + return rv; +} + +const static char * iso_values[] = {"auto,ISO100,ISO200,ISO400,ISO800","auto"}; + +static char * camera_fixup_getparams(int id, const char * settings) +{ + android::CameraParameters params; + params.unflatten(android::String8(settings)); + + // fix params here + params.set(android::CameraParameters::KEY_SUPPORTED_ISO_MODES, iso_values[id]); + + android::String8 strParams = params.flatten(); + char *ret = strdup(strParams.string()); + + ALOGD("%s: get parameters fixed up", __FUNCTION__); + return ret; +} + +char * camera_fixup_setparams(int id, const char * settings) +{ + android::CameraParameters params; + params.unflatten(android::String8(settings)); + + // fix params here + if(params.get("iso")) { + const char* isoMode = params.get(android::CameraParameters::KEY_ISO_MODE); + if(strcmp(isoMode, "ISO100") == 0) + params.set(android::CameraParameters::KEY_ISO_MODE, "100"); + else if(strcmp(isoMode, "ISO200") == 0) + params.set(android::CameraParameters::KEY_ISO_MODE, "200"); + else if(strcmp(isoMode, "ISO400") == 0) + params.set(android::CameraParameters::KEY_ISO_MODE, "400"); + else if(strcmp(isoMode, "ISO800") == 0) + params.set(android::CameraParameters::KEY_ISO_MODE, "800"); + } + + android::String8 strParams = params.flatten(); + char *ret = strdup(strParams.string()); + + ALOGD("%s: set parameters fixed up", __FUNCTION__); + return ret; +} + +/******************************************************************* + * implementation of camera_device_ops functions + *******************************************************************/ + +int camera_set_preview_window(struct camera_device * device, + struct preview_stream_ops *window) +{ + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, set_preview_window, window); +} + +void camera_set_callbacks(struct camera_device * device, + camera_notify_callback notify_cb, + camera_data_callback data_cb, + camera_data_timestamp_callback data_cb_timestamp, + camera_request_memory get_memory, + void *user) +{ + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + ALOGV("%s", __FUNCTION__); + + if(!device) + return; + + VENDOR_CALL(device, set_callbacks, notify_cb, data_cb, data_cb_timestamp, get_memory, user); +} + +void camera_enable_msg_type(struct camera_device * device, int32_t msg_type) +{ + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + ALOGV("%s", __FUNCTION__); + + if(!device) + return; + + VENDOR_CALL(device, enable_msg_type, msg_type); +} + +void camera_disable_msg_type(struct camera_device * device, int32_t msg_type) +{ + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + ALOGV("%s", __FUNCTION__); + + if(!device) + return; + + VENDOR_CALL(device, disable_msg_type, msg_type); +} + +int camera_msg_type_enabled(struct camera_device * device, int32_t msg_type) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return 0; + + return VENDOR_CALL(device, msg_type_enabled, msg_type); +} + +int camera_start_preview(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, start_preview); +} + +void camera_stop_preview(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return; + + VENDOR_CALL(device, stop_preview); +} + +int camera_preview_enabled(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, preview_enabled); +} + +int camera_store_meta_data_in_buffers(struct camera_device * device, int enable) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, store_meta_data_in_buffers, enable); +} + +int camera_start_recording(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return EINVAL; + + return VENDOR_CALL(device, start_recording); +} + +void camera_stop_recording(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return; + + + VENDOR_CALL(device, stop_recording); +} + +int camera_recording_enabled(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, recording_enabled); +} + +void camera_release_recording_frame(struct camera_device * device, + const void *opaque) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return; + + VENDOR_CALL(device, release_recording_frame, opaque); +} + +int camera_auto_focus(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + + return VENDOR_CALL(device, auto_focus); +} + +int camera_cancel_auto_focus(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + // Samsung camera HAL restarts focus (CAF_RESTART) when we cancel auto focus. + // Cancel auto focus is called just before pic is taken in autofocus mode, thus + // the HAL crashes. + return 0; + //return VENDOR_CALL(device, cancel_auto_focus); +} + +int camera_take_picture(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, take_picture); +} + +int camera_cancel_picture(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, take_picture); +} + +int camera_set_parameters(struct camera_device * device, const char *params) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + char *tmp = NULL; + tmp = camera_fixup_setparams(CAMERA_ID(device), params); + +#ifdef LOG_PARAMETERS + __android_log_write(ANDROID_LOG_VERBOSE, LOG_TAG, tmp); +#endif + + int ret = VENDOR_CALL(device, set_parameters, tmp); + return ret; +} + +char* camera_get_parameters(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return NULL; + + char* params = VENDOR_CALL(device, get_parameters); + +#ifdef LOG_PARAMETERS + __android_log_write(ANDROID_LOG_VERBOSE, LOG_TAG, params); +#endif + + char * tmp = camera_fixup_getparams(CAMERA_ID(device), params); + VENDOR_CALL(device, put_parameters, params); + params = tmp; + +#ifdef LOG_PARAMETERS + __android_log_write(ANDROID_LOG_VERBOSE, LOG_TAG, params); +#endif + + return params; +} + +static void camera_put_parameters(struct camera_device *device, char *params) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(params) + free(params); +} + +int camera_send_command(struct camera_device * device, + int32_t cmd, int32_t arg1, int32_t arg2) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return -EINVAL; + + /* send_command causes the camera hal do to unexpected things like lockups. + * don't pass any command to the vendor hal to prevent this */ + return 0; + //return VENDOR_CALL(device, send_command, cmd, arg1, arg2); +} + +void camera_release(struct camera_device * device) +{ + ALOGV("%s", __FUNCTION__); + ALOGV("%s->%08X->%08X", __FUNCTION__, (uintptr_t)device, (uintptr_t)(((wrapper_camera_device_t*)device)->vendor)); + + if(!device) + return; + + VENDOR_CALL(device, release); +} + +int camera_dump(struct camera_device * device, int fd) +{ + if(!device) + return -EINVAL; + + return VENDOR_CALL(device, dump, fd); +} + +extern "C" void heaptracker_free_leaked_memory(void); + +int camera_device_close(hw_device_t* device) +{ + int ret = 0; + wrapper_camera_device_t *wrapper_dev = NULL; + + ALOGV("%s", __FUNCTION__); + + android::Mutex::Autolock lock(gCameraWrapperLock); + + if (!device) { + ret = -EINVAL; + goto done; + } + + wrapper_dev = (wrapper_camera_device_t*) device; + + wrapper_dev->vendor->common.close((hw_device_t*)wrapper_dev->vendor); + if (wrapper_dev->base.ops) + free(wrapper_dev->base.ops); + free(wrapper_dev); +done: +#ifdef HEAPTRACKER + heaptracker_free_leaked_memory(); +#endif + return ret; +} + +/******************************************************************* + * implementation of camera_module functions + *******************************************************************/ + +/* open device handle to one of the cameras + * + * assume camera service will keep singleton of each camera + * so this function will always only be called once per camera instance + */ + +int camera_device_open(const hw_module_t* module, const char* name, + hw_device_t** device) +{ + int rv = 0; + int num_cameras = 0; + int cameraid; + wrapper_camera_device_t* camera_device = NULL; + camera_device_ops_t* camera_ops = NULL; + + android::Mutex::Autolock lock(gCameraWrapperLock); + + ALOGV("camera_device open"); + + if (name != NULL) { + if (check_vendor_module()) + return -EINVAL; + + cameraid = atoi(name); + num_cameras = gVendorModule->get_number_of_cameras(); + + if(cameraid > num_cameras) + { + ALOGE("camera service provided cameraid out of bounds, " + "cameraid = %d, num supported = %d", + cameraid, num_cameras); + rv = -EINVAL; + goto fail; + } + + camera_device = (wrapper_camera_device_t*)malloc(sizeof(*camera_device)); + if(!camera_device) + { + ALOGE("camera_device allocation fail"); + rv = -ENOMEM; + goto fail; + } + memset(camera_device, 0, sizeof(*camera_device)); + camera_device->id = cameraid; + + if(rv = gVendorModule->common.methods->open((const hw_module_t*)gVendorModule, name, (hw_device_t**)&(camera_device->vendor))) + { + ALOGE("vendor camera open fail"); + goto fail; + } + ALOGV("%s: got vendor camera device 0x%08X", __FUNCTION__, (uintptr_t)(camera_device->vendor)); + + camera_ops = (camera_device_ops_t*)malloc(sizeof(*camera_ops)); + if(!camera_ops) + { + ALOGE("camera_ops allocation fail"); + rv = -ENOMEM; + goto fail; + } + + memset(camera_ops, 0, sizeof(*camera_ops)); + + camera_device->base.common.tag = HARDWARE_DEVICE_TAG; + camera_device->base.common.version = 0; + camera_device->base.common.module = (hw_module_t *)(module); + camera_device->base.common.close = camera_device_close; + camera_device->base.ops = camera_ops; + + camera_ops->set_preview_window = camera_set_preview_window; + camera_ops->set_callbacks = camera_set_callbacks; + camera_ops->enable_msg_type = camera_enable_msg_type; + camera_ops->disable_msg_type = camera_disable_msg_type; + camera_ops->msg_type_enabled = camera_msg_type_enabled; + camera_ops->start_preview = camera_start_preview; + camera_ops->stop_preview = camera_stop_preview; + camera_ops->preview_enabled = camera_preview_enabled; + camera_ops->store_meta_data_in_buffers = camera_store_meta_data_in_buffers; + camera_ops->start_recording = camera_start_recording; + camera_ops->stop_recording = camera_stop_recording; + camera_ops->recording_enabled = camera_recording_enabled; + camera_ops->release_recording_frame = camera_release_recording_frame; + camera_ops->auto_focus = camera_auto_focus; + camera_ops->cancel_auto_focus = camera_cancel_auto_focus; + camera_ops->take_picture = camera_take_picture; + camera_ops->cancel_picture = camera_cancel_picture; + camera_ops->set_parameters = camera_set_parameters; + camera_ops->get_parameters = camera_get_parameters; + camera_ops->put_parameters = camera_put_parameters; + camera_ops->send_command = camera_send_command; + camera_ops->release = camera_release; + camera_ops->dump = camera_dump; + + *device = &camera_device->base.common; + } + + return rv; + +fail: + if(camera_device) { + free(camera_device); + camera_device = NULL; + } + if(camera_ops) { + free(camera_ops); + camera_ops = NULL; + } + *device = NULL; + return rv; +} + +int camera_get_number_of_cameras(void) +{ + ALOGV("%s", __FUNCTION__); + if (check_vendor_module()) + return 0; + return gVendorModule->get_number_of_cameras(); +} + +int camera_get_camera_info(int camera_id, struct camera_info *info) +{ + ALOGV("%s", __FUNCTION__); + if (check_vendor_module()) + return 0; + return gVendorModule->get_camera_info(camera_id, info); +} diff --git a/common.mk b/common.mk new file mode 100644 index 0000000..290712e --- /dev/null +++ b/common.mk @@ -0,0 +1,198 @@ +# +# 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. +# + +DEVICE_PACKAGE_OVERLAYS := device/samsung/smdk4412-common/overlay + +PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0 + +$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) + +# The gps config appropriate for this device +$(call inherit-product, device/common/gps/gps_us_supl.mk) + +# Init files +PRODUCT_COPY_FILES := \ + device/samsung/smdk4412-common/init.bt.rc:root/init.bt.rc \ + device/samsung/smdk4412-common/init.smdk4x12.usb.rc:root/init.smdk4x12.usb.rc \ + device/samsung/smdk4412-common/lpm.rc:root/lpm.rc \ + device/samsung/smdk4412-common/init.trace.rc:root/init.trace.rc + +# Audio +PRODUCT_COPY_FILES += \ + device/samsung/smdk4412-common/configs/audio_policy.conf:system/etc/audio_policy.conf + +# Vold and Storage +PRODUCT_COPY_FILES += \ + device/samsung/smdk4412-common/configs/vold.fstab:system/etc/vold.fstab + +# Bluetooth configuration files +PRODUCT_COPY_FILES += \ + system/bluetooth/data/main.le.conf:system/etc/bluetooth/main.conf + +# Wifi +PRODUCT_COPY_FILES += \ + device/samsung/smdk4412-common/configs/wpa_supplicant.conf:system/etc/wifi/wpa_supplicant.conf + +PRODUCT_PROPERTY_OVERRIDES += \ + wifi.interface=wlan0 \ + wifi.supplicant_scan_interval=15 + +# Gps +PRODUCT_COPY_FILES += \ + device/samsung/smdk4412-common/configs/gps.conf:system/etc/gps.conf + +# Packages +PRODUCT_PACKAGES := \ + audio.a2dp.default \ + audio.primary.smdk4x12 \ + audio.usb.default \ + camera.exynos4 \ + Camera \ + com.android.future.usb.accessory \ + GalaxyS3Settings \ + libsecril-client \ + libsecril-client-sap \ + libsync \ + macloader \ + SamsungServiceMode \ + tinymix \ + Torch + +# HAL +PRODUCT_PACKAGES += \ + nfc.exynos4 \ + lights.exynos4 + +# NFC +PRODUCT_PACKAGES += \ + libnfc \ + libnfc_jni \ + Nfc \ + Tag + +PRODUCT_COPY_FILES += \ + packages/apps/Nfc/migrate_nfc.txt:system/etc/updatecmds/migrate_nfc.txt \ + frameworks/base/nfc-extras/com.android.nfc_extras.xml:system/etc/permissions/com.android.nfc_extras.xml \ + frameworks/native/data/etc/android.hardware.nfc.xml:system/etc/permissions/android.hardware.nfc.xml + +# NFCEE access control +ifeq ($(TARGET_BUILD_VARIANT),user) + NFCEE_ACCESS_PATH := device/samsung/smdk4412-common/nfcee_access.xml +else + NFCEE_ACCESS_PATH := device/samsung/smdk4412-common/nfcee_access_debug.xml +endif + +PRODUCT_COPY_FILES += \ + $(NFCEE_ACCESS_PATH):system/etc/nfcee_access.xml + +PRODUCT_PACKAGES += \ + com.android.nfc_extras + +# MFC API +PRODUCT_PACKAGES += \ + libsecmfcdecapi \ + libsecmfcencapi + +# OMX +PRODUCT_PACKAGES += \ + libstagefrighthw \ + libSEC_OMX_Resourcemanager \ + libSEC_OMX_Core \ + libOMX.SEC.AVC.Decoder \ + libOMX.SEC.M4V.Decoder \ + libOMX.SEC.WMV.Decoder \ + libOMX.SEC.AVC.Encoder \ + libOMX.SEC.M4V.Encoder +# libOMX.SEC.VP8.Decoder + +PRODUCT_COPY_FILES += \ + device/samsung/smdk4412-common/configs/media_profiles.xml:system/etc/media_profiles.xml \ + device/samsung/smdk4412-common/configs/media_codecs.xml:system/etc/media_codecs.xml + +# RIL +PRODUCT_PROPERTY_OVERRIDES += \ + ro.telephony.ril_class=Smdk4210RIL \ + mobiledata.interfaces=pdp0,wlan0,gprs,ppp0 \ + ro.ril.hsxpa=1 \ + ro.ril.gprsclass=10 + +# Filesystem management tools +PRODUCT_PACKAGES += \ + static_busybox \ + make_ext4fs \ + setup_fs + +# Live Wallpapers +PRODUCT_PACKAGES += \ + Galaxy4 \ + HoloSpiralWallpaper \ + LiveWallpapers \ + LiveWallpapersPicker \ + MagicSmokeWallpapers \ + NoiseField \ + PhaseBeam \ + VisualizationWallpapers \ + librs_jni + +# These are the hardware-specific features +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \ + frameworks/native/data/etc/android.hardware.camera.autofocus.xml:system/etc/permissions/android.hardware.camera.autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ + frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ + frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \ + frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml \ + frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \ + frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \ + frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \ + frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \ + frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \ + frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \ + frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \ + frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \ + frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \ + frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ + frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \ + frameworks/native/data/etc/android.software.sip.xml:system/etc/permissions/android.software.sip.xml \ + frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml + +# Feature live wallpaper +PRODUCT_COPY_FILES += \ + packages/wallpapers/LivePicker/android.software.live_wallpaper.xml:system/etc/permissions/android.software.live_wallpaper.xml + +PRODUCT_PROPERTY_OVERRIDES += \ + ro.opengles.version=131072 \ + hwui.render_dirty_regions=false + +PRODUCT_TAGS += dalvik.gc.type-precise + +# Set default USB interface +PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ + persist.sys.usb.config=mtp + +$(call inherit-product, frameworks/native/build/phone-xhdpi-1024-dalvik-heap.mk) + +# Include exynos4 platform specific parts +TARGET_HAL_PATH := hardware/samsung/exynos4/hal +TARGET_OMX_PATH := hardware/samsung/exynos/multimedia/openmax +$(call inherit-product, hardware/samsung/exynos4x12.mk) +$(call inherit-product, vendor/cm/config/nfc_enhanced.mk) + +$(call inherit-product-if-exists, vendor/samsung/smdk4412-common/common-vendor.mk) diff --git a/configs/audio_policy.conf b/configs/audio_policy.conf new file mode 100644 index 0000000..7239b8b --- /dev/null +++ b/configs/audio_policy.conf @@ -0,0 +1,82 @@ +# Global configuration section: lists input and output devices always present on the device +# as well as the output device selected by default. +# Devices are designated by a string that corresponds to the enum in audio.h + +global_configuration { + attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER + default_output_device AUDIO_DEVICE_OUT_SPEAKER + attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC +} + +# audio hardware module section: contains descriptors for all audio hw modules present on the +# device. Each hw module node is named after the corresponding hw module library base name. +# For instance, "primary" corresponds to audio.primary.<device>.so. +# The "primary" module is mandatory and must include at least one output with +# AUDIO_OUTPUT_FLAG_PRIMARY flag. +# Each module descriptor contains one or more output profile descriptors and zero or more +# input profile descriptors. Each profile lists all the parameters supported by a given output +# or input stream category. +# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding +# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". + +audio_hw_modules { + primary { + outputs { + primary { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET + flags AUDIO_OUTPUT_FLAG_PRIMARY + } + deep_buffer { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE + flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER + } + hdmi { + sampling_rates 44100|48000 + channel_masks dynamic + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_AUX_DIGITAL + flags AUDIO_OUTPUT_FLAG_DIRECT + } + } + inputs { + primary { + sampling_rates 8000|11025|16000|22050|24000|32000|44100|48000 + channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_WIRED_HEADSET + } + } + } + a2dp { + outputs { + a2dp { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_ALL_A2DP + } + } + } + usb { + outputs { + usb_accessory { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_USB_ACCESSORY + } + usb_device { + sampling_rates 44100 + channel_masks AUDIO_CHANNEL_OUT_STEREO + formats AUDIO_FORMAT_PCM_16_BIT + devices AUDIO_DEVICE_OUT_USB_DEVICE + } + } + } +} diff --git a/configs/egl.cfg b/configs/egl.cfg new file mode 100644 index 0000000..4515dfd --- /dev/null +++ b/configs/egl.cfg @@ -0,0 +1 @@ +0 1 mali diff --git a/configs/gps.conf b/configs/gps.conf new file mode 100644 index 0000000..90cbd37 --- /dev/null +++ b/configs/gps.conf @@ -0,0 +1,6 @@ +NTP_SERVER=pool.ntp.org +XTRA_SERVER_1=http://gllto.glpals.com/4day/glo/v2/latest/lto2.dat +XTRA_SERVER_2=http://gllto.glpals.com/4day/glo/v2/latest/lto2.dat +XTRA_SERVER_3=http://gllto.glpals.com/4day/glo/v2/latest/lto2.dat +SUPL_HOST=supl.google.com +SUPL_PORT=7276 diff --git a/configs/media_codecs.xml b/configs/media_codecs.xml new file mode 100644 index 0000000..c8719db --- /dev/null +++ b/configs/media_codecs.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!-- Copyright (C) 2012 The Android Open Source 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. +--> + +<!-- +<!DOCTYPE MediaCodecs [ +<!ELEMENT MediaCodecs (Decoders,Encoders)> +<!ELEMENT Decoders (MediaCodec*)> +<!ELEMENT Encoders (MediaCodec*)> +<!ELEMENT MediaCodec (Type*,Quirk*)> +<!ATTLIST MediaCodec name CDATA #REQUIRED> +<!ATTLIST MediaCodec type CDATA> +<!ELEMENT Type EMPTY> +<!ATTLIST Type name CDATA #REQUIRED> +<!ELEMENT Quirk EMPTY> +<!ATTLIST Quirk name CDATA #REQUIRED> +]> + +There's a simple and a complex syntax to declare the availability of a +media codec: + +A codec that properly follows the OpenMax spec and therefore doesn't have any +quirks and that only supports a single content type can be declared like so: + + <MediaCodec name="OMX.foo.bar" type="something/interesting" /> + +If a codec has quirks OR supports multiple content types, the following syntax +can be used: + + <MediaCodec name="OMX.foo.bar" > + <Type name="something/interesting" /> + <Type name="something/else" /> + ... + <Quirk name="requires-allocate-on-input-ports" /> + <Quirk name="requires-allocate-on-output-ports" /> + <Quirk name="output-buffers-are-unreadable" /> + </MediaCodec> + +Only the three quirks included above are recognized at this point: + +"requires-allocate-on-input-ports" + must be advertised if the component does not properly support specification + of input buffers using the OMX_UseBuffer(...) API but instead requires + OMX_AllocateBuffer to be used. + +"requires-allocate-on-output-ports" + must be advertised if the component does not properly support specification + of output buffers using the OMX_UseBuffer(...) API but instead requires + OMX_AllocateBuffer to be used. + +"output-buffers-are-unreadable" + must be advertised if the emitted output buffers of a decoder component + are not readable, i.e. use a custom format even though abusing one of + the official OMX colorspace constants. + Clients of such decoders will not be able to access the decoded data, + naturally making the component much less useful. The only use for + a component with this quirk is to render the output to the screen. + Audio decoders MUST NOT advertise this quirk. + Video decoders that advertise this quirk must be accompanied by a + corresponding color space converter for thumbnail extraction, + matching surfaceflinger support that can render the custom format to + a texture and possibly other code, so just DON'T USE THIS QUIRK. + +--> + +<MediaCodecs> + <Decoders> + <MediaCodec name="OMX.SEC.AVC.Decoder" type="video/avc" /> + <MediaCodec name="OMX.SEC.MPEG4.Decoder" type="video/mp4v-es" /> + <MediaCodec name="OMX.SEC.H263.Decoder" type="video/3gpp" /> + <MediaCodec name="OMX.SEC.AVC.Decoder" type="video/avc" /> + <MediaCodec name="OMX.SEC.VP8.Decoder" type="video/x-vnd.on2.vp8" /> + + <MediaCodec name="OMX.google.mp3.decoder" type="audio/mpeg" /> + <MediaCodec name="OMX.google.amrnb.decoder" type="audio/3gpp" /> + <MediaCodec name="OMX.google.amrwb.decoder" type="audio/amr-wb" /> + <MediaCodec name="OMX.google.aac.decoder" type="audio/mp4a-latm" /> + <MediaCodec name="OMX.google.g711.alaw.decoder" type="audio/g711-alaw" /> + <MediaCodec name="OMX.google.g711.mlaw.decoder" type="audio/g711-mlaw" /> + <MediaCodec name="OMX.google.vorbis.decoder" type="audio/vorbis" /> + <MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es" /> + <MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" /> + <MediaCodec name="OMX.google.h264.decoder" type="video/avc" /> + <MediaCodec name="OMX.google.vpx.decoder" type="video/x-vnd.on2.vp8" /> + </Decoders> + + <Encoders> + <MediaCodec name="OMX.SEC.MPEG4.Encoder" type="video/mp4v-es" /> + <MediaCodec name="OMX.SEC.H263.Encoder" type="video/3gpp" /> + <MediaCodec name="OMX.SEC.AVC.Encoder" type="video/avc" /> + + <MediaCodec name="OMX.google.amrnb.encoder" type="audio/3gpp" /> + <MediaCodec name="OMX.google.amrwb.encoder" type="audio/amr-wb" /> + <MediaCodec name="OMX.google.aac.encoder" type="audio/mp4a-latm" /> + <MediaCodec name="OMX.google.flac.encoder" type="audio/flac" /> + </Encoders> +</MediaCodecs> diff --git a/configs/media_profiles.xml b/configs/media_profiles.xml new file mode 100644 index 0000000..8f2a46b --- /dev/null +++ b/configs/media_profiles.xml @@ -0,0 +1,493 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source 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. +--> +<!DOCTYPE MediaSettings [ + <!ELEMENT MediaSettings (CamcorderProfiles, + EncoderOutputFileFormat+, + VideoEncoderCap+, + AudioEncoderCap+, + VideoDecoderCap, + AudioDecoderCap)> + <!ELEMENT CamcorderProfiles (EncoderProfile+, ImageEncoding+, ImageDecoding, Camera)> + <!ELEMENT EncoderProfile (Video, Audio)> + <!ATTLIST EncoderProfile quality (timelapse1080p|timelapse720p|timelapse480p|timelapsehigh|timelapselow|480p|qcif|high|low) #REQUIRED> + <!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED> + <!ATTLIST EncoderProfile duration (30|60) #REQUIRED> + <!ELEMENT Video EMPTY> + <!ATTLIST Video codec (h264|h263|m4v) #REQUIRED> + <!ATTLIST Video bitRate CDATA #REQUIRED> + <!ATTLIST Video width CDATA #REQUIRED> + <!ATTLIST Video height CDATA #REQUIRED> + <!ATTLIST Video frameRate CDATA #REQUIRED> + <!ELEMENT Audio EMPTY> + <!ATTLIST Audio codec (amrnb|amrwb|aac) #REQUIRED> + <!ATTLIST Audio bitRate CDATA #REQUIRED> + <!ATTLIST Audio sampleRate CDATA #REQUIRED> + <!ATTLIST Audio channels (1|2) #REQUIRED> + <!ELEMENT ImageEncoding EMPTY> + <!ATTLIST ImageEncoding quality (90|80|70|60|50|40) #REQUIRED> + <!ELEMENT ImageDecoding EMPTY> + <!ATTLIST ImageDecoding memCap CDATA #REQUIRED> + <!ELEMENT Camera EMPTY> + <!ATTLIST Camera previewFrameRate CDATA #REQUIRED> + <!ELEMENT EncoderOutputFileFormat EMPTY> + <!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED> + <!ELEMENT VideoEncoderCap EMPTY> + <!ATTLIST VideoEncoderCap name (h264|h263|m4v|wmv) #REQUIRED> + <!ATTLIST VideoEncoderCap enabled (true|false) #REQUIRED> + <!ATTLIST VideoEncoderCap minBitRate CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap maxBitRate CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap minFrameWidth CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap maxFrameWidth CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap minFrameHeight CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap maxFrameHeight CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap minFrameRate CDATA #REQUIRED> + <!ATTLIST VideoEncoderCap maxFrameRate CDATA #REQUIRED> + <!ELEMENT AudioEncoderCap EMPTY> + <!ATTLIST AudioEncoderCap name (amrnb|amrwb|aac|wma) #REQUIRED> + <!ATTLIST AudioEncoderCap enabled (true|false) #REQUIRED> + <!ATTLIST AudioEncoderCap minBitRate CDATA #REQUIRED> + <!ATTLIST AudioEncoderCap maxBitRate CDATA #REQUIRED> + <!ATTLIST AudioEncoderCap minSampleRate CDATA #REQUIRED> + <!ATTLIST AudioEncoderCap maxSampleRate CDATA #REQUIRED> + <!ATTLIST AudioEncoderCap minChannels (1|2) #REQUIRED> + <!ATTLIST AudioEncoderCap maxChannels (1|2) #REQUIRED> + <!ELEMENT VideoDecoderCap EMPTY> + <!ATTLIST VideoDecoderCap name (wmv) #REQUIRED> + <!ATTLIST VideoDecoderCap enabled (true|false) #REQUIRED> + <!ELEMENT AudioDecoderCap EMPTY> + <!ATTLIST AudioDecoderCap name (wma) #REQUIRED> + <!ATTLIST AudioDecoderCap enabled (true|false) #REQUIRED> + <!ELEMENT VideoEditorCap EMPTY> + <!ATTLIST VideoEditorCap maxInputFrameWidth CDATA #REQUIRED> + <!ATTLIST VideoEditorCap maxInputFrameHeight CDATA #REQUIRED> + <!ATTLIST VideoEditorCap maxOutputFrameWidth CDATA #REQUIRED> + <!ATTLIST VideoEditorCap maxOutputFrameHeight CDATA #REQUIRED> + <!ELEMENT ExportVideoProfile EMPTY> + <!ATTLIST ExportVideoProfile name (h264|h263|m4v) #REQUIRED> + <!ATTLIST ExportVideoProfile profile CDATA #REQUIRED> + <!ATTLIST ExportVideoProfile level CDATA #REQUIRED> +]> +<!-- + This file is used to declare the multimedia profiles and capabilities + on an android-powered device. +--> +<MediaSettings> + <!-- Each camcorder profile defines a set of predefined configuration parameters --> + <!-- Back Camera --> + <CamcorderProfiles cameraId="0"> + + <EncoderProfile quality="low" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="high" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="17000000" + width="1920" + height="1080" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="qcif" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="480p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="720p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="12000000" + width="1280" + height="720" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="1080p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="17000000" + width="1920" + height="1080" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapselow" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="17000000" + width="1920" + height="1080" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapseqcif" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="12000000" + width="1280" + height="720" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="17000000" + width="1920" + height="1080" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <ImageEncoding quality="90" /> + <ImageEncoding quality="80" /> + <ImageEncoding quality="70" /> + <ImageDecoding memCap="20000000" /> + + </CamcorderProfiles> + + <!-- Front Camera --> + <CamcorderProfiles cameraId="1"> + + <EncoderProfile quality="low" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="high" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="qcif" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="480p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapselow" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapseqcif" fileFormat="3gp" duration="30"> + <Video codec="h264" + bitRate="384000" + width="176" + height="144" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30"> + <Video codec="h264" + bitRate="3078000" + width="640" + height="480" + frameRate="30" /> + + <!-- + The Audio part of the profile will not be used since time lapse mode + does not capture audio + --> + <Audio codec="aac" + bitRate="128000" + sampleRate="48000" + channels="1" /> + </EncoderProfile> + + <ImageEncoding quality="90" /> + <ImageEncoding quality="80" /> + <ImageEncoding quality="70" /> + <ImageDecoding memCap="20000000" /> + + </CamcorderProfiles> + + <EncoderOutputFileFormat name="3gp" /> + <EncoderOutputFileFormat name="mp4" /> + + <!-- + If a codec is not enabled, it is invisible to the applications + In other words, the applications won't be able to use the codec + or query the capabilities of the codec at all if it is disabled + --> + <VideoEncoderCap name="h264" enabled="true" + minBitRate="64000" maxBitRate="20000000" + minFrameWidth="176" maxFrameWidth="1920" + minFrameHeight="144" maxFrameHeight="1080" + minFrameRate="1" maxFrameRate="30" /> + + <VideoEncoderCap name="h263" enabled="true" + minBitRate="64000" maxBitRate="1000000" + minFrameWidth="176" maxFrameWidth="800" + minFrameHeight="144" maxFrameHeight="480" + minFrameRate="1" maxFrameRate="30" /> + + <VideoEncoderCap name="m4v" enabled="true" + minBitRate="64000" maxBitRate="20000000" + minFrameWidth="176" maxFrameWidth="1920" + minFrameHeight="144" maxFrameHeight="1080" + minFrameRate="1" maxFrameRate="30" /> + + <AudioEncoderCap name="aac" enabled="true" + minBitRate="8192" maxBitRate="196000" + minSampleRate="8000" maxSampleRate="48000" + minChannels="1" maxChannels="2" /> + + <AudioEncoderCap name="amrwb" enabled="true" + minBitRate="6600" maxBitRate="23050" + minSampleRate="16000" maxSampleRate="16000" + minChannels="1" maxChannels="1" /> + + <AudioEncoderCap name="amrnb" enabled="true" + minBitRate="5525" maxBitRate="12200" + minSampleRate="8000" maxSampleRate="8000" + minChannels="1" maxChannels="1" /> + + <!-- + FIXME: + We do not check decoder capabilities at present + At present, we only check whether windows media is visible + for TEST applications. For other applications, we do + not perform any checks at all. + --> + <VideoDecoderCap name="wmv" enabled="false"/> + <AudioDecoderCap name="wma" enabled="false"/> + <!-- + The VideoEditor Capability configuration: + - maxInputFrameWidth: maximum video width of imported video clip. + - maxInputFrameHeight: maximum video height of imported video clip. + - maxOutputFrameWidth: maximum video width of exported video clip. + - maxOutputFrameHeight: maximum video height of exported video clip. + - maxPrefetchYUVFrames: maximum prefetch YUV frames for encoder, + used to limit the amount of memory for prefetched YUV frames. + For this platform, it allows maximum 8MB(1.3MB per 720p frame x 6 + frames) memory. + --> + <VideoEditorCap maxInputFrameWidth="1280" + maxInputFrameHeight="720" maxOutputFrameWidth="1280" + maxOutputFrameHeight="720" maxPrefetchYUVFrames="6"/> + <!-- + The VideoEditor Export codec profile and level values + correspond to the values in OMX_Video.h. + E.g. for h264, profile value 1 means OMX_VIDEO_AVCProfileBaseline + and level 2048 means OMX_VIDEO_AVCLevel4. + Please note that the values are in decimal. + These values are for video encoder. + --> + <!-- + Codec = h.264, Baseline profile, level 4 + --> + <ExportVideoProfile name="h264" profile= "1" level="2048"/> + <!-- + Codec = h.263, Baseline profile, level 0 + --> + <ExportVideoProfile name="h263" profile= "1" level="1"/> + <!-- + Codec = mpeg4, Simple profile, level 5 + --> + <ExportVideoProfile name="m4v" profile= "1" level="128"/> +</MediaSettings> diff --git a/configs/vold.fstab b/configs/vold.fstab new file mode 100644 index 0000000..6efc0ee --- /dev/null +++ b/configs/vold.fstab @@ -0,0 +1,5 @@ +# external sdcard +dev_mount sdcard1 /storage/sdcard1 auto /devices/platform/s3c-sdhci.2/mmc_host/mmc1/ + +# usbdisk +dev_mount usbdisk0 /storage/usbdisk0 auto /devices/platform/s5p-ehci diff --git a/configs/wpa_supplicant.conf b/configs/wpa_supplicant.conf new file mode 100644 index 0000000..314897f --- /dev/null +++ b/configs/wpa_supplicant.conf @@ -0,0 +1,9 @@ +update_config=1 +ctrl_interface=wlan0 +eapol_version=1 +ap_scan=1 +fast_reauth=1 +p2p_listen_reg_class=81 +p2p_listen_channel=1 +p2p_oper_reg_class=115 +p2p_oper_channel=48 diff --git a/init.bt.rc b/init.bt.rc new file mode 100755 index 0000000..719864d --- /dev/null +++ b/init.bt.rc @@ -0,0 +1,155 @@ +on boot + +# for bluetooth + insmod /lib/modules/btlock.ko + chmod 664 /dev/btlock + chown bluetooth system /dev/btlock + +service poke_helper /system/bin/brcm_poke_helper /dev/ttySAC0 + class main + group bluetooth net_bt_admin + +service hciattach /system/bin/brcm_patchram_plus --enable_hci --enable_lpm --no2bytes --tosleep 50000 \ + --baudrate 4000000 --use_baudrate_for_download --patchram /system/bin/bcm4334.hcd \ + --i2s=1,0,0,0 /dev/ttySAC0 + class main + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + +service hciattach_le /system/bin/brcm_patchram_plus --enable_hci --no2bytes --tosleep 50000 \ + --baudrate 115200 --use_baudrate_for_download --patchram /system/bin/bcm4334.hcd \ + --i2s=1,0,0,0 /dev/ttySAC0 + class main + user bluetooth + group bluetooth net_bt_admin + disabled + oneshot + +service LE_dut_cmd /system/bin/LE_dut + group bluetooth net_bt_admin + disabled + oneshot + +## LE Tx Ouput Power +service LE_tx_low /system/bin/LE_dut --tx_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_mid /system/bin/LE_dut --tx_mid + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_max /system/bin/LE_dut --tx_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +## LE Tx Modulation Characteristics +# Payload 0x0F +service LE_tx_M_low /system/bin/LE_dut --tx_m_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_M_mid /system/bin/LE_dut --tx_m_mid + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_M_max /system/bin/LE_dut --tx_m_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +# Payload 0xAA +service LE_tx_M_1_low /system/bin/LE_dut --tx_m_1_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_M_1_mid /system/bin/LE_dut --tx_m_1_mid + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_M_1_max /system/bin/LE_dut --tx_m_1_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +## Carrier Frequency +service LE_tx_C_low /system/bin/LE_dut --tx_c_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_C_mid /system/bin/LE_dut --tx_c_mid + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_C_max /system/bin/LE_dut --tx_c_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +## In-band Emissions +service LE_tx_I_low /system/bin/LE_dut --tx_i_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_tx_I_max /system/bin/LE_dut --tx_i_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +## Rx Test +service LE_rx_ready_low /system/bin/LE_dut --rx_low + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_rx_ready_mid /system/bin/LE_dut --rx_mid + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_rx_ready_max /system/bin/LE_dut --rx_max + class main + group bluetooth net_bt_admin + disabled + oneshot + +service LE_test_end /system/bin/LE_dut --test_end + class main + group bluetooth net_bt_admin + disabled + oneshot + +# for bluetooth rf test. +service bt_dut_cmd /system/bin/bcm_dut + class main + group bluetooth net_bt_admin + disabled + oneshot diff --git a/init.smdk4x12.usb.rc b/init.smdk4x12.usb.rc new file mode 100755 index 0000000..72de75e --- /dev/null +++ b/init.smdk4x12.usb.rc @@ -0,0 +1,97 @@ +on init + write /sys/class/android_usb/android0/iSerial ${ro.serialno} + write /sys/class/android_usb/android0/f_rndis/manufacturer Samsung + write /sys/class/android_usb/android0/f_rndis/vendorID 04e8 + write /sys/class/android_usb/android0/f_rndis/wceis 1 + +on boot + write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} + write /sys/class/android_usb/android0/iProduct ${ro.product.model} + write /sys/class/android_usb/f_mass_storage/inquiry_string "Samsung" + +on property:sys.usb.config=mtp + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 685c + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=mtp,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6860 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6863 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/bDeviceClass 224 + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6864 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/bDeviceClass 224 + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=ptp + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6865 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=ptp,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6866 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,dm + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6864 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,acm,dm + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6864 + write /sys/class/android_usb/android0/functions ${sys.usb.config} + write /sys/class/android_usb/android0/f_acm/instances 1 + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=mass_storage + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 685b + write /sys/class/android_usb/android0/functions $sys.usb.config + write /sys/class/android_usb/android0/enable 1 + setprop sys.usb.state $sys.usb.config + +on property:sys.usb.config=mass_storage,adb + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 685e + write /sys/class/android_usb/android0/functions $sys.usb.config + write /sys/class/android_usb/android0/enable 1 + start adbd + setprop sys.usb.state $sys.usb.config diff --git a/init.trace.rc b/init.trace.rc new file mode 100755 index 0000000..1d114f5 --- /dev/null +++ b/init.trace.rc @@ -0,0 +1,31 @@ +## Permissions to allow system-wide tracing to the kernel trace buffer. +## +on boot + +# Allow writing to the kernel trace log. + chmod 0222 /sys/kernel/debug/tracing/trace_marker + +# Allow the shell group to enable (some) kernel tracing. + chown root shell /sys/kernel/debug/tracing/trace_clock + chown root shell /sys/kernel/debug/tracing/buffer_size_kb + chown root shell /sys/kernel/debug/tracing/options/overwrite + chown root shell /sys/kernel/debug/tracing/events/sched/sched_switch/enable + chown root shell /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable + chown root shell /sys/kernel/debug/tracing/events/power/cpu_frequency/enable + chown root shell /sys/kernel/debug/tracing/events/power/cpu_idle/enable + chown root shell /sys/kernel/debug/tracing/events/cpufreq_interactive/enable + chown root shell /sys/kernel/debug/tracing/tracing_on + + chmod 0664 /sys/kernel/debug/tracing/trace_clock + chmod 0664 /sys/kernel/debug/tracing/buffer_size_kb + chmod 0664 /sys/kernel/debug/tracing/options/overwrite + chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_switch/enable + chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable + chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_frequency/enable + chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_idle/enable + chmod 0664 /sys/kernel/debug/tracing/events/cpufreq_interactive/enable + chmod 0664 /sys/kernel/debug/tracing/tracing_on + +# Allow only the shell group to read and truncate the kernel trace. + chown root shell /sys/kernel/debug/tracing/trace + chmod 0660 /sys/kernel/debug/tracing/trace @@ -0,0 +1,78 @@ +on early-init + start ueventd + +on init + export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin + export LD_LIBRARY_PATH /vendor/lib:/system/lib + export ANDROID_ROOT /system + export ANDROID_DATA /data + export EXTERNAL_STORAGE /sdcard + + symlink /system/etc /etc + + mkdir /sdcard + mkdir /preload + mkdir /system + mkdir /data + mkdir /cache + mkdir /efs + mkdir /tmp + mkdir /dbdata + mkdir /mnt 0775 root root + #mount /tmp /tmp tmpfs + +on early-fs + mount ext4 /dev/block/mmcblk0p9 /system ro wait noatime + mount ext4 /dev/block/mmcblk0p12 /data wait nosuid nodev noatime discard,noauto_da_alloc,journal_async_commit + + mkdir /data/log 0777 + chmod 0666 /dev/log/radio + chmod 0666 /dev/log/main + chmod 0666 /dev/log/event + +on boot +# write /sys/class/sec/switch/usb_sel PDA + +# CPU Frequency Governor + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor pegasusq + +# EHCI runtime enable for LPA + write /sys/devices/platform/s5p-ehci/power/control auto + + ifup lo + hostname localhost + domainname localdomain + + class_start default + +service debuggerd /system/bin/debuggerd + +service ueventd /sbin/ueventd + critical + +service console /system/bin/sh + console + +service playlpm /system/bin/playlpm + user root + +service immvibed /system/bin/immvibed + oneshot + +service lpmkey /system/bin/lpmkey + user root + +# adbd is controlled by the persist.service.adb.enable system property +service adbd /sbin/adbd + disabled + +# adbd on at boot in emulator +on property:ro.kernel.qemu=1 + start adbd + +on property:persist.service.adb.enable=1 + start adbd + +on property:persist.service.adb.enable=0 + stop adbd + diff --git a/nfc/Android.mk b/nfc/Android.mk new file mode 100644 index 0000000..1b82fa3 --- /dev/null +++ b/nfc/Android.mk @@ -0,0 +1,25 @@ +# Copyright (C) 2011 The Android Open Source 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. + +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := nfc.$(TARGET_BOARD_PLATFORM) +LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw +LOCAL_SRC_FILES := nfc_hw.c +LOCAL_SHARED_LIBRARIES := liblog libcutils +LOCAL_MODULE_TAGS := optional + +include $(BUILD_SHARED_LIBRARY) diff --git a/nfc/nfc_hw.c b/nfc/nfc_hw.c new file mode 100644 index 0000000..b604768 --- /dev/null +++ b/nfc/nfc_hw.c @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2011 The Android Open Source 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. + */ +#include <errno.h> +#include <string.h> + +#include <hardware/hardware.h> +#include <hardware/nfc.h> + +static uint8_t pn544_eedata_settings[][4] = { + // DIFFERENTIAL_ANTENNA + + // RF Settings + {0x00,0x9B,0xD1,0x0D} // Tx consumption higher than 0x0D (average 50mA) + ,{0x00,0x9B,0xD2,0x24} // GSP setting for this threshold + ,{0x00,0x9B,0xD3,0x0A} // Tx consumption higher than 0x0A (average 40mA) + ,{0x00,0x9B,0xD4,0x22} // GSP setting for this threshold + ,{0x00,0x9B,0xD5,0x08} // Tx consumption higher than 0x08 (average 30mA) + ,{0x00,0x9B,0xD6,0x1E} // GSP setting for this threshold + ,{0x00,0x9B,0xDD,0x1C} // GSP setting for this threshold + ,{0x00,0x9B,0x84,0x13} // ANACM2 setting + ,{0x00,0x99,0x81,0x7F} // ANAVMID setting PCD + ,{0x00,0x99,0x31,0x70} // ANAVMID setting PICC + + // Enable PBTF + ,{0x00,0x98,0x00,0x3F} // SECURE_ELEMENT_CONFIGURATION - No Secure Element + ,{0x00,0x9F,0x09,0x00} // SWP_PBTF_RFU + ,{0x00,0x9F,0x0A,0x05} // SWP_PBTF_RFLD --> RFLEVEL Detector for PBTF + ,{0x00,0x9E,0xD1,0xA1} // + + // Change RF Level Detector ANARFLDWU + ,{0x00,0x99,0x23,0x00} // Default Value is 0x01 + + // Low-power polling + ,{0x00,0x9E,0x74,0xB0} // Default Value is 0x00, bits 0->2: sensitivity (0==max, 6==min), + // bit 3: RFU, + // bits 4,5 hybrid low-power: # of low-power polls per regular poll + // bit 6: RFU + // bit 7: (0 -> disabled, 1 -> enabled) + ,{0x00,0x9E,0x7D,0xB0} // bits 0->3: RFU, + // bits 4,5: # retries after low power detection + // 0=1 retry, 1=2 retry, 2=3 retry, 3=4 retry + // bit 6: RFU, + // bit 7: Enable or disable retry mechanism (0: disable, 1: enable) + ,{0x00,0x9F,0x28,0x01} // bits 0->7: # of measurements per low-power poll + + //LLC Timer + ,{0x00,0x9C,0x31,0x00} // Guard host time-out in ms (MSB) + ,{0x00,0x9C,0x32,0xC8} // Guard host time-out in ms (LSB) + ,{0x00,0x9C,0x19,0x40} // Max RX retry (PN544=>host?) + ,{0x00,0x9C,0x1A,0x40} // Max TX retry (PN544=>host?) + + ,{0x00,0x9C,0x0C,0x00} // + ,{0x00,0x9C,0x0D,0x00} // + ,{0x00,0x9C,0x12,0x00} // + ,{0x00,0x9C,0x13,0x00} // + + //WTX for LLCP communication + ,{0x00,0x98,0xA2,0x0E} // Max value: 14 (default value: 09) + + //SE GPIO + ,{0x00, 0x98, 0x93, 0x40} + + // Set NFCT ATQA + ,{0x00, 0x98, 0x7D, 0x02} + ,{0x00, 0x98, 0x7E, 0x00} + + // Enable CEA detection mechanism + ,{0x00, 0x9F, 0xC8, 0x01} + // Set NFC-F poll RC=0x00 + ,{0x00, 0x9F, 0x9A, 0x00} + // Setting for EMD support for ISO 14443-4 Reader + ,{0x00,0x9F,0x09,0x00} // 0x00 - Disable EMD support, 0x01 - Enable EMD support +}; + +static int pn544_close(hw_device_t *dev) { + free(dev); + + return 0; +} + +/* + * Generic device handling + */ + +static int nfc_open(const hw_module_t* module, const char* name, + hw_device_t** device) { + if (strcmp(name, NFC_PN544_CONTROLLER) == 0) { + nfc_pn544_device_t *dev = calloc(1, sizeof(nfc_pn544_device_t)); + + dev->common.tag = HARDWARE_DEVICE_TAG; + dev->common.version = 0; + dev->common.module = (struct hw_module_t*) module; + dev->common.close = pn544_close; + + dev->num_eeprom_settings = sizeof(pn544_eedata_settings) / 4; + dev->eeprom_settings = (uint8_t*)pn544_eedata_settings; + dev->linktype = PN544_LINK_TYPE_I2C; + dev->device_node = "/dev/pn544"; + dev->enable_i2c_workaround = 1; + *device = (hw_device_t*) dev; + return 0; + } else { + return -EINVAL; + } +} + +static struct hw_module_methods_t nfc_module_methods = { + .open = nfc_open, +}; + +struct nfc_module_t HAL_MODULE_INFO_SYM = { + .common = { + .tag = HARDWARE_MODULE_TAG, + .version_major = 1, + .version_minor = 0, + .id = NFC_HARDWARE_MODULE_ID, + .name = "Herring NFC HW HAL", + .author = "The Android Open Source Project", + .methods = &nfc_module_methods, + }, +}; diff --git a/nfcee_access.xml b/nfcee_access.xml new file mode 100644 index 0000000..02e12fd --- /dev/null +++ b/nfcee_access.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Applications granted NFCEE access on user builds + + See packages/apps/Nfc/etc/sample_nfcee_access.xml for full documentation. + --> + + <!-- Google wallet release signature --> + <signer android:signature="3082044c30820334a003020102020900a8cd17c93da5d990300d06092a864886f70d01010505003077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643301e170d3131303332343031303635335a170d3338303830393031303635335a3077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e464330820120300d06092a864886f70d01010105000382010d00308201080282010100c30f88add9b492096a2c586a5a9a80356bfa026958f8ff0c5dfaf59f49268ad870dee821a53e1f5b170fc96245a3c982a7cb4527053be35e34f396d24b2291ec0c528d6e26927465e06875ea621f7ff98c40e3345b204907cc9354743acdaace65565f48ba74cd4121cdc876df3522badb095c20d934c56a3e5c393ee5f0e02f8fe0621f918d1f35a82489252c6fa6b63392a7686b3e48612d06a9cf6f49bff11d5d96289c9dfe14ac5762439697dd29eafdb9810de3263513a905ac8e8eaf20907e46750a5ab7bf9a77262f47b03f5a3c6e6d7b51343f69c7f725f70bcc1b4ad592250b705a86e6e83ee2ae37fe5701bcbdb26feefdfff60f6a5bdfb5b64793020103a381dc3081d9301d0603551d0e041604141ccece0eea4dc1121fc7515f0d0a0c72e08cc96d3081a90603551d230481a130819e80141ccece0eea4dc1121fc7515f0d0a0c72e08cc96da17ba4793077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643820900a8cd17c93da5d990300c0603551d13040530030101ff300d06092a864886f70d01010505000382010100a470c728e1d31b06d9af6ae768b565046c57806b9843724931d75d4ca10c321520d33ccfed2aa65462234c9ef9b6f910cc676b99cb7f9895d6c06763574fbb78331275dc5cf38fbaa918d7938c051ffba2ade8f303cde8d9e68a048d1fdb9e7c9f2a49b222c68fff422bf15569b85eeeedb04aa30873dbe64b9c9e74f8f2c2f6c40124aaa8d1780d18512b540add28b3e9581971a4170dd868cf5f31e44712b2c23bb51037d7ef9f87a6e5bdb35e2ceb6bb022636c17a56a96bc7a50258c0bd2ed7b31555a18452e17321a0d52838c82f63f742d74ff79586a5cbb7faf7198a84bcf744310e9e927597f00a23dd00660800c2238d90b2fb372dfdbba75bd852e" /> + +</resources> diff --git a/nfcee_access_debug.xml b/nfcee_access_debug.xml new file mode 100644 index 0000000..a96a2d1 --- /dev/null +++ b/nfcee_access_debug.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Applications granted NFCEE access on userdebug/eng builds + + See packages/apps/Nfc/etc/sample_nfcee_access.xml for full documentation. + --> + + <!-- Google Wallet dev signature --> + <signer android:signature="3082044c30820334a003020102020900de7695041d7650c0300d06092a864886f70d01010505003077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643301e170d3131303332343031303332345a170d3338303830393031303332345a3077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e464330820120300d06092a864886f70d01010105000382010d00308201080282010100e6ff3defe92aa10d71eb0fa6408bc036b7e243eeed68a6a4763dc7a52a31757cdac61fe510bb73c716e4000104265b347fcecef4c42bf1e1379dd0a876f028227fbbc1f9bdd5d713b2f6a935a379d2cba9c96f92d2d0787c11f1eb19548008a6a072b34b91836cfa0ae1276780e9007530166986a11c9cef46cef7c704806dde9431fb60284d120ab0e7de1d633f07687d468c51139afffdc6bc9a207ca904b8be1da0aa7b4e97756f43606488be5cae3c68e8bb7942cdf51607c930a2fcda655b75d0759cba89ad06e739bd0ba29b1f404296c2c0a85a847f5ab0d067c6c3ec9c49212042ac63a7e53b546c65b46080b4e3e680e23e1f77cfe7f6de744b1a65020103a381dc3081d9301d0603551d0e04160414a2e89064b05d08865c34db930a9d840050117aec3081a90603551d230481a130819e8014a2e89064b05d08865c34db930a9d840050117aeca17ba4793077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643820900de7695041d7650c0300c0603551d13040530030101ff300d06092a864886f70d010105050003820101003771870ce87c3c52ea84899230c6e962d94b4d5f1293c25d88261541fd90b5555d1285cef3b8312c3f5df691a8aae04cb981b305e427fd1d2d9e1987e1d29078f13c8452990f1821980263d8d4bd36519348d8d8ba26d8b99fbf09f5fd3ebb0ea3c2f0c9376f1e1fca76f3a6a405429d081b752a7a90b756e9ab44da41abc8e1e8f88ac2758da743fb73e650719a57840ccb6b7add21b99fc681e456e1872c223d5c074adf55f6abda268c2d8b64ea0a8845eecd968f92b493127e75c753c3ff30cbc678b51c9f52961472f17da20a0dc6274aa2463434c1a9b614df697d8ff5ca8101e7a25c7db3fb055d65569c04b01d389cabba57b3a1703ec2e74a88d334" /> + + <!-- Google wallet release signature --> + <signer android:signature="3082044c30820334a003020102020900a8cd17c93da5d990300d06092a864886f70d01010505003077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643301e170d3131303332343031303635335a170d3338303830393031303635335a3077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e464330820120300d06092a864886f70d01010105000382010d00308201080282010100c30f88add9b492096a2c586a5a9a80356bfa026958f8ff0c5dfaf59f49268ad870dee821a53e1f5b170fc96245a3c982a7cb4527053be35e34f396d24b2291ec0c528d6e26927465e06875ea621f7ff98c40e3345b204907cc9354743acdaace65565f48ba74cd4121cdc876df3522badb095c20d934c56a3e5c393ee5f0e02f8fe0621f918d1f35a82489252c6fa6b63392a7686b3e48612d06a9cf6f49bff11d5d96289c9dfe14ac5762439697dd29eafdb9810de3263513a905ac8e8eaf20907e46750a5ab7bf9a77262f47b03f5a3c6e6d7b51343f69c7f725f70bcc1b4ad592250b705a86e6e83ee2ae37fe5701bcbdb26feefdfff60f6a5bdfb5b64793020103a381dc3081d9301d0603551d0e041604141ccece0eea4dc1121fc7515f0d0a0c72e08cc96d3081a90603551d230481a130819e80141ccece0eea4dc1121fc7515f0d0a0c72e08cc96da17ba4793077310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e205669657731143012060355040a130b476f6f676c6520496e632e3110300e060355040b1307416e64726f6964311330110603550403130a476f6f676c65204e4643820900a8cd17c93da5d990300c0603551d13040530030101ff300d06092a864886f70d01010505000382010100a470c728e1d31b06d9af6ae768b565046c57806b9843724931d75d4ca10c321520d33ccfed2aa65462234c9ef9b6f910cc676b99cb7f9895d6c06763574fbb78331275dc5cf38fbaa918d7938c051ffba2ade8f303cde8d9e68a048d1fdb9e7c9f2a49b222c68fff422bf15569b85eeeedb04aa30873dbe64b9c9e74f8f2c2f6c40124aaa8d1780d18512b540add28b3e9581971a4170dd868cf5f31e44712b2c23bb51037d7ef9f87a6e5bdb35e2ceb6bb022636c17a56a96bc7a50258c0bd2ed7b31555a18452e17321a0d52838c82f63f742d74ff79586a5cbb7faf7198a84bcf744310e9e927597f00a23dd00660800c2238d90b2fb372dfdbba75bd852e" /> + + <!-- Platform dev-keys signature --> + <signer android:signature="308204a830820390a003020102020900bcdfe81405d5c69e300d06092a864886f70d0101050500308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d301e170d3131303931393230303634325a170d3339303230343230303634325a308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d30820120300d06092a864886f70d01010105000382010d00308201080282010100ef7a8a34d8151d0479a239903261fe5026c520d5d88cd65920c98e096d2770f49636da9ffc4e80c472b05bd62a435f8266912aa2a34a18f6f4856f9ef52c10b88c267627136726823e8f3389b051ba92920e10bbaae0e38879efbe681b05863b655d81a6f3b75a85eb230b38b23ea4ef56f2161ff01652ae2049881adbe60d3bf8b5386a81f7404c0cf0c111c0a35ab0a9760426e4af12add73327ec433e047e3517f47a2d3674c2b819354d56eb7fd6c9aa67dd05b4bb1ca8a7e1946c2494e9364ea677a25481ac81f434bff3dd56e93e59fccef0e24a753461cd1cf15f22b62251d07416057ac5ca3e03a24f7f4eca876bacc5a1828acbde04c5cfdb608c47020103a381fc3081f9301d0603551d0e0416041402f997668541fa74693bea699a5766893a362a5d3081c90603551d230481c13081be801402f997668541fa74693bea699a5766893a362a5da1819aa48197308194310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d4d6f756e7461696e20566965773110300e060355040a1307416e64726f69643110300e060355040b1307416e64726f69643110300e06035504031307416e64726f69643122302006092a864886f70d0109011613616e64726f696440616e64726f69642e636f6d820900bcdfe81405d5c69e300c0603551d13040530030101ff300d06092a864886f70d0101050500038201010047d6fb32cadeae4444c379b3441ff9ba10990c23d10472c54fb7ebd9c33b2a173836337e1c175c980847a8894f6a99782e9c2e2133629254295fe52749f93ec1e39d213dd06d0ba99de3b6b5d4d856fafe74e08113b7b23a1b56f4918ed41218a03b9564456480b665200267d3770a9463db413c6a47bd81d725cb7d39c9d0941693c59cbe727d40415f0815c3c8363fb8fa2e028ceeb3bbfbc6b119db5b72f0edb0bb417bfcbf74d9fa069de22afe56a50bcde7ea1078749bb9ec0adc0e6de045641ee3a82c576645160b4ab9710d3cb3201f23957da8de9084c0bec93ad1c8c2054195f13c926db07c8bdf15673acf6d791ec1d3a0d7e1b3470447acd95873" /> + +</resources> diff --git a/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg b/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg Binary files differnew file mode 100644 index 0000000..e400338 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg diff --git a/overlay/frameworks/base/core/res/res/values/arrays.xml b/overlay/frameworks/base/core/res/res/values/arrays.xml new file mode 100644 index 0000000..fa33631 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values/arrays.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* //device/apps/common/assets/res/any/colors.xml +** +** Copyright 2006, The Android Open Source 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. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + +<!-- Defines the shutdown options shown in the reboot dialog. --> + <array name="shutdown_reboot_options" translatable="false"> + <item>@string/reboot_reboot</item> + <item>@string/reboot_recovery</item> + <item>@string/reboot_download</item> + </array> + + <!-- Do not translate. Defines the shutdown actions passed to the kernel. + The first item should be empty for regular reboot. --> + <string-array name="shutdown_reboot_actions" translatable="false"> + <item></item> + <item>recovery</item> + <item>bootloader</item> + </string-array> + +</resources> diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 0000000..95f212c --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,328 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2011, The Android Open Source 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources> + + <!-- Default color for notification LED is white. --> + <color name="config_defaultNotificationColor">#ffffffff</color> + + <!-- Default LED on time for notification LED in milliseconds. --> + <integer name="config_defaultNotificationLedOn">1000</integer> + + <!-- Default LED off time for notification LED in milliseconds. --> + <integer name="config_defaultNotificationLedOff">9000</integer> + + <!-- Our amoled doesn't animate well. --> + <bool name="config_animateScreenLights">false</bool> + + <integer name="config_deskDockKeepsScreenOn">0</integer> + <integer name="config_carDockKeepsScreenOn">1</integer> + + <!-- If this is true, the screen will come on when you unplug usb/power/whatever. --> + <bool name="config_unplugTurnsOnScreen">true</bool> + + <!-- Package name providing network location support. --> + <string name="config_networkLocationProviderPackageName" translatable="false">com.google.android.location</string> + + <!-- Package name providing geocoder API support. --> + <string name="config_geocodeProviderPackageName" translatable="false">com.google.android.location</string> + + <!-- Flag indicating whether we should enable the automatic brightness in Settings. + config_hardware_automatic_brightness_available is not set, so we will use software implementation --> + <bool name="config_automatic_brightness_available">true</bool> + + <!-- Whether a software navigation bar should be shown. NOTE: in the future this may be + autodetected from the Configuration. --> + <bool name="config_showNavigationBar">false</bool> + + <!-- Array of light sensor LUX values to define our levels for auto backlight brightness support. + The N entries of this array define N + 1 zones as follows: + + Zone 0: 0 <= LUX < array[0] + Zone 1: array[0] <= LUX < array[1] + ... + Zone N: array[N - 1] <= LUX < array[N] + Zone N + 1: array[N] <= LUX < infinity + + Must be overridden in platform specific overlays + --> + <integer-array name="config_autoBrightnessLevels"> + <item>6</item> + <item>10</item> + <item>15</item> + <item>20</item> + <item>40</item> + <item>60</item> + <item>80</item> + <item>100</item> + <item>120</item> + <item>240</item> + <item>480</item> + <item>960</item> + <item>1920</item> + <item>2880</item> + <item>3840</item> + <item>7680</item> + <item>15360</item> + <item>30720</item> + <item>61440</item> + <item>121200</item> + </integer-array> + + <!-- Array of output values for LCD backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + --> + <integer-array name="config_autoBrightnessLcdBacklightValues"> + <item>40</item> + <item>50</item> + <item>60</item> + <item>70</item> + <item>80</item> + <item>90</item> + <item>100</item> + <item>110</item> + <item>120</item> + <item>130</item> + <item>140</item> + <item>150</item> + <item>160</item> + <item>170</item> + <item>185</item> + <item>200</item> + <item>215</item> + <item>225</item> + <item>235</item> + <item>245</item> + <item>255</item> + </integer-array> + + <!-- Array of output values for button backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + --> + <integer-array name="config_autoBrightnessButtonBacklightValues"> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + </integer-array> + + <!-- Array of output values for keyboard backlight corresponding to the LUX values + in the config_autoBrightnessLevels array. This array should have size one greater + than the size of the config_autoBrightnessLevels array. + i9300 has no keyboard so all values are zero. + --> + <integer-array name="config_autoBrightnessKeyboardBacklightValues"> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + <item>0</item> + </integer-array> + + <!-- Minimum screen brightness allowed by the power manager. --> + <integer name="config_screenBrightnessDim">10</integer> + + <!-- XXXXX NOTE THE FOLLOWING RESOURCES USE THE WRONG NAMING CONVENTION. + Please don't copy them, copy anything else. --> + + <!-- An Array of "[Connection name],[ConnectivityManager.TYPE_xxxx], + [associated radio-type],[priority],[restoral-timer(ms)],[dependencyMet] --> + <!-- the 5th element "resore-time" indicates the number of milliseconds to delay + before automatically restore the default connection. Set -1 if the connection + does not require auto-restore. --> + <!-- the 6th element indicates boot-time dependency-met value. --> + <string-array translatable="false" name="networkAttributes"> + <item>"wifi,1,1,1,-1,true"</item> + <item>"mobile,0,0,0,-1,true"</item> + <item>"mobile_mms,2,0,2,60000,true"</item> + <item>"mobile_supl,3,0,2,60000,true"</item> + <item>"mobile_dun,4,0,3,60000,true"</item> + <item>"mobile_hipri,5,0,3,60000,true"</item> + <item>"mobile_bluetooth,7,7,1,-1,true"</item> + <item>"wifi_p2p,13,1,0,-1,true"</item> + </string-array> + + <!-- An Array of "[ConnectivityManager connectionType], + [# simultaneous connection types]" --> + <string-array translatable="false" name="radioAttributes"> + <item>"1,1"</item> + <item>"0,1"</item> + <item>"7,1"</item> + </string-array> + + <!-- List of regexpressions describing the interface (if any) that represent tetherable + USB interfaces. If the device doesn't want to support tething over USB this should + be empty. An example would be "usb.*" --> + <string-array translatable="false" name="config_tether_usb_regexs"> + <item>"rndis0"</item> + </string-array> + + <!-- List of regexpressions describing the interface (if any) that represent tetherable + Wifi interfaces. If the device doesn't want to support tethering over Wifi this + should be empty. An example would be "softap.*" --> + <string-array translatable="false" name="config_tether_wifi_regexs"> + <item>"wlan0"</item> + </string-array> + + <!-- List of regexpressions describing the interface (if any) that represent tetherable + bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this + should be empty. --> + <string-array translatable="false" name="config_tether_bluetooth_regexs"> + <item>"bnep\\d"</item> + </string-array> + + <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering --> + <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or + <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH --> + <integer-array translatable="false" name="config_tether_upstream_types"> + <item>0</item> + <item>1</item> + <item>5</item> + <item>7</item> + </integer-array> + + <!-- Boolean indicating whether the wifi chipset has dual frequency band support --> + <bool translatable="false" name="config_wifi_dual_band_support">true</bool> + + <!-- Boolean indicating whether the wifi chipset has p2p support --> + <bool translatable="false" name="config_wifi_p2p_support">true</bool> + + <!-- Boolean indicating whether the wifi chipset has background scan support --> + <bool translatable="false" name="config_wifi_background_scan_support">true</bool> + + <bool name="config_ui_enableFadingMarquee">false</bool> + + <!-- Is the notification LED intrusive? Used to decide if there should be a disable option --> + <bool name="config_intrusiveNotificationLed">true</bool> + + <!-- Is the battery LED intrusive? Used to decide if there should be a disable option --> + <bool name="config_intrusiveBatteryLed">true</bool> + + <!-- Does the battery LED support multiple colors? Used to decide if the user can change the colors --> + <bool name="config_multiColorBatteryLed">true</bool> + + <!-- Vibrator pattern for feedback about a long screen/key press --> + <integer-array name="config_longPressVibePattern"> + <item>0</item> + <item>1</item> + <item>20</item> + <item>21</item> + </integer-array> + + <!-- Vibrator pattern for feedback about touching a virtual key --> + <integer-array name="config_virtualKeyVibePattern"> + <item>0</item> + <item>1</item> + <item>20</item> + <item>21</item> + </integer-array> + + <!-- Vibrator pattern for a very short but reliable vibration for soft keyboard tap --> + <integer-array name="config_keyboardTapVibePattern"> + <item>20</item> + </integer-array> + + <!-- Vibrator pattern for feedback about booting with safe mode disabled --> + <integer-array name="config_safeModeDisabledVibePattern"> + <item>0</item> + <item>1</item> + <item>20</item> + <item>21</item> + </integer-array> + + <!-- Vibrator pattern for feedback about booting with safe mode disabled --> + <integer-array name="config_safeModeEnabledVibePattern"> + <item>0</item> + <item>1</item> + <item>20</item> + <item>21</item> + <item>500</item> + <item>600</item> + </integer-array> + + <!-- Vibrator pattern for feedback about hitting a scroll barrier --> + <integer-array name="config_scrollBarrierVibePattern"> + <item>0</item> + <item>15</item> + <item>10</item> + <item>10</item> + </integer-array> + + <!-- The default iface on which to monitor data use --> + <string name="config_datause_iface">pdp0</string> + + <!-- Allow the menu hard key to be disabled in LockScreen on some devices --> + <bool name="config_disableMenuKeyInLockScreen">true</bool> + + <!-- Disable the home key unlock setting --> + <bool name="config_disableHomeUnlockSetting">false</bool> + + <!-- Workaround for devices with broken keyboards --> + <bool name="config_forceDisableHardwareKeyboard">true</bool> + + <!-- Hardware 'face' keys present on the device, stored as a bit field. + This integer should equal the sum of the corresponding value for each + of the following keys present: + 1 - Home + 2 - Back + 4 - Menu + 8 - Assistant (search) + 16 - App switch + For example, a device with Home, Back and Menu keys would set this + config to 7. --> + <integer name="config_deviceHardwareKeys">7</integer> + +</resources> diff --git a/overlay/frameworks/base/core/res/res/xml/power_profile.xml b/overlay/frameworks/base/core/res/res/xml/power_profile.xml new file mode 100644 index 0000000..e6eb4e4 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/xml/power_profile.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2009, The Android Open Source 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. +*/ +--> + +<device name="Android"> + <!-- All values are in mAh except as noted --> + <item name="none">0</item> + <item name="screen.on">49</item> + <item name="bluetooth.active">142</item> + <item name="bluetooth.on">0.3</item> + <item name="bluetooth.at">35690</item> + <item name="screen.full">260</item> + <item name="wifi.on">4</item> + <item name="wifi.active">120</item> + <item name="wifi.scan">220</item> + <item name="dsp.audio">88</item> + <item name="dsp.video">88</item> + <item name="radio.active">185</item> + <!-- The current consumed by the radio when it is scanning for a signal --> + <item name="radio.scanning">88</item> + <item name="gps.on">50</item> + <!-- Current consumed by the radio at different signal strengths, when paging --> + <array name="radio.on"> <!-- Strength 0 to BINS-1 --> + <value>3.4</value> + <value>3.4</value> + </array> + <!-- Different CPU speeds as reported in + /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state --> + <array name="cpu.speeds"> + <value>200000</value> + <value>500000</value> + <value>800000</value> + <value>1000000</value> + <value>1200000</value> + <value>1400000</value> + <value>1600000</value> + </array> + <!-- Power consumption when CPU is idle --> + <item name="cpu.idle">1.4</item> + <!-- Power consumption due to wake lock held --> + <item name="cpu.awake">44</item> + <!-- Power consumption at different speeds --> + <array name="cpu.active"> + <value>55.4</value> + <value>82.1</value> + <value>113.7</value> + <value>140.0</value> + <value>170.0</value> + <value>200.0</value> + <value>230.0</value> + </array> + <!-- This is the battery capacity in mAh --> + <item name="battery.capacity">1650</item> +</device> diff --git a/overlay/frameworks/base/core/res/res/xml/storage_list.xml b/overlay/frameworks/base/core/res/res/xml/storage_list.xml new file mode 100644 index 0000000..d9247c5 --- /dev/null +++ b/overlay/frameworks/base/core/res/res/xml/storage_list.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +** +** Copyright 2011, The Android Open Source 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. +*/ +--> + +<!-- The <device> element should contain one or more <storage> elements. + Exactly one of these should have the attribute primary="true". + This storage will be the primary external storage and should have mountPoint="/mnt/sdcard". + Each storage should have both a mountPoint and storageDescription attribute. + The following attributes are optional: + + primary: (boolean) this storage is the primary external storage + removable: (boolean) this is removable storage (for example, a real SD card) + emulated: (boolean) the storage is emulated via the FUSE sdcard daemon + mtpReserve: (integer) number of megabytes of storage MTP should reserve for free storage + (used for emulated storage that is shared with system's data partition) + + A storage should not have both emulated and removable set to true +--> + +<StorageList xmlns:android="http://schemas.android.com/apk/res/android"> + <storage android:mountPoint="/storage/sdcard0" + android:storageDescription="@string/storage_internal" + android:primary="true" + android:emulated="true" + android:mtpReserve="100" /> + + <storage android:mountPoint="/storage/sdcard1" + android:storageDescription="@string/storage_sd_card" + android:primary="false" + android:removable="true" + android:allowMassStorage="true" /> + + <storage android:mountPoint="/storage/usbdisk0" + android:storageDescription="@string/storage_usb" + android:primary="false" + android:removable="true" /> +</StorageList> diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml new file mode 100644 index 0000000..5e89645 --- /dev/null +++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright (c) 2011, The Android Open Source 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. + */ +--> +<resources> + <bool name="def_screen_brightness_automatic_mode">true</bool> + + <!-- Screen timeout default = 30 seconds --> + <integer name="def_screen_off_timeout">30000</integer> +</resources> diff --git a/overlay/frameworks/base/packages/SystemUI/res/values/config.xml b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml new file mode 100644 index 0000000..88851f7 --- /dev/null +++ b/overlay/frameworks/base/packages/SystemUI/res/values/config.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2011, 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources> + <!-- Control whether status bar should distinguish HSPA data icon form UMTS data icon on devices --> + <bool name="config_hspa_data_distinguishable">true</bool> +</resources> + diff --git a/overlay/include/hardware/gps.h b/overlay/include/hardware/gps.h new file mode 100644 index 0000000..05b3b11 --- /dev/null +++ b/overlay/include/hardware/gps.h @@ -0,0 +1,686 @@ +/* + * Copyright (C) 2010 The Android Open Source 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. + */ + +#ifndef ANDROID_INCLUDE_HARDWARE_GPS_H +#define ANDROID_INCLUDE_HARDWARE_GPS_H + +#include <stdint.h> +#include <sys/cdefs.h> +#include <sys/types.h> +#include <pthread.h> + +#include <hardware/hardware.h> + +__BEGIN_DECLS + +/** + * The id of this module + */ +#define GPS_HARDWARE_MODULE_ID "gps" + + +/** Milliseconds since January 1, 1970 */ +typedef int64_t GpsUtcTime; + +/** Maximum number of SVs for gps_sv_status_callback(). */ +#define GPS_MAX_SVS 32 + +/** Requested operational mode for GPS operation. */ +typedef uint32_t GpsPositionMode; +// IMPORTANT: Note that the following values must match +// constants in GpsLocationProvider.java. +/** Mode for running GPS standalone (no assistance). */ +#define GPS_POSITION_MODE_STANDALONE 0 +/** AGPS MS-Based mode. */ +#define GPS_POSITION_MODE_MS_BASED 1 +/** AGPS MS-Assisted mode. */ +#define GPS_POSITION_MODE_MS_ASSISTED 2 + +/** Requested recurrence mode for GPS operation. */ +typedef uint32_t GpsPositionRecurrence; +// IMPORTANT: Note that the following values must match +// constants in GpsLocationProvider.java. +/** Receive GPS fixes on a recurring basis at a specified period. */ +#define GPS_POSITION_RECURRENCE_PERIODIC 0 +/** Request a single shot GPS fix. */ +#define GPS_POSITION_RECURRENCE_SINGLE 1 + +/** GPS status event values. */ +typedef uint16_t GpsStatusValue; +// IMPORTANT: Note that the following values must match +// constants in GpsLocationProvider.java. +/** GPS status unknown. */ +#define GPS_STATUS_NONE 0 +/** GPS has begun navigating. */ +#define GPS_STATUS_SESSION_BEGIN 1 +/** GPS has stopped navigating. */ +#define GPS_STATUS_SESSION_END 2 +/** GPS has powered on but is not navigating. */ +#define GPS_STATUS_ENGINE_ON 3 +/** GPS is powered off. */ +#define GPS_STATUS_ENGINE_OFF 4 + +/** Flags to indicate which values are valid in a GpsLocation. */ +typedef uint16_t GpsLocationFlags; +// IMPORTANT: Note that the following values must match +// constants in GpsLocationProvider.java. +/** GpsLocation has valid latitude and longitude. */ +#define GPS_LOCATION_HAS_LAT_LONG 0x0001 +/** GpsLocation has valid altitude. */ +#define GPS_LOCATION_HAS_ALTITUDE 0x0002 +/** GpsLocation has valid speed. */ +#define GPS_LOCATION_HAS_SPEED 0x0004 +/** GpsLocation has valid bearing. */ +#define GPS_LOCATION_HAS_BEARING 0x0008 +/** GpsLocation has valid accuracy. */ +#define GPS_LOCATION_HAS_ACCURACY 0x0010 + +/** Flags for the gps_set_capabilities callback. */ + +/** GPS HAL schedules fixes for GPS_POSITION_RECURRENCE_PERIODIC mode. + If this is not set, then the framework will use 1000ms for min_interval + and will start and call start() and stop() to schedule the GPS. + */ +#define GPS_CAPABILITY_SCHEDULING 0x0000001 +/** GPS supports MS-Based AGPS mode */ +#define GPS_CAPABILITY_MSB 0x0000002 +/** GPS supports MS-Assisted AGPS mode */ +#define GPS_CAPABILITY_MSA 0x0000004 +/** GPS supports single-shot fixes */ +#define GPS_CAPABILITY_SINGLE_SHOT 0x0000008 +/** GPS supports on demand time injection */ +#define GPS_CAPABILITY_ON_DEMAND_TIME 0x0000010 + +/** Flags used to specify which aiding data to delete + when calling delete_aiding_data(). */ +typedef uint16_t GpsAidingData; +// IMPORTANT: Note that the following values must match +// constants in GpsLocationProvider.java. +#define GPS_DELETE_EPHEMERIS 0x0001 +#define GPS_DELETE_ALMANAC 0x0002 +#define GPS_DELETE_POSITION 0x0004 +#define GPS_DELETE_TIME 0x0008 +#define GPS_DELETE_IONO 0x0010 +#define GPS_DELETE_UTC 0x0020 +#define GPS_DELETE_HEALTH 0x0040 +#define GPS_DELETE_SVDIR 0x0080 +#define GPS_DELETE_SVSTEER 0x0100 +#define GPS_DELETE_SADATA 0x0200 +#define GPS_DELETE_RTI 0x0400 +#define GPS_DELETE_CELLDB_INFO 0x8000 +#define GPS_DELETE_ALL 0xFFFF + +/** AGPS type */ +typedef uint16_t AGpsType; +#define AGPS_TYPE_SUPL 1 +#define AGPS_TYPE_C2K 2 + +typedef uint16_t AGpsSetIDType; +#define AGPS_SETID_TYPE_NONE 0 +#define AGPS_SETID_TYPE_IMSI 1 +#define AGPS_SETID_TYPE_MSISDN 2 + +/** + * String length constants + */ +#define GPS_NI_SHORT_STRING_MAXLEN 256 +#define GPS_NI_LONG_STRING_MAXLEN 2048 + +/** + * GpsNiType constants + */ +typedef uint32_t GpsNiType; +#define GPS_NI_TYPE_VOICE 1 +#define GPS_NI_TYPE_UMTS_SUPL 2 +#define GPS_NI_TYPE_UMTS_CTRL_PLANE 3 + +/** + * GpsNiNotifyFlags constants + */ +typedef uint32_t GpsNiNotifyFlags; +/** NI requires notification */ +#define GPS_NI_NEED_NOTIFY 0x0001 +/** NI requires verification */ +#define GPS_NI_NEED_VERIFY 0x0002 +/** NI requires privacy override, no notification/minimal trace */ +#define GPS_NI_PRIVACY_OVERRIDE 0x0004 + +/** + * GPS NI responses, used to define the response in + * NI structures + */ +typedef int GpsUserResponseType; +#define GPS_NI_RESPONSE_ACCEPT 1 +#define GPS_NI_RESPONSE_DENY 2 +#define GPS_NI_RESPONSE_NORESP 3 + +/** + * NI data encoding scheme + */ +typedef int GpsNiEncodingType; +#define GPS_ENC_NONE 0 +#define GPS_ENC_SUPL_GSM_DEFAULT 1 +#define GPS_ENC_SUPL_UTF8 2 +#define GPS_ENC_SUPL_UCS2 3 +#define GPS_ENC_UNKNOWN -1 + +/** AGPS status event values. */ +typedef uint16_t AGpsStatusValue; +/** GPS requests data connection for AGPS. */ +#define GPS_REQUEST_AGPS_DATA_CONN 1 +/** GPS releases the AGPS data connection. */ +#define GPS_RELEASE_AGPS_DATA_CONN 2 +/** AGPS data connection initiated */ +#define GPS_AGPS_DATA_CONNECTED 3 +/** AGPS data connection completed */ +#define GPS_AGPS_DATA_CONN_DONE 4 +/** AGPS data connection failed */ +#define GPS_AGPS_DATA_CONN_FAILED 5 + +#define AGPS_REF_LOCATION_TYPE_GSM_CELLID 1 +#define AGPS_REF_LOCATION_TYPE_UMTS_CELLID 2 +#define AGPS_REG_LOCATION_TYPE_MAC 3 + +/** Network types for update_network_state "type" parameter */ +#define AGPS_RIL_NETWORK_TYPE_MOBILE 0 +#define AGPS_RIL_NETWORK_TYPE_WIFI 1 +#define AGPS_RIL_NETWORK_TYPE_MOBILE_MMS 2 +#define AGPS_RIL_NETWORK_TYPE_MOBILE_SUPL 3 +#define AGPS_RIL_NETWORK_TTYPE_MOBILE_DUN 4 +#define AGPS_RIL_NETWORK_TTYPE_MOBILE_HIPRI 5 +#define AGPS_RIL_NETWORK_TTYPE_WIMAX 6 + +/** + * Name for the GPS XTRA interface. + */ +#define GPS_XTRA_INTERFACE "gps-xtra" + +/** + * Name for the GPS DEBUG interface. + */ +#define GPS_DEBUG_INTERFACE "gps-debug" + +/** + * Name for the AGPS interface. + */ +#define AGPS_INTERFACE "agps" + +/** + * Name for NI interface + */ +#define GPS_NI_INTERFACE "gps-ni" + +/** + * Name for the AGPS-RIL interface. + */ +#define AGPS_RIL_INTERFACE "agps_ril" + +/** Represents a location. */ +typedef struct { + /** set to sizeof(GpsLocation) */ + size_t size; + /** Contains GpsLocationFlags bits. */ + uint16_t flags; + /** Represents latitude in degrees. */ + double latitude; + /** Represents longitude in degrees. */ + double longitude; + /** Represents altitude in meters above the WGS 84 reference + * ellipsoid. */ + double altitude; + /** Represents speed in meters per second. */ + float speed; + /** Represents heading in degrees. */ + float bearing; + /** Represents expected accuracy in meters. */ + float accuracy; + /** Timestamp for the location fix. */ + GpsUtcTime timestamp; +} GpsLocation; + +/** Represents the status. */ +typedef struct { + /** set to sizeof(GpsStatus) */ + size_t size; + GpsStatusValue status; +} GpsStatus; + +/** Represents SV information. */ +typedef struct { + /** set to sizeof(GpsSvInfo) */ + size_t size; + /** Pseudo-random number for the SV. */ + int prn; + /** Signal to noise ratio. */ + float snr; + /** Elevation of SV in degrees. */ + float elevation; + /** Azimuth of SV in degrees. */ + float azimuth; + /** Unknown field in Samsung I9100 libgps + May be an indicator for constellation type + (GPS, GLONASS, Galileo)? + Used on GT-I9100, likely also present on GT-N7000, + SGH-I717, SGH-I727 but this needs confirmation. + */ + int unknown_samsung_field; +} GpsSvInfo; + +/** Represents SV status. */ +typedef struct { + /** set to sizeof(GpsSvStatus) */ + size_t size; + + /** Number of SVs currently visible. */ + int num_svs; + + /** Contains an array of SV information. */ + GpsSvInfo sv_list[GPS_MAX_SVS]; + + /** Represents a bit mask indicating which SVs + * have ephemeris data. + */ + uint32_t ephemeris_mask; + + /** Represents a bit mask indicating which SVs + * have almanac data. + */ + uint32_t almanac_mask; + + /** + * Represents a bit mask indicating which SVs + * were used for computing the most recent position fix. + */ + uint32_t used_in_fix_mask; +} GpsSvStatus; + +/* 2G and 3G */ +/* In 3G lac is discarded */ +typedef struct { + uint16_t type; + uint16_t mcc; + uint16_t mnc; + uint16_t lac; + uint32_t cid; +} AGpsRefLocationCellID; + +typedef struct { + uint8_t mac[6]; +} AGpsRefLocationMac; + +/** Represents ref locations */ +typedef struct { + uint16_t type; + union { + AGpsRefLocationCellID cellID; + AGpsRefLocationMac mac; + } u; +} AGpsRefLocation; + +/** Callback with location information. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* gps_location_callback)(GpsLocation* location); + +/** Callback with status information. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* gps_status_callback)(GpsStatus* status); + +/** Callback with SV status information. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* gps_sv_status_callback)(GpsSvStatus* sv_info); + +/** Callback for reporting NMEA sentences. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* gps_nmea_callback)(GpsUtcTime timestamp, const char* nmea, int length); + +/** Callback to inform framework of the GPS engine's capabilities. + * Capability parameter is a bit field of GPS_CAPABILITY_* flags. + */ +typedef void (* gps_set_capabilities)(uint32_t capabilities); + +/** Callback utility for acquiring the GPS wakelock. + * This can be used to prevent the CPU from suspending while handling GPS events. + */ +typedef void (* gps_acquire_wakelock)(); + +/** Callback utility for releasing the GPS wakelock. */ +typedef void (* gps_release_wakelock)(); + +/** Callback for requesting NTP time */ +typedef void (* gps_request_utc_time)(); + +/** Callback for creating a thread that can call into the Java framework code. + * This must be used to create any threads that report events up to the framework. + */ +typedef pthread_t (* gps_create_thread)(const char* name, void (*start)(void *), void* arg); + +/** GPS callback structure. */ +typedef struct { + /** set to sizeof(GpsCallbacks) */ + size_t size; + gps_location_callback location_cb; + gps_status_callback status_cb; + gps_sv_status_callback sv_status_cb; + gps_nmea_callback nmea_cb; + gps_set_capabilities set_capabilities_cb; + gps_acquire_wakelock acquire_wakelock_cb; + gps_release_wakelock release_wakelock_cb; + gps_create_thread create_thread_cb; + gps_request_utc_time request_utc_time_cb; +} GpsCallbacks; + + +/** Represents the standard GPS interface. */ +typedef struct { + /** set to sizeof(GpsInterface) */ + size_t size; + /** + * Opens the interface and provides the callback routines + * to the implemenation of this interface. + */ + int (*init)( GpsCallbacks* callbacks ); + + /** Starts navigating. */ + int (*start)( void ); + + /** Stops navigating. */ + int (*stop)( void ); + + /** Closes the interface. */ + void (*cleanup)( void ); + + /** Injects the current time. */ + int (*inject_time)(GpsUtcTime time, int64_t timeReference, + int uncertainty); + + /** Injects current location from another location provider + * (typically cell ID). + * latitude and longitude are measured in degrees + * expected accuracy is measured in meters + */ + int (*inject_location)(double latitude, double longitude, float accuracy); + + /** + * Specifies that the next call to start will not use the + * information defined in the flags. GPS_DELETE_ALL is passed for + * a cold start. + */ + void (*delete_aiding_data)(GpsAidingData flags); + + /** + * min_interval represents the time between fixes in milliseconds. + * preferred_accuracy represents the requested fix accuracy in meters. + * preferred_time represents the requested time to first fix in milliseconds. + */ + int (*set_position_mode)(GpsPositionMode mode, GpsPositionRecurrence recurrence, + uint32_t min_interval, uint32_t preferred_accuracy, uint32_t preferred_time); + + /** Get a pointer to extension information. */ + const void* (*get_extension)(const char* name); +} GpsInterface; + +/** Callback to request the client to download XTRA data. + * The client should download XTRA data and inject it by calling inject_xtra_data(). + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* gps_xtra_download_request)(); + +/** Callback structure for the XTRA interface. */ +typedef struct { + gps_xtra_download_request download_request_cb; + gps_create_thread create_thread_cb; +} GpsXtraCallbacks; + +/** Extended interface for XTRA support. */ +typedef struct { + /** set to sizeof(GpsXtraInterface) */ + size_t size; + /** + * Opens the XTRA interface and provides the callback routines + * to the implemenation of this interface. + */ + int (*init)( GpsXtraCallbacks* callbacks ); + /** Injects XTRA data into the GPS. */ + int (*inject_xtra_data)( char* data, int length ); +} GpsXtraInterface; + +/** Extended interface for DEBUG support. */ +typedef struct { + /** set to sizeof(GpsDebugInterface) */ + size_t size; + + /** + * This function should return any information that the native + * implementation wishes to include in a bugreport. + */ + size_t (*get_internal_state)(char* buffer, size_t bufferSize); +} GpsDebugInterface; + +/** Represents the status of AGPS. */ +typedef struct { + /** set to sizeof(AGpsStatus) */ + size_t size; + + AGpsType type; + AGpsStatusValue status; + uint32_t ipaddr; +} AGpsStatus; + +/** Callback with AGPS status information. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (* agps_status_callback)(AGpsStatus* status); + +/** Callback structure for the AGPS interface. */ +typedef struct { + agps_status_callback status_cb; + gps_create_thread create_thread_cb; +} AGpsCallbacks; + + +/** Extended interface for AGPS support. */ +typedef struct { + /** set to sizeof(AGpsInterface) */ + size_t size; + + /** + * Opens the AGPS interface and provides the callback routines + * to the implemenation of this interface. + */ + void (*init)( AGpsCallbacks* callbacks ); + /** + * Notifies that a data connection is available and sets + * the name of the APN to be used for SUPL. + */ + int (*data_conn_open)( const char* apn ); + /** + * Notifies that the AGPS data connection has been closed. + */ + int (*data_conn_closed)(); + /** + * Notifies that a data connection is not available for AGPS. + */ + int (*data_conn_failed)(); + /** + * Sets the hostname and port for the AGPS server. + */ + int (*set_server)( AGpsType type, const char* hostname, int port ); +} AGpsInterface; + + +/** Represents an NI request */ +typedef struct { + /** set to sizeof(GpsNiNotification) */ + size_t size; + + /** + * An ID generated by HAL to associate NI notifications and UI + * responses + */ + int notification_id; + + /** + * An NI type used to distinguish different categories of NI + * events, such as GPS_NI_TYPE_VOICE, GPS_NI_TYPE_UMTS_SUPL, ... + */ + GpsNiType ni_type; + + /** + * Notification/verification options, combinations of GpsNiNotifyFlags constants + */ + GpsNiNotifyFlags notify_flags; + + /** + * Timeout period to wait for user response. + * Set to 0 for no time out limit. + */ + int timeout; + + /** + * Default response when time out. + */ + GpsUserResponseType default_response; + + /** + * Requestor ID + */ + char requestor_id[GPS_NI_SHORT_STRING_MAXLEN]; + + /** + * Notification message. It can also be used to store client_id in some cases + */ + char text[GPS_NI_LONG_STRING_MAXLEN]; + + /** + * Client name decoding scheme + */ + GpsNiEncodingType requestor_id_encoding; + + /** + * Client name decoding scheme + */ + GpsNiEncodingType text_encoding; + + /** + * A pointer to extra data. Format: + * key_1 = value_1 + * key_2 = value_2 + */ + char extras[GPS_NI_LONG_STRING_MAXLEN]; + +} GpsNiNotification; + +/** Callback with NI notification. + * Can only be called from a thread created by create_thread_cb. + */ +typedef void (*gps_ni_notify_callback)(GpsNiNotification *notification); + +/** GPS NI callback structure. */ +typedef struct +{ + /** + * Sends the notification request from HAL to GPSLocationProvider. + */ + gps_ni_notify_callback notify_cb; + gps_create_thread create_thread_cb; +} GpsNiCallbacks; + +/** + * Extended interface for Network-initiated (NI) support. + */ +typedef struct +{ + /** set to sizeof(GpsNiInterface) */ + size_t size; + + /** Registers the callbacks for HAL to use. */ + void (*init) (GpsNiCallbacks *callbacks); + + /** Sends a response to HAL. */ + void (*respond) (int notif_id, GpsUserResponseType user_response); +} GpsNiInterface; + +struct gps_device_t { + struct hw_device_t common; + + /** + * Set the provided lights to the provided values. + * + * Returns: 0 on succes, error code on failure. + */ + const GpsInterface* (*get_gps_interface)(struct gps_device_t* dev); +}; + +#define AGPS_RIL_REQUEST_SETID_IMSI (1<<0L) +#define AGPS_RIL_REQUEST_SETID_MSISDN (1<<1L) + +#define AGPS_RIL_REQUEST_REFLOC_CELLID (1<<0L) +#define AGPS_RIL_REQUEST_REFLOC_MAC (1<<1L) + +typedef void (*agps_ril_request_set_id)(uint32_t flags); +typedef void (*agps_ril_request_ref_loc)(uint32_t flags); + +typedef struct { + agps_ril_request_set_id request_setid; + agps_ril_request_ref_loc request_refloc; + gps_create_thread create_thread_cb; +} AGpsRilCallbacks; + +/** Extended interface for AGPS_RIL support. */ +typedef struct { + /** set to sizeof(AGpsRilInterface) */ + size_t size; + /** + * Opens the AGPS interface and provides the callback routines + * to the implemenation of this interface. + */ + void (*init)( AGpsRilCallbacks* callbacks ); + + /** + * Sets the reference location. + */ + void (*set_ref_location) (const AGpsRefLocation *agps_reflocation, size_t sz_struct); + /** + * Sets the set ID. + */ + void (*set_set_id) (AGpsSetIDType type, const char* setid); + + /** + * Send network initiated message. + */ + void (*ni_message) (uint8_t *msg, size_t len); + + /** + * Notify GPS of network status changes. + * These parameters match values in the android.net.NetworkInfo class. + */ + void (*update_network_state) (int connected, int type, int roaming, const char* extra_info); + + /** + * Notify GPS of network status changes. + * These parameters match values in the android.net.NetworkInfo class. + */ + void (*update_network_availability) (int avaiable, const char* apn); +} AGpsRilInterface; + +__END_DECLS + +#endif /* ANDROID_INCLUDE_HARDWARE_GPS_H */ + diff --git a/overlay/packages/apps/Camera/res/values/config.xml b/overlay/packages/apps/Camera/res/values/config.xml new file mode 100644 index 0000000..09dd1ad --- /dev/null +++ b/overlay/packages/apps/Camera/res/values/config.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2011, 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. +*/ +--> + +<resources> + <!-- Allows setting video size before recording starts --> + <bool name="needsEarlyVideoSize">true</bool> + <!-- Samsung Camcorder Mode --> + <bool name="needsSamsungCamMode">true</bool> + <!-- Samsung Camera Settings --> + <bool name="hasSamsungCamSettings">true</bool> + <!-- Use ZSL mode --> + <bool name="enableZSL">true</bool> +</resources> diff --git a/overlay/packages/apps/Phone/res/values/config.xml b/overlay/packages/apps/Phone/res/values/config.xml new file mode 100644 index 0000000..f788afe --- /dev/null +++ b/overlay/packages/apps/Phone/res/values/config.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2009 The Android Open Source 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. +--> + +<!-- Phone app resources that may need to be customized + for different hardware or product builds. --> +<resources> + <!-- Determines if device implements a noise suppression device for in call audio--> +<!-- <bool name="has_in_call_noise_suppression">true</bool> --> + + <!-- Audio parameter for setting noise suppression--> +<!-- <string name="in_call_noise_suppression_audioparameter">dualmic_enabled=true=false</string> --> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-af/arrays.xml b/overlay/packages/apps/Settings/res/values-af/arrays.xml new file mode 100644 index 0000000..4f2780f --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-af/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekondes"</item> + <item msgid="8672738773876256432">"30 sekondes"</item> + <item msgid="465923292941002466">"1 minuut"</item> + <item msgid="7955177189296850016">"2 minute"</item> + <item msgid="1244255986255344525">"5 minute"</item> + <item msgid="294890536998091748">"10 minute"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-am/arrays.xml b/overlay/packages/apps/Settings/res/values-am/arrays.xml new file mode 100644 index 0000000..73deb95 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-am/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 ሰከንዶች"</item> + <item msgid="8672738773876256432">"30 ሰከንዶች"</item> + <item msgid="465923292941002466">"1 ደቂቃ"</item> + <item msgid="7955177189296850016">"2 ደቂቃዎች"</item> + <item msgid="1244255986255344525">"5 ደቂቃዎች"</item> + <item msgid="294890536998091748">"10 ደቂቃዎች"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ar/arrays.xml b/overlay/packages/apps/Settings/res/values-ar/arrays.xml new file mode 100644 index 0000000..396b12e --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ar/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 ثانية"</item> + <item msgid="8672738773876256432">"30 ثانية"</item> + <item msgid="465923292941002466">"دقيقة واحدة"</item> + <item msgid="7955177189296850016">"دقيقتان"</item> + <item msgid="1244255986255344525">"5 دقائق"</item> + <item msgid="294890536998091748">"10 دقائق"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-bg/arrays.xml b/overlay/packages/apps/Settings/res/values-bg/arrays.xml new file mode 100644 index 0000000..7c35aca --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-bg/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 секунди"</item> + <item msgid="8672738773876256432">"30 секунди"</item> + <item msgid="465923292941002466">"1 минута"</item> + <item msgid="7955177189296850016">"2 минути"</item> + <item msgid="1244255986255344525">"5 минути"</item> + <item msgid="294890536998091748">"10 минути"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ca/arrays.xml b/overlay/packages/apps/Settings/res/values-ca/arrays.xml new file mode 100644 index 0000000..7b8afb8 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ca/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segons"</item> + <item msgid="8672738773876256432">"30 segons"</item> + <item msgid="465923292941002466">"1 minut"</item> + <item msgid="7955177189296850016">"2 minuts"</item> + <item msgid="1244255986255344525">"5 minuts"</item> + <item msgid="294890536998091748">"10 minuts"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-cs/arrays.xml b/overlay/packages/apps/Settings/res/values-cs/arrays.xml new file mode 100644 index 0000000..266d10e --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-cs/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 s."</item> + <item msgid="8672738773876256432">"30 s."</item> + <item msgid="465923292941002466">"1 min."</item> + <item msgid="7955177189296850016">"2 min."</item> + <item msgid="1244255986255344525">"5 min."</item> + <item msgid="294890536998091748">"10 min."</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-da/arrays.xml b/overlay/packages/apps/Settings/res/values-da/arrays.xml new file mode 100644 index 0000000..5286122 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-da/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekunder"</item> + <item msgid="8672738773876256432">"30 sekunder"</item> + <item msgid="465923292941002466">"1 minut"</item> + <item msgid="7955177189296850016">"2 minutter"</item> + <item msgid="1244255986255344525">"5 minutter"</item> + <item msgid="294890536998091748">"10 minutter"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-de/arrays.xml b/overlay/packages/apps/Settings/res/values-de/arrays.xml new file mode 100644 index 0000000..a185f05 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-de/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 Sekunden"</item> + <item msgid="8672738773876256432">"30 Sekunden"</item> + <item msgid="465923292941002466">"1 Minute"</item> + <item msgid="7955177189296850016">"2 Minuten"</item> + <item msgid="1244255986255344525">"5 Minuten"</item> + <item msgid="294890536998091748">"10 Minuten"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-el/arrays.xml b/overlay/packages/apps/Settings/res/values-el/arrays.xml new file mode 100644 index 0000000..c5b4111 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-el/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 δευτερόλεπτα"</item> + <item msgid="8672738773876256432">"30 δευτερόλεπτα"</item> + <item msgid="465923292941002466">"1 λεπτό"</item> + <item msgid="7955177189296850016">"2 λεπτά"</item> + <item msgid="1244255986255344525">"5 λεπτά"</item> + <item msgid="294890536998091748">"10 λεπτά"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-en-rGB/arrays.xml b/overlay/packages/apps/Settings/res/values-en-rGB/arrays.xml new file mode 100644 index 0000000..d99e0a6 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-en-rGB/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 seconds"</item> + <item msgid="8672738773876256432">"30 seconds"</item> + <item msgid="465923292941002466">"1 minute"</item> + <item msgid="7955177189296850016">"2 minutes"</item> + <item msgid="1244255986255344525">"5 minutes"</item> + <item msgid="294890536998091748">"10 minutes"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-es-rUS/arrays.xml b/overlay/packages/apps/Settings/res/values-es-rUS/arrays.xml new file mode 100644 index 0000000..9d0d76b --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-es-rUS/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segundos"</item> + <item msgid="8672738773876256432">"30 segundos"</item> + <item msgid="465923292941002466">"1 minuto"</item> + <item msgid="7955177189296850016">"2 minutos"</item> + <item msgid="1244255986255344525">"5 minutos"</item> + <item msgid="294890536998091748">"10 minutos"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-es/arrays.xml b/overlay/packages/apps/Settings/res/values-es/arrays.xml new file mode 100644 index 0000000..9d0d76b --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-es/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segundos"</item> + <item msgid="8672738773876256432">"30 segundos"</item> + <item msgid="465923292941002466">"1 minuto"</item> + <item msgid="7955177189296850016">"2 minutos"</item> + <item msgid="1244255986255344525">"5 minutos"</item> + <item msgid="294890536998091748">"10 minutos"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-fa/arrays.xml b/overlay/packages/apps/Settings/res/values-fa/arrays.xml new file mode 100644 index 0000000..bf95ca8 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-fa/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 ثانیه"</item> + <item msgid="8672738773876256432">"30 ثانیه"</item> + <item msgid="465923292941002466">"1 دقیقه"</item> + <item msgid="7955177189296850016">"2 دقیقه"</item> + <item msgid="1244255986255344525">"5 دقیقه"</item> + <item msgid="294890536998091748">"10 دقیقه"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-fi/arrays.xml b/overlay/packages/apps/Settings/res/values-fi/arrays.xml new file mode 100644 index 0000000..7bf4c62 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-fi/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekuntia"</item> + <item msgid="8672738773876256432">"30 sekuntia"</item> + <item msgid="465923292941002466">"1 minuutti"</item> + <item msgid="7955177189296850016">"2 minuuttia"</item> + <item msgid="1244255986255344525">"5 minuuttia"</item> + <item msgid="294890536998091748">"10 minuuttia"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-fr/arrays.xml b/overlay/packages/apps/Settings/res/values-fr/arrays.xml new file mode 100644 index 0000000..cb9e4ff --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-fr/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 secondes"</item> + <item msgid="8672738773876256432">"30 secondes"</item> + <item msgid="465923292941002466">"1 minute"</item> + <item msgid="7955177189296850016">"2 minutes"</item> + <item msgid="1244255986255344525">"5 minutes"</item> + <item msgid="294890536998091748">"10 minutes"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-hi/arrays.xml b/overlay/packages/apps/Settings/res/values-hi/arrays.xml new file mode 100644 index 0000000..7c2f835 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-hi/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 सेकंड"</item> + <item msgid="8672738773876256432">"30 सेकंड"</item> + <item msgid="465923292941002466">"1 मिनट"</item> + <item msgid="7955177189296850016">"2 मिनट"</item> + <item msgid="1244255986255344525">"5 मिनट"</item> + <item msgid="294890536998091748">"10 मिनट"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-hr/arrays.xml b/overlay/packages/apps/Settings/res/values-hr/arrays.xml new file mode 100644 index 0000000..5e0c117 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-hr/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekundi"</item> + <item msgid="8672738773876256432">"30 sekundi"</item> + <item msgid="465923292941002466">"1 minuta"</item> + <item msgid="7955177189296850016">"2 minute"</item> + <item msgid="1244255986255344525">"5 minuta"</item> + <item msgid="294890536998091748">"10 minuta"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-hu/arrays.xml b/overlay/packages/apps/Settings/res/values-hu/arrays.xml new file mode 100644 index 0000000..208464e --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-hu/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 másodperc"</item> + <item msgid="8672738773876256432">"30 másodperc"</item> + <item msgid="465923292941002466">"1 perc"</item> + <item msgid="7955177189296850016">"2 perc"</item> + <item msgid="1244255986255344525">"5 perc"</item> + <item msgid="294890536998091748">"10 perc"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-in/arrays.xml b/overlay/packages/apps/Settings/res/values-in/arrays.xml new file mode 100644 index 0000000..b3c4776 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-in/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 detik"</item> + <item msgid="8672738773876256432">"30 detik"</item> + <item msgid="465923292941002466">"1 menit"</item> + <item msgid="7955177189296850016">"2 menit"</item> + <item msgid="1244255986255344525">"5 menit"</item> + <item msgid="294890536998091748">"10 menit"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-it/arrays.xml b/overlay/packages/apps/Settings/res/values-it/arrays.xml new file mode 100644 index 0000000..3d923d3 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-it/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 secondi"</item> + <item msgid="8672738773876256432">"30 secondi"</item> + <item msgid="465923292941002466">"1 minuto"</item> + <item msgid="7955177189296850016">"2 minuti"</item> + <item msgid="1244255986255344525">"5 minuti"</item> + <item msgid="294890536998091748">"10 minuti"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-iw/arrays.xml b/overlay/packages/apps/Settings/res/values-iw/arrays.xml new file mode 100644 index 0000000..4a90801 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-iw/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 שניות"</item> + <item msgid="8672738773876256432">"30 שניות"</item> + <item msgid="465923292941002466">"דקה אחת"</item> + <item msgid="7955177189296850016">"2 דקות"</item> + <item msgid="1244255986255344525">"5 דקות"</item> + <item msgid="294890536998091748">"10 דקות"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ja/arrays.xml b/overlay/packages/apps/Settings/res/values-ja/arrays.xml new file mode 100644 index 0000000..abde1bf --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ja/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15秒"</item> + <item msgid="8672738773876256432">"30秒"</item> + <item msgid="465923292941002466">"1分"</item> + <item msgid="7955177189296850016">"2分"</item> + <item msgid="1244255986255344525">"5分"</item> + <item msgid="294890536998091748">"10分"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ko/arrays.xml b/overlay/packages/apps/Settings/res/values-ko/arrays.xml new file mode 100644 index 0000000..d2b686f --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ko/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15초"</item> + <item msgid="8672738773876256432">"30초"</item> + <item msgid="465923292941002466">"1분"</item> + <item msgid="7955177189296850016">"2분"</item> + <item msgid="1244255986255344525">"5분"</item> + <item msgid="294890536998091748">"10분"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-lt/arrays.xml b/overlay/packages/apps/Settings/res/values-lt/arrays.xml new file mode 100644 index 0000000..3028803 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-lt/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sek."</item> + <item msgid="8672738773876256432">"30 sek."</item> + <item msgid="465923292941002466">"1 min."</item> + <item msgid="7955177189296850016">"2 min."</item> + <item msgid="1244255986255344525">"5 min."</item> + <item msgid="294890536998091748">"10 min."</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-lv/arrays.xml b/overlay/packages/apps/Settings/res/values-lv/arrays.xml new file mode 100644 index 0000000..19ffffd --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-lv/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekundes"</item> + <item msgid="8672738773876256432">"30 sekundes"</item> + <item msgid="465923292941002466">"1 minūte"</item> + <item msgid="7955177189296850016">"2 minūtes"</item> + <item msgid="1244255986255344525">"5 minūtes"</item> + <item msgid="294890536998091748">"10 minūtes"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ms/arrays.xml b/overlay/packages/apps/Settings/res/values-ms/arrays.xml new file mode 100644 index 0000000..0f5b80d --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ms/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 saat"</item> + <item msgid="8672738773876256432">"30 saat"</item> + <item msgid="465923292941002466">"1 minit"</item> + <item msgid="7955177189296850016">"2 minit"</item> + <item msgid="1244255986255344525">"5 minit"</item> + <item msgid="294890536998091748">"10 minit"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-nb/arrays.xml b/overlay/packages/apps/Settings/res/values-nb/arrays.xml new file mode 100644 index 0000000..c5db781 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-nb/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekunder"</item> + <item msgid="8672738773876256432">"30 sekunder"</item> + <item msgid="465923292941002466">"Ett minutt"</item> + <item msgid="7955177189296850016">"To minutter"</item> + <item msgid="1244255986255344525">"Fem minutter"</item> + <item msgid="294890536998091748">"Ti minutter"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-nl/arrays.xml b/overlay/packages/apps/Settings/res/values-nl/arrays.xml new file mode 100644 index 0000000..aa15318 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-nl/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 seconden"</item> + <item msgid="8672738773876256432">"30 seconden"</item> + <item msgid="465923292941002466">"1 minuut"</item> + <item msgid="7955177189296850016">"2 minuten"</item> + <item msgid="1244255986255344525">"5 minuten"</item> + <item msgid="294890536998091748">"10 minuten"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-pl/arrays.xml b/overlay/packages/apps/Settings/res/values-pl/arrays.xml new file mode 100644 index 0000000..265da14 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-pl/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekund"</item> + <item msgid="8672738773876256432">"30 sekund"</item> + <item msgid="465923292941002466">"1 minuta"</item> + <item msgid="7955177189296850016">"2 minuty"</item> + <item msgid="1244255986255344525">"5 minut"</item> + <item msgid="294890536998091748">"10 minut"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-pt-rPT/arrays.xml b/overlay/packages/apps/Settings/res/values-pt-rPT/arrays.xml new file mode 100644 index 0000000..9d0d76b --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-pt-rPT/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segundos"</item> + <item msgid="8672738773876256432">"30 segundos"</item> + <item msgid="465923292941002466">"1 minuto"</item> + <item msgid="7955177189296850016">"2 minutos"</item> + <item msgid="1244255986255344525">"5 minutos"</item> + <item msgid="294890536998091748">"10 minutos"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-pt/arrays.xml b/overlay/packages/apps/Settings/res/values-pt/arrays.xml new file mode 100644 index 0000000..1e00250 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-pt/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segundos"</item> + <item msgid="8672738773876256432">"30 segundos"</item> + <item msgid="465923292941002466">"Um minuto"</item> + <item msgid="7955177189296850016">"Dois minutos"</item> + <item msgid="1244255986255344525">"Cinco minutos"</item> + <item msgid="294890536998091748">"10 minutos"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ro/arrays.xml b/overlay/packages/apps/Settings/res/values-ro/arrays.xml new file mode 100644 index 0000000..903ea72 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ro/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 secunde"</item> + <item msgid="8672738773876256432">"30 de secunde"</item> + <item msgid="465923292941002466">"1 minut"</item> + <item msgid="7955177189296850016">"2 minute"</item> + <item msgid="1244255986255344525">"5 minute"</item> + <item msgid="294890536998091748">"10 minute"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-ru/arrays.xml b/overlay/packages/apps/Settings/res/values-ru/arrays.xml new file mode 100644 index 0000000..b4d5e6e --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-ru/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 секунд"</item> + <item msgid="8672738773876256432">"30 секунд"</item> + <item msgid="465923292941002466">"1 минута"</item> + <item msgid="7955177189296850016">"2 минуты"</item> + <item msgid="1244255986255344525">"5 минут"</item> + <item msgid="294890536998091748">"10 минут"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-sk/arrays.xml b/overlay/packages/apps/Settings/res/values-sk/arrays.xml new file mode 100644 index 0000000..f6ffc42 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-sk/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 s"</item> + <item msgid="8672738773876256432">"30 s"</item> + <item msgid="465923292941002466">"1 min."</item> + <item msgid="7955177189296850016">"2 min."</item> + <item msgid="1244255986255344525">"5 min."</item> + <item msgid="294890536998091748">"10 min."</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-sl/arrays.xml b/overlay/packages/apps/Settings/res/values-sl/arrays.xml new file mode 100644 index 0000000..c660d19 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-sl/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 s"</item> + <item msgid="8672738773876256432">"30 s"</item> + <item msgid="465923292941002466">"1 min"</item> + <item msgid="7955177189296850016">"2 min"</item> + <item msgid="1244255986255344525">"5 min"</item> + <item msgid="294890536998091748">"10 min"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-sr/arrays.xml b/overlay/packages/apps/Settings/res/values-sr/arrays.xml new file mode 100644 index 0000000..bea8b75 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-sr/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 секунди"</item> + <item msgid="8672738773876256432">"30 секунди"</item> + <item msgid="465923292941002466">"1 минут"</item> + <item msgid="7955177189296850016">"2 минута"</item> + <item msgid="1244255986255344525">"5 минута"</item> + <item msgid="294890536998091748">"10 минута"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-sv/arrays.xml b/overlay/packages/apps/Settings/res/values-sv/arrays.xml new file mode 100644 index 0000000..c28821f --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-sv/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 sekunder"</item> + <item msgid="8672738773876256432">"30 sekunder"</item> + <item msgid="465923292941002466">"1 minut"</item> + <item msgid="7955177189296850016">"2 minuter"</item> + <item msgid="1244255986255344525">"5 minuter"</item> + <item msgid="294890536998091748">"10 minuter"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-sw/arrays.xml b/overlay/packages/apps/Settings/res/values-sw/arrays.xml new file mode 100644 index 0000000..1eda2bd --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-sw/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"Sekunde 15"</item> + <item msgid="8672738773876256432">"sekunde 30"</item> + <item msgid="465923292941002466">"Dakika 1"</item> + <item msgid="7955177189296850016">"Dakika 2"</item> + <item msgid="1244255986255344525">"Dakika 5"</item> + <item msgid="294890536998091748">"Dakika 10"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-th/arrays.xml b/overlay/packages/apps/Settings/res/values-th/arrays.xml new file mode 100644 index 0000000..0a62eb2 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-th/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 วินาที"</item> + <item msgid="8672738773876256432">"30 วินาที"</item> + <item msgid="465923292941002466">"1 นาที"</item> + <item msgid="7955177189296850016">"2 นาที"</item> + <item msgid="1244255986255344525">"5 นาที"</item> + <item msgid="294890536998091748">"10 นาที"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-tl/arrays.xml b/overlay/packages/apps/Settings/res/values-tl/arrays.xml new file mode 100644 index 0000000..f6eed62 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-tl/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 segundo"</item> + <item msgid="8672738773876256432">"30 segundo"</item> + <item msgid="465923292941002466">"1 minuto"</item> + <item msgid="7955177189296850016">"2 minuto"</item> + <item msgid="1244255986255344525">"5 minuto"</item> + <item msgid="294890536998091748">"10 minuto"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-tr/arrays.xml b/overlay/packages/apps/Settings/res/values-tr/arrays.xml new file mode 100644 index 0000000..4c0aecc --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-tr/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 saniye"</item> + <item msgid="8672738773876256432">"30 saniye"</item> + <item msgid="465923292941002466">"1 dakika"</item> + <item msgid="7955177189296850016">"2 dakika"</item> + <item msgid="1244255986255344525">"5 dakika"</item> + <item msgid="294890536998091748">"10 dakika"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-uk/arrays.xml b/overlay/packages/apps/Settings/res/values-uk/arrays.xml new file mode 100644 index 0000000..3406602 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-uk/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 секунд"</item> + <item msgid="8672738773876256432">"30 секунд"</item> + <item msgid="465923292941002466">"1 хвилина"</item> + <item msgid="7955177189296850016">"2 хвилини"</item> + <item msgid="1244255986255344525">"5 хвилин"</item> + <item msgid="294890536998091748">"10 хвилин"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-vi/arrays.xml b/overlay/packages/apps/Settings/res/values-vi/arrays.xml new file mode 100644 index 0000000..c6de6bd --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-vi/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 giây"</item> + <item msgid="8672738773876256432">"30 giây"</item> + <item msgid="465923292941002466">"1 phút"</item> + <item msgid="7955177189296850016">"2 phút"</item> + <item msgid="1244255986255344525">"5 phút"</item> + <item msgid="294890536998091748">"10 phút"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml b/overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml new file mode 100644 index 0000000..cb28ca4 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 秒"</item> + <item msgid="8672738773876256432">"30 秒"</item> + <item msgid="465923292941002466">"1 分钟"</item> + <item msgid="7955177189296850016">"2 分钟"</item> + <item msgid="1244255986255344525">"5 分钟"</item> + <item msgid="294890536998091748">"10 分钟"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-zh-rTW/arrays.xml b/overlay/packages/apps/Settings/res/values-zh-rTW/arrays.xml new file mode 100644 index 0000000..eb9329b --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-zh-rTW/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"15 秒"</item> + <item msgid="8672738773876256432">"30 秒"</item> + <item msgid="465923292941002466">"1 分鐘"</item> + <item msgid="7955177189296850016">"2 分鐘"</item> + <item msgid="1244255986255344525">"5 分鐘"</item> + <item msgid="294890536998091748">"10 分鐘"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values-zu/arrays.xml b/overlay/packages/apps/Settings/res/values-zu/arrays.xml new file mode 100644 index 0000000..e675fbb --- /dev/null +++ b/overlay/packages/apps/Settings/res/values-zu/arrays.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string-array name="screen_timeout_entries"> + <item msgid="5314770629356662739">"Imizuzwana engu-15"</item> + <item msgid="8672738773876256432">"30 amasekhondi"</item> + <item msgid="465923292941002466">"1 iminithi"</item> + <item msgid="7955177189296850016">"2 amaminithi"</item> + <item msgid="1244255986255344525">"5 amaminithii"</item> + <item msgid="294890536998091748">"10 amaminithi"</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values/arrays.xml b/overlay/packages/apps/Settings/res/values/arrays.xml new file mode 100644 index 0000000..3b47031 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values/arrays.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** +** Copyright 2011 The Android Open Source 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. +*/ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. --> + <string-array name="screen_timeout_entries"> + <item msgid="3342301044271143016">15 seconds</item> + <item msgid="8881760709354815449">30 seconds</item> + <item msgid="7589406073232279088">1 minute</item> + <item msgid="7001195990902244174">2 minutes</item> + <item msgid="7489864775127957179">5 minutes</item> + <item msgid="2314124409517439288">10 minutes</item> + </string-array> + + <!-- Do not translate. --> + <string-array name="screen_timeout_values" translatable="false"> + <!-- Do not translate. --> + <item>15000</item> + <!-- Do not translate. --> + <item>30000</item> + <!-- Do not translate. --> + <item>60000</item> + <!-- Do not translate. --> + <item>120000</item> + <!-- Do not translate. --> + <item>300000</item> + <!-- Do not translate. --> + <item>600000</item> + </string-array> +</resources> diff --git a/overlay/packages/apps/Settings/res/values/config.xml b/overlay/packages/apps/Settings/res/values/config.xml new file mode 100644 index 0000000..6d6b210 --- /dev/null +++ b/overlay/packages/apps/Settings/res/values/config.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> + +<resources xmlns:xliff="urnasis:names:tc:xliff:document:1.2 "> + <!-- LED Flashlight --> + <bool name="has_led_flash">true</bool> + + <!-- Dock Settings --> + <bool name="has_dock_settings">true</bool> +</resources> diff --git a/recovery.rc b/recovery.rc new file mode 100644 index 0000000..a4c6ff3 --- /dev/null +++ b/recovery.rc @@ -0,0 +1,63 @@ +on early-init + start ueventd + +on init + export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin + export ANDROID_ROOT /system + export ANDROID_DATA /data + export EXTERNAL_STORAGE /sdcard + + mkdir /sdcard + mkdir /extSdCard + mkdir /system + mkdir /data + mkdir /cache + mkdir /preload + mkdir /efs + mount /tmp /tmp tmpfs + +on boot + ifup lo + hostname localhost + domainname localdomain + + class_start default + +service ueventd /sbin/ueventd + critical + +service console /sbin/sh + class core + console + disabled + group log + +on property:ro.debuggable=1 + start console + +service recovery /sbin/recovery + +service adbd /sbin/adbd recovery + disabled + +# Always start adbd on userdebug and eng builds +on property:ro.debuggable=1 + setprop adb.recovery 1 + +on property:adb.recovery=1 + write /sys/class/android_usb/android0/enable 0 + write /sys/class/android_usb/android0/idVendor 04e8 + write /sys/class/android_usb/android0/idProduct 6860 + write /sys/class/android_usb/android0/functions adb + write /sys/class/android_usb/android0/enable 1 + write /sys/class/android_usb/android0/iManufacturer $ro.product.manufacturer + write /sys/class/android_usb/android0/iProduct $ro.product.model + write /sys/class/android_usb/android0/iSerial $ro.serialno + start adbd + setprop service.adb.root 1 + +# Restart adbd so it can run as root +on property:service.adb.root=1 + write /sys/class/android_usb/android0/enable 0 + restart adbd + write /sys/class/android_usb/android0/enable 1 diff --git a/recovery/graphics.c b/recovery/graphics.c new file mode 100644 index 0000000..6d60b27 --- /dev/null +++ b/recovery/graphics.c @@ -0,0 +1,376 @@ +/* + * Copyright (C) 2007 The Android Open Source 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. + */ + +#include <stdbool.h> +#include <stdlib.h> +#include <unistd.h> + +#include <fcntl.h> +#include <stdio.h> + +#include <sys/ioctl.h> +#include <sys/mman.h> +#include <sys/types.h> + +#include <linux/fb.h> +#include <linux/kd.h> + +#include <pixelflinger/pixelflinger.h> + +#ifdef BOARD_USE_CUSTOM_RECOVERY_FONT +#include BOARD_USE_CUSTOM_RECOVERY_FONT +#else +#include "font_10x18.h" +#endif + +#include "minui.h" + +#define PIXEL_FORMAT GGL_PIXEL_FORMAT_BGRA_8888 +#define PIXEL_SIZE 4 + +typedef struct { + GGLSurface texture; + unsigned cwidth; + unsigned cheight; + unsigned ascent; +} GRFont; + +static GRFont *gr_font = 0; +static GGLContext *gr_context = 0; +static GGLSurface gr_font_texture; +static GGLSurface gr_framebuffer[2]; +static GGLSurface gr_mem_surface; +static unsigned gr_active_fb = 0; + +static int gr_fb_fd = -1; +static int gr_vt_fd = -1; + +static struct fb_var_screeninfo vi; +static struct fb_fix_screeninfo fi; + +static int get_framebuffer(GGLSurface *fb) +{ + int fd; + void *bits; + + fd = open("/dev/graphics/fb0", O_RDWR); + if (fd < 0) { + perror("cannot open fb0"); + return -1; + } + + if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return -1; + } + + vi.bits_per_pixel = PIXEL_SIZE * 8; + if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_BGRA_8888) { + vi.red.offset = 8; + vi.red.length = 8; + vi.green.offset = 16; + vi.green.length = 8; + vi.blue.offset = 24; + vi.blue.length = 8; + vi.transp.offset = 0; + vi.transp.length = 8; + } else if (PIXEL_FORMAT == GGL_PIXEL_FORMAT_RGBX_8888) { + vi.red.offset = 24; + vi.red.length = 8; + vi.green.offset = 16; + vi.green.length = 8; + vi.blue.offset = 8; + vi.blue.length = 8; + vi.transp.offset = 0; + vi.transp.length = 8; + } else { /* RGB565*/ + vi.red.offset = 11; + vi.red.length = 5; + vi.green.offset = 5; + vi.green.length = 6; + vi.blue.offset = 0; + vi.blue.length = 5; + vi.transp.offset = 0; + vi.transp.length = 0; + } + if (ioctl(fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("failed to put fb0 info"); + close(fd); + return -1; + } + + if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) { + perror("failed to get fb0 info"); + close(fd); + return -1; + } + + bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (bits == MAP_FAILED) { + perror("failed to mmap framebuffer"); + close(fd); + return -1; + } + + fb->version = sizeof(*fb); + fb->width = vi.xres; + fb->height = vi.yres; + fb->stride = fi.line_length/PIXEL_SIZE; + fb->data = bits; + fb->format = PIXEL_FORMAT; + memset(fb->data, 0, vi.yres * fi.line_length); + + fb++; + + fb->version = sizeof(*fb); + fb->width = vi.xres; + fb->height = vi.yres; + fb->stride = fi.line_length/PIXEL_SIZE; + fb->data = (void*) (((unsigned) bits) + vi.yres * fi.line_length); + fb->format = PIXEL_FORMAT; + memset(fb->data, 0, vi.yres * fi.line_length); + + return fd; +} + +static void get_memory_surface(GGLSurface* ms) { + ms->version = sizeof(*ms); + ms->width = vi.xres; + ms->height = vi.yres; + ms->stride = fi.line_length/PIXEL_SIZE; + ms->data = malloc(fi.line_length * vi.yres); + ms->format = PIXEL_FORMAT; +} + +static void set_active_framebuffer(unsigned n) +{ + if (n > 1) return; + vi.yres_virtual = vi.yres * PIXEL_SIZE; + vi.yoffset = n * vi.yres; + vi.bits_per_pixel = PIXEL_SIZE * 8; + if (ioctl(gr_fb_fd, FBIOPUT_VSCREENINFO, &vi) < 0) { + perror("active fb swap failed"); + } +} + +void gr_flip(void) +{ + GGLContext *gl = gr_context; + + /* swap front and back buffers */ + gr_active_fb = (gr_active_fb + 1) & 1; + + /* copy data from the in-memory surface to the buffer we're about + * to make active. */ + memcpy(gr_framebuffer[gr_active_fb].data, gr_mem_surface.data, + fi.line_length * vi.yres); + + /* inform the display driver */ + set_active_framebuffer(gr_active_fb); +} + +void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a) +{ + GGLContext *gl = gr_context; + GGLint color[4]; + color[0] = ((r << 8) | r) + 1; + color[1] = ((g << 8) | g) + 1; + color[2] = ((b << 8) | b) + 1; + color[3] = ((a << 8) | a) + 1; + gl->color4xv(gl, color); +} + +int gr_measure(const char *s) +{ + return gr_font->cwidth * strlen(s); +} + +void gr_font_size(int *x, int *y) +{ + *x = gr_font->cwidth; + *y = gr_font->cheight; +} + +int gr_text(int x, int y, const char *s) +{ + GGLContext *gl = gr_context; + GRFont *font = gr_font; + unsigned off; + + y -= font->ascent; + + gl->bindTexture(gl, &font->texture); + gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); + gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); + gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); + gl->enable(gl, GGL_TEXTURE_2D); + + while((off = *s++)) { + off -= 32; + if (off < 96) { + gl->texCoord2i(gl, (off * font->cwidth) - x, 0 - y); + gl->recti(gl, x, y, x + font->cwidth, y + font->cheight); + } + x += font->cwidth; + } + + return x; +} + +void gr_fill(int x, int y, int w, int h) +{ + GGLContext *gl = gr_context; + gl->disable(gl, GGL_TEXTURE_2D); + gl->recti(gl, x, y, w, h); +} + +void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy) { + if (gr_context == NULL) { + return; + } + GGLContext *gl = gr_context; + + gl->bindTexture(gl, (GGLSurface*) source); + gl->texEnvi(gl, GGL_TEXTURE_ENV, GGL_TEXTURE_ENV_MODE, GGL_REPLACE); + gl->texGeni(gl, GGL_S, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); + gl->texGeni(gl, GGL_T, GGL_TEXTURE_GEN_MODE, GGL_ONE_TO_ONE); + gl->enable(gl, GGL_TEXTURE_2D); + gl->texCoord2i(gl, sx - dx, sy - dy); + gl->recti(gl, dx, dy, dx + w, dy + h); +} + +unsigned int gr_get_width(gr_surface surface) { + if (surface == NULL) { + return 0; + } + return ((GGLSurface*) surface)->width; +} + +unsigned int gr_get_height(gr_surface surface) { + if (surface == NULL) { + return 0; + } + return ((GGLSurface*) surface)->height; +} + +static void gr_init_font(void) +{ + GGLSurface *ftex; + unsigned char *bits, *rle; + unsigned char *in, data; + + gr_font = calloc(sizeof(*gr_font), 1); + ftex = &gr_font->texture; + + bits = malloc(font.width * font.height); + + ftex->version = sizeof(*ftex); + ftex->width = font.width; + ftex->height = font.height; + ftex->stride = font.width; + ftex->data = (void*) bits; + ftex->format = GGL_PIXEL_FORMAT_A_8; + + in = font.rundata; + while((data = *in++)) { + memset(bits, (data & 0x80) ? 255 : 0, data & 0x7f); + bits += (data & 0x7f); + } + + gr_font->cwidth = font.cwidth; + gr_font->cheight = font.cheight; + gr_font->ascent = font.cheight - 2; +} + +int gr_init(void) +{ + gglInit(&gr_context); + GGLContext *gl = gr_context; + + gr_init_font(); + gr_vt_fd = open("/dev/tty0", O_RDWR | O_SYNC); + if (gr_vt_fd < 0) { + // This is non-fatal; post-Cupcake kernels don't have tty0. + perror("can't open /dev/tty0"); + } else if (ioctl(gr_vt_fd, KDSETMODE, (void*) KD_GRAPHICS)) { + // However, if we do open tty0, we expect the ioctl to work. + perror("failed KDSETMODE to KD_GRAPHICS on tty0"); + gr_exit(); + return -1; + } + + gr_fb_fd = get_framebuffer(gr_framebuffer); + if (gr_fb_fd < 0) { + gr_exit(); + return -1; + } + + get_memory_surface(&gr_mem_surface); + + fprintf(stderr, "framebuffer: fd %d (%d x %d)\n", + gr_fb_fd, gr_framebuffer[0].width, gr_framebuffer[0].height); + + /* start with 0 as front (displayed) and 1 as back (drawing) */ + gr_active_fb = 0; + set_active_framebuffer(0); + gl->colorBuffer(gl, &gr_mem_surface); + + gl->activeTexture(gl, 0); + gl->enable(gl, GGL_BLEND); + gl->blendFunc(gl, GGL_SRC_ALPHA, GGL_ONE_MINUS_SRC_ALPHA); + + gr_fb_blank(true); + gr_fb_blank(false); + + return 0; +} + +void gr_exit(void) +{ + close(gr_fb_fd); + gr_fb_fd = -1; + + free(gr_mem_surface.data); + + ioctl(gr_vt_fd, KDSETMODE, (void*) KD_TEXT); + close(gr_vt_fd); + gr_vt_fd = -1; +} + +int gr_fb_width(void) +{ + return gr_framebuffer[0].width; +} + +int gr_fb_height(void) +{ + return gr_framebuffer[0].height; +} + +gr_pixel *gr_fb_data(void) +{ + return (unsigned short *) gr_mem_surface.data; +} + +void gr_fb_blank(bool blank) +{ + int ret; + + ret = ioctl(gr_fb_fd, FBIOBLANK, blank ? FB_BLANK_POWERDOWN : FB_BLANK_UNBLANK); + if (ret < 0) + perror("ioctl(): blank"); +} diff --git a/recovery/recovery_keys.c b/recovery/recovery_keys.c new file mode 100644 index 0000000..528a796 --- /dev/null +++ b/recovery/recovery_keys.c @@ -0,0 +1,62 @@ +#include <linux/input.h> + +#include "recovery_ui.h" +#include "common.h" +#include "extendedcommands.h" + + +int device_toggle_display(volatile char* key_pressed, int key_code) { + int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT]; + if (alt && key_code == KEY_L) + return 1; + // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off + if (ui_get_showing_back_button()) { + return 0; + //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END); + } + return get_allow_toggle_display() && (key_code == KEY_HOMEPAGE || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END); +} + +int device_handle_key(int key_code, int visible) { + if (visible) { + switch (key_code) { + case KEY_CAPSLOCK: + case KEY_DOWN: + case KEY_VOLUMEDOWN: + return HIGHLIGHT_DOWN; + case KEY_MENU: + return NO_ACTION; + case KEY_LEFTSHIFT: + case KEY_UP: + case KEY_VOLUMEUP: + return HIGHLIGHT_UP; + case KEY_HOMEPAGE: + if (ui_get_showing_back_button()) { + return SELECT_ITEM; + } + if (!get_allow_toggle_display()) + return GO_BACK; + break; + case KEY_POWER: + if (ui_get_showing_back_button()) { + return SELECT_ITEM; + } + if (!get_allow_toggle_display()) + return GO_BACK; + break; + case KEY_LEFTBRACE: + case KEY_ENTER: + case BTN_MOUSE: + case KEY_CAMERA: + case KEY_F21: + case KEY_SEND: + case KEY_END: + case KEY_BACKSPACE: + case KEY_SEARCH: + case KEY_BACK: + return GO_BACK; + } + } + + return NO_ACTION; +} diff --git a/system.prop b/system.prop new file mode 100644 index 0000000..8f98f1d --- /dev/null +++ b/system.prop @@ -0,0 +1,8 @@ +# +# system.prop for smdk4x12 +# + +rild.libpath=/system/lib/libsec-ril.so +rild.libargs=-d /dev/ttyS0 +ro.sf.lcd_density=320 +ro.lcd_min_brightness=20 |