diff options
| author | Moyster <oysterized@gmail.com> | 2016-10-24 13:01:27 +0200 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2016-10-24 13:01:27 +0200 |
| commit | c90cf4fb7f700dc8a608be09da3bb468dfa64161 (patch) | |
| tree | b7f33597c84d26dedafbf36f39161d81a233aec2 | |
| parent | cdc198e59cdd1aceae304476a848029ddf711f27 (diff) | |
don't build anything FMRadio related
440 files changed, 0 insertions, 42710 deletions
diff --git a/MediaTek/FmRadio/Android.mk b/MediaTek/FmRadio/Android.mk deleted file mode 100755 index 2918f01..0000000 --- a/MediaTek/FmRadio/Android.mk +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright Statement: -# -# This software/firmware and related documentation ("MediaTek Software") are -# protected under relevant copyright laws. The information contained herein -# is confidential and proprietary to MediaTek Inc. and/or its licensors. -# Without the prior written permission of MediaTek inc. and/or its licensors, -# any reproduction, modification, use or disclosure of MediaTek Software, -# and information contained herein, in whole or in part, shall be strictly prohibited. -# -# MediaTek Inc. (C) 2011-2014. All rights reserved. -# -# BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES -# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") -# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON -# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. -# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE -# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR -# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH -# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES -# THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES -# CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK -# SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR -# STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND -# CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, -# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, -# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO -# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. -# -# The following software/firmware and/or related documentation ("MediaTek Software") -# have been modified by MediaTek Inc. All revisions are subject to any receiver's -# applicable license agreements with MediaTek Inc. - -ifeq ($(MTK_FM_SUPPORT),yes) -ifeq ($(MTK_FM_RX_SUPPORT),yes) - -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional -LOCAL_CERTIFICATE := platform - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_PACKAGE_NAME := FmRadio -LOCAL_JNI_SHARED_LIBRARIES := libfmjni - -LOCAL_PROGUARD_ENABLED := disabled -LOCAL_PRIVILEGED_MODULE := true - -LOCAL_STATIC_JAVA_LIBRARIES := com.mediatek.fmradio.ext -LOCAL_SRC_FILES += bsp/com/mediatek/fmradio/ExtensionUtils.java - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) - -endif -endif diff --git a/MediaTek/FmRadio/Android.mk~ b/MediaTek/FmRadio/Android.mk~ deleted file mode 100755 index d7c93e8..0000000 --- a/MediaTek/FmRadio/Android.mk~ +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright Statement: -# -# This software/firmware and related documentation ("MediaTek Software") are -# protected under relevant copyright laws. The information contained herein -# is confidential and proprietary to MediaTek Inc. and/or its licensors. -# Without the prior written permission of MediaTek inc. and/or its licensors, -# any reproduction, modification, use or disclosure of MediaTek Software, -# and information contained herein, in whole or in part, shall be strictly prohibited. -# -# MediaTek Inc. (C) 2011-2014. All rights reserved. -# -# BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES -# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") -# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON -# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. -# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE -# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR -# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH -# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES -# THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES -# CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK -# SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR -# STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND -# CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, -# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, -# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO -# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. -# -# The following software/firmware and/or related documentation ("MediaTek Software") -# have been modified by MediaTek Inc. All revisions are subject to any receiver's -# applicable license agreements with MediaTek Inc. - -ifeq ($(MTK_FM_SUPPORT),yes) -ifeq ($(MTK_FM_RX_SUPPORT),yes) - -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional -LOCAL_CERTIFICATE := platform - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_PACKAGE_NAME := FmRadio -LOCAL_JNI_SHARED_LIBRARIES := libfmjni - -LOCAL_PROGUARD_ENABLED := disabled -LOCAL_PRIVILEGED_MODULE := true - -LOCAL_JAVA_LIBRARIES += mediatek-framework - -ifeq ($(strip $(MTK_BSP_PACKAGE)),yes) - LOCAL_STATIC_JAVA_LIBRARIES := com.mediatek.fmradio.ext - LOCAL_SRC_FILES += bsp/com/mediatek/fmradio/ExtensionUtils.java -else - LOCAL_STATIC_JAVA_LIBRARIES := com.mediatek.fmradio.ext - LOCAL_SRC_FILES += turnkey/com/mediatek/fmradio/ExtensionUtils.java -endif - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) - -endif -endif diff --git a/MediaTek/FmRadio/AndroidManifest.xml b/MediaTek/FmRadio/AndroidManifest.xml deleted file mode 100755 index 8cc32cc..0000000 --- a/MediaTek/FmRadio/AndroidManifest.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.mediatek.fmradio" - android:versionCode="1" - android:versionName="1.0"> - - <uses-permission android:name="android.permission.ACCESS_FM_RADIO" /> - <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> - <uses-permission android:name="android.permission.WAKE_LOCK" /> - <uses-permission android:name="android.permission.READ_PHONE_STATE" /> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - <uses-permission android:name="android.permission.RECORD_AUDIO" /> - <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> - <uses-permission android:name="android.permission.BLUETOOTH" /> -<!-- Vanzo:libing on: Tue, 10 Feb 2015 16:24:03 +0800 - add for gesture ---> - <uses-permission android:name="android.permission.GET_TASKS" /> -<!-- End of Vanzo:libing --> - - <application android:hardwareAccelerated="true" - android:icon="@drawable/ic_launcher" - android:theme="@style/AppTheme" - android:label="@string/app_name" - android:supportsRtl="true"> - - <activity android:name=".FmRadioActivity" - android:clearTaskOnLaunch="true" - android:configChanges="orientation|mcc|mnc|screenSize" - android:label="@string/app_name" - android:launchMode="singleTask"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - - <activity android:name=".FmRadioFavorite" - android:configChanges="orientation|screenSize" - android:label="@string/favorite_manager" - android:windowSoftInputMode="stateAlwaysHidden"> - </activity> - - <activity - android:clearTaskOnLaunch="true" - android:configChanges="orientation|screenSize" - android:label="@string/app_name" - android:launchMode="singleTask" - android:name=".FmRadioEmActivity" > - <intent-filter > - <action android:name="com.mediatek.fmradio.FmRadioEmActivity" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - -<!-- Vanzo:yujianpeng on: Fri, 30 Jan 2015 14:34:43 +0800 - * vanzo factory mode porting ---> - <activity android:name=".TestFM" - android:screenOrientation="portrait"> - <intent-filter> - <action android:name="com.mediatek.FMRadio.test" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> -<!-- End of Vanzo:yujianpeng --> - <service android:name=".FmRadioService" - android:exported="false"> - <intent-filter> - <action android:name="com.mediatek.fmradio.IFmRadioService" /> - </intent-filter> - </service> - - <provider android:name=".FmRadioContentProvider" - android:authorities="com.mediatek.fmradio.FmRadioContentProvider"> - </provider> - - </application> - -</manifest> diff --git a/MediaTek/FmRadio/NOTICE b/MediaTek/FmRadio/NOTICE deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/FmRadio/NOTICE +++ /dev/null diff --git a/MediaTek/FmRadio/README b/MediaTek/FmRadio/README deleted file mode 100755 index 5ec36fe..0000000 --- a/MediaTek/FmRadio/README +++ /dev/null @@ -1,30 +0,0 @@ -APK of listening the FM radio programme, including listen a station, change station, -and record a station. - -This library is pre-built by MediaTek internal. - -WHAT IT DOES? -============= -FmRadio.apk listen the FM radio programme. -1. listen a FM radio station -2. change station -3. search stations -4. record a station -5. add station to favorite - -HOW IT WAS BUILT? -================== -It needs the following library from AOSP: -1. framework.jar - -and the following libs from MediaTek: -1. mediatek-framework.jar -2. com.mediatek.fmradio.ext.jar -3. libfmjni.so - -All source/dependency modules of this module are already put in -'vendor/mediatek/libs' folder. - -HOW TO USE IT? -============== -install FmRadio.apk in mediatek platform. diff --git a/MediaTek/FmRadio/bsp/com/mediatek/fmradio/ExtensionUtils.java b/MediaTek/FmRadio/bsp/com/mediatek/fmradio/ExtensionUtils.java deleted file mode 100755 index 962e387..0000000 --- a/MediaTek/FmRadio/bsp/com/mediatek/fmradio/ExtensionUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.Context; -import com.mediatek.fmradio.ext.IProjectStringExt; -import com.mediatek.fmradio.ext.DefaultProjectStringExt; - -public class ExtensionUtils { - public static IProjectStringExt getExtension(Context context) { - return new DefaultProjectStringExt(); - } - -} diff --git a/MediaTek/FmRadio/ext/Android.mk b/MediaTek/FmRadio/ext/Android.mk deleted file mode 100755 index d5eef9f..0000000 --- a/MediaTek/FmRadio/ext/Android.mk +++ /dev/null @@ -1,12 +0,0 @@ - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE := com.mediatek.fmradio.ext - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -include $(BUILD_STATIC_JAVA_LIBRARY) - - diff --git a/MediaTek/FmRadio/ext/NOTICE b/MediaTek/FmRadio/ext/NOTICE deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/FmRadio/ext/NOTICE +++ /dev/null diff --git a/MediaTek/FmRadio/ext/README b/MediaTek/FmRadio/ext/README deleted file mode 100755 index 163ce0f..0000000 --- a/MediaTek/FmRadio/ext/README +++ /dev/null @@ -1,25 +0,0 @@ -The FM radio plugin host side. - -This library is pre-built by MediaTek internal. - -WHAT IT DOES? -============= -The FM Radio plugin host is designed to change some strings -for vendor customing. It contains: -1. Plugin host API -2. A default implement - -HOW IT WAS BUILT? -================== -It needs the following library from AOSP: -No need. - -and the following libs from MediaTek: -No need. - -All source/dependency modules of this module are already put in -'vendor/mediatek/libs' folder. - -HOW TO USE IT? -============== -Install FmRadio.apk and plugin apk in mediatek platform. diff --git a/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/DefaultProjectStringExt.java b/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/DefaultProjectStringExt.java deleted file mode 100755 index 3a7dbf9..0000000 --- a/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/DefaultProjectStringExt.java +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.ext; - -import android.content.Context; -public class DefaultProjectStringExt implements IProjectStringExt { - - public String getProjectString(Context context, int normalResId, int cmccResId) { - return context.getString(normalResId); - } -} diff --git a/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/IProjectStringExt.java b/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/IProjectStringExt.java deleted file mode 100755 index cfcdee0..0000000 --- a/MediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/IProjectStringExt.java +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.ext; - -import android.content.Context; - -public interface IProjectStringExt { - - public String getProjectString(Context context, int normalResId, int cmccResId); -} diff --git a/MediaTek/FmRadio/res/drawable-hdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-hdpi/bg_rec_infobar.9.png Binary files differdeleted file mode 100755 index c38132d..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/bg_rec_infobar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png Binary files differdeleted file mode 100755 index 4985b08..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 24ef191..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index f786a6f..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index 942722e..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index fecb1af..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 2032636..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index 811f015..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 61a466e..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index d05cc32..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index a7e326a..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index ae7d400..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png Binary files differdeleted file mode 100755 index 02bf8e0..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png Binary files differdeleted file mode 100755 index af02bf8..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 46c1afe..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 8e5454f..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 6b3a5e4..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index 1e4601b..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_disabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_disabled.png Binary files differdeleted file mode 100755 index 068eecb..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_enabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_enabled.png Binary files differdeleted file mode 100755 index e5a34bf..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png Binary files differdeleted file mode 100755 index 75d6ac1..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png Binary files differdeleted file mode 100755 index e674d07..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png Binary files differdeleted file mode 100755 index 067397a..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png Binary files differdeleted file mode 100755 index 4ce7da3..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png Binary files differdeleted file mode 100755 index 3e104c0..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png Binary files differdeleted file mode 100755 index 3b102e5..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png Binary files differdeleted file mode 100755 index 2309234..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png Binary files differdeleted file mode 100755 index 9a69528..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png Binary files differdeleted file mode 100755 index f2b54b7..0000000 --- a/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 009b4ba..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index a66f36d..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index eeab430..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index 61cfb69..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 41941f7..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index b021ca4..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 73fecf2..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 498489f..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index c0de4ef..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index cf6dbcf..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png Binary files differdeleted file mode 100755 index 5c1b6f9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png Binary files differdeleted file mode 100755 index 21669ab..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index d25704f..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 84fad14..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 8e74448..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index c1137f9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_disabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_disabled.png Binary files differdeleted file mode 100755 index efbc115..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_enabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_enabled.png Binary files differdeleted file mode 100755 index 13e35a1..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png Binary files differdeleted file mode 100755 index c208f73..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png Binary files differdeleted file mode 100755 index 3f27dd0..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png Binary files differdeleted file mode 100755 index 17a20c2..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png Binary files differdeleted file mode 100755 index da098e8..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png Binary files differdeleted file mode 100755 index 2650185..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png Binary files differdeleted file mode 100755 index 01b9a95..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png Binary files differdeleted file mode 100755 index 20c55ad..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png Binary files differdeleted file mode 100755 index 672e050..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png Binary files differdeleted file mode 100755 index fc1da78..0000000 --- a/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 6b3ac01..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index c3c46be..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 0c67050..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index 4d68e66..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 6bf78a9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 0812c1b..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index ac7d6b0..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index c402fa1..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 1b4276d..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 0b787c1..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 6ecb091..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index 6cb1a31..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png Binary files differdeleted file mode 100755 index 44b5107..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 65d407e..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index 880b55f..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index d8cfbd3..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index 41197c0..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png Binary files differdeleted file mode 100755 index b0fc9e1..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index 47e9a70..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index acd9c45..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 5318e4b..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index abe6eb2..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 14ccbeb..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index 1a4aa77..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png Binary files differdeleted file mode 100755 index f4a63ee..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index bcd0611..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index f75b2de..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 8c7cc8b..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index fb5875d..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index b88d8a9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 9813971..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index 162164c..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 1b95d49..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 7c6e06a..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index e9ca061..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index d1447fb..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index 3d0dfef..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png Binary files differdeleted file mode 100755 index 28e09d3..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 9a44bf3..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index dbcb0cf..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 877bb86..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index b53e3ad..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index a6313e2..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 5064901..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index a0d9bd9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 5aa0d07..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 2933bd4..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index b042212..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 27593fc..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index cf165ec..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png Binary files differdeleted file mode 100755 index 70791f5..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 9a44bf3..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index dbcb0cf..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 877bb86..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index b53e3ad..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index a6313e2..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 5064901..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index a0d9bd9..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 5aa0d07..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 2933bd4..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index b042212..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 27593fc..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index cf165ec..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png Binary files differdeleted file mode 100755 index 70791f5..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-ldrtl/anim.xml b/MediaTek/FmRadio/res/drawable-ldrtl/anim.xml deleted file mode 100755 index ea41e38..0000000 --- a/MediaTek/FmRadio/res/drawable-ldrtl/anim.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<set xmlns:android="http://schemas.android.com/apk/res/android"> -<translate - android:repeatCount="1000" - android:fromXDelta="180%p" - android:toXDelta="-100%p" - android:duration="500" - /> -</set>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/drawable-mdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-mdpi/bg_rec_infobar.9.png Binary files differdeleted file mode 100755 index c38132d..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/bg_rec_infobar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png Binary files differdeleted file mode 100755 index 4985b08..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 0111567..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index de3e323..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index 05563bf..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index c0c6b49..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 772530f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index f362f89..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 5eaf0ba..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 8fe43b4..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index 01fbc5a..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 997485f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png Binary files differdeleted file mode 100755 index 80e2504..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png Binary files differdeleted file mode 100755 index 3a7bab7..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 1fe787f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 71803b8..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index 4e1fe7f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index 48ee750..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_disabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_disabled.png Binary files differdeleted file mode 100755 index b54058f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_enabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_enabled.png Binary files differdeleted file mode 100755 index 08f8388..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png Binary files differdeleted file mode 100755 index 0b464d2..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png Binary files differdeleted file mode 100755 index 026b9d1..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png Binary files differdeleted file mode 100755 index ff53bb9..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png Binary files differdeleted file mode 100755 index 1bbfb9e..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png Binary files differdeleted file mode 100755 index 134807f..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png Binary files differdeleted file mode 100755 index f9b804a..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png Binary files differdeleted file mode 100755 index 116af88..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png Binary files differdeleted file mode 100755 index 2f38c87..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png Binary files differdeleted file mode 100755 index d1cb30b..0000000 --- a/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index 05563bf..0000000 --- a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index c0c6b49..0000000 --- a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png Binary files differdeleted file mode 100755 index c38132d..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png Binary files differdeleted file mode 100755 index 4985b08..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 4dd4042..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index 06fe97c..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index c591cae..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index 8f14270..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 45ce276..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index 16b948e..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 3028829..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 8ce3d27..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index 07f4c44..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 9929646..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png Binary files differdeleted file mode 100755 index 3902d93..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png Binary files differdeleted file mode 100755 index 9494074..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 0b38c7a..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 7743e11..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index dead2bd..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index bb9582a..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_disabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_disabled.png Binary files differdeleted file mode 100755 index 4bef4e8..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_enabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_enabled.png Binary files differdeleted file mode 100755 index d2c6c90..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png Binary files differdeleted file mode 100755 index 96590b2..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png Binary files differdeleted file mode 100755 index 8c97fcd..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png Binary files differdeleted file mode 100755 index e6c0f6b..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png Binary files differdeleted file mode 100755 index 4fdda08..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png Binary files differdeleted file mode 100755 index 68135bc..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png Binary files differdeleted file mode 100755 index bc88941..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png Binary files differdeleted file mode 100755 index 420dc9c..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png Binary files differdeleted file mode 100755 index a8d9f5d..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png Binary files differdeleted file mode 100755 index c11060e..0000000 --- a/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png Binary files differdeleted file mode 100755 index c38132d..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png Binary files differdeleted file mode 100755 index 4985b08..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png Binary files differdeleted file mode 100755 index 4dd4042..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png Binary files differdeleted file mode 100755 index 06fe97c..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png Binary files differdeleted file mode 100755 index c591cae..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png Binary files differdeleted file mode 100755 index 8f14270..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png Binary files differdeleted file mode 100755 index 45ce276..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png Binary files differdeleted file mode 100755 index 16b948e..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png Binary files differdeleted file mode 100755 index 3028829..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png Binary files differdeleted file mode 100755 index 8ce3d27..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png Binary files differdeleted file mode 100755 index 07f4c44..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png Binary files differdeleted file mode 100755 index 9929646..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png Binary files differdeleted file mode 100755 index 3902d93..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png Binary files differdeleted file mode 100755 index 9494074..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png Binary files differdeleted file mode 100755 index 0b38c7a..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png Binary files differdeleted file mode 100755 index 7743e11..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_disabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_disabled.png Binary files differdeleted file mode 100755 index dead2bd..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_enabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_enabled.png Binary files differdeleted file mode 100755 index bb9582a..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_disabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_disabled.png Binary files differdeleted file mode 100755 index 4bef4e8..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_enabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_enabled.png Binary files differdeleted file mode 100755 index d2c6c90..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png Binary files differdeleted file mode 100755 index 96590b2..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png Binary files differdeleted file mode 100755 index 8c97fcd..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png Binary files differdeleted file mode 100755 index e6c0f6b..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png Binary files differdeleted file mode 100755 index 4fdda08..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png Binary files differdeleted file mode 100755 index 68135bc..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png Binary files differdeleted file mode 100755 index bc88941..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png Binary files differdeleted file mode 100755 index 420dc9c..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png Binary files differdeleted file mode 100755 index 1ba5028..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png Binary files differdeleted file mode 100755 index 964da33..0000000 --- a/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png +++ /dev/null diff --git a/MediaTek/FmRadio/res/drawable/anim.xml b/MediaTek/FmRadio/res/drawable/anim.xml deleted file mode 100755 index dcd3738..0000000 --- a/MediaTek/FmRadio/res/drawable/anim.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<set xmlns:android="http://schemas.android.com/apk/res/android"> -<translate - android:repeatCount="1000" - android:fromXDelta="-80%p" - android:toXDelta="100%p" - android:duration="500" - /> -</set>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_decrease_frequency.xml b/MediaTek/FmRadio/res/drawable/btn_fm_decrease_frequency.xml deleted file mode 100755 index fa6f858..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_decrease_frequency.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_decrease" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_decrease_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_favorite_off_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_favorite_off_selector.xml deleted file mode 100755 index 0d526d4..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_favorite_off_selector.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/btn_fm_favorite_off" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_favorite_on_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_favorite_on_selector.xml deleted file mode 100755 index 08e2c5c..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_favorite_on_selector.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/btn_fm_favorite_on" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_increase_frequency.xml b/MediaTek/FmRadio/res/drawable/btn_fm_increase_frequency.xml deleted file mode 100755 index d31c0cc..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_increase_frequency.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_increase" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_increase_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_list_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_list_selector.xml deleted file mode 100755 index 8fbcb87..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_list_selector.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_list" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_list_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_next.xml b/MediaTek/FmRadio/res/drawable/btn_fm_next.xml deleted file mode 100755 index 6ecc323..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_next.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_nextstation" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_nextstation_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_overflow_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_overflow_selector.xml deleted file mode 100755 index a3c6410..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_overflow_selector.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_overflow" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_overflow_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_powerdown_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_powerdown_selector.xml deleted file mode 100755 index ccce13a..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_powerdown_selector.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_stop" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_stop_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_powerup_selector.xml b/MediaTek/FmRadio/res/drawable/btn_fm_powerup_selector.xml deleted file mode 100755 index a81c592..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_powerup_selector.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_start" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_start_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_previous.xml b/MediaTek/FmRadio/res/drawable/btn_fm_previous.xml deleted file mode 100755 index dc7c9b5..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_previous.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_prevstation" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_prevstation_disable" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_rec_play.xml b/MediaTek/FmRadio/res/drawable/btn_fm_rec_play.xml deleted file mode 100755 index 9bf10d8..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_rec_play.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_rec_playback_enabled" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_rec_playback_disabled" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_rec_stop.xml b/MediaTek/FmRadio/res/drawable/btn_fm_rec_stop.xml deleted file mode 100755 index c954bee..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_rec_stop.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_rec_stop_enabled" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_rec_stop_disabled" /> -</selector> diff --git a/MediaTek/FmRadio/res/drawable/btn_fm_record.xml b/MediaTek/FmRadio/res/drawable/btn_fm_record.xml deleted file mode 100755 index ae54431..0000000 --- a/MediaTek/FmRadio/res/drawable/btn_fm_record.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" - android:drawable="@drawable/btn_fm_record_enabled" /> - <item android:state_enabled="false" - android:drawable="@drawable/btn_fm_record_disabled" /> -</selector> diff --git a/MediaTek/FmRadio/res/layout-ldrtl/addstation.xml b/MediaTek/FmRadio/res/layout-ldrtl/addstation.xml deleted file mode 100755 index 78032de..0000000 --- a/MediaTek/FmRadio/res/layout-ldrtl/addstation.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:id="@+id/layout_add_station" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textDirection="locale"> -<TextView - android:id="@+id/dlg_add_station_name" - android:text="@string/dlg_addedit_station_name" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:gravity="center_vertical"/> -<EditText - android:layout_toEndOf="@+id/dlg_add_station_name" - android:layout_height="50dip" - android:id="@+id/dlg_add_station_name_text" - android:layout_width="fill_parent" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:layout_marginEnd="10dip" - android:maxLength="15" - android:inputType="textPersonName" - android:gravity="center_vertical" - android:textDirection="locale"></EditText> -<TextView - android:id="@+id/dlg_add_station_freq" - android:text="@string/dlg_addedit_station_freq" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:layout_below="@+id/dlg_add_station_name" - android:gravity="center_vertical"/> -<TextView - android:id="@+id/dlg_add_station_freq_text" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:layout_below="@+id/dlg_add_station_name" - android:layout_toEndOf="@+id/dlg_add_station_freq" - android:gravity="center_vertical"/> -</RelativeLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout-ldrtl/editstation.xml b/MediaTek/FmRadio/res/layout-ldrtl/editstation.xml deleted file mode 100755 index 3ed5acb..0000000 --- a/MediaTek/FmRadio/res/layout-ldrtl/editstation.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:id="@+id/layout_edit_station" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textDirection="locale"> -<TextView - android:id="@+id/dlg_edit_station_name" - android:text="@string/dlg_addedit_station_name" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:gravity="center_vertical"/> -<EditText - android:id="@+id/dlg_edit_station_name_text" - android:layout_width="match_parent" - android:layout_height="50dip" - android:layout_marginStart="10dip" - android:layout_marginEnd="10dip" - android:layout_toEndOf="@+id/dlg_edit_station_name" - android:gravity="center_vertical" - android:inputType="textPersonName" - android:maxLength="15" - android:singleLine="true" - android:textStyle="bold" - android:textDirection="locale"> -</EditText> -<TextView - android:id="@+id/dlg_edit_station_freq" - android:text="@string/dlg_addedit_station_freq" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:layout_below="@+id/dlg_edit_station_name" - android:gravity="center_vertical"/> -<EditText - android:id="@+id/dlg_edit_station_freq_text" - android:layout_width="match_parent" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginStart="10dip" - android:inputType="numberDecimal" - android:layout_below="@+id/dlg_edit_station_name" - android:layout_toEndOf="@+id/dlg_edit_station_freq" - android:gravity="center_vertical" - android:textDirection="locale"/> -</RelativeLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout-ldrtl/fm_recorder_dialog.xml b/MediaTek/FmRadio/res/layout-ldrtl/fm_recorder_dialog.xml deleted file mode 100755 index 35f92f2..0000000 --- a/MediaTek/FmRadio/res/layout-ldrtl/fm_recorder_dialog.xml +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/fm_recording_layout" - android:orientation="vertical" - android:layout_width="286dp" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/fm_recording_title_bar" - style="?android:attr/windowTitleStyle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="53dp" - android:padding="10dp" - android:singleLine="true" - android:gravity="right" - android:text="@string/dlg_save_recording_title"/> - <View - android:id="@+id/divider" - android:layout_width="match_parent" - android:layout_height="2dp" - android:background="#31b6e7" /> - <LinearLayout - android:id="@+id/contentPanel" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center"> - <TextView - android:id="@+id/save_recording_storage_warning" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - android:paddingLeft="12dip" - android:paddingRight="12dip" - android:text="@string/dlg_save_recording_storage_warning" - style="?android:attr/textAppearanceMedium"/> - </LinearLayout> - <LinearLayout - android:id="@+id/contentPanel" - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="68dp" - android:gravity="center"> - <EditText - android:id="@+id/fm_recording_text" - android:layout_width="265dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:maxLength="80" - android:textDirection="locale"/> - </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="#424542" /> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <Button - android:id="@+id/fm_recording_btn_discard" - style="?android:attr/buttonBarButtonStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/btn_discard_recording"/> - - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#424542" /> - <Button - android:id="@+id/fm_recording_btn_save" - style="?android:attr/buttonBarButtonStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/btn_save_recording"/> - - </LinearLayout> -</LinearLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout-ldrtl/main.xml b/MediaTek/FmRadio/res/layout-ldrtl/main.xml deleted file mode 100755 index e2ea4dc..0000000 --- a/MediaTek/FmRadio/res/layout-ldrtl/main.xml +++ /dev/null @@ -1,243 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/main_view" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" > - <!-- middle part starts --> - - <RelativeLayout - android:id="@+id/rl_middlepart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_above="@+id/bottombar_parent"> - - <TextView - android:id="@+id/station_name" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_above="@+id/station_value" - android:gravity="center" - android:singleLine="true" - android:textSize="20dip" - android:textStyle="bold" > - </TextView> - - <TextView - android:id="@+id/text_fm" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_below="@+id/station_name" - android:layout_toStartOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="20dip" - android:textStyle="bold" > - </TextView> - - <TextView - android:id="@+id/station_value" - android:layout_width="160dip" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center_horizontal" - android:textSize="60dip" - android:textStyle="bold" > - </TextView> - - <TextView - android:id="@+id/text_mhz" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_alignBaseline="@+id/station_value" - android:layout_below="@+id/station_name" - android:layout_toEndOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="20dip" - android:textStyle="bold" > - </TextView> - - <TextView - android:id="@+id/text_rds" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/station_value" - android:ellipsize="marquee" - android:gravity="center_horizontal" - android:marqueeRepeatLimit="marquee_forever" - android:singleLine="true" - android:textColor="#BBBBBB" - android:textSize="20dip" - android:textStyle="bold" > - </TextView> - - <ImageButton - android:id="@+id/button_add_to_favorite" - android:layout_marginStart="15dip" - android:layout_width="50dip" - android:layout_height="42dip" - android:layout_alignTop="@+id/text_mhz" - android:layout_toEndOf="@+id/station_value" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_favorite_off" - android:enabled="false"> - </ImageButton> - </RelativeLayout> - - <!-- middle part ends --> - - <LinearLayout - android:id="@+id/bottombar_parent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" > - - <LinearLayout - android:id="@+id/bottom_bar" - android:layout_width="fill_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:splitMotionEvents="false" - android:weightSum="4" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/button_prevstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="?android:attr/buttonBarButtonStyle" - android:layout_weight="1" - android:adjustViewBounds="true" - android:src="@drawable/btn_fm_previous" - android:enabled="false"/> - - <ImageButton - android:id="@+id/button_decrease" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_decrease_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_increase" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_increase_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_nextstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_next" - android:enabled="false" /> - </LinearLayout> - - <LinearLayout - android:id="@+id/bottom_bar_recorder" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:visibility="gone" - android:splitMotionEvents="false" - android:weightSum="3" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/btn_record" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_record" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_stop" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_stop" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_playback" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_play" - android:enabled="false"/> - </LinearLayout> - </LinearLayout> - - <RelativeLayout - android:id="@+id/rl_recinfo" - android:layout_width="match_parent" - android:layout_height="48dip" - android:layout_above="@id/bottombar_parent" - android:background="@drawable/bg_rec_infobar" - android:gravity="right" - android:paddingStart="5dip" - android:paddingEnd="5dip" - android:visibility="gone" > - - <TextView - android:id="@+id/txtRecInfoLeft" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentStart="true" - android:layout_toStartOf="@+id/txtRecInfoRight" - android:ellipsize="marquee" - android:singleLine="true" - android:textColor="#ffffff" - android:textSize="20sp" - android:gravity="right" - android:textStyle="normal" > - </TextView> - - <TextView - android:id="@+id/txtRecInfoRight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentEnd="true" - android:layout_marginStart="20dip" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal"> - </TextView> - </RelativeLayout> - - <LinearLayout - android:id="@+id/anim_background" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_above="@id/rl_recinfo" > - - <ImageView - android:id="@+id/iv_anim" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@drawable/fm_anim" - android:visibility="invisible" /> - </LinearLayout> - -</RelativeLayout> diff --git a/MediaTek/FmRadio/res/layout-sw1024dp-land/main.xml b/MediaTek/FmRadio/res/layout-sw1024dp-land/main.xml deleted file mode 100755 index b0c2449..0000000 --- a/MediaTek/FmRadio/res/layout-sw1024dp-land/main.xml +++ /dev/null @@ -1,270 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/main_view" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <!-- middle part starts --> - - <RelativeLayout - android:id="@+id/rl_middlepart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_above="@+id/bottombar_parent"> - - <TextView - android:id="@+id/station_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@+id/station_value" - android:gravity="center" - android:singleLine="true" - android:textSize="20dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_fm" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_below="@+id/station_name" - android:layout_toLeftOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="30dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/station_value" - android:layout_width="240dip" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center_horizontal" - android:textSize="80dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_mhz" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_alignBaseline="@+id/station_value" - android:layout_below="@+id/station_name" - android:layout_toRightOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="30dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_rds" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/station_value" - android:ellipsize="marquee" - android:gravity="center_horizontal" - android:marqueeRepeatLimit="marquee_forever" - android:singleLine="true" - android:textColor="#BBBBBB" - android:textSize="20dip" - android:textStyle="bold" /> - - <ImageButton - android:id="@+id/button_add_to_favorite" - android:layout_marginLeft="15dip" - android:layout_width="50dip" - android:layout_height="42dip" - android:layout_alignTop="@+id/text_mhz" - android:layout_toRightOf="@+id/station_value" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_favorite_off" - android:enabled="false" /> - </RelativeLayout> - - <!-- middle part ends --> - - <LinearLayout - android:id="@+id/bottombar_parent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" > - - <LinearLayout - android:id="@+id/bottom_bar" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:splitMotionEvents="false" - android:weightSum="4" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/button_prevstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="?android:attr/buttonBarButtonStyle" - android:layout_weight="1" - android:adjustViewBounds="true" - android:src="@drawable/btn_fm_previous" - android:enabled="false"/> - - <ImageButton - android:id="@+id/button_decrease" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_decrease_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_increase" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_increase_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_nextstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_next" - android:enabled="false" /> - </LinearLayout> - - <LinearLayout - android:id="@+id/bottom_bar_recorder" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:visibility="gone" - android:splitMotionEvents="false" - android:weightSum="3" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/btn_record" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_record" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_stop" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_stop" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_playback" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_play" - android:enabled="false"/> - </LinearLayout> - </LinearLayout> - - <RelativeLayout - android:id="@+id/rl_recinfo" - android:layout_width="match_parent" - android:layout_height="48dip" - android:layout_above="@id/bottombar_parent" - android:background="@drawable/bg_rec_infobar" - android:gravity="center_vertical" - android:paddingLeft="5dip" - android:paddingRight="5dip" - android:visibility="gone" > - - <TextView - android:id="@+id/txtRecInfoLeft" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_toLeftOf="@+id/txtRecInfoRight" - android:ellipsize="marquee" - android:singleLine="true" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - - <TextView - android:id="@+id/txtRecInfoRight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_marginLeft="20dip" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - </RelativeLayout> - - <LinearLayout - android:id="@+id/anim_background" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@id/rl_recinfo" > - - <ImageView - android:id="@+id/iv_anim" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@drawable/fm_anim" - android:visibility="invisible" /> - </LinearLayout> - -</RelativeLayout> diff --git a/MediaTek/FmRadio/res/layout-sw1024dp-port/main.xml b/MediaTek/FmRadio/res/layout-sw1024dp-port/main.xml deleted file mode 100755 index b0c2449..0000000 --- a/MediaTek/FmRadio/res/layout-sw1024dp-port/main.xml +++ /dev/null @@ -1,270 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/main_view" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <!-- middle part starts --> - - <RelativeLayout - android:id="@+id/rl_middlepart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_above="@+id/bottombar_parent"> - - <TextView - android:id="@+id/station_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@+id/station_value" - android:gravity="center" - android:singleLine="true" - android:textSize="20dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_fm" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_below="@+id/station_name" - android:layout_toLeftOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="30dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/station_value" - android:layout_width="240dip" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center_horizontal" - android:textSize="80dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_mhz" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_alignBaseline="@+id/station_value" - android:layout_below="@+id/station_name" - android:layout_toRightOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="30dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_rds" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/station_value" - android:ellipsize="marquee" - android:gravity="center_horizontal" - android:marqueeRepeatLimit="marquee_forever" - android:singleLine="true" - android:textColor="#BBBBBB" - android:textSize="20dip" - android:textStyle="bold" /> - - <ImageButton - android:id="@+id/button_add_to_favorite" - android:layout_marginLeft="15dip" - android:layout_width="50dip" - android:layout_height="42dip" - android:layout_alignTop="@+id/text_mhz" - android:layout_toRightOf="@+id/station_value" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_favorite_off" - android:enabled="false" /> - </RelativeLayout> - - <!-- middle part ends --> - - <LinearLayout - android:id="@+id/bottombar_parent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" > - - <LinearLayout - android:id="@+id/bottom_bar" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:splitMotionEvents="false" - android:weightSum="4" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/button_prevstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="?android:attr/buttonBarButtonStyle" - android:layout_weight="1" - android:adjustViewBounds="true" - android:src="@drawable/btn_fm_previous" - android:enabled="false"/> - - <ImageButton - android:id="@+id/button_decrease" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_decrease_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_increase" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_increase_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_nextstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_next" - android:enabled="false" /> - </LinearLayout> - - <LinearLayout - android:id="@+id/bottom_bar_recorder" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:visibility="gone" - android:splitMotionEvents="false" - android:weightSum="3" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/btn_record" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_record" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_stop" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_stop" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_playback" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_play" - android:enabled="false"/> - </LinearLayout> - </LinearLayout> - - <RelativeLayout - android:id="@+id/rl_recinfo" - android:layout_width="match_parent" - android:layout_height="48dip" - android:layout_above="@id/bottombar_parent" - android:background="@drawable/bg_rec_infobar" - android:gravity="center_vertical" - android:paddingLeft="5dip" - android:paddingRight="5dip" - android:visibility="gone" > - - <TextView - android:id="@+id/txtRecInfoLeft" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_toLeftOf="@+id/txtRecInfoRight" - android:ellipsize="marquee" - android:singleLine="true" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - - <TextView - android:id="@+id/txtRecInfoRight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_marginLeft="20dip" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - </RelativeLayout> - - <LinearLayout - android:id="@+id/anim_background" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@id/rl_recinfo" > - - <ImageView - android:id="@+id/iv_anim" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@drawable/fm_anim" - android:visibility="invisible" /> - </LinearLayout> - -</RelativeLayout> diff --git a/MediaTek/FmRadio/res/layout/addstation.xml b/MediaTek/FmRadio/res/layout/addstation.xml deleted file mode 100755 index c895051..0000000 --- a/MediaTek/FmRadio/res/layout/addstation.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/layout_add_station" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/dlg_add_station_name" - android:text="@string/dlg_addedit_station_name" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:gravity="center_vertical"/> - <EditText - android:layout_toRightOf="@+id/dlg_add_station_name" - android:layout_height="50dip" - android:id="@+id/dlg_add_station_name_text" - android:layout_width="match_parent" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:layout_marginRight="10dip" - android:maxLength="15" - android:inputType="textPersonName" - android:gravity="center_vertical"/> - <TextView - android:id="@+id/dlg_add_station_freq" - android:text="@string/dlg_addedit_station_freq" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:layout_below="@+id/dlg_add_station_name" - android:gravity="center_vertical"/> - <TextView - android:id="@+id/dlg_add_station_freq_text" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:layout_below="@+id/dlg_add_station_name" - android:layout_toRightOf="@+id/dlg_add_station_freq" - android:gravity="center_vertical"/> -</RelativeLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout/editstation.xml b/MediaTek/FmRadio/res/layout/editstation.xml deleted file mode 100755 index a08d798..0000000 --- a/MediaTek/FmRadio/res/layout/editstation.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/layout_edit_station" - android:layout_width="wrap_content" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/dlg_edit_station_name" - android:text="@string/dlg_addedit_station_name" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:gravity="center_vertical"/> - <EditText - android:id="@+id/dlg_edit_station_name_text" - android:layout_width="match_parent" - android:layout_height="50dip" - android:layout_marginLeft="10dip" - android:layout_marginRight="10dip" - android:layout_toRightOf="@+id/dlg_edit_station_name" - android:gravity="center_vertical" - android:inputType="textPersonName" - android:maxLength="15" - android:singleLine="true" - android:textStyle="bold" /> - <TextView - android:id="@+id/dlg_edit_station_freq" - android:text="@string/dlg_addedit_station_freq" - android:layout_width="wrap_content" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:layout_below="@+id/dlg_edit_station_name" - android:gravity="center_vertical"/> - <EditText - android:id="@+id/dlg_edit_station_freq_text" - android:layout_width="match_parent" - android:layout_height="50dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:inputType="numberDecimal" - android:layout_below="@+id/dlg_edit_station_name" - android:layout_toRightOf="@+id/dlg_edit_station_freq" - android:gravity="center_vertical"/> -</RelativeLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout/favorite.xml b/MediaTek/FmRadio/res/layout/favorite.xml deleted file mode 100755 index e6a0f48..0000000 --- a/MediaTek/FmRadio/res/layout/favorite.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/favorite_view" - android:layout_width="match_parent" - android:layout_height="match_parent" > - - <ListView - android:id="@+id/station_list" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - - <TextView - android:id="@+id/empty" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="@string/empty_list" - android:visibility="gone" - android:gravity="center" - android:textSize="20sp"/> -</RelativeLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout/fm_recorder_dialog.xml b/MediaTek/FmRadio/res/layout/fm_recorder_dialog.xml deleted file mode 100755 index 6b083a0..0000000 --- a/MediaTek/FmRadio/res/layout/fm_recorder_dialog.xml +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/fm_recording_layout" - android:orientation="vertical" - android:layout_width="286dp" - android:layout_height="wrap_content"> - <TextView - android:id="@+id/fm_recording_title_bar" - style="?android:attr/windowTitleStyle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="53dp" - android:padding="10dp" - android:singleLine="true" - android:gravity="center|left" - android:text="@string/dlg_save_recording_title"/> - <View - android:id="@+id/divider" - android:layout_width="match_parent" - android:layout_height="2dp" - android:background="#31b6e7" /> - <LinearLayout - android:id="@+id/contentPanel" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center"> - <TextView - android:id="@+id/save_recording_storage_warning" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - android:paddingLeft="12dip" - android:paddingRight="12dip" - android:text="@string/dlg_save_recording_storage_warning" - style="?android:attr/textAppearanceMedium"/> - </LinearLayout> - <LinearLayout - android:id="@+id/contentPanel" - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="68dp" - android:gravity="center"> - <EditText - android:id="@+id/fm_recording_text" - android:layout_width="265dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:maxLength="80"/> - </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="#424542" /> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <Button - android:id="@+id/fm_recording_btn_discard" - style="?android:attr/buttonBarButtonStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/btn_discard_recording"/> - - <View - android:layout_width="1dp" - android:layout_height="match_parent" - android:background="#424542" /> - <Button - android:id="@+id/fm_recording_btn_save" - style="?android:attr/buttonBarButtonStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/btn_save_recording"/> - - </LinearLayout> -</LinearLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout/fm_rx_em.xml b/MediaTek/FmRadio/res/layout/fm_rx_em.xml deleted file mode 100755 index 4a4da7c..0000000 --- a/MediaTek/FmRadio/res/layout/fm_rx_em.xml +++ /dev/null @@ -1,789 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:custom="http://FMTransmitter.mediatek.com/custom" - android:layout_width="fill_parent" - android:layout_height="fill_parent" > - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" > - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:id="@+id/FMR_Freq_text" - android:layout_width="110dip" - android:layout_height="wrap_content" - android:layout_marginLeft="5dip" - android:layout_marginTop="6dip" - android:text="@string/FMR_Freq_text" /> - - <EditText - android:id="@+id/FMR_Freq_edit" - android:layout_width="96dip" - android:layout_height="48dip" - android:layout_centerHorizontal="true" - android:layout_marginTop="6dip" - android:maxLength="10" - android:singleLine="true" /> - - <Button - android:id="@+id/FMR_Freq_tune" - android:layout_width="84dip" - android:layout_height="48dip" - android:layout_marginTop="6dip" - android:text="@string/FMR_Freq_tune" /> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="10dip" > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Antenna_text" > - </TextView> - - <RadioGroup - android:id="@+id/FMR_Antenna_type" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="30dip" - android:orientation="horizontal" > - - <RadioButton - android:id="@+id/FMR_Antenna_short" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/FMR_Antenna_short" > - </RadioButton> - - <RadioButton - android:id="@+id/FMR_Antenna_long" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="30dip" - android:text="@string/FMR_Antenna_long" > - </RadioButton> - </RadioGroup> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="10dip" > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Force_Stereomono_text" > - </TextView> - - <RadioGroup - android:id="@+id/FMR_Stereomono_type" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="30dip" - android:orientation="horizontal" > - - <RadioButton - android:id="@+id/FMR_Stereomono_stereo" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/FMR_Stereomono_stereo" > - </RadioButton> - - <RadioButton - android:id="@+id/FMR_Stereomono_mono" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="30dip" - android:text="@string/FMR_Stereomono_mono" > - </RadioButton> - </RadioGroup> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:background="#001515" - android:orientation="vertical" - android:padding="10dip" > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_text" > - </TextView> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_Stereomono_text" > - </TextView> - - <TextView - android:id="@+id/FMR_Status_Stereomono" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_Stereomono" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_RSSI_text" > - </TextView> - - <TextView - android:id="@+id/FMR_Status_RSSI" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_RSSI" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_Caparray_text" > - </TextView> - - <TextView - android:id="@+id/FMR_Status_Caparray" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Status_Caparray" > - </TextView> - </LinearLayout> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:background="#151500" - android:orientation="vertical" - android:padding="10dip" > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_text" > - </TextView> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_Ratio_text" > - </TextView> - - <TextView - android:id="@+id/FMR_RDS_Ratio" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_Ratio" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_PS_text" > - </TextView> - - <TextView - android:id="@+id/FMR_RDS_PS" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_PS" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_RT_text" > - </TextView> - - <TextView - android:id="@+id/FMR_RDS_RT" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_RDS_RT" > - </TextView> - </LinearLayout> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:background="#151500" - android:orientation="vertical" - android:padding="10dip" > - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Hardware_version" > - </TextView> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_Chip_ID_text" > - </TextView> - - <TextView - android:id="@+id/FMR_Chip_ID" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Chip_ID" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_ECO_Version_text" > - </TextView> - - <TextView - android:id="@+id/FMR_ECO_Version" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_ECO_Version" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_Patch_Version_text" > - </TextView> - - <TextView - android:id="@+id/FMR_Patch_Version" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_Patch_Version" > - </TextView> - </LinearLayout> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_DSP_Version_text" > - </TextView> - - <TextView - android:id="@+id/FMR_DSP_Version" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_DSP_Version" > - </TextView> - </LinearLayout> - </LinearLayout> - <!-- FM EM new feature --> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="10dip" > - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_RSSI_THRESHOLD_text" > - </TextView> - - <EditText - android:id="@+id/FMR_EM_RSSI_THRESHOLD_edit" - android:layout_width="120dip" - android:layout_height="wrap_content" - android:maxLength="10" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - - <Button - android:id="@+id/FMR_EM_RSSI_THRESHOLD_OK" - android:layout_width="60dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_OK_TEXT" /> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_MUTE_GAIN_text" > - </TextView> - - <EditText - android:id="@+id/FMR_EM_MUTE_GAIN_edit" - android:layout_width="120dip" - android:layout_height="wrap_content" - android:maxLength="10" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - - <Button - android:id="@+id/FMR_EM_MUTE_GAIN_OK" - android:layout_width="60dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_OK_TEXT" /> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - - <TextView - android:layout_width="120dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_DESENSE_RSSI_text" > - </TextView> - - <EditText - android:id="@+id/FMR_EM_DESENSE_RSSI_edit" - android:layout_width="120dip" - android:layout_height="wrap_content" - android:maxLength="10" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - - <Button - android:id="@+id/FMR_EM_DESENSE_RSSI_OK" - android:layout_width="60dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_OK_TEXT" /> - </LinearLayout> - - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical" > - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginLeft="120dip" - android:text="@string/FMR_EM_CMD_title" > - </TextView> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" > - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit0" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit1" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit2" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit3" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit4" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit5" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit6" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit7" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit8" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit9" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit10" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit11" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit12" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit13" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit14" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit15" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit16" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit17" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit18" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - <TextView - android:layout_width="17dip" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <EditText - android:id="@+id/FMR_EM_CMD_edit19" - android:layout_width="65dip" - android:layout_height="wrap_content" - android:maxLength="4" - android:text="@string/FMR_EM_DEFAULT_VALUE" > - </EditText> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - <Button - android:id="@+id/FMR_EM_CMD_OK" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_OK_TEXT" /> - </LinearLayout> - - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:padding="10dip" > - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginLeft="80dip" - android:text="@string/FMR_EM_CMD_return" > - </TextView> - </LinearLayout> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="10dip" > - <TextView - android:id="@+id/FMR_EM_CMD_RETURN0" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <TextView - android:id="@+id/FMR_EM_CMD_RETURN1" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <TextView - android:id="@+id/FMR_EM_CMD_RETURN2" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <TextView - android:id="@+id/FMR_EM_CMD_RETURN3" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - <TextView - android:id="@+id/FMR_EM_CMD_RETURN4" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="@string/FMR_EM_CMD_text" > - </TextView> - </LinearLayout> - </LinearLayout> - -</ScrollView> diff --git a/MediaTek/FmRadio/res/layout/main.xml b/MediaTek/FmRadio/res/layout/main.xml deleted file mode 100755 index dc2b35f..0000000 --- a/MediaTek/FmRadio/res/layout/main.xml +++ /dev/null @@ -1,270 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/main_view" - android:layout_width="match_parent" - android:layout_height="match_parent"> - <!-- middle part starts --> - - <RelativeLayout - android:id="@+id/rl_middlepart" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_above="@+id/bottombar_parent"> - - <TextView - android:id="@+id/station_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@+id/station_value" - android:gravity="center" - android:singleLine="true" - android:textSize="20dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_fm" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_below="@+id/station_name" - android:layout_toLeftOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="20dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/station_value" - android:layout_width="160dip" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center_horizontal" - android:textSize="60dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_mhz" - android:layout_width="80dip" - android:layout_height="wrap_content" - android:layout_alignBaseline="@+id/station_value" - android:layout_below="@+id/station_name" - android:layout_toRightOf="@+id/station_value" - android:gravity="center_horizontal" - android:textSize="20dip" - android:textStyle="bold" /> - - <TextView - android:id="@+id/text_rds" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/station_value" - android:ellipsize="marquee" - android:gravity="center_horizontal" - android:marqueeRepeatLimit="marquee_forever" - android:singleLine="true" - android:textColor="#BBBBBB" - android:textSize="20dip" - android:textStyle="bold" /> - - <ImageButton - android:id="@+id/button_add_to_favorite" - android:layout_marginLeft="15dip" - android:layout_width="50dip" - android:layout_height="42dip" - android:layout_alignTop="@+id/text_mhz" - android:layout_toRightOf="@+id/station_value" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_favorite_off" - android:enabled="false" /> - </RelativeLayout> - - <!-- middle part ends --> - - <LinearLayout - android:id="@+id/bottombar_parent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" > - - <LinearLayout - android:id="@+id/bottom_bar" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:splitMotionEvents="false" - android:weightSum="4" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/button_prevstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="?android:attr/buttonBarButtonStyle" - android:layout_weight="1" - android:adjustViewBounds="true" - android:src="@drawable/btn_fm_previous" - android:enabled="false"/> - - <ImageButton - android:id="@+id/button_decrease" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_decrease_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_increase" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_increase_frequency" - android:enabled="false" /> - - <ImageButton - android:id="@+id/button_nextstation" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - android:adjustViewBounds="true" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_next" - android:enabled="false" /> - </LinearLayout> - - <LinearLayout - android:id="@+id/bottom_bar_recorder" - android:layout_width="match_parent" - android:layout_height="60dip" - android:layout_alignParentBottom="true" - android:background="@drawable/bottom_bar" - android:gravity="center_vertical" - android:visibility="gone" - android:splitMotionEvents="false" - android:weightSum="3" > - - <!-- Must set the background to "btn_pressed" which is the same with what is set in source code. --> - <!-- Because if not set it, the button size will change when clicked. --> - - <ImageButton - android:id="@+id/btn_record" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_record" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_stop" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_stop" - android:enabled="false"/> - - <ImageButton - android:id="@+id/btn_playback" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_weight="1" - style="?android:attr/buttonBarButtonStyle" - android:src="@drawable/btn_fm_rec_play" - android:enabled="false"/> - </LinearLayout> - </LinearLayout> - - <RelativeLayout - android:id="@+id/rl_recinfo" - android:layout_width="match_parent" - android:layout_height="48dip" - android:layout_above="@id/bottombar_parent" - android:background="@drawable/bg_rec_infobar" - android:gravity="center_vertical" - android:paddingLeft="5dip" - android:paddingRight="5dip" - android:visibility="gone" > - - <TextView - android:id="@+id/txtRecInfoLeft" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_toLeftOf="@+id/txtRecInfoRight" - android:ellipsize="marquee" - android:singleLine="true" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - - <TextView - android:id="@+id/txtRecInfoRight" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_marginLeft="20dip" - android:textColor="#ffffff" - android:textSize="20sp" - android:textStyle="normal" /> - </RelativeLayout> - - <LinearLayout - android:id="@+id/anim_background" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@id/rl_recinfo" > - - <ImageView - android:id="@+id/iv_anim" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@drawable/fm_anim" - android:visibility="invisible" /> - </LinearLayout> - -</RelativeLayout> diff --git a/MediaTek/FmRadio/res/layout/simpleadapter.xml b/MediaTek/FmRadio/res/layout/simpleadapter.xml deleted file mode 100755 index 9c78061..0000000 --- a/MediaTek/FmRadio/res/layout/simpleadapter.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_gravity="center_vertical" - android:gravity="center_vertical" - android:minHeight="48dip"> - <ImageView - android:id="@+id/lv_station_type" - android:adjustViewBounds="true" - android:layout_width="32dip" - android:layout_height="32dip" - android:layout_marginLeft="14dip" - android:layout_marginRight="14dip"/> - <TextView - android:id="@+id/lv_station_freq" - android:gravity="center_vertical" - android:layout_width="60dip" - android:layout_height="42dip" - android:textStyle="bold" - android:textAppearance="?android:attr/textAppearanceMedium"/> - <TextView - android:id="@+id/lv_station_name" - android:gravity="center_vertical" - android:layout_width="match_parent" - android:layout_height="42dip" - android:textStyle="bold" - android:layout_marginLeft="10dip" - android:textAppearance="?android:attr/textAppearanceMedium" - android:singleLine="true" - android:marqueeRepeatLimit="marquee_forever" - android:ellipsize="marquee"/> -</LinearLayout>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/layout/test_view.xml b/MediaTek/FmRadio/res/layout/test_view.xml deleted file mode 100755 index c26db52..0000000 --- a/MediaTek/FmRadio/res/layout/test_view.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <Button - android:id="@+id/search" - android:layout_width="match_parent" - android:layout_height="100dip" - android:textSize="30sp" - android:text="@string/test_search" - /> - <Button - android:id="@+id/success" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_weight="1" - android:textSize="30sp" - android:text="@string/test_success" /> - <Button - android:id="@+id/fail" - android:layout_width="match_parent" - android:layout_height="100dip" - android:textSize="30sp" - android:text="@string/test_fail" /> -</LinearLayout> diff --git a/MediaTek/FmRadio/res/menu/fm_action_bar.xml b/MediaTek/FmRadio/res/menu/fm_action_bar.xml deleted file mode 100755 index 70aa2db..0000000 --- a/MediaTek/FmRadio/res/menu/fm_action_bar.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - - <item android:id="@+id/fm_channel_list" - android:showAsAction ="always" - android:title="@string/favorite_manager" - style="@android:style/Widget.Holo.ActionButton.Overflow" - android:icon="@drawable/btn_fm_list_selector" - android:enabled="false"/> - <item android:id="@+id/fm_power" - android:showAsAction ="always" - android:title="@string/power" - style="@android:style/Widget.Holo.ActionButton.Overflow" - android:icon="@drawable/btn_fm_powerdown_selector" - android:enabled="false"/> - - <item android:id="@+id/fm_menu" - android:showAsAction="always" - android:title="@string/more" - style="@android:style/Widget.Holo.ActionButton.Overflow" - android:icon="@drawable/btn_fm_overflow_selector" - android:enabled="false"/> -</menu> diff --git a/MediaTek/FmRadio/res/menu/fm_menu.xml b/MediaTek/FmRadio/res/menu/fm_menu.xml deleted file mode 100755 index 12b6015..0000000 --- a/MediaTek/FmRadio/res/menu/fm_menu.xml +++ /dev/null @@ -1,48 +0,0 @@ -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/fm_search" - android:title="@string/optmenu_search" - android:enabled="false"/> - <item android:id="@+id/fm_sound_mode" - android:title="@string/optmenu_speaker" - android:enabled="false"/> - <item android:id="@+id/fm_record" - android:title="@string/optmenu_record" - android:enabled="false"/> -</menu> diff --git a/MediaTek/FmRadio/res/values-af/strings.xml b/MediaTek/FmRadio/res/values-af/strings.xml deleted file mode 100755 index 524b44a..0000000 --- a/MediaTek/FmRadio/res/values-af/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM-radio</string> - <string name="dlg_progress_title">Soek</string> - <string name="btn_yes">Ja</string> - <string name="optmenu_speaker">Luidspreker</string> - <string name="edit_frequency_overwrite_text">Skryf oorheen</string> - <string name="toast_start_recording">Begin opneem...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Kanaallys is leeg.</string> - <string name="optmenu_rds_settings">RDS-instellings</string> - <string name="toast_channel_searched">Het beskikbare kanale uitgesoek:</string> - <string name="already_exists">bestaan reeds</string> - <string name="dlg_noantenna_title">Inprop-oorfoon</string> - <string name="add_to_favorite">Voeg by Gunsteling</string> - <string name="toast_sdcard_insufficient_space">Te min ruimte op SD-kaart!</string> - <string name="dlg_delete_confirm_title">Bevestig verwyder uit gunstelinge</string> - <string name="optmenu_record">Neem FM op</string> - <string name="optmenu_earphone">Oorfoon</string> - <string name="sound_mode">Klankmodus</string> - <string name="toast_already_favorite">Hierdie kanaal is reeds in die gunstelinglys.</string> - <string name="not_available">Tans nie beskikbaar nie</string> - <string name="toast_channel_deleted">Suksesvol uit gunstelinge verwyder.</string> - <string name="toast_channel_added">Suksesvol by gunstelinge gevoeg.</string> - <string name="dlg_rds_settings_channel_information">Kanaalinligting</string> - <string name="toast_favorite_full">Kan nie die kanaal by die gunstelinglys voeg nie, want dis vol.</string> - <string name="btn_save_recording">Stoor</string> - <string name="optmenu_search">Soek</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatiewe frekwensie</string> - <string name="dlg_progress_text">Deursoek kanale...</string> - <string name="optmenu_exit">Verlaat</string> - <string name="more">Meer</string> - <string name="btn_discard_recording">Gooi weg</string> - <string name="contmenu_item_edit">Redigeer</string> - <string name="toast_cannot_search">Kan nie beskikbare kanaal uitsoek nie.</string> - <string name="dlg_save_recording_storage_warning">Te min ruimte! Wil jy die huidige opname stoor?</string> - <string name="toast_in_call">Jy kan nie FM-radio begin terwyl jy in \'n oproep is nie.</string> - <string name="dlg_addedit_station_freq">Frekwensie:</string> - <string name="toast_recorder_internal_error">\'n Interne fout het in opnemer voorgekom!</string> - <string name="dlg_save_recording_title">Stoor opnamelêer</string> - <string name="btn_ok">Oukei</string> - <string name="power">Krag</string> - <string name="contmenu_item_delete">Verwyder uit gunstelinge</string> - <string name="toast_powerup_before_record_warning">Skakel eers FM aan!</string> - <string name="fm_recorder_name">FM-opnemer</string> - <string name="toast_recording_lost_warning">Jou opname sal verlore gaan, weens SD-kaart uitgehaal!</string> - <string name="dlg_delete_confirm_text">Is jy seker jy wil hierdie kanaal uit gunstelinge verwyder?</string> - <string name="default_station_name">Nuwe kanaal</string> - <string name="btn_cancel">Kanselleer</string> - <string name="contmenu_title">Werkinge</string> - <string name="btn_no">Nee</string> - <string name="favorite_manager">Kanaallys</string> - <string name="toast_invalid_frequency">Ongeldige frekwensie vir huidige ligging. Geldige frekwensieomvang: 87,5-108,0</string> - <string name="toast_sdcard_missing">Jou SD-kaart word vermis!</string> - <string name="dlg_addedit_station_name">Naam:</string> - <string name="dlg_addedit_title_edit">Redigeer kanaal</string> - <string name="toast_invalid_input">Vorige invoer is ongeldig; geldige waarde is 0 of 5.</string> - <string name="edit_recording_name_hint">Tik lêernaam hier</string> - <string name="dlg_noantenna_text">Jy kort \'n oorfoon as antenna. Prop een by jou foon in.</string> - <string name="toast_player_internal_error">\'n Interne fout het in speler voorgekom!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-am/strings.xml b/MediaTek/FmRadio/res/values-am/strings.xml deleted file mode 100755 index 40dd643..0000000 --- a/MediaTek/FmRadio/res/values-am/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name"> FM ሬዲዮ</string> - <string name="dlg_progress_title"> ፈልግ</string> - <string name="btn_yes"> አዎ</string> - <string name="optmenu_speaker"> ድምጽ ማጉያ</string> - <string name="edit_frequency_overwrite_text"> ደምስሰህ ጻፍ</string> - <string name="toast_start_recording"> መቅዳት ጀምር…</string> - <string name="fm_unit"> MHz</string> - <string name="empty_list"> የጣቢያዉ ዝርዝር ባዶ ነዉ፡፡</string> - <string name="optmenu_rds_settings"> RDS ቅንብሮች</string> - <string name="toast_channel_searched"> ያሉትን ጣበያዎች ፈልጎ ጨርሷል፡</string> - <string name="already_exists"> ከዚህ በፊት አለ</string> - <string name="dlg_noantenna_title"> የጆሮ ማዳመጫዉን ይሰኩ</string> - <string name="add_to_favorite"> ወደ ተወዳጆች ጨምር</string> - <string name="toast_sdcard_insufficient_space"> በቂ ያልሆነ የSD ካርድ ቦታ!</string> - <string name="dlg_delete_confirm_title"> ከተወዳጆች መወገዱን ያረጋግጡ</string> - <string name="optmenu_record"> FMን ቅዳ </string> - <string name="optmenu_earphone"> የጆሮ ማዳመጫ</string> - <string name="sound_mode"> የድምጽ ሁኔታ</string> - <string name="toast_already_favorite"> ጣቢያዉ ከዚህ በፊት በተወዳጆች ዝርዝር ዉስጥ አለ፡፡</string> - <string name="not_available"> በአሁኑ ወቅት የለም</string> - <string name="toast_channel_deleted"> በተሳካ ሁኔታ ከተወዳጆች ተወግዷል፡፡</string> - <string name="toast_channel_added"> በተሳካ ሁኔታ ወደተወዳጆች ተጨምሯል፡፡</string> - <string name="dlg_rds_settings_channel_information"> የጣቢያ መረጃ</string> - <string name="toast_favorite_full"> የተወዳጆች ጣቢያ ዝርዝር ስለሞላ ጣቢያዉን ወደ ተወዳጆች ዝርዝር ማስገባት አይቻልም፡፡</string> - <string name="btn_save_recording"> አስቀምጥ</string> - <string name="optmenu_search"> ፈልግ</string> - <string name="dlg_rds_settings_alternative_frequency"> አማራጭ ሞገድ</string> - <string name="dlg_progress_text"> ጣቢያዎችን ፈልግ</string> - <string name="optmenu_exit"> ዉጣ</string> - <string name="more"> የበለጡ</string> - <string name="btn_discard_recording"> አስወግድ</string> - <string name="contmenu_item_edit"> አርታእ</string> - <string name="toast_cannot_search"> ያሉትን ጣበያዎች መፈለግ አይቻልም፡፡</string> - <string name="dlg_save_recording_storage_warning"> በቂ ያልሆነ ማከማቻ! አሁን የተቀዳዉን ማስቀመጥ ይፈልጋሉ;</string> - <string name="toast_in_call"> በጥሪ ላይ እያሉ FMሬዲዮን ማስነሳት አይችሉም፡፡</string> - <string name="dlg_addedit_station_freq"> ሞገድ፡</string> - <string name="toast_recorder_internal_error"> በመቅጃዉ ላይ ዉስጣዊ ስህተት ተከስቷል!</string> - <string name="dlg_save_recording_title"> የፍይሉን </string> - <string name="btn_ok"> እሺ</string> - <string name="power"> ሃይል</string> - <string name="contmenu_item_delete"> ከተወዳጆች አስወግድ</string> - <string name="toast_powerup_before_record_warning"> እባክዎ በመጀመሪያ FMን ያስነሱ!</string> - <string name="fm_recorder_name"> የFM መቅጃ</string> - <string name="toast_recording_lost_warning"> SD በመወገዱ ምክንያት ቅጂዎ ይጠፋል!</string> - <string name="dlg_delete_confirm_text"> ይህንን ጣቢያ ከተወዳጆች ለማስወገድ መፈለግዎትን እርግጠኛ ነዎት?</string> - <string name="default_station_name"> አዲስ ጣቢያ</string> - <string name="btn_cancel"> ሰርዝ</string> - <string name="contmenu_title"> እንቅስቃሴዎች</string> - <string name="btn_no"> አይ</string> - <string name="favorite_manager"> የጣቢያ ዝርዝር</string> - <string name="toast_invalid_frequency"> ለአሁኑ ቦታ ትክክለኛ ያልሆነ ሞገድ ነዉ፡፡ ትክክለኛ የሆነ የሞገድ መጠን ፡87.5-108.0</string> - <string name="toast_sdcard_missing"> SD ካርድዎ የለም!</string> - <string name="dlg_addedit_station_name"> ስም፡</string> - <string name="dlg_addedit_title_edit"> ጣቢያን አርታእ</string> - <string name="toast_invalid_input"> የመጨረሻ ያስገቡት ግቤት ትክክል አይደለም፣ ትክክለኛዉ ከ 0 እስከ 5 መሆን አለበት፡፡</string> - <string name="edit_recording_name_hint"> የፋይሉን ስም እዚህ ጋር ይተይቡ</string> - <string name="dlg_noantenna_text"> የጆሮ ማዳመጫ እንደ አንቴና ያስፈልጎታል፡፡ እባክዎ የጆሮ ማዳመጫዉን ይሰኩ፡፡</string> - <string name="toast_player_internal_error"> በማጫወቻዉ ላይ ዉስጣዊ ስህተት ተከስቷል!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-ar/strings.xml b/MediaTek/FmRadio/res/values-ar/strings.xml deleted file mode 100755 index d5a3c77..0000000 --- a/MediaTek/FmRadio/res/values-ar/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">راديو FM</string> - <string name="favorite_manager">قائمة القنوات</string> - <string name="add_to_favorite">إضافة إلى المفضلات</string> - <string name="optmenu_search">"بحث"</string> - <string name="optmenu_exit">خروج</string> - <string name="contmenu_title">العمليات</string> - <string name="contmenu_item_edit">"تعديل"</string> - <string name="contmenu_item_delete">إزالة من المفضلات</string> - <string name="dlg_noantenna_text">يجب أن يكون لديك سماعة أذن لهوائي. رجاء توصيل سماعة الأذن.</string> - <string name="dlg_noantenna_title">توصيل سماعة الأذن</string> - <string name="btn_yes">"نعم"</string> - <string name="btn_no">"لا"</string> - <string name="btn_ok">"موافق"</string> - <string name="btn_cancel">"إلغاء"</string> - <string name="dlg_progress_title">مسح</string> - <string name="dlg_progress_text">مسح القنوات...</string> - <string name="dlg_addedit_station_name">الاسم:</string> - <string name="dlg_addedit_station_freq">التكرار:</string> - <string name="dlg_addedit_title_edit">تحرير القناة</string> - <string name="default_station_name">قناة جديدة</string> - <string name="dlg_delete_confirm_title">تأكيد مسح القناة</string> - <string name="dlg_delete_confirm_text">هل تريد بالتأكيد حذف هذه القناة؟</string> - <string name="toast_favorite_full">تتعذر إضافة القناة إلى قائمة المفضلة نظرًا لاكتمالها.</string> - <string name="toast_already_favorite">هذه القناة موجودة بالفعل في قائمة المفضلة.</string> - <string name="toast_channel_deleted">تمت الإزالة من المفضلات بنجاح</string> - <string name="toast_channel_added">تمت الإضافة إلى المفضلات بنجاح</string> - <string name="toast_channel_searched">القنوات المتوفرة التي تم مسحها:</string> - <string name="toast_cannot_search">تعذر البحث عن قناة متاحة.</string> - <string name="optmenu_rds_settings">إعدادات نظام بيانات الراديو</string> - <string name="dlg_rds_settings_channel_information">معلومات القناة</string> - <string name="dlg_rds_settings_alternative_frequency">التردد البديل</string> - <string name="more">المزيد من التطبيقات</string> - <string name="power">أس</string> - <string name="sound_mode">وضع الصوت</string> - <string name="edit_frequency_overwrite_text">"استبدال"</string> - <string name="fm_unit">ميجا هرتز</string> - <string name="no_antenna_info">قم بتوصيل سماعات الأذن لاستخدامها كهوائي الراديو.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">مسجل FM</string> - <string name="toast_recording_lost_warning">ستفقد التسجيلات نتيجة نزع بطاقة SD!</string> - <string name="toast_start_recording">بدء التسجيل…</string> - <string name="toast_sdcard_missing">بطاقة SD مفقودة!</string> - <string name="toast_sdcard_insufficient_space">مساحة غير كافية على بطاقة SD!</string> - <string name="toast_recorder_internal_error">حدث خطأ داخلي في المسجل!</string> - <string name="toast_player_internal_error">حدث خطأ داخلي في المشغل!</string> - <string name="toast_powerup_before_record_warning">يرجى تشغيل FM أولاً!</string> - <string name="optmenu_record">تسجيل FM</string> - <string name="btn_save_recording">حفظ</string> - <string name="btn_discard_recording">تجاهل</string> - <string name="edit_recording_name_hint">اكتب اسم الملف هنا</string> - <string name="dlg_save_recording_title">حفظ ملف التسجيل</string> - <string name="dlg_save_recording_storage_warning">مساحة التخزين غير كافية! هل تريد حفظ التسجيل الحالي؟</string> - <string name="already_exists">موجود بالفعل</string> - <string name="toast_invalid_frequency">تردد غير صالح للموقع الحالي. نطاق التردد الصالح: 87,5-108,0.</string> - <string name="toast_invalid_input">المُدخل الأخير غير صحيح، القيمة الصحيحة هي 0 أو 5.</string> - <string name="toast_in_call">لا يمكن تشغيل راديو FM أثناء إجراء مكالمة.</string> - <string name="empty_list">قائمة القنوات فارغة.</string> - <string name="optmenu_speaker">"السماعة"</string> - <string name="optmenu_earphone">سماعة رأس</string> - <string name="not_available">غير متاح حاليًا</string> - <string name="add_to_favorite1">إضافة إلى القنوات مسبقة الضبط</string> - <string name="contmenu_item_delete1">إزالة من القنوات مسبقة الضبط</string> - <string name="dlg_delete_confirm_title1">تأكيد الإزالة من القنوات مسبقة الضبط</string> - <string name="dlg_delete_confirm_text1">هل أنت متأكد من رغبتك في إزالة هذه القناة من القنوات مسبقة الضبط؟</string> - <string name="toast_favorite_full1">يتعذر إضافة القناة إلى قائمة القنوات مسبقة الضبط لأنها ممتلئة.</string> - <string name="toast_already_favorite1">هذه القناة موجودة بالفعل في قائمة القنوات مسبقة الضبط.</string> - <string name="toast_channel_deleted1">تمت الإزالة بنجاح من القنوات مسبقة الضبط.</string> - <string name="toast_channel_added1">تمت الإضافة بنجاح إلى القنوات مسبقة الضبط.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-bg/strings.xml b/MediaTek/FmRadio/res/values-bg/strings.xml deleted file mode 100755 index 394ee51..0000000 --- a/MediaTek/FmRadio/res/values-bg/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">УКВ радио</string> - <string name="favorite_manager">Списък канали</string> - <string name="add_to_favorite">Добави към предпочитани</string> - <string name="optmenu_search">Търсене</string> - <string name="optmenu_exit">Изход</string> - <string name="contmenu_title">Действия</string> - <string name="contmenu_item_edit">Редактиране</string> - <string name="contmenu_item_delete">Изтриване от предпочитани</string> - <string name="dlg_noantenna_text">Като антена трябва да има слушалки. Включете слушалките.</string> - <string name="dlg_noantenna_title">Включете слешалките</string> - <string name="btn_yes">"Да"</string> - <string name="btn_no">"Не"</string> - <string name="btn_ok">ОК</string> - <string name="btn_cancel">Отказ</string> - <string name="dlg_progress_title">Търсене</string> - <string name="dlg_progress_text">Търсене на канали…</string> - <string name="dlg_addedit_station_name">Име:</string> - <string name="dlg_addedit_station_freq">Честота:</string> - <string name="dlg_addedit_title_edit">Редактиране канал</string> - <string name="default_station_name">Нов канал</string> - <string name="dlg_delete_confirm_title">Потвърдете изтриване от предпочитани</string> - <string name="dlg_delete_confirm_text">Настоявате ли да изтрием този канал от предпочитаните?</string> - <string name="toast_favorite_full">Каналът не може да се добави в списък предпочитани - списъкът е пълен.</string> - <string name="toast_already_favorite">Каналът вече е в списък предпочитани.</string> - <string name="toast_channel_deleted">Успешно изтриване от предпочитани.</string> - <string name="toast_channel_added">Успешно добавяне към предпочитани.</string> - <string name="toast_channel_searched">Търсене на достъпни канали:</string> - <string name="toast_cannot_search">Търсенето на достъпен канал невъзможно.</string> - <string name="toast_invalid_frequency">Невалидна честота за това местоположение. Допустим честотен диапазон: 87,5 - 108,0</string> - <string name="toast_invalid_input">Последно невалидно въвеждане - разрешени стойности 0 или 5.</string> - <string name="optmenu_rds_settings">Настройки RDS</string> - <string name="dlg_rds_settings_channel_information">Информация за канали</string> - <string name="dlg_rds_settings_alternative_frequency">Резервна честота</string> - <string name="sound_mode">Режим саунд</string> - <string name="more">"Още"</string> - <string name="power">"степен"</string> - <string name="toast_in_call">Не можете да включите УКВ радио по време на обаждане.</string> - <string name="empty_list">Празен списък канали.</string> - <string name="edit_frequency_overwrite_text">Пренаписване</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Включете слушалките за използване като радио антена.</string> - <string name="fm_recorder_name">УКВ записващо у-во</string> - <string name="toast_recording_lost_warning">Записът ще изчезне при изваждане на SD картата!</string> - <string name="toast_start_recording">Начало запис…</string> - <string name="toast_sdcard_missing">Липсва SD карта!</string> - <string name="toast_sdcard_insufficient_space">Недостатъчно място на SD картата!</string> - <string name="toast_recorder_internal_error">Вътрешна грешка в записващото у-во!</string> - <string name="toast_player_internal_error">Вътрешна грешка в плеъра!</string> - <string name="toast_powerup_before_record_warning">Първо включете УКВ!</string> - <string name="optmenu_record">Запис на УКВ</string> - <string name="btn_save_recording">"Запазване"</string> - <string name="btn_discard_recording">Отхвърляне</string> - <string name="edit_recording_name_hint">Въведете име на файл тук</string> - <string name="dlg_save_recording_title">Запаметяване на записващия файл</string> - <string name="dlg_save_recording_storage_warning">Недостатъчно памет! Искате ли да запаметите този запис?</string> - <string name="already_exists">вече съществува</string> - <string name="optmenu_speaker">Високоговорител</string> - <string name="optmenu_earphone">Слушалки</string> - <string name="not_available">Недостъпен в момента</string> - <string name="add_to_favorite1">Добави към пре-настроени канали</string> - <string name="contmenu_item_delete1">Изтриване от пре-настроени канали</string> - <string name="dlg_delete_confirm_title1">Потвърдете изтриване от пре-настроени канали</string> - <string name="dlg_delete_confirm_text1">Настоявате ли да изтрием този канал от пре-настроените?</string> - <string name="toast_favorite_full1">Каналът не може да се добави в списък пре-настроени - списъкът е пълен.</string> - <string name="toast_already_favorite1">Каналът вече е в списък пре-настроени.</string> - <string name="toast_channel_deleted1">Успешно изтриване от пре-настроени.</string> - <string name="toast_channel_added1">Успешно добавяне към пре-настроени.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-bn/strings.xml b/MediaTek/FmRadio/res/values-bn/strings.xml deleted file mode 100755 index 7c24348..0000000 --- a/MediaTek/FmRadio/res/values-bn/strings.xml +++ /dev/null @@ -1,110 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">এফএম রেডিও</string> - <string name="favorite_manager">চ্যানেলের তালিকা</string> - <string name="add_to_favorite">প্রিয়-তে যোগ করুন</string> - <string name="optmenu_search">অনুসন্ধান করুন</string> - <string name="optmenu_exit">প্রস্থান</string> - <string name="contmenu_title">অপারেশন</string> - <string name="contmenu_item_edit">সম্পাদনা করুন</string> - <string name="contmenu_item_delete">প্রিয় তালিকা থেকে সরিয়ে ফেলুন</string> - <string name="dlg_noantenna_text">এন্টেনা হিসেবে আপনার ইয়ারফোন প্রয়োজন। আপনার ইয়ারফোন লাগান।</string> - <string name="dlg_noantenna_title">ইয়ারফোন লাগান</string> - <string name="btn_yes">হ্যাঁ</string> - <string name="btn_no">না </string> - <string name="btn_ok">ঠিক আছে </string> - <string name="btn_cancel">বাতিল করুন</string> - <string name="dlg_progress_title">স্ক্যান করুন</string> - <string name="dlg_progress_text">চ্যানেল স্ক্যান করুন...</string> - <string name="dlg_addedit_station_name">নাম:</string> - <string name="dlg_addedit_station_freq">ফ্রিকোয়েন্সি:</string> - <string name="dlg_addedit_title_edit">চ্যানেল সম্পাদনা</string> - <string name="default_station_name">নতুন চ্যানেল</string> - <string name="dlg_delete_confirm_title">চ্যানেলটি মুছে ফেলা নিশ্চিত করুন</string> - <string name="dlg_delete_confirm_text">আপনি কি নিশ্চিতভাবেই চ্যানেলটি মুছে ফেলতে চান?</string> - <string name="toast_favorite_full">প্রিয় তালিকায় চ্যানেলটি যুক্ত করা যাচ্ছে না কারণ তালিকা পূর্ণ। </string> - <string name="toast_already_favorite">চ্যানেলটি প্রিয় তালিকায় আগে থেকেই বিদ্যমান।</string> - <string name="toast_channel_deleted">প্রিয় তালিকা থেকে সফলভাবে সরিয়ে ফেলা হয়েছে</string> - <string name="toast_channel_added">প্রিয় তালিকায় সফলভাবে যোগ করা হয়েছে</string> - <string name="toast_channel_searched">বিদ্যমানগুলো চ্যানেল অনুসন্ধান করা হয়েছে:</string> - <string name="toast_cannot_search">বিদ্যমান চ্যানেল অনুসন্ধান করে বের করতে পারছে না ।</string> - <string name="optmenu_rds_settings">আরডিএস সেটিং</string> - <string name="dlg_rds_settings_channel_information">চ্যানেলের তথ্য</string> - <string name="dlg_rds_settings_alternative_frequency">বিকল্প ফ্রিকোয়েন্সি</string> - <string name="more">আরো অ্যাপ্লিকেশন</string> - <string name="power">পাওয়ার</string> - <string name="sound_mode">সাউন্ড মোড</string> - <string name="edit_frequency_overwrite_text">ওভাররাইট করুন</string> - <string name="fm_unit">মে.হার্টস</string> - <string name="no_antenna_info">রেডিও এন্টেনা হিসেবে ব্যবহার করতে আপনার ইয়ারফোন লাগান।</string> - - <!-- For FM recording --> - <string name="fm_recorder_name">এফএম রেকর্ডার</string> - <string name="toast_recording_lost_warning">এসডি সরিয়ে ফেলার কারণে আপনার রেকর্ড করা জিনিস হারিয়ে যাবে!</string> - <string name="toast_start_recording">রেকর্ড করা শুরু…</string> - <string name="toast_sdcard_missing">আপনার এসডি কার্ড পাওয়া যাচ্ছে না!</string> - <string name="toast_sdcard_insufficient_space">এসডি কার্ডে জায়গা অপর্যাপ্ত!</string> - <string name="toast_recorder_internal_error">রেকর্ডারে একটি অভ্যন্তরীণ ত্রুটি ঘটেছে!</string> - <string name="toast_player_internal_error">প্লেয়ারে একটি অভ্যন্তরীণ ত্রুটি ঘটেছে!</string> - <string name="toast_powerup_before_record_warning">প্রথমে এফএম চালু করুন!</string> - <string name="optmenu_record">এফএম রেকর্ড করুন</string> - <string name="btn_save_recording">সংরক্ষণ করুন</string> - <string name="btn_discard_recording">বাতিল করুন</string> - <string name="edit_recording_name_hint">এখানে ফাইলের নাম লিখুন</string> - <string name="dlg_save_recording_title">রেকর্ড করা ফাইল সংরক্ষণ করুন</string> - <string name="dlg_save_recording_storage_warning">সংরক্ষণাগার অপর্যাপ্ত! আপনি কি বর্তমানে রেকর্ড করা জিনিস সংরক্ষণ করতে চান?</string> - <string name="already_exists">ইতিমধ্যেই বিদ্যমান</string> - <string name="toast_invalid_frequency">বর্তমান অবস্থানের জন্য অকার্যকর ফ্রিকোয়েন্সি। কার্যকর ফ্রিকোয়েন্সি স্কোপ: 87.5-108.0।</string> - <string name="toast_invalid_input">সর্বশেষ অকার্যকর ইনপুট, কার্যকর মূল্য হল ০ বা ৫।</string> - <string name="toast_in_call">কলে থাকা অবস্থায় আপনি এফএম রেডিও চালু করতে পারবেন না।</string> - <string name="empty_list">চ্যানেল তালিকা খালি।</string> - <string name="optmenu_speaker">স্পিকার</string> - <string name="optmenu_earphone">হেডসেট</string> - <string name="not_available">বর্তমানে পাওয়া যাচ্ছে না</string> - - <string name="add_to_favorite1">চ্যানেল প্রিসেট করতে যোগ করুন</string> - <string name="contmenu_item_delete1">প্রিসেট চ্যানেল থেকে সরিয়ে ফেলুন</string> - <string name="dlg_delete_confirm_title1">প্রিসেট চ্যানেল থেকে সরানো নিশ্চিত করুন</string> - <string name="dlg_delete_confirm_text1">আপনি কি নিশ্চিত যে আপনি এই চ্যানেল প্রিসেট চ্যানেল থেকে সরিয়ে ফেলতে চান?</string> - <string name="toast_favorite_full1">প্রিসেট চ্যানেলের তালিকায় চ্যানেলটি যোগ করা যাচ্ছে না কারণ এটি পূর্ণ।</string> - <string name="toast_already_favorite1">এই চ্যানেল ইতিমধ্যে প্রিসেট চ্যানেল তালিকায় আছে।</string> - <string name="toast_channel_deleted1">প্রিসেট চ্যানেল থেকে সফলভাবে সরিয়ে ফেলা হয়েছে।</string> - <string name="toast_channel_added1">প্রিসেট চ্যানেলে সফলভাবে যোগ করা হয়েছে।</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-ca/strings.xml b/MediaTek/FmRadio/res/values-ca/strings.xml deleted file mode 100755 index 3ddfd09..0000000 --- a/MediaTek/FmRadio/res/values-ca/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Ràdio FM</string> - <string name="dlg_progress_title">Cerca</string> - <string name="btn_yes">Sí</string> - <string name="optmenu_speaker">Altaveu</string> - <string name="edit_frequency_overwrite_text">Sobreescriu</string> - <string name="toast_start_recording">Inicia l’enregistrament…</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">La llista de canals és buida.</string> - <string name="optmenu_rds_settings">Configuració d’RDS</string> - <string name="toast_channel_searched">Canals disponibles que s’han cercat:</string> - <string name="already_exists">ja existeix</string> - <string name="dlg_noantenna_title">Connecta l’auricular</string> - <string name="add_to_favorite">Afegeix als favorits</string> - <string name="toast_sdcard_insufficient_space">Espai insuficient a la targeta SD!</string> - <string name="dlg_delete_confirm_title">Confirma la supressió dels favorits</string> - <string name="optmenu_record">Enregistra FM</string> - <string name="optmenu_earphone">Auricular</string> - <string name="sound_mode">Mode de so</string> - <string name="toast_already_favorite">Aquest canal ja és a la llista de favorits.</string> - <string name="not_available">Actualment no està disponible</string> - <string name="toast_channel_deleted">S’ha eliminat correctament dels favorits.</string> - <string name="toast_channel_added">S’ha afegit correctament als favorits.</string> - <string name="dlg_rds_settings_channel_information">Informació del canal</string> - <string name="toast_favorite_full">El canal no pot afegir-se a la llista de favorits perquè és plena.</string> - <string name="btn_save_recording">Desa-ho</string> - <string name="optmenu_search">Cerca</string> - <string name="dlg_rds_settings_alternative_frequency">Freqüència alternativa</string> - <string name="dlg_progress_text">Cerca canals...</string> - <string name="optmenu_exit">Surt</string> - <string name="more">Més</string> - <string name="btn_discard_recording">Descarta</string> - <string name="contmenu_item_edit">Edita</string> - <string name="toast_cannot_search">No es poden cercar canals disponibles.</string> - <string name="dlg_save_recording_storage_warning">Emmagatzematge insuficient! Voleu desar l’enregistrament actual?</string> - <string name="toast_in_call">La ràdio FM no pot iniciar-se amb una trucada en curs.</string> - <string name="dlg_addedit_station_freq">Freqüència:</string> - <string name="toast_recorder_internal_error">S’ha produït un error intern a l’enregistrador!</string> - <string name="dlg_save_recording_title">Desa fitxer d’enregistrament</string> - <string name="btn_ok">Accepta</string> - <string name="power">Alimentació</string> - <string name="contmenu_item_delete">Suprimeix dels favorits</string> - <string name="toast_powerup_before_record_warning">Engega primer l’FM!</string> - <string name="fm_recorder_name">Enregistrador d’FM</string> - <string name="toast_recording_lost_warning">L’extracció de l’SD provocarà la pèrdua de l’enregistrament!</string> - <string name="dlg_delete_confirm_text">Esteu segur que voleu eliminar aquest canal dels favorits?</string> - <string name="default_station_name">Canal nou</string> - <string name="btn_cancel">Cancel·la</string> - <string name="contmenu_title">Operacions</string> - <string name="btn_no">No</string> - <string name="favorite_manager">Llista de canals</string> - <string name="toast_invalid_frequency">Freqüència no vàlida per a la ubicació actual. Interval de freqüències vàlides: 87.5-108.0</string> - <string name="toast_sdcard_missing">No hi ha cap targeta SD!</string> - <string name="dlg_addedit_station_name">Nom:</string> - <string name="dlg_addedit_title_edit">Edita el canal</string> - <string name="toast_invalid_input">La darrera entrada no és vàlida, els valors vàlids són 0 o 5.</string> - <string name="edit_recording_name_hint">Escriviu aquí el nom de fitxer</string> - <string name="dlg_noantenna_text">Necessiteu un auricular com a antena. Endolleu l’auricular.</string> - <string name="toast_player_internal_error">S’ha produït un error intern al reproductor!</string> - <string name="no_antenna_info">Connecta els auriculars per utilitzar-los com a antena d’àudio.</string> - <string name="add_to_favorite1">Afegeix als canals predeterminats</string> - <string name="contmenu_item_delete1">Suprimeix dels canals predeterminats</string> - <string name="dlg_delete_confirm_title1">Confirma la supressió dels canals predeterminats</string> - <string name="dlg_delete_confirm_text1">Estàs segur que vols suprimir aquest canal dels canals predeterminats?</string> - <string name="toast_favorite_full1">No es pot afegir el canal a la llista de canals predeterminats perquè està plena.</string> - <string name="toast_already_favorite1">Aquest canal ja es troba a la llista de canals predeterminats.</string> - <string name="toast_channel_deleted1">S’ha suprimit correctament dels canals predeterminats.</string> - <string name="toast_channel_added1">S’ha afegit correctament als canals predeterminats</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-cs/strings.xml b/MediaTek/FmRadio/res/values-cs/strings.xml deleted file mode 100755 index 9ac1ac0..0000000 --- a/MediaTek/FmRadio/res/values-cs/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM rádio</string> - <string name="favorite_manager">Seznam kanálů</string> - <string name="add_to_favorite">Přidat k oblíbeným položkám</string> - <string name="optmenu_search">Hledat</string> - <string name="optmenu_exit">Konec</string> - <string name="contmenu_title">Operace</string> - <string name="contmenu_item_edit">Úpravy</string> - <string name="contmenu_item_delete">Odebrat z oblíbených položek</string> - <string name="dlg_noantenna_text">Jsou zapotřebí sluchátka jako anténa. Připojte sluchátka.</string> - <string name="dlg_noantenna_title">Připojit sluchátka</string> - <string name="btn_yes">Ano</string> - <string name="btn_no">Ne</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Storno</string> - <string name="dlg_progress_title">Vyhledat</string> - <string name="dlg_progress_text">Prohledat kanály...</string> - <string name="dlg_addedit_station_name">Název:</string> - <string name="dlg_addedit_station_freq">Frekvence:</string> - <string name="dlg_addedit_title_edit">Upravit kanál</string> - <string name="default_station_name">Nový kanál</string> - <string name="dlg_delete_confirm_title">Potvrdit odebrání z oblíbených</string> - <string name="dlg_delete_confirm_text">Opravdu chcete odebrat tento kanál z oblíbených?</string> - <string name="toast_favorite_full">Nelze přidat kanál do seznamu oblíbených, protože je plný.</string> - <string name="toast_already_favorite">Tento kanál je již v seznamu oblíbených.</string> - <string name="toast_channel_deleted">Úspěšně odebráno z oblíbených položek.</string> - <string name="toast_channel_added">Úspěšně přidáno k oblíbeným položkám.</string> - <string name="toast_channel_searched">Vyhledané dostupné kanály:</string> - <string name="toast_cannot_search">Nelze vyhledat dostupný kanál.</string> - <string name="toast_invalid_frequency">Neplatná frekvence pro aktuální umístění. Platný rozsah frekvence: 87,5-108,0.</string> - <string name="optmenu_rds_settings">Nastavení RDS</string> - <string name="dlg_rds_settings_channel_information">Informace o kanálu</string> - <string name="dlg_rds_settings_alternative_frequency">Náhradní frekvence</string> - <string name="sound_mode">Režim zvuku</string> - <string name="more">Další aplikace</string> - <string name="power">síla</string> - <string name="edit_frequency_overwrite_text">"Přepsat"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Připojte sluchátka jako rozhlasovou anténu.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM rekordér</string> - <string name="toast_recording_lost_warning">Váš záznam bude ztracen z důvodu vyjmutí SD!</string> - <string name="toast_start_recording">Spustit záznam…</string> - <string name="toast_sdcard_missing">Karta SD chybí!</string> - <string name="toast_sdcard_insufficient_space">Nedostatek prostoru na kartě SD!</string> - <string name="toast_recorder_internal_error">Došlo k vnitřní chybě rekordéru!</string> - <string name="toast_player_internal_error">Došlo k vnitřní chybě přehrávače!</string> - <string name="toast_powerup_before_record_warning">Nejdříve zapněte napájení FM!</string> - <string name="optmenu_record">Záznam FM</string> - <string name="btn_save_recording">Uložit</string> - <string name="btn_discard_recording">Zahodit</string> - <string name="edit_recording_name_hint">Zde zadejte název souboru</string> - <string name="dlg_save_recording_title">Uložit soubor se záznamem</string> - <string name="dlg_save_recording_storage_warning">Nedostatek úložného prostoru. Chcete uložit aktuální záznam?</string> - <string name="already_exists">již existuje</string> - <string name="toast_invalid_input">Poslední neplatné zadání, platná hodnota je 0 nebo 5.</string> - <string name="toast_in_call">Nelze spustit FM rádio během volání.</string> - <string name="empty_list">Seznam kanálů je prázdný.</string> - <string name="optmenu_speaker">"Reproduktor"</string> - <string name="optmenu_earphone">Sluchátka s mikrofonem</string> - <string name="not_available">Aktuálně není k dispozici</string> - <string name="add_to_favorite1">Přidat k předvoleným kanálům</string> - <string name="contmenu_item_delete1">Odebrat z předvolených kanálů</string> - <string name="dlg_delete_confirm_title1">Potvrdit odebrání z předvolených kanálů</string> - <string name="dlg_delete_confirm_text1">Opravdu chcete odebrat tento kanál z předvolených kanálů?</string> - <string name="toast_favorite_full1">Nelze přidat kanál do seznamu předvolených kanálů, protože je plný.</string> - <string name="toast_already_favorite1">Tento kanál je již v seznamu předvolených kanálů.</string> - <string name="toast_channel_deleted1">Úspěšně odebráno z předvolených kanálů.</string> - <string name="toast_channel_added1">Úspěšně přidáno k předvoleným kanálům.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-da/strings.xml b/MediaTek/FmRadio/res/values-da/strings.xml deleted file mode 100755 index 06e5a8b..0000000 --- a/MediaTek/FmRadio/res/values-da/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-radio</string> - <string name="favorite_manager">Kanalliste</string> - <string name="add_to_favorite">Tilføj til favoritter</string> - <string name="optmenu_search">Søg</string> - <string name="optmenu_exit">Forlad</string> - <string name="contmenu_title">Operationer</string> - <string name="contmenu_item_edit">Rediger</string> - <string name="contmenu_item_delete">Fjern fra Favoritter</string> - <string name="dlg_noantenna_text">Du skal bruge en øretelefon som antenne. Tilslut dine øretelefoner.</string> - <string name="dlg_noantenna_title">Tilslut dine øretelefoner</string> - <string name="btn_yes">"Ja"</string> - <string name="btn_no">"Nej"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Annuller</string> - <string name="dlg_progress_title">Søg</string> - <string name="dlg_progress_text">Søg efter kanaler...</string> - <string name="dlg_addedit_station_name">Navn:</string> - <string name="dlg_addedit_station_freq">Frekvens:</string> - <string name="dlg_addedit_title_edit">Rediger kanal</string> - <string name="default_station_name">Ny kanal</string> - <string name="dlg_delete_confirm_title">Bekræft at fjerne fra favoritter</string> - <string name="dlg_delete_confirm_text">Er du sikker på, at du vil fjerne denne kanal fra favoritter?</string> - <string name="toast_favorite_full">Kan ikke tilføje kanalen til listen med favoritter, da listen er fyldt.</string> - <string name="toast_already_favorite">Denne kanal er allerede på listen med favoritter.</string> - <string name="toast_channel_deleted">Fjernet fra favoritter.</string> - <string name="toast_channel_added">Tilføjet til favoritter.</string> - <string name="toast_channel_searched">Søgt efter tilgængelige kanaler:</string> - <string name="toast_cannot_search">Kan ikke søge efter tilgængelig kanal.</string> - <string name="toast_invalid_frequency">Ugyldigt frekvens for den aktuelle placering. Gyldigt frekvensinterval: 87,5-108,0</string> - <string name="toast_invalid_input">Den sidste ugyldige indtastning. Gyldig værdi er 0 eller 5.</string> - <string name="optmenu_rds_settings">RDS-indstillinger</string> - <string name="dlg_rds_settings_channel_information">Kanaloplysninger</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativ frekvens</string> - <string name="sound_mode">Lydfunktion</string> - <string name="more">"Mere"</string> - <string name="power">"tænd/sluk"</string> - <string name="toast_in_call">Du kan ikke starte FM-radio, når du er i gang med et opkald.</string> - <string name="empty_list">Kanallisten er tom.</string> - <string name="edit_frequency_overwrite_text">Overskriv</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Tilslut dine øretelefoner for at bruge dem som radioantenne.</string> - <string name="fm_recorder_name">FM-optager</string> - <string name="toast_recording_lost_warning">Din optagelse mistes, hvis du fjerner SD-kortet!</string> - <string name="toast_start_recording">Start optagelse...</string> - <string name="toast_sdcard_missing">Dit SD-kort mangler!</string> - <string name="toast_sdcard_insufficient_space">Utilstrækkelig plads på SD-kort!</string> - <string name="toast_recorder_internal_error">Der opstod en intern fejl i optageren!</string> - <string name="toast_player_internal_error">Der opstod en intern fejl i afspilleren!</string> - <string name="toast_powerup_before_record_warning">Tænd først for FM!</string> - <string name="optmenu_record">Optag FM</string> - <string name="btn_save_recording">"Gem"</string> - <string name="btn_discard_recording">Kassér</string> - <string name="edit_recording_name_hint">Indtast filnavn her</string> - <string name="dlg_save_recording_title">Gem optaget fil</string> - <string name="dlg_save_recording_storage_warning">Utilstrækkelig lagerplads! Vil du gemme den aktuelle optagelse?</string> - <string name="already_exists">findes allerede</string> - <string name="optmenu_speaker">Højttaler</string> - <string name="optmenu_earphone">Øretelefon</string> - <string name="not_available">Ikke tilgængelig for øjeblikket</string> - <string name="add_to_favorite1">Tilføj til forudindstillede kanaler</string> - <string name="contmenu_item_delete1">Fjern fra forudindstillede kanaler</string> - <string name="dlg_delete_confirm_title1">Bekræft at fjerne fra forudindstillede kanaler</string> - <string name="dlg_delete_confirm_text1">Er du sikker på, at du vil fjerne denne kanal fra forudindstillede kanaler?</string> - <string name="toast_favorite_full1">Kan ikke tilføje kanalen til listen med forudindstillede kanaler, da listen er fyldt.</string> - <string name="toast_already_favorite1">Denne kanal er allerede på listen med forudindstillede kanaler.</string> - <string name="toast_channel_deleted1">Fjern fra forudindstillede kanaler.</string> - <string name="toast_channel_added1">Tilføjet til forudindstillede kanaler.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-de-rAT/strings.xml b/MediaTek/FmRadio/res/values-de-rAT/strings.xml deleted file mode 100755 index e564f4d..0000000 --- a/MediaTek/FmRadio/res/values-de-rAT/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-Radio</string> - <string name="favorite_manager">Kanalliste</string> - <string name="add_to_favorite">Zum Favoriten. hinzufügen</string> - <string name="optmenu_search">Suchen</string> - <string name="optmenu_exit">Beenden</string> - <string name="contmenu_title">Aktionen</string> - <string name="contmenu_item_edit">Editieren</string> - <string name="contmenu_item_delete">Aus Favoriten löschen</string> - <string name="dlg_noantenna_text">Sie benötigen Kopfhörer als Antenne. Stöpseln Sie Ihren Kopfhörer ein.</string> - <string name="dlg_noantenna_title">Kopfhörer einstecken</string> - <string name="btn_yes">Ja</string> - <string name="btn_no">Nein</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Abbrechen</string> - <string name="dlg_progress_title">Suchen</string> - <string name="dlg_progress_text">Kanäle suchen...</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_station_freq">Frequenz:</string> - <string name="dlg_addedit_title_edit">Kanal editieren</string> - <string name="default_station_name">Neuer Kanal</string> - <string name="dlg_delete_confirm_title">Aus Favoriten löschen bestätigen</string> - <string name="dlg_delete_confirm_text">Wollen Sie diesen Kanal wirklich aus den Favoriten löschen?</string> - <string name="toast_favorite_full">Kann Kanal nicht zur Favoritenliste hinzufügen, da diese voll ist.</string> - <string name="toast_already_favorite">Der Kanal existiert bereits in der Favoritenliste.</string> - <string name="toast_channel_deleted">Erfolgreich aus den Favoriten gelöscht.</string> - <string name="toast_channel_added">Erfolgreich den Favoriten hinzugefügt.</string> - <string name="toast_channel_searched">Suche aus verfügbaren Kanälen:</string> - <string name="toast_cannot_search">Suche aus verfügbaren Kanälen nicht möglich.</string> - <string name="toast_invalid_frequency">Ungültige Frequenz für momentanen Standort Gültiger Frequenzbereich: 87,5-108,0</string> - <string name="toast_invalid_input">Letzte ungültige Eingabe, gültige Werte sind 0 oder 5.</string> - <string name="optmenu_rds_settings">RDS-Einstellungen</string> - <string name="dlg_rds_settings_channel_information">Kanal-Information</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativfrequenz</string> - <string name="sound_mode">Sound-Modus</string> - <string name="more">Mehr</string> - <string name="power">Leistung</string> - <string name="toast_in_call">Sie können, wenn Sie telefonieren, das FM-Radio nicht starten.</string> - <string name="empty_list">Kanalliste ist leer.</string> - <string name="edit_frequency_overwrite_text">Überschreiben</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Stöpseln Sie den Ohrhörer ein, um ihn als Antenne zu verwenden.</string> - <string name="fm_recorder_name">FM-Recorder</string> - <string name="toast_recording_lost_warning">Da die SD-Karte entfernt wurde, geht die Aufnahme verloren.</string> - <string name="toast_start_recording">Aufnahme wird gestartet...</string> - <string name="toast_sdcard_missing">Ihre SD-Karte fehlt!</string> - <string name="toast_sdcard_insufficient_space">Platz auf SD-Karte reicht nicht aus!</string> - <string name="toast_recorder_internal_error">Interner Aufnahmefehler!</string> - <string name="toast_player_internal_error">Interner Wiedergabefehler!</string> - <string name="toast_powerup_before_record_warning">FM erst einschalten!</string> - <string name="optmenu_record">FM aufnehmen</string> - <string name="btn_save_recording">Speichern</string> - <string name="btn_discard_recording">Verwerfen</string> - <string name="edit_recording_name_hint">Hier Dateinamen eingeben</string> - <string name="dlg_save_recording_title">Aufnahmedatei speichern</string> - <string name="dlg_save_recording_storage_warning">Unzureichender Speicherplatz! Do you want to save current recording?</string> - <string name="already_exists">Existiert bereits</string> - <string name="optmenu_speaker">Lautsprecher</string> - <string name="optmenu_earphone">Kopfhörer</string> - <string name="not_available">Momentan nicht verfügbar</string> - <string name="add_to_favorite1">Zu gespeicherten Kanälen hinzufügen</string> - <string name="contmenu_item_delete1">Aus gespeicherten Kanälen löschen</string> - <string name="dlg_delete_confirm_title1">Aus gespeicherten Kanälen löschen betätigen</string> - <string name="dlg_delete_confirm_text1">Wollen Sie diesen Kanal wirklich aus den gespeicherten Kanälen löschen?</string> - <string name="toast_favorite_full1">Kann Kanal nicht zur Liste der gespeicherten Kanäle hinzufügen, da diese voll ist.</string> - <string name="toast_already_favorite1">Der Kanal existiert bereits in der Liste der gespeicherten Kanäle.</string> - <string name="toast_channel_deleted1">Erfolgreich aus den gespeicherten Kanälen gelöscht.</string> - <string name="toast_channel_added1">Erfolgreich zu den gespeicherten Kanälen hinzugefügt.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-de/strings.xml b/MediaTek/FmRadio/res/values-de/strings.xml deleted file mode 100755 index a317db7..0000000 --- a/MediaTek/FmRadio/res/values-de/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-Übertragung</string> - <string name="favorite_manager">Senderliste</string> - <string name="add_to_favorite">Zu Favoriten hinzufügen</string> - <string name="optmenu_search">Suche</string> - <string name="optmenu_exit">Ausgang</string> - <string name="contmenu_title">Vorgänge</string> - <string name="contmenu_item_edit">Bearbeiten</string> - <string name="contmenu_item_delete">Aus Favoriten entfernen</string> - <string name="dlg_noantenna_text">Sie benötigen einen Kopfhörer als Antenne. Bitte schließen Sie Ihren Kopfhörer an.</string> - <string name="dlg_noantenna_title">Kopfhörer anschließen</string> - <string name="btn_yes">Ja</string> - <string name="btn_no">Nein</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Abbrechen</string> - <string name="dlg_progress_title">Suchen</string> - <string name="dlg_progress_text">Kanalsuche…</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_station_freq">Häufigkeit:</string> - <string name="dlg_addedit_title_edit">Kanal bearbeiten</string> - <string name="default_station_name">Neuer Kanal</string> - <string name="dlg_delete_confirm_title">Löschung des Senders bestätigen</string> - <string name="dlg_delete_confirm_text">Möchten Sie diesen Sender wirklich löschen?</string> - <string name="toast_favorite_full">Der Sender kann nicht zur Favoritenliste hinzugefügt werden, da die Liste voll ist.</string> - <string name="toast_already_favorite">Dieser Sender befindet sich bereits in der Favoritenliste.</string> - <string name="toast_channel_deleted">Erfolgreich aus Favoriten entfernt.</string> - <string name="toast_channel_added">Erfolgreich zu Favoriten hinzugefügt.</string> - <string name="toast_channel_searched">Entdeckte verfügbare Kanäle:</string> - <string name="toast_cannot_search">Suche nach verfügbarem Kanal nicht möglich.</string> - <string name="optmenu_rds_settings">RDS-Einstellungen</string> - <string name="dlg_rds_settings_channel_information">Kanalinformationen</string> - <string name="dlg_rds_settings_alternative_frequency">Alternative Frequenz</string> - <string name="more">Mehr Apps</string> - <string name="power">Potenz</string> - <string name="sound_mode">Klangmodus</string> - <string name="edit_frequency_overwrite_text">"Überschreiben"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Kopfhörer zur Nutzung als Radioantenne anschließen.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">UKW-Rekorder</string> - <string name="toast_recording_lost_warning">Ihre Aufzeichnung geht beim Entfernen der SD-Karte verloren!</string> - <string name="toast_start_recording">Aufzeichnung starten…</string> - <string name="toast_sdcard_missing">Ihre SD-Karte fehlt!</string> - <string name="toast_sdcard_insufficient_space">Nicht genügend Platz auf der SD-Karte!</string> - <string name="toast_recorder_internal_error">Im Recorder ist ein interner Fehler aufgetreten!</string> - <string name="toast_player_internal_error">Im Player ist ein interner Fehler aufgetreten!</string> - <string name="toast_powerup_before_record_warning">Bitte zuerst UKW einschalten!</string> - <string name="optmenu_record">UKW aufnehmen</string> - <string name="btn_save_recording">Speichern</string> - <string name="btn_discard_recording">Verwerfen</string> - <string name="edit_recording_name_hint">Hier Dateinamen eingeben</string> - <string name="dlg_save_recording_title">Aufzeichnungsdatei speichern</string> - <string name="dlg_save_recording_storage_warning">Nicht genügend Speicher! Möchten Sie die aktuelle Aufzeichnung speichern?</string> - <string name="already_exists">Existiert bereits</string> - <string name="toast_invalid_frequency">Ungültige Frequenz für aktuellen Standort. Gültiger Frequenzbereich: 87,5-108,0.</string> - <string name="toast_invalid_input">Die letzte Eingabe war ungültig, gültiger Wert: 0 oder 5.</string> - <string name="toast_in_call">Sie können das UKW-Radio während eines Telefonats nicht starten.</string> - <string name="empty_list">Kanalliste ist leer.</string> - <string name="optmenu_speaker">"Lautsprecher"</string> - <string name="optmenu_earphone">Headset</string> - <string name="not_available">Derzeit nicht verfügbar</string> - <string name="add_to_favorite1">Zu voreingestellten Kanälen hinzufügen</string> - <string name="contmenu_item_delete1">Aus voreingestellten Kanälen entfernen</string> - <string name="dlg_delete_confirm_title1">Entfernung aus voreingestellten Kanälen bestätigen</string> - <string name="dlg_delete_confirm_text1">Möchten Sie diesen Kanal wirklich aus den voreingestellten Kanälen entfernen?</string> - <string name="toast_favorite_full1">Der Kanal kann nicht zur Liste voreingestellter Kanäle hinzugefügt werden, da diese voll ist.</string> - <string name="toast_already_favorite1">Dieser Kanal ist bereits in der Liste voreingestellter Kanäle.</string> - <string name="toast_channel_deleted1">Erfolgreich aus voreingestellten Kanälen entfernt.</string> - <string name="toast_channel_added1">Erfolgreich zu voreingestellten Kanälen hinzufügt.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-el/strings.xml b/MediaTek/FmRadio/res/values-el/strings.xml deleted file mode 100755 index 1fdf094..0000000 --- a/MediaTek/FmRadio/res/values-el/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Ραδιόφωνο FM</string> - <string name="favorite_manager">Λίστα καναλιών</string> - <string name="add_to_favorite">Προσθήκη στα αγαπημένα</string> - <string name="optmenu_search">Αναζήτηση</string> - <string name="optmenu_exit">Έξοδος</string> - <string name="contmenu_title">Λειτουργίες</string> - <string name="contmenu_item_edit">Επεξεργασία</string> - <string name="contmenu_item_delete">Κατάργηση από τα αγαπημένα</string> - <string name="dlg_noantenna_text">Χρειάζεται ένα ακουστικό για κεραία. Συνδέστε το ακουστικό σας.</string> - <string name="dlg_noantenna_title">Συνδέστε τα ακουστικά</string> - <string name="btn_yes">Ναι</string> - <string name="btn_no">Όχι</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Άκυρο</string> - <string name="dlg_progress_title">Σάρωση</string> - <string name="dlg_progress_text">Σάρωση καναλιών...</string> - <string name="dlg_addedit_station_name">Όνομα:</string> - <string name="dlg_addedit_station_freq">Συχνότητα:</string> - <string name="dlg_addedit_title_edit">Επεξεργασία καναλιού</string> - <string name="default_station_name">Νέο κανάλι</string> - <string name="dlg_delete_confirm_title">Επιβεβαίωση κατάργησης από τα αγαπημένα</string> - <string name="dlg_delete_confirm_text">Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το κανάλι από τα αγαπημένα;</string> - <string name="toast_favorite_full">Δεν είναι δυνατή η προσθήκη του καναλιού στη λίστα αγαπημένων, επειδή είναι πλήρης.</string> - <string name="toast_already_favorite">Αυτό το κανάλι βρίσκεται ήδη στη λίστα αγαπημένων.</string> - <string name="toast_channel_deleted">Καταργήθηκε από τα αγαπημένα με επιτυχία.</string> - <string name="toast_channel_added">Προστέθηκε στα αγαπημένα με επιτυχία.</string> - <string name="toast_channel_searched">Έγινε αναζήτηση διαθέσιμων καναλιών:</string> - <string name="toast_cannot_search">Δεν είναι δυνατή η αναζήτηση διαθέσιμων καναλιών.</string> - <string name="toast_invalid_frequency">Μη έγκυρη συχνότητα για την τρέχουσα τοποθεσία. Έγκυρο εύρος συχνοτήτων: 87,5-108,0.</string> - <string name="optmenu_rds_settings">Ρυθμίσεις RDS</string> - <string name="dlg_rds_settings_channel_information">Πληροφορίες καναλιού</string> - <string name="dlg_rds_settings_alternative_frequency">Εναλλακτική συχνότητα</string> - <string name="sound_mode">Λειτουργία ήχου</string> - <string name="more">Περισσότερες εφαρμογές</string> - <string name="power">υψωμένο στη δύναμη</string> - <string name="edit_frequency_overwrite_text">"Αντικατάσταση"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Συνδέστε τα ακουστικά σας που λειτουργούν ως κεραία ραδιοφώνου. </string> - <!-- For FM recording --> - <string name="fm_recorder_name">Πρόγραμμα εγγραφής FM</string> - <string name="toast_recording_lost_warning">Η εγγραφή σας θα χαθεί λόγω αφαίρεσης της κάρτας SD!</string> - <string name="toast_start_recording">Έναρξη εγγραφής...</string> - <string name="toast_sdcard_missing">Η κάρτα SD λείπει!</string> - <string name="toast_sdcard_insufficient_space">Ανεπαρκής χώρος στην κάρτα SD!</string> - <string name="toast_recorder_internal_error">Παρουσιάστηκε εσωτερικό σφάλμα στο πρόγραμμα εγγραφής!</string> - <string name="toast_player_internal_error">Παρουσιάστηκε εσωτερικό σφάλμα στο πρόγραμμα αναπαραγωγής!</string> - <string name="toast_powerup_before_record_warning">Πρώτα ενεργοποιήστε τα FM!</string> - <string name="optmenu_record">Εγγραφή FM</string> - <string name="btn_save_recording">Αποθήκευση</string> - <string name="btn_discard_recording">Απόρριψη</string> - <string name="edit_recording_name_hint">Πληκτρολογήστε εδώ το όνομα αρχείου</string> - <string name="dlg_save_recording_title">Αποθήκευση αρχείου εγγραφής</string> - <string name="dlg_save_recording_storage_warning">Ανεπαρκής χώρος αποθήκευσης! Θέλετε να αποθηκεύσετε την τρέχουσα εγγραφή;</string> - <string name="already_exists">υπάρχει ήδη</string> - <string name="toast_invalid_input">Η τελευταία μη έγκυρη εισαγωγή, οι έγκυρες τιμές είναι 0 ή 5.</string> - <string name="toast_in_call">Δεν είναι δυνατή η εκκίνηση της εφαρμογής "Ραδιόφωνο FM" ενώ βρίσκεται σε εξέλιξη κλήση.</string> - <string name="empty_list">Η λίστα καναλιών είναι κενή.</string> - <string name="optmenu_speaker">"Ηχείο"</string> - <string name="optmenu_earphone">Ακουστικά</string> - <string name="not_available">Επί του παρόντος δεν είναι διαθέσιμη</string> - <string name="add_to_favorite1">Προσθήκη στα προκαθορισμένα κανάλια</string> - <string name="contmenu_item_delete1">Κατάργηση από τα προκαθορισμένα κανάλια</string> - <string name="dlg_delete_confirm_title1">Επιβεβαίωση κατάργησης από τα προκαθορισμένα κανάλια</string> - <string name="dlg_delete_confirm_text1">Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτό το κανάλι από τα προκαθορισμένα κανάλια;</string> - <string name="toast_favorite_full1">Δεν είναι δυνατή η προσθήκη αυτού του καναλιού στη λίστα προκαθορισμένων καναλιών, επειδή είναι πλήρης.</string> - <string name="toast_already_favorite1">Αυτό το κανάλι βρίσκεται ήδη στη λίστα προκαθορισμένων καναλιών.</string> - <string name="toast_channel_deleted1">Η κατάργηση από τα προκαθορισμένα κανάλια ολοκληρώθηκε με επιτυχία.</string> - <string name="toast_channel_added1">Η προσθήκη στα προκαθορισμένα κανάλια ολοκληρώθηκε με επιτυχία.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-en-rGB/strings.xml b/MediaTek/FmRadio/res/values-en-rGB/strings.xml deleted file mode 100755 index adfec38..0000000 --- a/MediaTek/FmRadio/res/values-en-rGB/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM Radio</string> - <string name="favorite_manager">Channel list</string> - <string name="add_to_favorite">Add to Favourites</string> - <string name="optmenu_search">Search</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">Operations</string> - <string name="contmenu_item_edit">Edit</string> - <string name="contmenu_item_delete">Remove from favourites</string> - <string name="dlg_noantenna_text">You need an earphone cable as an antenna. Please plug in your earphone.</string> - <string name="dlg_noantenna_title">Plug in earphone</string> - <string name="btn_yes">"Yes"</string> - <string name="btn_no">"No"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Cancel</string> - <string name="dlg_progress_title">Search</string> - <string name="dlg_progress_text">Search channels...</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_station_freq">Frequency:</string> - <string name="dlg_addedit_title_edit">Edit Channel</string> - <string name="default_station_name">New Channel</string> - <string name="dlg_delete_confirm_title">Confirm remove from favourites</string> - <string name="dlg_delete_confirm_text">Are you sure you want to remove this channel from favourites?</string> - <string name="toast_favorite_full">Cannot add channel to favourites because list is full.</string> - <string name="toast_already_favorite">This channel is already in the favourites list.</string> - <string name="toast_channel_deleted">Successfully removed from favourites.</string> - <string name="toast_channel_added">Successfully added to favourites.</string> - <string name="toast_channel_searched">Searched all available channels:</string> - <string name="toast_cannot_search">Cannot search all available channels.</string> - <string name="toast_invalid_frequency">Invalid frequency for current location. Valid frequency range: 87,5 - 108,0</string> - <string name="toast_invalid_input">Last input invalid, valid value is 0 or 5.</string> - <string name="optmenu_rds_settings">RDS settings</string> - <string name="dlg_rds_settings_channel_information">Channel information</string> - <string name="dlg_rds_settings_alternative_frequency">Alternative frequency</string> - <string name="sound_mode">Sound mode</string> - <string name="more">"More"</string> - <string name="power">"Power"</string> - <string name="toast_in_call">Cannot launch FM Radio with a call in progress.</string> - <string name="empty_list">Channel list is empty.</string> - <string name="edit_frequency_overwrite_text">Overwrite</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Plug in earphones, lead acts as radio antenna.</string> - <string name="fm_recorder_name">FM Recorder</string> - <string name="toast_recording_lost_warning">Your recording will be lost if SD is removed!</string> - <string name="toast_start_recording">Start recording...</string> - <string name="toast_sdcard_missing">Your SD card is missing!</string> - <string name="toast_sdcard_insufficient_space">Insufficient space on SD card!</string> - <string name="toast_recorder_internal_error">Internal record error!</string> - <string name="toast_player_internal_error">Internal play error!</string> - <string name="toast_powerup_before_record_warning">Please power up FM first!</string> - <string name="optmenu_record">Record FM</string> - <string name="btn_save_recording">"Save"</string> - <string name="btn_discard_recording">Discard</string> - <string name="edit_recording_name_hint">Type file name here</string> - <string name="dlg_save_recording_title">Save recorded file</string> - <string name="dlg_save_recording_storage_warning">Insufficient storage! Do you want to save current recording?</string> - <string name="already_exists">already exists</string> - <string name="optmenu_speaker">Speaker</string> - <string name="optmenu_earphone">Earphone</string> - <string name="not_available">Currently not available</string> - <string name="add_to_favorite1">Add to preset channels</string> - <string name="contmenu_item_delete1">Remove from preset channels</string> - <string name="dlg_delete_confirm_title1">Confirm remove from preset channels</string> - <string name="dlg_delete_confirm_text1">Are you sure you want to remove this preset channel?</string> - <string name="toast_favorite_full1">Cannot add channel because preset list is full.</string> - <string name="toast_already_favorite1">This channel is already in the preset channel list.</string> - <string name="toast_channel_deleted1">Successfully removed from preset channels.</string> - <string name="toast_channel_added1">Successfully added to preset channels.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-en-rIN/strings.xml b/MediaTek/FmRadio/res/values-en-rIN/strings.xml deleted file mode 100755 index b4d31e1..0000000 --- a/MediaTek/FmRadio/res/values-en-rIN/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM Radio</string> - <string name="dlg_progress_title">Search</string> - <string name="btn_yes">Yes</string> - <string name="optmenu_speaker">Speaker</string> - <string name="edit_frequency_overwrite_text">Overwrite</string> - <string name="toast_start_recording">Start recording...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Channel list is empty.</string> - <string name="optmenu_rds_settings">RDS settings</string> - <string name="toast_channel_searched">Searched out available channels:</string> - <string name="already_exists">already exists</string> - <string name="dlg_noantenna_title">Plug in earphone</string> - <string name="add_to_favorite">Add to Favorite</string> - <string name="toast_sdcard_insufficient_space">Insufficient SD card space!</string> - <string name="dlg_delete_confirm_title">Confirm removal from favorites</string> - <string name="optmenu_record">Record FM</string> - <string name="optmenu_earphone">Earphone</string> - <string name="sound_mode">Sound mode</string> - <string name="toast_already_favorite">This channel is already in favorite list.</string> - <string name="not_available">Currently not available</string> - <string name="toast_channel_deleted">Successfully removed from favorites.</string> - <string name="toast_channel_added">Successfully added to favorites.</string> - <string name="dlg_rds_settings_channel_information">Channel information</string> - <string name="toast_favorite_full">Cannot add the channel to favorite list because it is full.</string> - <string name="btn_save_recording">Save</string> - <string name="optmenu_search">Search</string> - <string name="dlg_rds_settings_alternative_frequency">Alternative frequency</string> - <string name="dlg_progress_text">Search channels...</string> - <string name="optmenu_exit">Exit</string> - <string name="more">More</string> - <string name="btn_discard_recording">Discard</string> - <string name="contmenu_item_edit">Edit</string> - <string name="toast_cannot_search">Cannot search available channel.</string> - <string name="dlg_save_recording_storage_warning">Insufficient storage! Do you want to save current recording?</string> - <string name="toast_in_call">You can not launch FM Radio when you are in call.</string> - <string name="dlg_addedit_station_freq">Frequency:</string> - <string name="toast_recorder_internal_error">An internal error occured in recorder!</string> - <string name="dlg_save_recording_title">Save recording file</string> - <string name="btn_ok">OK</string> - <string name="power">Power</string> - <string name="contmenu_item_delete">Remove from favorites</string> - <string name="toast_powerup_before_record_warning">Please switch on FM first!</string> - <string name="fm_recorder_name">FM Recorder</string> - <string name="toast_recording_lost_warning">Your recording will be lost due to SD removal!</string> - <string name="dlg_delete_confirm_text">Are you sure you want to remove this channel from favorites?</string> - <string name="default_station_name">New Channel</string> - <string name="btn_cancel">Cancel</string> - <string name="contmenu_title">Operations</string> - <string name="btn_no">No</string> - <string name="favorite_manager">Channel list</string> - <string name="toast_invalid_frequency">Invalid frequency for current location. Valid frequency scope: 87.5-108.0</string> - <string name="toast_sdcard_missing">Your SD card is missing!</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_title_edit">Edit Channel</string> - <string name="toast_invalid_input">The last invalid input, valid value is 0 or 5.</string> - <string name="edit_recording_name_hint">Type file name here</string> - <string name="dlg_noantenna_text">You need an earphone as antenna. Please plug in your earphone.</string> - <string name="toast_player_internal_error">An internal error occured in player!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-en-rUS/strings.xml b/MediaTek/FmRadio/res/values-en-rUS/strings.xml deleted file mode 100755 index 043c43f..0000000 --- a/MediaTek/FmRadio/res/values-en-rUS/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM Radio</string> - <string name="favorite_manager">Channel list</string> - <string name="add_to_favorite">Add to Favorite</string> - <string name="optmenu_search">Search</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">Operations</string> - <string name="contmenu_item_edit">Edit</string> - <string name="contmenu_item_delete">Remove from favorites</string> - <string name="dlg_noantenna_text">You need an earphone as antenna. Please plug in your earphone.</string> - <string name="dlg_noantenna_title">Plug in earphone</string> - <string name="btn_yes">Yes</string> - <string name="btn_no">No</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Cancel</string> - <string name="dlg_progress_title">Search</string> - <string name="dlg_progress_text">Search channels...</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_station_freq">Frequency:</string> - <string name="dlg_addedit_title_edit">Edit Channel</string> - <string name="default_station_name">New Channel</string> - <string name="dlg_delete_confirm_title">Confirm remove from favorites</string> - <string name="dlg_delete_confirm_text">Are you sure you want to remove this channel from favorites?</string> - <string name="toast_favorite_full">Cannot add the channel to favorite list because it is full.</string> - <string name="toast_already_favorite">This channel is already in favorite list.</string> - <string name="toast_channel_deleted">Successfully removed from favorites.</string> - <string name="toast_channel_added">Successfully added to favorites.</string> - <string name="toast_channel_searched">Searched out available channels:</string> - <string name="toast_cannot_search">Cannot search out available channel.</string> - <string name="toast_invalid_frequency">Invalid frequency for current location. Valid frequency scope: 87.5-108.0</string> - <string name="toast_invalid_input">The last invalid input, valid value is 0 or 5.</string> - <string name="optmenu_rds_settings">RDS settings</string> - <string name="dlg_rds_settings_channel_information">Channel information</string> - <string name="dlg_rds_settings_alternative_frequency">Alternative frequency</string> - <string name="sound_mode">Sound mode</string> - <string name="more">More</string> - <string name="power">Power</string> - <string name="toast_in_call">You can not launch FM Radio when you are in call.</string> - <string name="empty_list">Channel list is empty.</string> - <string name="optmenu_speaker">Speaker</string> - <string name="optmenu_earphone">Earphone</string> - <string name="edit_frequency_overwrite_text">Overwrite</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Plug in your earphones to use as a radio antenna.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM Recorder</string> - <string name="toast_recording_lost_warning">Your recording will be lost due to SD removal!</string> - <string name="toast_start_recording">Start recording...</string> - <string name="toast_sdcard_missing">Your SD card is missing!</string> - <string name="toast_sdcard_insufficient_space">Insufficient SD card space!</string> - <string name="toast_recorder_internal_error">An internal error occured in recorder!</string> - <string name="toast_player_internal_error">An internal error occured in player!</string> - <string name="toast_powerup_before_record_warning">Please power up FM first!</string> - <string name="optmenu_record">Record FM</string> - <string name="btn_save_recording">Save</string> - <string name="btn_discard_recording">Discard</string> - <string name="edit_recording_name_hint">Type file name here</string> - <string name="dlg_save_recording_title">Save recording file</string> - <string name="dlg_save_recording_storage_warning">Insufficient storage! Do you want to save current recording?</string> - <string name="already_exists">already exists</string> - <string name="not_available">Currently not available</string> - <string name="add_to_favorite1">Add to preset channels</string> - <string name="contmenu_item_delete1">Remove from preset channels</string> - <string name="dlg_delete_confirm_title1">Confirm remove from preset channels</string> - <string name="dlg_delete_confirm_text1">Are you sure you want to remove this channel from preset channels?</string> - <string name="toast_favorite_full1">Cannot add the channel to preset channel list because it is full.</string> - <string name="toast_already_favorite1">This channel is already in preset channel list.</string> - <string name="toast_channel_deleted1">Successfully removed from preset channels.</string> - <string name="toast_channel_added1">Successfully added to preset channels.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-es-rUS/strings.xml b/MediaTek/FmRadio/res/values-es-rUS/strings.xml deleted file mode 100755 index 73abb52..0000000 --- a/MediaTek/FmRadio/res/values-es-rUS/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Radio FM</string> - <string name="favorite_manager">Lista de canales</string> - <string name="add_to_favorite">Añadir a Favoritos</string> - <string name="optmenu_search">Buscar</string> - <string name="optmenu_exit">Salir</string> - <string name="contmenu_title">Operaciones</string> - <string name="contmenu_item_edit">Editar</string> - <string name="contmenu_item_delete">Eliminar desde favoritos</string> - <string name="dlg_noantenna_text">Precisa un auricular como antena. Enchufe su auricular.</string> - <string name="dlg_noantenna_title">Enchufe auricular</string> - <string name="btn_yes">"Sí"</string> - <string name="btn_no">"No"</string> - <string name="btn_ok">Aceptar</string> - <string name="btn_cancel">Cancelar</string> - <string name="dlg_progress_title">Buscar</string> - <string name="dlg_progress_text">Buscar canales...</string> - <string name="dlg_addedit_station_name">Nombre:</string> - <string name="dlg_addedit_station_freq">Frecuencia:</string> - <string name="dlg_addedit_title_edit">Editar Canal</string> - <string name="default_station_name">Nuevo Canal</string> - <string name="dlg_delete_confirm_title">Confirmar eliminar de favoritos</string> - <string name="dlg_delete_confirm_text">¿Está seguro que desea eliminar este canal de favoritos?</string> - <string name="toast_favorite_full">No puede añadir el canal a la lista de favoritos porque está llena.</string> - <string name="toast_already_favorite">Este canal ya está en la lista de favoritos.</string> - <string name="toast_channel_deleted">Eliminado de favoritos con éxito.</string> - <string name="toast_channel_added">Añadido a favoritos con éxito.</string> - <string name="toast_channel_searched">Canales disponibles buscados:</string> - <string name="toast_cannot_search">No pueden buscarse los canales disponibles.</string> - <string name="toast_invalid_frequency">Frecuencia inválida para la ubicación actual. Ámbito de frecuencia inválida: 87,5-108,0</string> - <string name="toast_invalid_input">La última entrada inválida, el valor válido es 0 o 5.</string> - <string name="optmenu_rds_settings">Configuración RDS</string> - <string name="dlg_rds_settings_channel_information">Información de canal</string> - <string name="dlg_rds_settings_alternative_frequency">Frecuencia alternativa</string> - <string name="sound_mode">Modo de sonido</string> - <string name="more">"Más"</string> - <string name="power">"potencia"</string> - <string name="toast_in_call">No puede lanzar la Radio FM cuando está en una llamada.</string> - <string name="empty_list">La lista de canales está vacía.</string> - <string name="edit_frequency_overwrite_text">Sobrescribir</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Enchufar los auriculares para utilizar como antena de radio.</string> - <string name="fm_recorder_name">Grabadora FM</string> - <string name="toast_recording_lost_warning">¡Su grabación se perderá debido a la remoción de la SD!</string> - <string name="toast_start_recording">Iniciar grabación...</string> - <string name="toast_sdcard_missing">¡Falta su Tarjeta SD!</string> - <string name="toast_sdcard_insufficient_space">¡Espacio de tarjeta SD insuficiente!</string> - <string name="toast_recorder_internal_error">¡Ocurrió un error interno en la grabadora!</string> - <string name="toast_player_internal_error">¡Ocurrió un error interno en la reproductora!</string> - <string name="toast_powerup_before_record_warning">¡Inicie FM primero!</string> - <string name="optmenu_record">Grabar FM</string> - <string name="btn_save_recording">"Guardar"</string> - <string name="btn_discard_recording">Descartar</string> - <string name="edit_recording_name_hint">Ingresar el nombre del archivo aquí</string> - <string name="dlg_save_recording_title">Guardar archivo de grabación</string> - <string name="dlg_save_recording_storage_warning">¡Almacenamiento insuficiente! ¿Desea usted guardar la grabación actual?</string> - <string name="already_exists">ya existe</string> - <string name="optmenu_speaker">Altavoz</string> - <string name="optmenu_earphone">Auricular</string> - <string name="not_available">Actualmente no disponible</string> - <string name="add_to_favorite1">Añadir a los canales preseleccionados</string> - <string name="contmenu_item_delete1">Eliminar de canales preprogramados</string> - <string name="dlg_delete_confirm_title1">Confirmar eliminar de canales preconfigurados</string> - <string name="dlg_delete_confirm_text1">¿Está seguro que desea eliminar este canal de canales preconfigurados?</string> - <string name="toast_favorite_full1">No puede añadir el canal a la lista de canales preconfigurados porque está llena.</string> - <string name="toast_already_favorite1">Este canal ya está en la lista de favoritos preconfigurados.</string> - <string name="toast_channel_deleted1">Eliminado de canales preconfigurados con éxito.</string> - <string name="toast_channel_added1">Añadido a canales preconfigurados con éxito.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-es/strings.xml b/MediaTek/FmRadio/res/values-es/strings.xml deleted file mode 100755 index 1722396..0000000 --- a/MediaTek/FmRadio/res/values-es/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Transmisión FM</string> - <string name="favorite_manager">Lista de canales</string> - <string name="add_to_favorite">Agregar a favoritos</string> - <string name="optmenu_search">Búsqueda</string> - <string name="optmenu_exit">Salir</string> - <string name="contmenu_title">Operaciones</string> - <string name="contmenu_item_edit">Editar</string> - <string name="contmenu_item_delete">Quitar de favoritos</string> - <string name="dlg_noantenna_text">Necesita unos auriculares como antena. Enchufe los auriculares.</string> - <string name="dlg_noantenna_title">Enchufar el auricular</string> - <string name="btn_yes">Si</string> - <string name="btn_no">No</string> - <string name="btn_ok">Aceptar</string> - <string name="btn_cancel">Cancelar</string> - <string name="dlg_progress_title">Buscar</string> - <string name="dlg_progress_text">Buscar canales...</string> - <string name="dlg_addedit_station_name">Nombre:</string> - <string name="dlg_addedit_station_freq">Frecuencia: </string> - <string name="dlg_addedit_title_edit">Canal editar</string> - <string name="default_station_name">Canal nuevo</string> - <string name="dlg_delete_confirm_title">Confirmar eliminación de canal</string> - <string name="dlg_delete_confirm_text">¿Está seguro de que desea eliminar este canal?</string> - <string name="toast_favorite_full">No se puede agregar el canal a la lista de favoritos porque está llena.</string> - <string name="toast_already_favorite">Este canal ya está en la lista de favoritos.</string> - <string name="toast_channel_deleted">Se quitó de los favoritos correctamente.</string> - <string name="toast_channel_added">Se agregó a los favoritos correctamente.</string> - <string name="toast_channel_searched">Canales disponibles encontrados:</string> - <string name="toast_cannot_search">No se puede encontrar el canal disponible.</string> - <string name="optmenu_rds_settings">Configurar RDS</string> - <string name="dlg_rds_settings_channel_information">Información del canal</string> - <string name="dlg_rds_settings_alternative_frequency">Frecuencia alternativa</string> - <string name="more">Más aplicaciones</string> - <string name="power">potencia</string> - <string name="sound_mode">Modo de sonido</string> - <string name="edit_frequency_overwrite_text">"Sobrescribir"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Enchufe los auriculares para utilizarlos como antena de radio.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">Grabadora de FM</string> - <string name="toast_recording_lost_warning">¡La grabación se perderá debido a la eliminación de la tarjeta SD!</string> - <string name="toast_start_recording">Iniciar grabación…</string> - <string name="toast_sdcard_missing">La tarjeta SD no está presente!</string> - <string name="toast_sdcard_insufficient_space">¡Espacio en tarjeta SD insuficiente!</string> - <string name="toast_recorder_internal_error">¡Error interno en la grabadora!</string> - <string name="toast_player_internal_error">¡Error interno en el reproductor!</string> - <string name="toast_powerup_before_record_warning">¡Active primero FM!</string> - <string name="optmenu_record">Grabar FM</string> - <string name="btn_save_recording">Guardar</string> - <string name="btn_discard_recording">Descartar</string> - <string name="edit_recording_name_hint">Escribir aquí el nombre de archivo</string> - <string name="dlg_save_recording_title">Guardar archivo de grabación</string> - <string name="dlg_save_recording_storage_warning">¡Almacenamiento insuficiente! ¿Desea guardar la grabación actual?</string> - <string name="already_exists">Ya existe</string> - <string name="toast_invalid_frequency">Frecuencia no válida para la ubicación actual. Intervalo válido de frecuencias: 87,5-108,0.</string> - <string name="toast_invalid_input">La última entrada no es válida, un valor válido es 0 o 5.</string> - <string name="toast_in_call">No puede ejecutar la radio FM durante una llamada.</string> - <string name="empty_list">La lista de canales está vacía.</string> - <string name="optmenu_speaker">"Altavoz"</string> - <string name="optmenu_earphone">Auriculares</string> - <string name="not_available">Actualmente no disponible</string> - <string name="add_to_favorite1">Agregar a canales predefinidos</string> - <string name="contmenu_item_delete1">Quitar desde canales predefinidos</string> - <string name="dlg_delete_confirm_title1">Confirmar la eliminación desde canales predefinidos</string> - <string name="dlg_delete_confirm_text1">¿Está seguro de que desea quitar este canal desde los canales predefinidos?</string> - <string name="toast_favorite_full1">No se puede agregar el canal a la lista de canales predefinidos porque está llena.</string> - <string name="toast_already_favorite1">Este canal ya está en la lista de canales predefinidos.</string> - <string name="toast_channel_deleted1">La eliminación desde los canales predefinidos se realizó correctamente.</string> - <string name="toast_channel_added1">La adición a los canales predefinidos se realizó correctamente.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-et-rEE/strings.xml b/MediaTek/FmRadio/res/values-et-rEE/strings.xml deleted file mode 100755 index db8035e..0000000 --- a/MediaTek/FmRadio/res/values-et-rEE/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM raadio</string> - <string name="dlg_progress_title">Otsi</string> - <string name="btn_yes">Jah</string> - <string name="optmenu_speaker">Kõlar</string> - <string name="edit_frequency_overwrite_text">Kirjuta üle</string> - <string name="toast_start_recording">Alusta salvestamist...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Kanalite loend on tühi.</string> - <string name="optmenu_rds_settings">RDS seaded</string> - <string name="toast_channel_searched">Otsiti välja saadaolevad kanalid:</string> - <string name="already_exists">on juba olemas</string> - <string name="dlg_noantenna_title">Ühenda kõrvaklapid</string> - <string name="add_to_favorite">Lisa Lemmikutesse</string> - <string name="toast_sdcard_insufficient_space">SD kaardil pole piisavalt ruumi!</string> - <string name="dlg_delete_confirm_title">Kinnita lemmikutest eemaldamine</string> - <string name="optmenu_record">Salvesta FM</string> - <string name="optmenu_earphone">Kõrvaklapid</string> - <string name="sound_mode">Helirežiim</string> - <string name="toast_already_favorite">See kanal on juba lemmikute loendis.</string> - <string name="not_available">Ei ole praegu saadaval</string> - <string name="toast_channel_deleted">Lemmikutest eemaldamine õnnestus.</string> - <string name="toast_channel_added">Lemmikutesse lisamine õnnestus.</string> - <string name="dlg_rds_settings_channel_information">Kanali teave</string> - <string name="toast_favorite_full">Ei saa lisada kanalit lemmikute loendisse, kuna see on täis.</string> - <string name="btn_save_recording">Salvesta</string> - <string name="optmenu_search">Otsi</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatiivne sagedus</string> - <string name="dlg_progress_text">Otsi kanaleid...</string> - <string name="optmenu_exit">Välju</string> - <string name="more">Veel</string> - <string name="btn_discard_recording">Likvideeri</string> - <string name="contmenu_item_edit">Redigeeri</string> - <string name="toast_cannot_search">Ei saa saadaolevat kanalit välja otsida.</string> - <string name="dlg_save_recording_storage_warning">Pole piisavalt mälu! Kas soovid praeguse salvestuse salvestada?</string> - <string name="toast_in_call">Sa ei saa käivitada FM raadiot helistamise ajal.</string> - <string name="dlg_addedit_station_freq">Sagedus:</string> - <string name="toast_recorder_internal_error">Salvestil ilmnes sisetõrge!</string> - <string name="dlg_save_recording_title">Salvesta salvestusfail</string> - <string name="btn_ok">OK</string> - <string name="power">Võimsus</string> - <string name="contmenu_item_delete">Eemalda lemmikutest</string> - <string name="toast_powerup_before_record_warning">Lülita kõigepealt FM sisse!</string> - <string name="no_antenna_info">Ühendage kõrvaklapid, et kasutada neid raadioantennina.</string> - <string name="fm_recorder_name">FM salvesti</string> - <string name="toast_recording_lost_warning">Sinu salvestus läheb SD eemaldamise tõttu kaotsi!</string> - <string name="dlg_delete_confirm_text">Kas soovid kindlasti selle kanali lemmikutest eemaldada?</string> - <string name="default_station_name">Uus kanal</string> - <string name="btn_cancel">Loobu</string> - <string name="contmenu_title">Toimingud</string> - <string name="btn_no">Ei</string> - <string name="favorite_manager">Kanalite loend</string> - <string name="toast_invalid_frequency">Vigane sagedus praeguse asukoha jaoks. Kehtiv sagedusulatus: 87,5-108,0</string> - <string name="toast_sdcard_missing">SD kaart puudub!</string> - <string name="dlg_addedit_station_name">Nimi:</string> - <string name="dlg_addedit_title_edit">Redigeeri kanalit</string> - <string name="toast_invalid_input">Viimane vigane sisestus, õige väärtus on 0 või 5.</string> - <string name="edit_recording_name_hint">Sisesta faili nimi siin</string> - <string name="dlg_noantenna_text">Sa vajad kõrvaklappe antenniks. Ühenda oma kõrvaklapid.</string> - <string name="toast_player_internal_error">Pleieril ilmnes sisetõrge!</string> - <string name="add_to_favorite1">Lisa eelseatud kanalitesse</string> - <string name="contmenu_item_delete1">Eemalda eelseatud kanalitest</string> - <string name="dlg_delete_confirm_title1">Kinnita eelseatud kanalitest eemaldamine</string> - <string name="dlg_delete_confirm_text1">Kas soovid kindlasti selle kanali eelseatud kanalitest eemaldada?</string> - <string name="toast_favorite_full1">Ei saa lisada kanalit eelseatud kanalite loendisse, kuna see on täis.</string> - <string name="toast_already_favorite1">See kanal on juba eelseatud kanalite loendis.</string> - <string name="toast_channel_deleted1">Eelseatud kanalitest eemaldamine õnnestus.</string> - <string name="toast_channel_added1">Eelseatud kanalitesse lisamine õnnestus.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-fa/strings.xml b/MediaTek/FmRadio/res/values-fa/strings.xml deleted file mode 100755 index 868031a..0000000 --- a/MediaTek/FmRadio/res/values-fa/strings.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">راديو FM</string> - <string name="favorite_manager">فهرست کانال</string> - <string name="add_to_favorite">افزودن به علاقمندی</string> - <string name="optmenu_search">جستجو</string> - <string name="optmenu_exit">خروج</string> - <string name="contmenu_title">عمليات</string> - <string name="contmenu_item_edit">ويرايش</string> - <string name="contmenu_item_delete">حذف از موارد موردعلاقه </string> - <string name="dlg_noantenna_text">شما به هدفون در نقش آنتن نیاز دارید. لطفا گوشی خود را وصل کنید.</string> - <string name="dlg_noantenna_title">هدفون را وارد کنيد</string> - <string name="btn_yes">بله</string> - <string name="btn_no">خير</string> - <string name="btn_ok">تاييد</string> - <string name="btn_cancel">لغو</string> - <string name="dlg_progress_title">اسکن</string> - <string name="dlg_progress_text">اسکن کانال ها...</string> - <string name="dlg_addedit_station_name">نام:</string> - <string name="dlg_addedit_station_freq">تکرار:</string> - <string name="dlg_addedit_title_edit">ويرايش کانال</string> - <string name="default_station_name">کانال جديد</string> - <string name="dlg_delete_confirm_title">تاييد حذف کانال</string> - <string name="dlg_delete_confirm_text">آيا از حذف اين کانال مطمئن هستيد؟</string> - <string name="toast_favorite_full">افزودن کانال به فهرست علاقمندی ممکن نيست زيرا فهرست پر است.</string> - <string name="toast_already_favorite">اين کانال هم اکنون در فهرست علاقمندی موجود است.</string> - <string name="toast_channel_deleted">از موارد موردعلاقه حذف شد</string> - <string name="toast_channel_added">به موارد موردعلاقه اضافه شد</string> - <string name="toast_channel_searched">کانالهای موجود پيدا شده:</string> - <string name="toast_cannot_search">کانالی يافت نشد.</string> - <string name="optmenu_rds_settings">تنظيمات RDS</string> - <string name="dlg_rds_settings_channel_information">اطلاعات کانال</string> - <string name="dlg_rds_settings_alternative_frequency">فرکانس جايگزين</string> - <string name="more">برنامههای کاربردی بیشتر</string> - <string name="power">توان</string> - <string name="sound_mode">حالت صدا</string> - <string name="fm_unit">مگاهرتز</string> - <string name="no_antenna_info">گوشی ها را وصل کنید تا از آن به عنوان آنتن رادیو استفاده شود.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"رونویسی"</string> - <string name="fm_recorder_name">ضبط FM</string> - <string name="toast_recording_lost_warning">به دلیل خارج شدن SD، مورد ضبط شده شما از بین خواهد رفت!</string> - <string name="toast_start_recording">شروع ضبط…</string> - <string name="toast_sdcard_missing">کارت SD شما وجود ندارد!</string> - <string name="toast_sdcard_insufficient_space">کارت SD شما وجود ندارد!</string> - <string name="toast_recorder_internal_error">فضای کارت SD کافی نیست!</string> - <string name="toast_player_internal_error">یک خطای داخلی در ضبط کننده رخ داد!</string> - <string name="toast_powerup_before_record_warning">لطفا ابتدا FM را روشن کنید!</string> - <string name="optmenu_record">ضبط FM</string> - <string name="btn_save_recording">ذخيره</string> - <string name="btn_discard_recording">صرفنظر</string> - <string name="edit_recording_name_hint">نام فایل را در اینجا تایپ کنید</string> - <string name="dlg_save_recording_title">ذخیره فایل ضبط</string> - <string name="dlg_save_recording_storage_warning">حافظه ناکافی! مایلید مورد ضبط شده فعلی را ذخیره کنید؟</string> - <string name="already_exists">تکراری</string> - <string name="toast_invalid_frequency">فرکانس مکان فعلی نامعتبر است. محدوده فرکانس معتبر: 87,5 تا 108,0.</string> - <string name="toast_invalid_input">آخرین ورودی نامعتبر، ارزش معتبر 0 یا 5 است.</string> - <string name="toast_in_call">زمانی که در حال مکالمه هستید نمی توانید رادیو FM را راه اندازی کنید.</string> - <string name="empty_list">لیست کانال خالی است.</string> - <string name="optmenu_speaker">"بلندگو"</string> - <string name="optmenu_earphone">هدست</string> - <string name="not_available">فعلا در دسترس نیست</string> - <string name="add_to_favorite1">افزودن به کانال های از پیش تنظیم شده</string> - <string name="contmenu_item_delete1">حذف از کانال های از پیش تنظیم شده</string> - <string name="dlg_delete_confirm_title1">حذف از کانال های از پیش تنظیم شده را تایید کنید</string> - <string name="dlg_delete_confirm_text1">آیا از حذف این کانال از کانال های از پیش تنظیم شده مطمئن هستید؟</string> - <string name="toast_favorite_full1">افزودن این کانال به فهرست کانال های از پیش تنظیم شده امکان پذیر نیست زیرا این فهرست پر است.</string> - <string name="toast_already_favorite1">این کانال در فهرست کانال های از پیش تنظیم شده موجود است.</string> - <string name="toast_channel_deleted1">با موفقیت از کانال های از پیش تنظیم شده حذف شد.</string> - <string name="toast_channel_added1">با موفقیت به کانال های از پیش تنظیم شده اضافه شد.</string> -</resources> - diff --git a/MediaTek/FmRadio/res/values-fi/strings.xml b/MediaTek/FmRadio/res/values-fi/strings.xml deleted file mode 100755 index 16d5977..0000000 --- a/MediaTek/FmRadio/res/values-fi/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-radio</string> - <string name="favorite_manager">Kanavaluettelo</string> - <string name="add_to_favorite">Lisää suosikkeihin</string> - <string name="optmenu_search">Etsi</string> - <string name="optmenu_exit">Lopeta</string> - <string name="contmenu_title">Toiminnot</string> - <string name="contmenu_item_edit">Muokkaa</string> - <string name="contmenu_item_delete">Poista suosikeista</string> - <string name="dlg_noantenna_text">Tarvitset kuulokkeet antenniksi. Liitä kuulokkeet.</string> - <string name="dlg_noantenna_title">Liitä kuuloke</string> - <string name="btn_yes">"Kyllä"</string> - <string name="btn_no">"Ei"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Peru</string> - <string name="dlg_progress_title">Etsi</string> - <string name="dlg_progress_text">Hae kanavia...</string> - <string name="dlg_addedit_station_name">Nimi:</string> - <string name="dlg_addedit_station_freq">Taajuus:</string> - <string name="dlg_addedit_title_edit">Muokkaa kanavaa</string> - <string name="default_station_name">Uusi kanava</string> - <string name="dlg_delete_confirm_title">Vahvista poistaminen suosikeista</string> - <string name="dlg_delete_confirm_text">Haluatko varmasti poistaa tämän kanavan suosikeista?</string> - <string name="toast_favorite_full">Kanavaa ei voi lisätä suosikkilistaan, koska se on täynnä.</string> - <string name="toast_already_favorite">Tämä kanava on jo suosikkilistallasi.</string> - <string name="toast_channel_deleted">Poistaminen suosikeista onnistui.</string> - <string name="toast_channel_added">Suosikkeihin lisääminen onnistui.</string> - <string name="toast_channel_searched">Haetut käytettävissä olevat kanavat:</string> - <string name="toast_cannot_search">Ei voi hakea käytettävissä olevia kanavia.</string> - <string name="toast_invalid_frequency">Väärä taajuus nykyiselle sijainnille. Kelvollinen taajuusalue: 87,5-108,0</string> - <string name="toast_invalid_input">Viimeinen virheellinen syöte, kelvollinen arvo on 0 tai 5.</string> - <string name="optmenu_rds_settings">RDS-asetukset</string> - <string name="dlg_rds_settings_channel_information">Kanavatiedot</string> - <string name="dlg_rds_settings_alternative_frequency">Vaihtoehtoinen taajuus</string> - <string name="sound_mode">Äänitila</string> - <string name="more">"Lisää"</string> - <string name="power">"potenssi"</string> - <string name="toast_in_call">Et voi käynnistää FM-radiota kesken puhelun.</string> - <string name="empty_list">Kanavaluettelo on tyhjä.</string> - <string name="edit_frequency_overwrite_text">Korvaa</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Liitä korvanapit radioantennina käytettäväksi.</string> - <string name="fm_recorder_name">FM-tallennin</string> - <string name="toast_recording_lost_warning">Tallennuksesi menetetään, koska SD-kortti irrotettiin!</string> - <string name="toast_start_recording">Käynnistä tallennus...</string> - <string name="toast_sdcard_missing">SD-kortti puuttuu!</string> - <string name="toast_sdcard_insufficient_space">SD-kortin tila ei riitä!</string> - <string name="toast_recorder_internal_error">Tallentimessa ilmeni sisäinen virhe!</string> - <string name="toast_player_internal_error">Soittimessa ilmeni sisäinen virhe!</string> - <string name="toast_powerup_before_record_warning">Käynnistä ensin FM!</string> - <string name="optmenu_record">Tallenna FM</string> - <string name="btn_save_recording">"Tallenna"</string> - <string name="btn_discard_recording">Hylkää</string> - <string name="edit_recording_name_hint">Näppäile tiedostonimi tässä</string> - <string name="dlg_save_recording_title">Tallenna tallennetiedosto</string> - <string name="dlg_save_recording_storage_warning">Tallennustila ei riitä! Haluatko tallentaa nykyisen tallenteen?</string> - <string name="already_exists">on jo olemassa</string> - <string name="optmenu_speaker">Kaiutin</string> - <string name="optmenu_earphone">Kuulokkeet</string> - <string name="not_available">Ei tällä hetkellä käytettävissä</string> - <string name="add_to_favorite1">Lisää esiasetettuihin kanaviin</string> - <string name="contmenu_item_delete1">Poista esiasetetuista kanavista</string> - <string name="dlg_delete_confirm_title1">Vahvista poistaminen esiasetetuista kanavista</string> - <string name="dlg_delete_confirm_text1">Haluatko varmasti poistaa tämän kanavan esiasetetuista kanavista?</string> - <string name="toast_favorite_full1">Kanavaa ei voi lisätä esiasetettujen kanavien luetteloon, koska se on täynnä.</string> - <string name="toast_already_favorite1">Tämä kanava on jo esiasetettujen kanavien luettelossa.</string> - <string name="toast_channel_deleted1">Poistaminen esiasetetuista kanavista onnistui.</string> - <string name="toast_channel_added1">Lisääminen esiasetettuihin kanaviin onnistui.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-fr-rCA/strings.xml b/MediaTek/FmRadio/res/values-fr-rCA/strings.xml deleted file mode 100755 index d5fe4e3..0000000 --- a/MediaTek/FmRadio/res/values-fr-rCA/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Radio FM</string> - <string name="dlg_progress_title">Recherche</string> - <string name="btn_yes">Oui</string> - <string name="optmenu_speaker">Haut-parleur</string> - <string name="edit_frequency_overwrite_text">Écraser</string> - <string name="toast_start_recording">Démarrer l\'enregistrement...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">La liste des stations est vide.</string> - <string name="optmenu_rds_settings">Paramètres RDS</string> - <string name="toast_channel_searched">Stations disponibles recherchées :</string> - <string name="already_exists">existe (ent) déjà</string> - <string name="dlg_noantenna_title">Brancher l\'écouteur</string> - <string name="add_to_favorite">Ajouter aux favoris</string> - <string name="toast_sdcard_insufficient_space">Espace insuffisant pour la carte SD!</string> - <string name="dlg_delete_confirm_title">Confirmer la suppression des favoris</string> - <string name="optmenu_record">Enregistrement FM</string> - <string name="optmenu_earphone">Écouteur</string> - <string name="sound_mode">Mode son</string> - <string name="toast_already_favorite">Cette station est déjà dans la liste des favoris.</string> - <string name="not_available">Actuellement non disponible</string> - <string name="toast_channel_deleted">Retiré avec succès des favoris.</string> - <string name="toast_channel_added">Ajouté avec succès aux favoris.</string> - <string name="dlg_rds_settings_channel_information">Informations sur la station</string> - <string name="toast_favorite_full">La station ne peut être ajoutée à la liste des favoris car celle-ci est pleine.</string> - <string name="btn_save_recording">Sauvegarder</string> - <string name="optmenu_search">Rechercher</string> - <string name="dlg_rds_settings_alternative_frequency">Fréquence alternative</string> - <string name="dlg_progress_text">Recherche de stations...</string> - <string name="optmenu_exit">Quitter</string> - <string name="more">Plus</string> - <string name="btn_discard_recording">Supprimer</string> - <string name="contmenu_item_edit">Modifier </string> - <string name="toast_cannot_search">Impossible de rechercher la station disponible.</string> - <string name="dlg_save_recording_storage_warning">Espace de stockage insuffisant! Sauvegarder l\'enregistrement en cours?</string> - <string name="toast_in_call">Impossible de démarrer la radio FM en cours d\'appel</string> - <string name="dlg_addedit_station_freq">Fréquence :</string> - <string name="toast_recorder_internal_error">Une erreur interne s\'est produite dans l\'enregistreur!</string> - <string name="dlg_save_recording_title">Sauvegarde du fichier d\'enregistrement</string> - <string name="btn_ok">OK</string> - <string name="power">Alimentation</string> - <string name="contmenu_item_delete">Suppression des favoris</string> - <string name="toast_powerup_before_record_warning">Veuillez allumer le FM d\'abord!</string> - <string name="fm_recorder_name">Enregistreur FM</string> - <string name="toast_recording_lost_warning">Votre enregistrement sera perdu en raison de l\'enlèvement SD!</string> - <string name="dlg_delete_confirm_text">Supprimer cette station des favoris?</string> - <string name="default_station_name">Nouvelle station</string> - <string name="btn_cancel">Annuler</string> - <string name="contmenu_title">Fonctionnement</string> - <string name="btn_no">Non</string> - <string name="favorite_manager">Liste des stations</string> - <string name="toast_invalid_frequency">Fréquence non valide pour l\'emplacement actuel. Gamme de fréquences valides: 87.5-108.0</string> - <string name="toast_sdcard_missing">Votre carte SD est introuvable!</string> - <string name="dlg_addedit_station_name">Nom :</string> - <string name="dlg_addedit_title_edit">Modifier la station</string> - <string name="toast_invalid_input">Dernière entrée non valide; la valeur valide est 0 ou 5.</string> - <string name="edit_recording_name_hint">Tapez le nom de fichier ici</string> - <string name="dlg_noantenna_text">Un écouteur est requis en guise d\'antenne. Veuillez brancher votre écouteur.</string> - <string name="toast_player_internal_error">Une erreur interne s\'est produite dans le lecteur!</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-fr/strings.xml b/MediaTek/FmRadio/res/values-fr/strings.xml deleted file mode 100755 index 77ff4ec..0000000 --- a/MediaTek/FmRadio/res/values-fr/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Émission FM</string> - <string name="favorite_manager">Liste des chaînes</string> - <string name="add_to_favorite">Ajouter aux favoris</string> - <string name="optmenu_search">Recherche</string> - <string name="optmenu_exit">Sortie</string> - <string name="contmenu_title">Opérations</string> - <string name="contmenu_item_edit">Modifier</string> - <string name="contmenu_item_delete">Retirer des favoris</string> - <string name="dlg_noantenna_text">"Vous avez besoin d'un casque comme antenne. Veuillez brancher votre casque d'écoute."</string> - <string name="dlg_noantenna_title">Branchez l\'écouteur</string> - <string name="btn_yes">Oui</string> - <string name="btn_no">Non</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Annuler</string> - <string name="dlg_progress_title">Rechercher</string> - <string name="dlg_progress_text">Balayer les chaînes…</string> - <string name="dlg_addedit_station_name">Nom:</string> - <string name="dlg_addedit_station_freq">Fréquence:</string> - <string name="dlg_addedit_title_edit">Modifier la chaîne </string> - <string name="default_station_name">Nouvelle chaîne</string> - <string name="dlg_delete_confirm_title">Confirmer la suppression de station</string> - <string name="dlg_delete_confirm_text">Etes-vous sûr de vouloir supprimer cette station?</string> - <string name="toast_favorite_full">Impossible d\'ajouter la station à la liste des favoris, parce qu\'elle est pleine.</string> - <string name="toast_already_favorite">Cette station est déjà dans la liste des favoris.</string> - <string name="toast_channel_deleted">Retrait des favoris réussi</string> - <string name="toast_channel_added">Ajout au favoris réussi</string> - <string name="toast_channel_searched">Canaux disponibles trouvés :</string> - <string name="toast_cannot_search">Impossible de chercher les canaux disponibles.</string> - <string name="optmenu_rds_settings">Paramètres RDS</string> - <string name="dlg_rds_settings_channel_information">Informations sur le canal</string> - <string name="dlg_rds_settings_alternative_frequency">Fréquence alternative</string> - <string name="more">Autres applications</string> - <string name="power">puissance</string> - <string name="sound_mode">Mode audio</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Branchez vos oreillettes pour les utiliser comme antenne radio.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Remplacer"</string> - <string name="fm_recorder_name">Enregistreur FM</string> - <string name="toast_recording_lost_warning">Votre enregistrement sera perdu suite au retrait de la carte SD!</string> - <string name="toast_start_recording">"Démarrer l'enregistrement…"</string> - <string name="toast_sdcard_missing">Carte SD manquante!</string> - <string name="toast_sdcard_insufficient_space">Espace insuffisant sur carte SD!</string> - <string name="toast_recorder_internal_error">"Une erreur interne est survenue dans l'enregistreur!"</string> - <string name="toast_player_internal_error">Une erreur interne est survenue dans le lecteur!</string> - <string name="toast_powerup_before_record_warning">"Veuillez d'abord allumer FM!"</string> - <string name="optmenu_record">Enregistrer FM</string> - <string name="btn_save_recording">Sauvegarder</string> - <string name="btn_discard_recording">Rejeter</string> - <string name="edit_recording_name_hint">Saisissez le nom du fichier ici</string> - <string name="dlg_save_recording_title">"Sauvegarder le fichier d'enregistrement"</string> - <string name="dlg_save_recording_storage_warning">"Stockage insuffisant! Sauvegarder l'enregistrement en cours?"</string> - <string name="already_exists">Existe déjà</string> - <string name="toast_invalid_frequency">Fréquence invalide pour cet emplacement. Plage de fréquence valide: 87,5-108,0.</string> - <string name="toast_invalid_input">Dernière saisie invalide, valeur valide de 0 ou 5.</string> - <string name="toast_in_call">"Impossible d'activer la radio FM lorsqu'un appel est en cours."</string> - <string name="empty_list">La liste des chaînes est vide.</string> - <string name="optmenu_speaker">"Haut-parleur"</string> - <string name="optmenu_earphone">"Casque d'écoute"</string> - <string name="not_available">Actuellement indisponible</string> - <string name="add_to_favorite1">Ajouter aux chaînes préréglées</string> - <string name="contmenu_item_delete1">Retirer des chaînes préréglées</string> - <string name="dlg_delete_confirm_title1">Confirmer le retrait des chaînes préréglées</string> - <string name="dlg_delete_confirm_text1">Confirmer le retrait de cette chaîne des chaînes préréglées?</string> - <string name="toast_favorite_full1">"Impossible d'ajouter la chaîne aux chaînes préréglées car liste pleine."</string> - <string name="toast_already_favorite1">Cette chaîne figure déjà dans la liste.</string> - <string name="toast_channel_deleted1">Retrait réussi des chaînes préréglées.</string> - <string name="toast_channel_added1">Ajout réussi aux chaînes préréglées.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-hi/strings.xml b/MediaTek/FmRadio/res/values-hi/strings.xml deleted file mode 100755 index 277fe06..0000000 --- a/MediaTek/FmRadio/res/values-hi/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">एफएम रेडियो</string> - <string name="favorite_manager">चैनल सूची</string> - <string name="add_to_favorite">पसंदीदा में जोड़ें</string> - <string name="optmenu_search">खोजें</string> - <string name="optmenu_exit">बाहर</string> - <string name="contmenu_title">कार्य</string> - <string name="contmenu_item_edit">संपादन</string> - <string name="contmenu_item_delete">पसंदीदा से हटाएं</string> - <string name="dlg_noantenna_text">आपको एंटिना के रूप में एक ईयरफ़ोन की जरूरत है। कृपया अपने ईयरफ़ोन का प्लग लगा लें।</string> - <string name="dlg_noantenna_title">ईयरफोन का प्लग लगाएं</string> - <string name="btn_yes">हाँ</string> - <string name="btn_no">नहीं</string> - <string name="btn_ok">ठीक</string> - <string name="btn_cancel">रद्द</string> - <string name="dlg_progress_title">स्कैन करें</string> - <string name="dlg_progress_text">चैनल स्कैन करें...</string> - <string name="dlg_addedit_station_name">नाम</string> - <string name="dlg_addedit_station_freq">आवृत्ति:</string> - <string name="dlg_addedit_title_edit">चैनल संपादित करें</string> - <string name="default_station_name">नया चैनल</string> - <string name="dlg_delete_confirm_title">डिलीट चैनल की पुष्टि करें</string> - <string name="dlg_delete_confirm_text">क्या आप निश्चित हैं कि आप यह चैनल मिटाना चाहते हैं?</string> - <string name="toast_favorite_full">चैनल को पसंदीदा सूची में नहीं जोड़ सकते क्योंकि यह भरी हुई है।</string> - <string name="toast_already_favorite">यह चैनल पहले से पसंदीदा सूची में है।</string> - <string name="toast_channel_deleted">पसंदीदा से सफलतापूर्वक हटा</string> - <string name="toast_channel_added">पसंदीदा में सफलतापूर्वक जुड़ा</string> - <string name="toast_channel_searched">उपलब्ध चैनल को खोजा गया:</string> - <string name="toast_cannot_search">उपलब्ध चैनल को सर्च नहीं कर सकता।</string> - <string name="optmenu_rds_settings">RDS सेटिंग</string> - <string name="dlg_rds_settings_channel_information">चैनल सूचना</string> - <string name="dlg_rds_settings_alternative_frequency">वैकल्पिक फ्रीक्वेंसी</string> - <string name="more">अधिक अनुप्रयोग</string> - <string name="power">घात</string> - <string name="sound_mode">ध्वनि मोड</string> - <string name="edit_frequency_overwrite_text">"ओवरराइट करें"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">इयरफ़ोन को रेडियो एंटीना के रूप में उपयोग करने के लिए प्लग-इन करें।</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM रिकॉर्डर</string> - <string name="toast_recording_lost_warning">आपकी रिकॉर्डिंग SD हटाने के कारण गुम हो जाएगी!</string> - <string name="toast_start_recording">रिकॉर्डिंग आरंभ करें…</string> - <string name="toast_sdcard_missing">आपका SD कार्ड मौजूद नहीं है!</string> - <string name="toast_sdcard_insufficient_space">अपर्याप्त SD कार्ड स्थान!</string> - <string name="toast_recorder_internal_error">रिकॉर्डर में एक आंतरिक त्रुटि घटित हुई!</string> - <string name="toast_player_internal_error">प्लेयर में एक आंतरिक त्रुटि घटित हुई!</string> - <string name="toast_powerup_before_record_warning">कृपया पहले FM को पावर अप करें!</string> - <string name="optmenu_record">FM रिकॉर्ड करें</string> - <string name="btn_save_recording">सहेजें</string> - <string name="btn_discard_recording">छोड़ें</string> - <string name="edit_recording_name_hint">फ़ाइल का नाम यहां टाइप करें</string> - <string name="dlg_save_recording_title">रिकॉर्डिंग फ़ाइल सहेजें</string> - <string name="dlg_save_recording_storage_warning">अपर्याप्त भंडारण! क्या आप वर्तमान रिकॉर्डिंग सहेजना चाहते हैं?</string> - <string name="already_exists">पहले से ही मौजूद हैं</string> - <string name="toast_invalid_frequency">वर्तमान स्थान के लिए अमान्य फ्रीक्वेंसी। मान्य फ्रीक्वेंसी विस्तार: 87.5-108.0</string> - <string name="toast_invalid_input">अंतिम अमान्य इनपुट, मान्य मान 0 या 5 है।</string> - <string name="toast_in_call">आप कॉल के दौरान FM रेडियो चालू नहीं कर सकते।</string> - <string name="empty_list">चैनल सूची खाली है।</string> - <string name="optmenu_speaker">"स्पीकर"</string> - <string name="optmenu_earphone">हेडसेट</string> - <string name="not_available">वर्तमान में उपलब्ध नहीं है</string> - <string name="add_to_favorite1">प्रीसेट चैनल में जोड़ें</string> - <string name="contmenu_item_delete1">प्रीसेट चैनल से हटाएँ</string> - <string name="dlg_delete_confirm_title1">प्रीसेट चैनल से हटाने की पुष्टि करें</string> - <string name="dlg_delete_confirm_text1">क्या आप वाकई इस चैनल को प्रीसेट चैनल से हटाना चाहते हैं?</string> - <string name="toast_favorite_full1">चैनल को प्रीसेट चैनल सूची में नहीं जोड़ सकते क्योंकि यह भरी है।</string> - <string name="toast_already_favorite1">यह चैनल पहले से ही प्रीसेट चैनल सूची में मौजूद है।</string> - <string name="toast_channel_deleted1">प्रीसेट चैनल से सफलतापूर्वक हटा।</string> - <string name="toast_channel_added1">प्रीसेट चैनल में सफलतापूर्वक जुड़ा।</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-hr/strings.xml b/MediaTek/FmRadio/res/values-hr/strings.xml deleted file mode 100755 index 5d65109..0000000 --- a/MediaTek/FmRadio/res/values-hr/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM radio</string> - <string name="favorite_manager">Popis kanala</string> - <string name="add_to_favorite">Dodaj u favorite</string> - <string name="optmenu_search">Pretraži</string> - <string name="optmenu_exit">Izlaz</string> - <string name="contmenu_title">Operacije</string> - <string name="contmenu_item_edit">Uredi</string> - <string name="contmenu_item_delete">Ukloni iz favorita</string> - <string name="dlg_noantenna_text">Potrebna je slušalica kao antena. Priključite slušalicu.</string> - <string name="dlg_noantenna_title">Priključite slušalicu</string> - <string name="btn_yes">"Da"</string> - <string name="btn_no">"Ne"</string> - <string name="btn_ok">U redu</string> - <string name="btn_cancel">Otkaži</string> - <string name="dlg_progress_title">Pretraži</string> - <string name="dlg_progress_text">Pretraži kanale...</string> - <string name="dlg_addedit_station_name">Naziv:</string> - <string name="dlg_addedit_station_freq">Frekvencija:</string> - <string name="dlg_addedit_title_edit">Uredi kanal</string> - <string name="default_station_name">Novi kanal</string> - <string name="dlg_delete_confirm_title">Potvrdi uklanjanje iz favorita</string> - <string name="dlg_delete_confirm_text">Jeste li sigurni da želite ukloniti ovaj kanal iz favorita?</string> - <string name="toast_favorite_full">Ne može se dodati kanal na popis favorita jer je on pun.</string> - <string name="toast_already_favorite">Ovaj kanal već je na popisu favorita.</string> - <string name="toast_channel_deleted">Uspješno uklonjen iz favorita.</string> - <string name="toast_channel_added">Uspješno dodan u favorite.</string> - <string name="toast_channel_searched">Pronađeni su dostupni kanali:</string> - <string name="toast_cannot_search">Ne može se pronaći dostupni kanal.</string> - <string name="toast_invalid_frequency">Neispravna frekvencija za trenutnu lokaciju. Ispravni raspon frekvencije: 87,5-108,0</string> - <string name="toast_invalid_input">Posljednji neispravni unos, ispravna vrijednost je od 0 do 5.</string> - <string name="optmenu_rds_settings">Postavke RDS-a</string> - <string name="dlg_rds_settings_channel_information">Podaci o kanalu</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativna frekvencija</string> - <string name="sound_mode">Način zvuka</string> - <string name="more">"Više"</string> - <string name="power">"snaga"</string> - <string name="toast_in_call">Ne možete pokrenuti FM Radio kada ste u pozivu.</string> - <string name="empty_list">Popis kanala je prazan.</string> - <string name="edit_frequency_overwrite_text">Presnimi</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Priključite slušalice radi korištenja kao radijske antene.</string> - <string name="fm_recorder_name">FM snimač</string> - <string name="toast_recording_lost_warning">Vaša snimka će biti izgubljena zbog uklanjanja SD kartice!</string> - <string name="toast_start_recording">Početak snimanja...</string> - <string name="toast_sdcard_missing">Nema vaše SD kartice!</string> - <string name="toast_sdcard_insufficient_space">Na SD kartici nema dovoljno mjesta!</string> - <string name="toast_recorder_internal_error">Na snimaču se pojavila unutarnja greška!</string> - <string name="toast_player_internal_error">U programu za reprodukciju se pojavila unutarnja greška!</string> - <string name="toast_powerup_before_record_warning">Prvo pokrenite FM!</string> - <string name="optmenu_record">Snimaj FM</string> - <string name="btn_save_recording">"Spremi"</string> - <string name="btn_discard_recording">Odbaci</string> - <string name="edit_recording_name_hint">Ovdje unesite naziv datoteke</string> - <string name="dlg_save_recording_title">Spremi datoteku sa snimkom</string> - <string name="dlg_save_recording_storage_warning">Nedovoljno prostora za pohranu! Želite li spremiti trenutnu snimku?</string> - <string name="already_exists">već postoji</string> - <string name="optmenu_speaker">Zvučnik</string> - <string name="optmenu_earphone">Slušalica</string> - <string name="not_available">Trenutno nije dostupno</string> - <string name="add_to_favorite1">Dodaj u unaprijed zadane kanale</string> - <string name="contmenu_item_delete1">Ukloni iz unaprijed zadanih kanala</string> - <string name="dlg_delete_confirm_title1">Potvrdite uklanjanje iz unaprijed zadanih kanala</string> - <string name="dlg_delete_confirm_text1">Jeste li sigurni da želite ukloniti ovaj kanal iz unaprijed zadanih kanala?</string> - <string name="toast_favorite_full1">Ne može se dodati kanal na popis unaprijed zadanih kanala jer je on pun.</string> - <string name="toast_already_favorite1">Ovaj kanal već je na popisu unaprijed zadanih kanala.</string> - <string name="toast_channel_deleted1">Uspješno uklonjen iz unaprijed zadanih kanala.</string> - <string name="toast_channel_added1">Uspješno dodan u unaprijed zadane kanale.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-hu/strings.xml b/MediaTek/FmRadio/res/values-hu/strings.xml deleted file mode 100755 index 06f6794..0000000 --- a/MediaTek/FmRadio/res/values-hu/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-rádió</string> - <string name="favorite_manager">Csatornalista</string> - <string name="add_to_favorite">Hozzáadás a kedvencekhez</string> - <string name="optmenu_search">Keresés</string> - <string name="optmenu_exit">Kilépés</string> - <string name="contmenu_title">Műveletek</string> - <string name="contmenu_item_edit">Szerkesztés</string> - <string name="contmenu_item_delete">Eltávolítás a kedvencek közül</string> - <string name="dlg_noantenna_text">Fülhallgató szükséges, ami antennaként működik. Csatlakoztassa a fülhallgatót.</string> - <string name="dlg_noantenna_title">Csatlakoztassa a fülhallgatót</string> - <string name="btn_yes">Igen</string> - <string name="btn_no">Nem</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Mégse</string> - <string name="dlg_progress_title">Keresés</string> - <string name="dlg_progress_text">Csatornák keresése…</string> - <string name="dlg_addedit_station_name">Név:</string> - <string name="dlg_addedit_station_freq">Gyakoriság:</string> - <string name="dlg_addedit_title_edit">Csatorna szerkesztése</string> - <string name="default_station_name">Új csatorna</string> - <string name="dlg_delete_confirm_title">Kedvencek közüli eltávolítás megerősítése</string> - <string name="dlg_delete_confirm_text">Biztosan el akarja távolítani ezt a csatornát a kedvencek közül?</string> - <string name="toast_favorite_full">A csatorna nem adható a Kedvencekhez, mert megtelt a lista.</string> - <string name="toast_already_favorite">Ez a csatorna már a Kedvencek között van.</string> - <string name="toast_channel_deleted">Sikeresen eltávolítva a kedvencek közül.</string> - <string name="toast_channel_added">Sikeresen hozzáadva a kedvencekhez.</string> - <string name="toast_channel_searched">Talált csatornák az elérhetők közül:</string> - <string name="toast_cannot_search">Nem találhatók az elérhető csatornák közül.</string> - <string name="toast_invalid_frequency">Érvénytelen frekvencia az aktuális helyen. Érvényes frekvenciatartomány: 87,5-108,0.</string> - <string name="optmenu_rds_settings">RDS-beállítások</string> - <string name="dlg_rds_settings_channel_information">Csatornainformáció</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatív frekvencia</string> - <string name="sound_mode">Hangzásmód</string> - <string name="more">További alkalmazások</string> - <string name="power">hatvány</string> - <string name="edit_frequency_overwrite_text">"Felülírás"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Dugja be a fülhallgatót, hogy rádióantennaként használhassa.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM-rögzítő</string> - <string name="toast_recording_lost_warning">A felvétel el fog veszni az SD-kártya eltávolítása miatt!</string> - <string name="toast_start_recording">Rögzítés indítása…</string> - <string name="toast_sdcard_missing">Az SD-kártya hiányzik!</string> - <string name="toast_sdcard_insufficient_space">Nincs elegendő hely az SD-kártyán!</string> - <string name="toast_recorder_internal_error">Belső hiba történt a rögzítőn!</string> - <string name="toast_player_internal_error">Belső hiba történt a lejátszón!</string> - <string name="toast_powerup_before_record_warning">Előbb kapcsolja be az FM-rádiót!</string> - <string name="optmenu_record">FM-műsor rögzítése</string> - <string name="btn_save_recording">Mentés</string> - <string name="btn_discard_recording">Elvetés</string> - <string name="edit_recording_name_hint">Ide gépelje a fájlnevet</string> - <string name="dlg_save_recording_title">Rögzített fájl mentése</string> - <string name="dlg_save_recording_storage_warning">Nincs elegendő tárhely! Menteni akarja az aktuális felvételt?</string> - <string name="already_exists">már létezik</string> - <string name="toast_invalid_input">Érvénytelen bevitel. Érvényes: 0 v. 5.</string> - <string name="toast_in_call">Az FM-rádió hívás közben nem indítható el.</string> - <string name="empty_list">A csatornalista üres.</string> - <string name="optmenu_speaker">"Hangszóró"</string> - <string name="optmenu_earphone">Fejhallgató</string> - <string name="not_available">Jelenleg nem érhető el</string> - <string name="add_to_favorite1">Hozzáadás a beállított csatornákhoz</string> - <string name="contmenu_item_delete1">Törlés a beállított csatornák közül</string> - <string name="dlg_delete_confirm_title1">Beállított csatornák közüli eltávolítás megerősítése</string> - <string name="dlg_delete_confirm_text1">Biztosan el akarja távolítani ezt a csatornát a beállított csatornák közül?</string> - <string name="toast_favorite_full1">A csatorna nem adható a beállított csatornákhoz, mert megtelt a lista.</string> - <string name="toast_already_favorite1">Ez a csatorna már a beállított csatornák között van.</string> - <string name="toast_channel_deleted1">Sikeresen eltávolítva a beállított csatornák közül.</string> - <string name="toast_channel_added1">Sikeresen hozzáadva a beállított csatornákhoz.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-hy-rAM/strings.xml b/MediaTek/FmRadio/res/values-hy-rAM/strings.xml deleted file mode 100755 index 6445587..0000000 --- a/MediaTek/FmRadio/res/values-hy-rAM/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM ռադիո</string> - <string name="dlg_progress_title">Որոնել</string> - <string name="btn_yes">Այո</string> - <string name="optmenu_speaker">Բարձրախոս</string> - <string name="edit_frequency_overwrite_text">Վրագրել</string> - <string name="toast_start_recording">Սկսել ձայնագրում...</string> - <string name="fm_unit">ՄՀց</string> - <string name="empty_list">Կապուղիների ցանկը դատարկ է:</string> - <string name="optmenu_rds_settings">RDS կարգավորումներ</string> - <string name="toast_channel_searched">Որոնված մատչելի կապուղիներ`</string> - <string name="already_exists">արդեն գոյություն ունի</string> - <string name="dlg_noantenna_title">Միացնել ականջակալ</string> - <string name="add_to_favorite">Ավելացնել Ընտրյալներին</string> - <string name="toast_sdcard_insufficient_space">SD քարտում չկա բավարար տարածք:</string> - <string name="dlg_delete_confirm_title">Հաստատել ընտրյալներից հեռացումը</string> - <string name="optmenu_record">Ձայնագրել FM</string> - <string name="optmenu_earphone">Ականջակալ</string> - <string name="sound_mode">Ձայնի ռեժիմ</string> - <string name="toast_already_favorite">Այս կապուղին արդեն ընտրյալների ցանկում է:</string> - <string name="not_available">Այժմ մատչելի չէ</string> - <string name="toast_channel_deleted">Հաջողությամբ հեռացվեց ընտրյալներից:</string> - <string name="toast_channel_added">Հաջողությամբ ավելացվեց ընտրյալներին:</string> - <string name="dlg_rds_settings_channel_information">Կապուղու տեղեկություններ</string> - <string name="toast_favorite_full">Հնարավոր չէ ավելացնել կապուղին ընտրյալների ցանկին, քանի որ այն լիքն է:</string> - <string name="btn_save_recording">Պահել</string> - <string name="optmenu_search">Որոնել</string> - <string name="dlg_rds_settings_alternative_frequency">Այլընտրական հաճախականություն</string> - <string name="dlg_progress_text">Որոնել կապուղիներ...</string> - <string name="optmenu_exit">Ելնել</string> - <string name="more">Ավելին</string> - <string name="btn_discard_recording">Ջնջել</string> - <string name="contmenu_item_edit">Խմբագրել</string> - <string name="toast_cannot_search">Հնարավոր չէ որոնել մատչելի կապուղի:</string> - <string name="dlg_save_recording_storage_warning">Ոչ բավարար պահոց: Ցանկանու՞մ եք պահել այս ձայնագրությունը:</string> - <string name="toast_in_call">Չեք կարող գործարկել FM ռադիոն, քանի դեռ զանգն ընթացքի մեջ է:</string> - <string name="dlg_addedit_station_freq">Հաճախականություն`</string> - <string name="toast_recorder_internal_error">Տեղի ունեցավ ձայնագրիչի ներքին սխալ:</string> - <string name="dlg_save_recording_title">Պահել ձայնագրության ֆայլը</string> - <string name="btn_ok">Լավ</string> - <string name="power">Հոսանք</string> - <string name="contmenu_item_delete">Հանել ընտրյալներից</string> - <string name="toast_powerup_before_record_warning">Նախ միացրեք FM-ը:</string> - <string name="fm_recorder_name">FM ձայնագրիչ</string> - <string name="toast_recording_lost_warning">Ձեր ձայնագրությունը կկորչի SD-ն հանելու պատճառով:</string> - <string name="dlg_delete_confirm_text">Համոզվա՞ծ եք, որ ցանկանում եք հեռացնել այս կապուղին ընտրյալներից:</string> - <string name="default_station_name">Նոր կապուղի</string> - <string name="btn_cancel">Չեղարկել</string> - <string name="contmenu_title">Գործողություններ</string> - <string name="btn_no">Ոչ</string> - <string name="favorite_manager">Կապուղիների ցանկ</string> - <string name="toast_invalid_frequency">Ներկա տեղադրության համար անհասանելի հաճախականություն: Հասանելի հաճախականության տիրույթ` 87.5-108.0</string> - <string name="toast_sdcard_missing">Ձեր SD քարտն առկա չէ:</string> - <string name="dlg_addedit_station_name">Անվանում`</string> - <string name="dlg_addedit_title_edit">Խմբագրել կապուղին</string> - <string name="toast_invalid_input">Վերջին անվավեր ներմուծումը, վավեր արժեք` 0-ից 5:</string> - <string name="edit_recording_name_hint">Մուտքագրել ֆայլի անվանումն այստեղ</string> - <string name="dlg_noantenna_text">Անհրաժեշտ է ականջակալ` որպես ալեհավաք: Միացրեք ականջակալը:</string> - <string name="toast_player_internal_error">Տեղի ունեցավ նվագարկիչի ներքին սխալ:</string> - <string name="no_antenna_info">Միացրեք ականջակալները` որպես ռադիոյի ալեհավաք օգտագործելու համար:</string> - <string name="add_to_favorite1">Հավելել նախակայված ալիքներին</string> - <string name="contmenu_item_delete1">Հեռացնել նախակայված ալիքներից</string> - <string name="dlg_delete_confirm_title1">Հաստատել նախակայվածներից հեռացումը</string> - <string name="dlg_delete_confirm_text1">Դուք վստա՞հ եք, որ ցանկանում եք հեռացնել այս ալիքը նախակայված ալիքներից:</string> - <string name="toast_favorite_full1">Հնարավոր չէ հավելել ալիքը նախակայված ալիքների ցուցակին, քանի որ այն լցված է:</string> - <string name="toast_already_favorite1">Այս ալիքն արդեն գտնվում է նախակայված ալիքների ցուցակում:</string> - <string name="toast_channel_deleted1">Հաջող հեռացվեց նախակայված ալիքների ցուցակից:</string> - <string name="toast_channel_added1">Հաջող հավելվեց նախակայված ալիքների ցուցակին:</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-in/strings.xml b/MediaTek/FmRadio/res/values-in/strings.xml deleted file mode 100755 index cb5d281..0000000 --- a/MediaTek/FmRadio/res/values-in/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Radio FM</string> - <string name="favorite_manager">Daftar saluran</string> - <string name="add_to_favorite">Tambahkan ke Favorit</string> - <string name="optmenu_search">Cari</string> - <string name="optmenu_exit">Keluar</string> - <string name="contmenu_title">Operasi</string> - <string name="contmenu_item_edit">Edit</string> - <string name="contmenu_item_delete">Hapus dari favorit</string> - <string name="dlg_noantenna_text">Anda memerlukan earphone sebagai antena. Pasang earphone.</string> - <string name="dlg_noantenna_title">Pasang earphone?</string> - <string name="btn_yes">Ya</string> - <string name="btn_no">Tidak</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Batal</string> - <string name="dlg_progress_title">Pindai</string> - <string name="dlg_progress_text">Pindai saluran…</string> - <string name="dlg_addedit_station_name">Nama:</string> - <string name="dlg_addedit_station_freq">Frekuensi:</string> - <string name="dlg_addedit_title_edit">Edit Saluran</string> - <string name="default_station_name">Saluran Baru</string> - <string name="dlg_delete_confirm_title">Konfirmasikan Penghapusan Saluran</string> - <string name="dlg_delete_confirm_text">Anda yakin ingin menghapus saluran ini?</string> - <string name="toast_favorite_full">Tidak dapat menambahkan saluran ke daftar favorit karena penuh.</string> - <string name="toast_already_favorite">Saluran ini sudah ada di daftar favorit.</string> - <string name="toast_channel_deleted">Berhasil dihapus dari favorit.</string> - <string name="toast_channel_added">Berhasil ditambahkan ke favorit.</string> - <string name="toast_channel_searched">Saluran tersedia yang dicari:</string> - <string name="toast_cannot_search">Tidak dapat mencari saluran yang tersedia.</string> - <string name="optmenu_rds_settings">Pengaturan RDS</string> - <string name="dlg_rds_settings_channel_information">Informasi saluran</string> - <string name="dlg_rds_settings_alternative_frequency">Frekuensi alternatif</string> - <string name="more">Aplikasi Lain</string> - <string name="power">Power</string> - <string name="sound_mode">Mode Suara</string> - <string name="edit_frequency_overwrite_text">"Timpa"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Pasang earphone untuk digunakan sebagai antena radio.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">Perekam FM</string> - <string name="toast_recording_lost_warning">Perekaman Anda akan hilang karena penghapusan SD!</string> - <string name="toast_start_recording">Mulai merekam…</string> - <string name="toast_sdcard_missing">Kartu SD Anda tidak ada!</string> - <string name="toast_sdcard_insufficient_space">Kapasitas kartu SD tidak memadai!</string> - <string name="toast_recorder_internal_error">Terjadi kesalahan internal pada perekam!</string> - <string name="toast_player_internal_error">Terjadi kesalahan internal pada pemutar!</string> - <string name="toast_powerup_before_record_warning">Aktifkan FM terlebih dulu!</string> - <string name="optmenu_record">Rekam FM</string> - <string name="btn_save_recording">Simpan</string> - <string name="btn_discard_recording">Hapus</string> - <string name="edit_recording_name_hint">Ketik nama file di sini</string> - <string name="dlg_save_recording_title">Simpan file perekaman</string> - <string name="dlg_save_recording_storage_warning">Kapasitas penyimpanan tidak memadai! Anda ingin menyimpan perekaman saat ini?</string> - <string name="already_exists">Sudah ada</string> - <string name="toast_invalid_frequency">Frekuensi tidak valid untuk lokasi saat ini. Rentang frekuensi yang valid: 87,5-10,0.</string> - <string name="toast_invalid_input">Input terakhir tidak valid, nilai valid adalah 0 atau 5.</string> - <string name="toast_in_call">Anda tidak dapat mengaktifkan Radio FM saat menangani panggilan.</string> - <string name="empty_list">Daftar saluran kosong.</string> - <string name="optmenu_speaker">"Speaker"</string> - <string name="optmenu_earphone">Headset</string> - <string name="not_available">Tidak tersedia saat ini</string> - <string name="add_to_favorite1">Tambahkan ke daftar saluran standar</string> - <string name="contmenu_item_delete1">Hapus dari daftar saluran standar</string> - <string name="dlg_delete_confirm_title1">Konfirmasikan penghapusan dari daftar saluran standar</string> - <string name="dlg_delete_confirm_text1">Anda yakin ingin menghapus saluran ini dari daftar saluran standar?</string> - <string name="toast_favorite_full1">Tidak dapat menambahkan saluran ke daftar saluran standar karena sudah penuh.</string> - <string name="toast_already_favorite1">Saluran ini sudah ada dalam daftar saluran standar.</string> - <string name="toast_channel_deleted1">Berhasil dihapus dari saluran standar.</string> - <string name="toast_channel_added1">Berhasil ditambahkan ke saluran standar.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-it/strings.xml b/MediaTek/FmRadio/res/values-it/strings.xml deleted file mode 100755 index abf9952..0000000 --- a/MediaTek/FmRadio/res/values-it/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">"Radio FM"</string> - <string name="favorite_manager">Elenco canali</string> - <string name="add_to_favorite">Aggiungi a preferiti</string> - <string name="optmenu_search">Ricerca</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">Operazioni</string> - <string name="contmenu_item_edit">Modifica</string> - <string name="contmenu_item_delete">Rimuovi dai preferiti</string> - <string name="dlg_noantenna_text">È necessario usare le cuffie come antenna. Collegare le cuffie.</string> - <string name="dlg_noantenna_title">Collegare le cuffie</string> - <string name="btn_yes">Sì</string> - <string name="btn_no">No</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Annulla</string> - <string name="dlg_progress_title">Scansione</string> - <string name="dlg_progress_text">Cerca canali...</string> - <string name="dlg_addedit_station_name">Nome:</string> - <string name="dlg_addedit_station_freq">Frequenza:</string> - <string name="dlg_addedit_title_edit">Modifica canale</string> - <string name="default_station_name">Nuovo canale</string> - <string name="dlg_delete_confirm_title">Conferma Elimina canale</string> - <string name="dlg_delete_confirm_text">Si è certi di volere eliminare questo canale?</string> - <string name="toast_favorite_full">Impossibile aggiungere il canale all’elenco dei preferiti perché è pieno.</string> - <string name="toast_already_favorite">Questo canale è già nell’elenco dei preferiti.</string> - <string name="toast_channel_deleted">Rimozione dai preferiti riuscita.</string> - <string name="toast_channel_added">Aggiunta ai preferiti riuscita.</string> - <string name="toast_channel_searched">Canali disponibili ricercati:</string> - <string name="toast_cannot_search">Impossibile ricercare i canali disponibili</string> - <string name="optmenu_rds_settings">Impostazioni RDS</string> - <string name="dlg_rds_settings_channel_information">Informazioni canale</string> - <string name="dlg_rds_settings_alternative_frequency">Frequenza alternativa</string> - <string name="more">Altra applicazione</string> - <string name="power">potenza</string> - <string name="sound_mode">Modalità audio</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Collegare le cuffie da utilizzare come antenna radio. </string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Sostituisci"</string> - <string name="fm_recorder_name">Registratore FM</string> - <string name="toast_recording_lost_warning">La registrazione andrà persa per la rimozione della scheda SD!</string> - <string name="toast_start_recording">Avvio registrazione…</string> - <string name="toast_sdcard_missing">Scheda SD mancante!</string> - <string name="toast_sdcard_insufficient_space">Spazio su scheda SD insufficiente!</string> - <string name="toast_recorder_internal_error">Errore interno nel registratore!</string> - <string name="toast_player_internal_error">Errore interno nel lettore!</string> - <string name="toast_powerup_before_record_warning">Prima accendere FM!</string> - <string name="optmenu_record">Registra FM</string> - <string name="btn_save_recording">Salva</string> - <string name="btn_discard_recording">Ignora</string> - <string name="edit_recording_name_hint">Digita qui nome file</string> - <string name="dlg_save_recording_title">Salva registrazione file</string> - <string name="dlg_save_recording_storage_warning">Memoria insufficiente! Salvare registrazione attuale?</string> - <string name="already_exists">Già presente</string> - <string name="toast_invalid_frequency">Frequenza non valida per posizione attuale. Gamma frequenza valida: 87,5-108,0.</string> - <string name="toast_invalid_input">Ultimo input non valido. Valore valido 0 o 5.</string> - <string name="toast_in_call">Non è possibile avviare la radio FM durante una chiamata.</string> - <string name="empty_list">L’elenco dei canali è vuoto.</string> - <string name="optmenu_speaker">"Altoparlante"</string> - <string name="optmenu_earphone">Cuffie</string> - <string name="not_available">Al momento non disponibile</string> - <string name="add_to_favorite1">Aggiungi a canali preselezionati</string> - <string name="contmenu_item_delete1">Rimuovi da canali preselezionati</string> - <string name="dlg_delete_confirm_title1">Conferma rimozione da canali preselezionati</string> - <string name="dlg_delete_confirm_text1">Rimuovere questo canale dai canali preselezionati?</string> - <string name="toast_favorite_full1">"Impossibile aggiungere il canale all'elenco dei canali preselezionati in quanto è pieno."</string> - <string name="toast_already_favorite1">"Canale già presente nell'elenco dei canali preselezionati."</string> - <string name="toast_channel_deleted1">Rimozione da canali preselezionati riuscita.</string> - <string name="toast_channel_added1">Aggiunta a canali preselezionati riuscita.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-iw/strings.xml b/MediaTek/FmRadio/res/values-iw/strings.xml deleted file mode 100755 index 5780a51..0000000 --- a/MediaTek/FmRadio/res/values-iw/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">רדיו FM</string> - <string name="favorite_manager">רשימת תחנות</string> - <string name="add_to_favorite">הוסף למועדפים</string> - <string name="optmenu_search">חיפוש</string> - <string name="optmenu_exit">יציאה</string> - <string name="contmenu_title">פעולות</string> - <string name="contmenu_item_edit">עריכה</string> - <string name="contmenu_item_delete">הסר מהמועדפים</string> - <string name="dlg_noantenna_text">אתה זקוק לאוזניות בתור אנטנה. חבר את האוזניות.</string> - <string name="dlg_noantenna_title">חבר את האזניות</string> - <string name="btn_yes">כן</string> - <string name="btn_no">לא</string> - <string name="btn_ok">אישור</string> - <string name="btn_cancel">ביטול</string> - <string name="dlg_progress_title">חיפוש</string> - <string name="dlg_progress_text">חיפוש תחנות...</string> - <string name="dlg_addedit_station_name">שם:</string> - <string name="dlg_addedit_station_freq">תדר:</string> - <string name="dlg_addedit_title_edit">ערוך תחנה</string> - <string name="default_station_name">תחנה חדשה</string> - <string name="dlg_delete_confirm_title">אשר הסרה מהמועדפים</string> - <string name="dlg_delete_confirm_text">האם אתה בטוח שברצונך להסיר תחנה זו מהמועדפים?</string> - <string name="toast_favorite_full">לא ניתן להוסיף את התחנה לרשימת המועדפים מכיוון שהיא מלאה.</string> - <string name="toast_already_favorite">התחנה נמצאת כבר ברשימת המועדפים.</string> - <string name="toast_channel_deleted">הוסרה בהצלחה מהמועדפים.</string> - <string name="toast_channel_added">הוספה בהצלחה למועדפים.</string> - <string name="toast_channel_searched">חיפש תחנות זמינות:</string> - <string name="toast_cannot_search">לא ניתן לחפש תחנה זמינה.</string> - <string name="toast_invalid_frequency">תדר לא חוקי למיקום הנוכחי. טווח התדרים החוקי: 87.5 - 108.0</string> - <string name="toast_invalid_input">הזנה לא חוקית, ערך חוקי הוא 0 או 5.</string> - <string name="optmenu_rds_settings">הגדרות RDS</string> - <string name="dlg_rds_settings_channel_information">פרטי תחנה</string> - <string name="dlg_rds_settings_alternative_frequency">תדר חלופי</string> - <string name="sound_mode">מצב צליל</string> - <string name="more">עוד</string> - <string name="power">בחזקת</string> - <string name="edit_frequency_overwrite_text">"החלף"</string> - <string name="fm_unit">מגה הרץ</string> - <string name="no_antenna_info">הרכב את האוזניות לשימוש כאנטנת רדיו.</string> - <string name="fm_recorder_name">מקליט FM</string> - <string name="toast_recording_lost_warning">ההקלטה תאבד בשל הסרת כרטיס ה-SD!</string> - <string name="toast_start_recording">התחל בהקלטה...</string> - <string name="toast_sdcard_missing">כרטיס ה-SD חסר!</string> - <string name="toast_sdcard_insufficient_space">אין מספיק מקום בכרטיס ה-SD!</string> - <string name="toast_recorder_internal_error">אירעה שגיאה פנימית במקליט!</string> - <string name="toast_player_internal_error">אירעה שגיאה פנימית בנגן!</string> - <string name="toast_powerup_before_record_warning">הפעל תחילה את ה-FM!</string> - <string name="optmenu_record">הקלט FM</string> - <string name="btn_save_recording">שמור</string> - <string name="btn_discard_recording">מחק</string> - <string name="edit_recording_name_hint">הקלד שם קובץ כאן</string> - <string name="dlg_save_recording_title">שמור קובץ הקלטה</string> - <string name="dlg_save_recording_storage_warning">שטח אחסון לא מספיק! האם ברצונך לשמור את ההקלטה הנוכחית?</string> - <string name="already_exists">כבר קיים</string> - <string name="toast_in_call">לא ניתן להפעיל רדיו FM בעת שיחה.</string> - <string name="empty_list">רשימת התחנות ריקה.</string> - <string name="optmenu_speaker">"רמקול"</string> - <string name="optmenu_earphone">אזניות</string> - <string name="not_available">לא זמין כעת</string> - <string name="add_to_favorite1">הוסף לתחנות שמורות</string> - <string name="contmenu_item_delete1">הסר מהתחנות השמורות</string> - <string name="dlg_delete_confirm_title1">אשר הסרה מהתחנות השמורות</string> - <string name="dlg_delete_confirm_text1">האם אתה בטוח שברצונך להסיר תחנה זו מהתחנות השמורות?</string> - <string name="toast_favorite_full1">לא ניתן להוסיף את התחנה לרשימת התחנות השמורות מכיוון שהיא מלאה.</string> - <string name="toast_already_favorite1">התחנה נמצאת כבר ברשימת התחנות השמורות.</string> - <string name="toast_channel_deleted1">הוסרה בהצלחה מהתחנות השמורות.</string> - <string name="toast_channel_added1">הוספה בהצלחה לתחנות השמורות.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-ja/strings.xml b/MediaTek/FmRadio/res/values-ja/strings.xml deleted file mode 100755 index bca98aa..0000000 --- a/MediaTek/FmRadio/res/values-ja/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FMラジオ</string> - <string name="dlg_progress_title">検索</string> - <string name="btn_yes">はい</string> - <string name="optmenu_speaker">スピーカー</string> - <string name="edit_frequency_overwrite_text">上書き</string> - <string name="toast_start_recording">録音開始...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">チャンネルリストは空です。</string> - <string name="optmenu_rds_settings">RDS設定</string> - <string name="toast_channel_searched">利用可能なチャンネルを検索:</string> - <string name="already_exists">すでに存在しています</string> - <string name="dlg_noantenna_title">イヤホンの差し込み</string> - <string name="add_to_favorite">お気に入りに追加</string> - <string name="toast_sdcard_insufficient_space">SDカード容量が不足しています!</string> - <string name="dlg_delete_confirm_title">お気に入りからの削除を確認</string> - <string name="optmenu_record">FMを録音</string> - <string name="optmenu_earphone">イヤホン</string> - <string name="sound_mode">サウンドモード</string> - <string name="toast_already_favorite">このチャンネルはすでにお気に入りリストの中にあります。</string> - <string name="not_available">現在使用できません</string> - <string name="toast_channel_deleted">お気に入りから削除されました。</string> - <string name="toast_channel_added">お気に入りに追加されました。</string> - <string name="dlg_rds_settings_channel_information">チャンネル情報</string> - <string name="toast_favorite_full">満杯のため、お気に入りリストにチャンネルを追加できません。</string> - <string name="btn_save_recording">保存</string> - <string name="optmenu_search">検索</string> - <string name="dlg_rds_settings_alternative_frequency">代替周波数</string> - <string name="dlg_progress_text">チャンネルの検索...</string> - <string name="optmenu_exit">終了</string> - <string name="more">詳細</string> - <string name="btn_discard_recording">捨てる</string> - <string name="contmenu_item_edit">編集</string> - <string name="toast_cannot_search">利用可能なチャンネルを検索できません。</string> - <string name="dlg_save_recording_storage_warning">容量が不足しています!現在の録音を保存しますか?</string> - <string name="toast_in_call">通話中にFMラジオは起動できません。</string> - <string name="dlg_addedit_station_freq">周波数:</string> - <string name="toast_recorder_internal_error">レコーダーで内部エラーが発生しました!</string> - <string name="dlg_save_recording_title">録音ファイルを保存</string> - <string name="btn_ok">OK</string> - <string name="power">電源</string> - <string name="contmenu_item_delete">お気に入りから削除</string> - <string name="toast_powerup_before_record_warning">最初にFMの電源を入れてください!</string> - <string name="fm_recorder_name">FMレコーダー</string> - <string name="toast_recording_lost_warning">SDが取り出されたため、録音は失われます!</string> - <string name="dlg_delete_confirm_text">お気に入りからこのチャンネルを削除してもよろしいですか?</string> - <string name="default_station_name">新しいチャンネル</string> - <string name="btn_cancel">キャンセル</string> - <string name="contmenu_title">操作</string> - <string name="btn_no">いいえ</string> - <string name="favorite_manager">チャンネルリスト</string> - <string name="toast_invalid_frequency">現在の場所では無効な周波数です。有効な周波数範囲:87.5-108.0</string> - <string name="toast_sdcard_missing">SDカードがありません!</string> - <string name="dlg_addedit_station_name">名前:</string> - <string name="dlg_addedit_title_edit">チャンネルの編集</string> - <string name="toast_invalid_input">最後の入力は無効です。有効な値は0または5です。</string> - <string name="edit_recording_name_hint">ここにファイル名を入力します</string> - <string name="dlg_noantenna_text">アンテナとしてイヤホンが必要です。イヤホンを差し込んでください。</string> - <string name="toast_player_internal_error">プレイヤーで内部エラーが発生しました!</string> - <string name="no_antenna_info">イヤホンを差し込み、ラジオのアンテナとして使用します。</string> - <string name="add_to_favorite1">プリセットチャンネルに追加する</string> - <string name="contmenu_item_delete1">プリセットチャンネルから外す</string> - <string name="dlg_delete_confirm_title1">プリセットチャンネルからの削除を確定する</string> - <string name="dlg_delete_confirm_text1">このチャンネルをプリセットから削除しますか?</string> - <string name="toast_favorite_full1">プリセットが一杯なので、チャンネルを追加できません。</string> - <string name="toast_already_favorite1">このチャンネルは既にプリセットに登録されています。</string> - <string name="toast_channel_deleted1">プリセットチャンネルから削除しました。</string> - <string name="toast_channel_added1">プリセットチャンネルに登録しました。</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-ka-rGE/strings.xml b/MediaTek/FmRadio/res/values-ka-rGE/strings.xml deleted file mode 100755 index 6b9e9f4..0000000 --- a/MediaTek/FmRadio/res/values-ka-rGE/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM რადიო</string> - <string name="dlg_progress_title">ძებნა</string> - <string name="btn_yes">კი</string> - <string name="optmenu_speaker">დინამიკი</string> - <string name="edit_frequency_overwrite_text">გადაწერა</string> - <string name="toast_start_recording">ჩაწერის დაწყება...</string> - <string name="fm_unit">მჰც</string> - <string name="empty_list">არხების სია ცარიელია.</string> - <string name="optmenu_rds_settings">RDS პარამეტრები</string> - <string name="toast_channel_searched">ხელმისაწვდომი არხების ძებნა დასრულებულია:</string> - <string name="already_exists">უკვე არსებობს</string> - <string name="dlg_noantenna_title">ჩართეთ ყურსასმენები</string> - <string name="add_to_favorite">ფავორიტებში დამატება</string> - <string name="toast_sdcard_insufficient_space">არასაკმარისი SD ბარათის მოცულობა!</string> - <string name="dlg_delete_confirm_title">დაადასტურეთ წაშლა ფავორიტებიდან</string> - <string name="optmenu_record">Record FM</string> - <string name="optmenu_earphone">ყურსასმენები</string> - <string name="sound_mode">ხმის რეჟიმი</string> - <string name="toast_already_favorite">ეს არხი უკვე ფავორიტების სიაში.</string> - <string name="not_available">ამჟამად არ არის ხელმისაწვდომი</string> - <string name="toast_channel_deleted">წარმატებით წაშლილია ფავორიტებიდან.</string> - <string name="toast_channel_added">წარმატებით დამატებულია ფავორიტებში.</string> - <string name="dlg_rds_settings_channel_information">ინფორმაცია არხზე</string> - <string name="toast_favorite_full">ახრის დამატება ფავორიტების სიაში ვერ მოხერხდა, რადგან ის სავსეა.</string> - <string name="btn_save_recording">დამახსოვრება</string> - <string name="optmenu_search">ძებნა</string> - <string name="dlg_rds_settings_alternative_frequency">ალტერნატიული სიხშირე</string> - <string name="dlg_progress_text">არხების ძებნა...</string> - <string name="optmenu_exit">გამოსვლა</string> - <string name="more">კიდევ</string> - <string name="btn_discard_recording">გაუქმება</string> - <string name="contmenu_item_edit">რედაქტირება</string> - <string name="toast_cannot_search">ხელმისაწვდომი არხი ვერ მოიძებნა.</string> - <string name="dlg_save_recording_storage_warning">შენახვის ადგილი არასაკმარისია! გსურთ შეინახოთ მიმდინარე ჩანაწერი?</string> - <string name="toast_in_call">თქვენ ვერ ჩართავთ FM რადიოს ზარის განხორციელების დროს.</string> - <string name="dlg_addedit_station_freq">სიხშირე:</string> - <string name="toast_recorder_internal_error">შიდა შეცდომა ჩამწერში!</string> - <string name="dlg_save_recording_title">ჩაწერილი ფაილის დამახსოვრება</string> - <string name="btn_ok">OK</string> - <string name="power">ჩართვა</string> - <string name="contmenu_item_delete">წაშლა ფავორიტებიდან</string> - <string name="toast_powerup_before_record_warning">გთხოვთ პირველ რიგში ჩართოთ FM!</string> - <string name="fm_recorder_name">FM ჩამწერი</string> - <string name="toast_recording_lost_warning">თქვენი ჩანაწერი დაიკარგება SD ამოღების შემთხვევაში!</string> - <string name="dlg_delete_confirm_text">დარწმუნებული ხართ, რომ გსურთ ამ არხის წაშლა ფავორიტებიდან?</string> - <string name="default_station_name">ახალი არხი</string> - <string name="btn_cancel">გაუქმება</string> - <string name="contmenu_title">ოპერაციები</string> - <string name="btn_no">არა</string> - <string name="favorite_manager">არხების სია</string> - <string name="toast_invalid_frequency">არასწორი სიხშირე მიმდინარე ადგილსთვის. ძალაშია სიხშირის ფარგლებში: 87.5-108.0</string> - <string name="toast_sdcard_missing">თქვენი SD ბარათი არ არის დაყენებული!</string> - <string name="dlg_addedit_station_name">დასახელება:</string> - <string name="dlg_addedit_title_edit">არხის რედაქტირება</string> - <string name="toast_invalid_input">ბოლო არასწორად შეყვანილი მნიშვნელობა, სწორი მნიშვნელობა არის 0 ან 5.</string> - <string name="edit_recording_name_hint">აქრიფეთ აქ ფაილის დასახელება</string> - <string name="dlg_noantenna_text">თქვენ გჭირდებათ ყურსასმენები ანტენის სახით. გთხოვთ ჩართოთ თქვენს ყურსასმენები.</string> - <string name="toast_player_internal_error">შიდა შეცდომა ფლეერში!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-kk/strings.xml b/MediaTek/FmRadio/res/values-kk/strings.xml deleted file mode 100755 index 1b189e5..0000000 --- a/MediaTek/FmRadio/res/values-kk/strings.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="app_name">FM радио</string> - <string name="favorite_manager">Арна тізімі</string> - <string name="add_to_favorite">Сүйіктілерге қосу</string> - <string name="add_to_favorite1">Алдын ала орнатылған арналарға қосу</string> - <string name="optmenu_search">Іздеу</string> - <string name="optmenu_exit">Шығу</string> - <string name="contmenu_title">Әрекеттер</string> - <string name="contmenu_item_edit">Өңдеу</string> - <string name="contmenu_item_delete">Таңдаулылар қатарынан өшіру</string> - <string name="contmenu_item_delete1">Алдын ала орнатылған арналардан жою</string> - <string name="dlg_noantenna_text">Антенна ретінде құлаққап қажет. Құлаққабыңызды жалғаңыз.</string> - <string name="dlg_noantenna_title">Құлаққабыңызды жалғаңыз</string> - <string name="btn_yes">Иә</string> - <string name="btn_no">Жоқ</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Болдырмау</string> - <string name="dlg_progress_title">Іздеу</string> - <string name="dlg_progress_text">Арналарды іздеу...</string> - <string name="dlg_addedit_station_name">Атауы:</string> - <string name="dlg_addedit_station_freq">Жиілігі:</string> - <string name="dlg_addedit_title_edit">Арнаны өңдеу</string> - <string name="default_station_name">Жаңа арна</string> - <string name="dlg_delete_confirm_title">Сүйіктілерден жоюды растау</string> - <string name="dlg_delete_confirm_title1">Алдын ала орнатылған арналар тізімінен жоюды растау</string> - <string name="dlg_delete_confirm_text">Бұл арнаны сүйіктілерден жою қажет пе?</string> - <string name="dlg_delete_confirm_text1">Бұл арнаны алдын ала орнатылған арналар тізімінен жою қажет пе?</string> - <string name="toast_favorite_full">Арнаны сүйіктілер тізіміне қосу мүмкін емес, тізім толып кетті.</string> - <string name="toast_favorite_full1">Арнаны алдын ала орнатылған арналар тізіміне қосу мүмкін емес, тізім толып кетті.</string> - <string name="toast_already_favorite">Бұл арна бұрыннан сүйіктілер тізімінде.</string> - <string name="toast_already_favorite1">Бұл арна бұрыннан алдын ала орнатылған арналар тізімінде.</string> - <string name="toast_channel_deleted">Сүйіктілер тізімінен сәтті жойылды.</string> - <string name="toast_channel_deleted1">Алдын ала орнатылған арналар тізімінен сәтті жойылды.</string> - <string name="toast_channel_added">Сүйіктілер тізіміне сәтті қосылды.</string> - <string name="toast_channel_added1">Алдын ала орнатылған арналар тізіміне сәтті қосылды.</string> - <string name="toast_channel_searched">Табылған қолжетімді арналар:</string> - <string name="toast_cannot_search">Қолжетімді арнаны табу мүмкін емес.</string> - <string name="toast_invalid_frequency">Ағымдағы орын үшін жарамсыз жиіліг. Жарамды жиілік ауқымы: 87,5-108,0</string> - <string name="toast_invalid_input">Соңғы жарамсыз енгізілім, жарамды мән 0 немесе 5.</string> - <string name="optmenu_rds_settings">RDS параметрлері</string> - <string name="dlg_rds_settings_channel_information">Арна ақпараты</string> - <string name="dlg_rds_settings_alternative_frequency">Балама жиілік</string> - <string name="sound_mode">Дыбыс режимі</string> - <string name="more">Қосымша параметрлер</string> - <string name="power">Қуат</string> - <string name="toast_in_call">Қоңырау кезінде FM радионы қосу мүмкін емес.</string> - <string name="empty_list">Арналар тізімі бос.</string> - <string name="edit_frequency_overwrite_text">Қайта жазу</string> - <string name="fm_unit">МГц</string> - <string name="no_antenna_info">Құлаққабыңызды жалғаңыз</string> - <string name="fm_recorder_name">FM жазу құрылғысы</string> - <string name="toast_recording_lost_warning">Жазба SD картасының шығарылуына байланысты жоғалады!</string> - <string name="toast_start_recording">Жазуды іске қосу...</string> - <string name="toast_sdcard_missing">SD картасы жоқ!</string> - <string name="toast_sdcard_insufficient_space">SD картасында бос орын жоқ!</string> - <string name="toast_recorder_internal_error">Жазу құралында ішкі қате орын алды!</string> - <string name="toast_player_internal_error">Ойнатқышта ішкі қате орын алды!</string> - <string name="toast_powerup_before_record_warning">Алдымен FM қабылдағышын қосыңыз!</string> - <string name="optmenu_record">FM жазу</string> - <string name="btn_save_recording">Сақтау</string> - <string name="btn_discard_recording">Жою</string> - <string name="edit_recording_name_hint">Файл атауын мұнда енгізіңіз</string> - <string name="dlg_save_recording_title">Жазылған файлды сақтау</string> - <string name="dlg_save_recording_storage_warning">Бос орын жеткіліксіз! Ағымдағы жазуды сақтау қажет пе?</string> - <string name="already_exists">бұрыннан бар</string> - <string name="optmenu_speaker">Динамик</string> - <string name="optmenu_earphone">Құлаққап</string> - <string name="not_available">Ағымдағы уақытта қолжетімсіз</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-km-rKH/strings.xml b/MediaTek/FmRadio/res/values-km-rKH/strings.xml deleted file mode 100755 index af446c1..0000000 --- a/MediaTek/FmRadio/res/values-km-rKH/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">វិទ្យុ FM</string> - <string name="favorite_manager">បញ្ជីប៉ុស្ត៍វិទ្យុ</string> - <string name="add_to_favorite">បន្ថែមទៅក្នុងបញ្ជីចំណូលចិត្ត</string> - <string name="optmenu_search">រាវរក</string> - <string name="optmenu_exit">ចាកចេញ</string> - <string name="contmenu_title">ប្រតិបត្តិការ</string> - <string name="contmenu_item_edit">កែសម្រួល</string> - <string name="contmenu_item_delete">លុបចេញពីបញ្ជីចំណូលចិត្ត</string> - <string name="dlg_noantenna_text">អ្នកត្រូវការកាសស្តាប់ត្រចៀកធ្វើជាអង់តែន ។ សូមស៊កបញ្ចូលកាសស្តាប់ត្រចៀករបស់អ្នក ។</string> - <string name="dlg_noantenna_title">ស៊កឧបករណ៍ស្តាប់ត្រចៀកចូល</string> - <string name="btn_yes">បាទ</string> - <string name="btn_no">ទេ</string> - <string name="btn_ok">យល់ព្រម</string> - <string name="btn_cancel">លើកលែង</string> - <string name="dlg_progress_title">រាវរក</string> - <string name="dlg_progress_text">រាវរកប៉ុស្តិ៍ ...</string> - <string name="dlg_addedit_station_name">ឈ្មោះ ៖</string> - <string name="dlg_addedit_station_freq">ហ្វេ្រកង់ ៖</string> - <string name="dlg_addedit_title_edit">កែសម្រួលប៉ុស្តិ៍</string> - <string name="default_station_name">ប៉ុស្តិ៍ថ្មី</string> - <string name="dlg_delete_confirm_title">បញ្ជាក់ការលុបចោលពីបញ្ជីចំណូលចិត្ត</string> - <string name="dlg_delete_confirm_text">តើប្រាកដទេថាអ្នកចង់លុបប៉ុស្តិ៍នេះចោលពីបញ្ជីចំណូលចិត្ត?</string> - <string name="toast_favorite_full">មិនអាចបន្ថែមប៉ុស្តិ៍ទៅក្នុងបញ្ជីចំណូលចិត្ត ដោយសាវាពេញហើយ ។</string> - <string name="toast_already_favorite">ប៉ុស្តិ៍នេះស្ថិតនៅក្នុងបញ្ជីចំណូលចិត្តរួចហើយ ។</string> - <string name="toast_channel_deleted">បានលុបចោលពីបញ្ជីចំណូលចិត្តដោយជោគជ័យ ។</string> - <string name="toast_channel_added">បានបន្ថែមទៅក្នុងបញ្ជីចំណូលចិត្តដោយជោគជ័យ ។</string> - <string name="toast_channel_searched">រាវរកប៉ុស្តិ៍ផ្សេងៗដែលមាន ៖</string> - <string name="toast_cannot_search">មិនអាចរាវរកប៉ុស្តិ៍ដែលមានបានឡើយ ។</string> - <string name="toast_invalid_frequency">ហ្វ្រេកង់គ្មានសុពលភាពសម្រាប់ទីតាំងបច្ចុប្បន្ន ។ វិសាលភាពនៃហ្វ្រេកង់ដែលមានសុពលភាព ៖ 87.5-108.0</string> - <string name="toast_invalid_input">បញ្ចូលតម្លៃដែលគ្មានសុពលភាព ។ តម្លៃដែលមានសុពលភាពគឺ 0 ឬ 5 ។</string> - <string name="optmenu_rds_settings">ការសិត RDS</string> - <string name="dlg_rds_settings_channel_information">ព័ត៌មានប៉ុស្តិ៍</string> - <string name="dlg_rds_settings_alternative_frequency">ហ្វ្រេកង់ផ្សេងទៀត</string> - <string name="sound_mode">ម៉ូដសម្លេង</string> - <string name="more">បន្ថែមទៀត</string> - <string name="power">ស្វ័យគុណ</string> - <string name="edit_frequency_overwrite_text">សរសេរពីលើ</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">ដោតកាសស្ដាប់អ្នកដើម្បីប្រើជាអង់តែនវិទ្យុ។</string> - <string name="fm_recorder_name">ឧបករណ៍ថតសម្លេង FM</string> - <string name="toast_recording_lost_warning">ការថតសម្លេងរបស់អ្នកនឹងត្រូវបាត់បង់ ដោយសារអ្នកបានដក SD ចេញ!</string> - <string name="toast_start_recording">ចាប់ផ្តើមការថតសម្លេង ...</string> - <string name="toast_sdcard_missing">កាត SD របស់អ្នកបានបាត់!</string> - <string name="toast_sdcard_insufficient_space">កន្លែងនៅក្នុងកាត SD មិនគ្រប់គ្រាន់!</string> - <string name="toast_recorder_internal_error">កំហុសខាងក្នុងបានកើតឡើង នៅក្នុងឧបករណ៍ថតសម្លេង!</string> - <string name="toast_player_internal_error">កំហុសខាងក្នុងបានកើតឡើង នៅក្នុងឧបករណ៍ចាក់សម្លេង!</string> - <string name="toast_powerup_before_record_warning">សូមបើក FM ជាមុនសិន!</string> - <string name="optmenu_record">ថតសម្លេង FM</string> - <string name="btn_save_recording">រក្សាទុក</string> - <string name="btn_discard_recording">បោះចោល</string> - <string name="edit_recording_name_hint">វាយឈ្មោះឯកសារនៅទីនេះ</string> - <string name="dlg_save_recording_title">រក្សាទុកឯកសារដែលបានថត</string> - <string name="dlg_save_recording_storage_warning">កន្លែងផ្ទុកមិនគ្រប់គ្រាន់! តើអ្នកចង់រក្សាទុកនូវសម្លេងដែលកំពុងថតមែនទេ?</string> - <string name="already_exists">មានរួចហើយ</string> - <string name="toast_in_call">អ្នកមិនអាចបើកវិទ្យុ FM បានទេពេលអ្នកកំពុងហៅ ។</string> - <string name="empty_list">បញ្ជីប៉ុស្តិ៍ទទេ ។</string> - <string name="optmenu_speaker">ឧបល័រ</string> - <string name="optmenu_earphone">កាសស្តាប់ត្រចៀក</string> - <string name="not_available">បច្ចុប្បន្នមិនអាចរកបានទេ</string> - <string name="add_to_favorite1">បន្ថែមទៅក្នុងការសិតប៉ុស្តិ៍វិទ្យុឡើងវិញ</string> - <string name="contmenu_item_delete1">លុបចេញពីក្នុងការសិតប៉ុស្តិ៍វិទ្យុឡើងវិញ</string> - <string name="dlg_delete_confirm_title1">បញ្ជាក់ការលុបចោលពីក្នុងការសិតប៉ុស្តិ៍ឡើងវិញ</string> - <string name="dlg_delete_confirm_text1">តើប្រាកដទេថាអ្នកចង់លុបប៉ុស្តិ៍នេះចេញពីក្នុងការសិតប៉ុស្តិ៍ឡើងវិញ?</string> - <string name="toast_favorite_full1">មិនអាចបន្ថែមប៉ុស្តិ៍ទៅក្នុងការសិតប៉ុស្តិ៍លើងវិញ ដោយសាវាពេញហើយ ។</string> - <string name="toast_already_favorite1">ប៉ុស្តិ៍នេះស្ថិតនៅក្នុងបញ្ជីសិតប៉ុស្តិ៍ឡើងវិញរួចហើយ ។</string> - <string name="toast_channel_deleted1">បានលុបចោលពីបញ្ជីសិតប៉ុស្តិ៍ឡើងវិញដោយជ០គជ័យ ។</string> - <string name="toast_channel_added1">បានបន្ថែមទៅក្នុងបញ្ជីសិតប៉ុស្តិ៍ឡើងវិញដោយជោគជ័យ ។</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-ko/strings.xml b/MediaTek/FmRadio/res/values-ko/strings.xml deleted file mode 100755 index 839ae90..0000000 --- a/MediaTek/FmRadio/res/values-ko/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM 라디오</string> - <string name="favorite_manager">채널 목록</string> - <string name="add_to_favorite">즐겨찾기에 추가</string> - <string name="optmenu_search">검색</string> - <string name="optmenu_exit">종료</string> - <string name="contmenu_title">작업</string> - <string name="contmenu_item_edit">편집</string> - <string name="contmenu_item_delete">즐겨찾기에서 제거</string> - <string name="dlg_noantenna_text">안테나로 이어폰이 필요합니다. 이어폰을 연결하십시오.</string> - <string name="dlg_noantenna_title">이어폰에 연결</string> - <string name="btn_yes">예</string> - <string name="btn_no">아니요</string> - <string name="btn_ok">확인</string> - <string name="btn_cancel">취소</string> - <string name="dlg_progress_title">검색</string> - <string name="dlg_progress_text">채널을 검색하는 중...</string> - <string name="dlg_addedit_station_name">이름:</string> - <string name="dlg_addedit_station_freq">주파수:</string> - <string name="dlg_addedit_title_edit">주파수 편집</string> - <string name="default_station_name">새 주파수</string> - <string name="dlg_delete_confirm_title">즐겨찾기에서 제거 확인</string> - <string name="dlg_delete_confirm_text">이 채널을 즐겨찾기에서 제거하시겠습니까?</string> - <string name="toast_favorite_full">즐겨찾기 목록이 가득 차서 채널을 추가할 수 없습니다.</string> - <string name="toast_already_favorite">이 채널은 이미 즐겨찾기 목록에 있습니다.</string> - <string name="toast_channel_deleted">즐겨찾기에서 성공적으로 제거되었습니다.</string> - <string name="toast_channel_added">즐겨찾기에 성공적으로 추가되었습니다.</string> - <string name="toast_channel_searched">검색된 사용 가능한 채널:</string> - <string name="toast_cannot_search">사용 가능한 채널을 검색할 수 없습니다.</string> - <string name="toast_invalid_frequency">현재 위치에 대한 잘못된 주파수. 유효한 주파수 범위: 87.5-108.0</string> - <string name="toast_invalid_input">잘못된 입력, 유효한 값은 0 또는 5입니다.</string> - <string name="optmenu_rds_settings">RDS 설정</string> - <string name="dlg_rds_settings_channel_information">채널 정보</string> - <string name="dlg_rds_settings_alternative_frequency">대체 주파수</string> - <string name="sound_mode">사운드 모드</string> - <string name="more">자세히</string> - <string name="power">거듭제곱</string> - <string name="edit_frequency_overwrite_text">"덮어쓰기"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">이어폰을 연결하여 라디오 안테나로서 사용하십시오.</string> - <string name="fm_recorder_name">FM 레코더</string> - <string name="toast_recording_lost_warning">SD 제거로 인해 녹음이 손실됩니다!</string> - <string name="toast_start_recording">녹음 시작...</string> - <string name="toast_sdcard_missing">SD 카드가 없습니다!</string> - <string name="toast_sdcard_insufficient_space">SD 카드 공간이 부족합니다!</string> - <string name="toast_recorder_internal_error">레코더에서 내부 오류가 발생했습니다!</string> - <string name="toast_player_internal_error">플레이어에서 내부 오류가 발생했습니다!</string> - <string name="toast_powerup_before_record_warning">먼저 FM 전원을 켜십시오!</string> - <string name="optmenu_record">FM 녹음</string> - <string name="btn_save_recording">저장</string> - <string name="btn_discard_recording">폐기</string> - <string name="edit_recording_name_hint">여기에 파일 이름을 입력</string> - <string name="dlg_save_recording_title">녹음 파일 저장</string> - <string name="dlg_save_recording_storage_warning">저장 공간이 부족합니다! 현재 녹음을 저장하시겠습니까?</string> - <string name="already_exists">이미 존재합니다</string> - <string name="toast_in_call">통화 중에는 FM 라디오를 시작할 수 없습니다.</string> - <string name="empty_list">채널 목록이 비어 있습니다.</string> - <string name="optmenu_speaker">"스피커"</string> - <string name="optmenu_earphone">헤드폰</string> - <string name="not_available">현재 사용할 수 없음</string> - <string name="add_to_favorite1">사전설정 채널에 추가</string> - <string name="contmenu_item_delete1">사전설정 채널에서 제거</string> - <string name="dlg_delete_confirm_title1">사전설정 채널에서 제거 확인</string> - <string name="dlg_delete_confirm_text1">이 채널을 사전설정 채널에서 제거하시겠습니까?</string> - <string name="toast_favorite_full1">사전설정 채널 목록이 가득 차서 채널을 추가할 수 없습니다.</string> - <string name="toast_already_favorite1">이 채널은 이미 사전설정 채널 목록에 있습니다.</string> - <string name="toast_channel_deleted1">사전설정 채널에서 성공적으로 제거되었습니다.</string> - <string name="toast_channel_added1">사전설정 채널에 성공적으로 추가되었습니다.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-lo-rLA/strings.xml b/MediaTek/FmRadio/res/values-lo-rLA/strings.xml deleted file mode 100755 index 6911328..0000000 --- a/MediaTek/FmRadio/res/values-lo-rLA/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">ວິທະຍຸ FM</string> - <string name="dlg_progress_title">ຊອກຫາ</string> - <string name="btn_yes">ແມ່ນແລ້ວ</string> - <string name="optmenu_speaker">ຜູ້ຢິງເວົ້າ</string> - <string name="edit_frequency_overwrite_text">ຂຽນກ່ຽວກັບການເທິງ</string> - <string name="toast_start_recording">ເລີ່ມຕົ້ນການບັນທຶກ…</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">ບັນຊີລາຍຊື່ຊ່ອງເປົ່າຫວ່າງ.</string> - <string name="optmenu_rds_settings">ການປັບຄ່າ RDS </string> - <string name="toast_channel_searched">ຊອກຫາຊ່ອງທາງອອກທີ່ມີຢູ່:</string> - <string name="already_exists">ມີແລ້ວ</string> - <string name="dlg_noantenna_title">ສຽບໃນໂທລະສັບຫູ</string> - <string name="add_to_favorite">ເພີ່ມເຖິງຄວາມຕ້ອງການ</string> - <string name="toast_sdcard_insufficient_space">ຊ່ອງບັດ SD ບໍ່ພຽງພໍ!</string> - <string name="dlg_delete_confirm_title">ຢືນຢັນອອກຈາກຄວາມຕ້ອງການ</string> - <string name="optmenu_record">ການບັນທຶກການ FM</string> - <string name="optmenu_earphone">ໂທລະສັບຫູ</string> - <string name="sound_mode">ຮູບແບບສຽງ</string> - <string name="toast_already_favorite">ຊ່ອງທາງນີ້ແມ່ນຢູ່ໃນບັນຊີລາຍຊື່ຂອງຄວາມຕ້ອງການ.</string> - <string name="not_available">ປະຈຸບັນຍັງບໍ່ທັນມີ</string> - <string name="toast_channel_deleted">ການໂຍກຍ້າຍສົບຜົນສໍາເລັດຈາກຄວາມຕ້ອງການ.</string> - <string name="toast_channel_added">ເພີ່ມສົບຜົນສໍາເລັດກັບຄວາມຕ້ອງການ.</string> - <string name="dlg_rds_settings_channel_information">ຂໍ້ມູນຂ່າວສານທາງ</string> - <string name="toast_favorite_full">ບໍ່ສາມາດເພີ່ມຊ່ອງທາງໃນການບັນຊີຂອງທ່ານເພາະວ່າມັນເປັນອັນເຕັມທີ່.</string> - <string name="btn_save_recording">ຊ່ວຍປະຢັດ</string> - <string name="optmenu_search">ຊອກຫາ</string> - <string name="dlg_rds_settings_alternative_frequency">ຄວາມຖີ່ຂອງການເລືອກ</string> - <string name="dlg_progress_text">ຊ່ອງທາງການຊອກຫາ…</string> - <string name="optmenu_exit">ອອກໄປ</string> - <string name="more">ອ່ານຕໍ່</string> - <string name="btn_discard_recording">ຖິ້ມ</string> - <string name="contmenu_item_edit">ດັດແກ້</string> - <string name="toast_cannot_search">ບໍ່ສາມາດຊອກຫາຊ່ອງທາງອອກທີ່ມີຢູ່.</string> - <string name="dlg_save_recording_storage_warning">ການເກັບຮັກສາບໍ່ພຽງພໍ! ທ່ານຕ້ອງການທີ່ຈະຊ່ວຍປະຢັດການບັນທຶກການປະຈຸບັນ?</string> - <string name="toast_in_call">ທ່ານບໍ່ສາມາດເປີດວິທະຍຸ FM ໃນເວລາທີ່ທ່ານຢູ່ໃນການເອີ້ນ.</string> - <string name="dlg_addedit_station_freq">ຄວາມຖີ່ຂອງການ:</string> - <string name="toast_recorder_internal_error">ເປັນຄວາມຜິດພາດທີ່ເກີດຂຶ້ນພາຍໃນໃນການບັນທຶກ!</string> - <string name="dlg_save_recording_title">ຊ່ວຍປະຢັດໄຟລ໌ບັນທຶກ</string> - <string name="btn_ok">ຖືກແລ້ວ</string> - <string name="power">ພະລັງງານ</string> - <string name="contmenu_item_delete">ເອົາອອກຈາກຂອງ</string> - <string name="toast_powerup_before_record_warning">ກະລຸນາພະລັງງານສູງ FM ທໍາອິດ!</string> - <string name="fm_recorder_name">ເຄື່ອງມືບັນທຶກ FM</string> - <string name="toast_recording_lost_warning">ການບັນທຶກຂອງທ່ານຈະໄດ້ຮັບການສູນເສຍເນື່ອງຈາກການໂຍກຍ້າຍ SD!</string> - <string name="dlg_delete_confirm_text">ທ່ານແນ່ໃຈວ່າທ່ານຕ້ອງການທີ່ຈະເອົາຊ່ອງທາງນີ້ຈາກຂອງ?</string> - <string name="default_station_name">ໃຫມ່ຊ່ອງ</string> - <string name="btn_cancel">ຍົກເລີກການ</string> - <string name="contmenu_title">ການປະຕິບັດ</string> - <string name="btn_no">ບໍ່</string> - <string name="favorite_manager">ບັນຊີລາຍຊື່ຊ່ອງ</string> - <string name="toast_invalid_frequency">ຄວາມຖີ່ຂອງການບໍ່ຖືກຕ້ອງສໍາລັບສະຖານທີ່ໃນປະຈຸບັນ. ຂອບເຂດຄວາມຖີ່ຂອງຄວາມຖືກຕ້ອງ: 87.5-108.0</string> - <string name="toast_sdcard_missing">ບັດ SD ຂອງທ່ານໄດ້ຖືກຫາຍ!</string> - <string name="dlg_addedit_station_name">ຊື່ຂອງທ່ານ:</string> - <string name="dlg_addedit_title_edit">ດັດແກ້ການຊ່ອງ</string> - <string name="toast_invalid_input">ການປະກອບບໍ່ຖືກຕ້ອງທີ່ສຸດ, ມູນຄ່າຖືກຕ້ອງແມ່ນ 0 ຫຼື 5.</string> - <string name="edit_recording_name_hint">ຊື່ໄຟລ໌ທີ່ນີ້</string> - <string name="dlg_noantenna_text">ທ່ານຈໍາເປັນຕ້ອງໂທລະສັບຫູເປັນສາຍອາກາດ. ກະລຸນາສຽບໃນໂທລະສັບຫູຂອງທ່ານ.</string> - <string name="toast_player_internal_error">ເປັນຄວາມຜິດພາດພາຍໃນທີ່ເກີດຂຶ້ນໃນລະ!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-lt/strings.xml b/MediaTek/FmRadio/res/values-lt/strings.xml deleted file mode 100755 index 7688452..0000000 --- a/MediaTek/FmRadio/res/values-lt/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM radijas</string> - <string name="favorite_manager">Kanalų sąrašas</string> - <string name="add_to_favorite">Pridėti prie mėgstamiausių</string> - <string name="optmenu_search">Ieškoti</string> - <string name="optmenu_exit">Uždaryti</string> - <string name="contmenu_title">Operacijos</string> - <string name="contmenu_item_edit">Redaguoti</string> - <string name="contmenu_item_delete">Pašalinti iš parankinių</string> - <string name="dlg_noantenna_text">Reikia ausinių vietoj antenos. Prijunkite ausines.</string> - <string name="dlg_noantenna_title">Prijungti ausines</string> - <string name="btn_yes">"Taip"</string> - <string name="btn_no">"Ne"</string> - <string name="btn_ok">Gerai</string> - <string name="btn_cancel">Atšaukti</string> - <string name="dlg_progress_title">Ieškoti</string> - <string name="dlg_progress_text">Ieškoma kanalų...</string> - <string name="dlg_addedit_station_name">Pavadinimas:</string> - <string name="dlg_addedit_station_freq">Dažnis:</string> - <string name="dlg_addedit_title_edit">Redaguoti kanalą</string> - <string name="default_station_name">Naujas kanalas</string> - <string name="dlg_delete_confirm_title">Patvirtinti šalinimą iš mėgstamiausių</string> - <string name="dlg_delete_confirm_text">Ar tikrai norite pašalinti šį kanalą iš mėgstamiausių?</string> - <string name="toast_favorite_full">Nepavyko pridėti kanalo prie mėgstamiausių sąrašo, nes jis pilnas.</string> - <string name="toast_already_favorite">Šis kanalas jau įtrauktas į mėgstamiausių sąrašą.</string> - <string name="toast_channel_deleted">Sėkmingai pašalintas iš mėgstamiausių.</string> - <string name="toast_channel_added">Sėkmingai pridėtas prie mėgstamiausių.</string> - <string name="toast_channel_searched">Rasti esami kanalai:</string> - <string name="toast_cannot_search">Nepavyko rasti esamo kanalo.</string> - <string name="toast_invalid_frequency">Dažnis netinka esamai vietovei. Tinkamos dažnio ribos: 87,5-108,0</string> - <string name="toast_invalid_input">Neteisinga paskutinė įvestis; teisinga vertė yra 0 arba 5.</string> - <string name="optmenu_rds_settings">RDS parametrai</string> - <string name="dlg_rds_settings_channel_information">Kanalo informacija</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatyvus dažnis</string> - <string name="sound_mode">Garso režimas</string> - <string name="more">"Daugiau"</string> - <string name="power">"laipsnis"</string> - <string name="toast_in_call">Negalima paleisti FM radijo kalbant telefonu.</string> - <string name="empty_list">Kanalų sąrašas tuščias.</string> - <string name="edit_frequency_overwrite_text">Perrašyti</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Prijunkite ausines, kad jos veiktų kaip radijo antena.</string> - <string name="fm_recorder_name">FM rašytuvas</string> - <string name="toast_recording_lost_warning">Išėmus SD, įrašas bus prarastas!</string> - <string name="toast_start_recording">Pradedamas įrašymas...</string> - <string name="toast_sdcard_missing">Nėra SD kortelės!</string> - <string name="toast_sdcard_insufficient_space">Nepakanka vietos SD kortelėje!</string> - <string name="toast_recorder_internal_error">Įvyko vidinė rašytuvo klaida!</string> - <string name="toast_player_internal_error">Įvyko vidinė grotuvo klaida!</string> - <string name="toast_powerup_before_record_warning">Pirmiausiai įjunkite FM radiją!</string> - <string name="optmenu_record">Įrašyti FM</string> - <string name="btn_save_recording">"Išsaugoti"</string> - <string name="btn_discard_recording">Išmesti</string> - <string name="edit_recording_name_hint">Įrašykite failo pavadinimą čia</string> - <string name="dlg_save_recording_title">Išsaugoti įrašo failas</string> - <string name="dlg_save_recording_storage_warning">Nepakanka vietos! Norite išsaugoti dabartinį įrašą?</string> - <string name="already_exists">jau yra</string> - <string name="optmenu_speaker">Garsiakalbis</string> - <string name="optmenu_earphone">Ausinės</string> - <string name="not_available">Šiuo metu nėra</string> - <string name="add_to_favorite1">Pridėti prie nustatytų kanalų</string> - <string name="contmenu_item_delete1">Šalinti iš nustatytų kanalų</string> - <string name="dlg_delete_confirm_title1">Patvirtinti šalinimą iš nustatytų kanalų</string> - <string name="dlg_delete_confirm_text1">Ar tikrai norite pašalinti šį kanalą iš nustatytų kanalų?</string> - <string name="toast_favorite_full1">Nepavyko pridėti kanalo prie nustatytų kanalų sąrašo, nes jis pilnas.</string> - <string name="toast_already_favorite1">Šis kanalas jau įtrauktas į nustatytų kanalų sąrašą.</string> - <string name="toast_channel_deleted1">Sėkmingai pašalintas iš nustatytų kanalų.</string> - <string name="toast_channel_added1">Sėkmingai pridėtas prie nustatytų kanalų.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-lv/strings.xml b/MediaTek/FmRadio/res/values-lv/strings.xml deleted file mode 100755 index 8356149..0000000 --- a/MediaTek/FmRadio/res/values-lv/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM radio</string> - <string name="favorite_manager">Kanālu saraksts</string> - <string name="add_to_favorite">Pievienot izlasei</string> - <string name="optmenu_search">Meklēt</string> - <string name="optmenu_exit">Aizvērt</string> - <string name="contmenu_title">Darbības</string> - <string name="contmenu_item_edit">Rediģēt</string> - <string name="contmenu_item_delete">Noņemt no izlases</string> - <string name="dlg_noantenna_text">Austiņas nepieciešamas kā antena. Pievienojiet austiņas.</string> - <string name="dlg_noantenna_title">Pievienot austiņas</string> - <string name="btn_yes">"Jā"</string> - <string name="btn_no">"Nē"</string> - <string name="btn_ok">Labi</string> - <string name="btn_cancel">Atcelt</string> - <string name="dlg_progress_title">Meklēt</string> - <string name="dlg_progress_text">Meklē kanālus...</string> - <string name="dlg_addedit_station_name">Nosaukums:</string> - <string name="dlg_addedit_station_freq">Frekvence:</string> - <string name="dlg_addedit_title_edit">Rediģēt kanālu</string> - <string name="default_station_name">Jauns kanāls</string> - <string name="dlg_delete_confirm_title">Apstiprināt noņemšanu no izlases</string> - <string name="dlg_delete_confirm_text">Vai tiešām vēlaties noņemt šo kanālu no izlases?</string> - <string name="toast_favorite_full">Nevar pievienot kanālu izlases sarakstam, jo tas ir pilns.</string> - <string name="toast_already_favorite">Šis kanāls jau ir izlases sarakstā.</string> - <string name="toast_channel_deleted">Veiksmīgi noņemts no izlases.</string> - <string name="toast_channel_added">Veiksmīgi pievienots izlasei.</string> - <string name="toast_channel_searched">Atrasti pieejamie kanāli:</string> - <string name="toast_cannot_search">Nevar atrast pieejamos kanālus.</string> - <string name="toast_invalid_frequency">Pašreizējai atrašanās vietai nederīga frekvence. Derīgu frekvenču diapazons: 87,5-108,0</string> - <string name="toast_invalid_input">Pēdējā nederīgā ievade, derīga vērtība ir no 0 līdz 5.</string> - <string name="optmenu_rds_settings">RDS iestatījumi</string> - <string name="dlg_rds_settings_channel_information">Kanāla informācija</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatīva frekvence</string> - <string name="sound_mode">Skaņas režīms</string> - <string name="more">"Vairāk"</string> - <string name="power">"pakāpe"</string> - <string name="toast_in_call">Zvanīšanas laikā nevar palaist FM radio.</string> - <string name="empty_list">Kanālu saraksts ir tukšs.</string> - <string name="edit_frequency_overwrite_text">Pārrakstīt</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Pievienojiet austiņas, lai lietotu kā radio antenu.</string> - <string name="fm_recorder_name">FM ierakstītājs</string> - <string name="toast_recording_lost_warning">Pēc SD kartes izņemšanas ieraksts tiks zaudēts!</string> - <string name="toast_start_recording">Sāk ierakstīšanu...</string> - <string name="toast_sdcard_missing">Nepieciešama SD karte!</string> - <string name="toast_sdcard_insufficient_space">SD kartē nepietiek vietas!</string> - <string name="toast_recorder_internal_error">Rakstītājā radās iekšēja kļūda!</string> - <string name="toast_player_internal_error">Atskaņotājā radās iekšēja kļūda!</string> - <string name="toast_powerup_before_record_warning">Vispirms ieslēdziet FM!</string> - <string name="optmenu_record">Ierakstīt FM</string> - <string name="btn_save_recording">"Saglabāt"</string> - <string name="btn_discard_recording">Atmest</string> - <string name="edit_recording_name_hint">Faila nosaukumu ievadiet šeit</string> - <string name="dlg_save_recording_title">Saglabāt ierakstīto failu</string> - <string name="dlg_save_recording_storage_warning">Nepietiekama atmiņa! Vai vēlaties saglabāt pašreizējo ierakstu?</string> - <string name="already_exists">jau eksistē</string> - <string name="optmenu_speaker">Skaļrunis</string> - <string name="optmenu_earphone">Austiņas</string> - <string name="not_available">Pašlaik nav pieejams</string> - <string name="add_to_favorite1">Pievienot iepriekš iestatītiem kanāliem</string> - <string name="contmenu_item_delete1">Noņemt no iepriekš iestatītiem kanāliem</string> - <string name="dlg_delete_confirm_title1">Apstiprināt noņemšanu no iepriekš iestatītiem kanāliem</string> - <string name="dlg_delete_confirm_text1">Vai tiešām vēlaties noņemt šo kanālu no iepriekš iestatītiem kanāliem?</string> - <string name="toast_favorite_full1">Nevar pievienot kanālu iepriekš iestatītu kanālu sarakstam, jo tas ir pilns.</string> - <string name="toast_already_favorite1">Šis kanāls jau ir iepriekš iestatīto kanālu sarakstā.</string> - <string name="toast_channel_deleted1">Veiksmīgi noņemts no iepriekš iestatītiem kanāliem.</string> - <string name="toast_channel_added1">Veiksmīgi pievienots iepriekš iestatītiem kanāliem.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-mn-rMN/strings.xml b/MediaTek/FmRadio/res/values-mn-rMN/strings.xml deleted file mode 100755 index 2a17335..0000000 --- a/MediaTek/FmRadio/res/values-mn-rMN/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM радио</string> - <string name="dlg_progress_title">Хайх</string> - <string name="btn_yes">Тийм</string> - <string name="optmenu_speaker">Спикер</string> - <string name="edit_frequency_overwrite_text">Дарж бичих</string> - <string name="toast_start_recording">Бичлэгийг эхлэх...</string> - <string name="fm_unit">МГц</string> - <string name="empty_list">Сувгийн жагсаалт хоосон байна.</string> - <string name="optmenu_rds_settings">RDS тохиргоо</string> - <string name="toast_channel_searched">Боломжтой сувгийг илрүүлсэн:</string> - <string name="already_exists">аль хэдийн байна</string> - <string name="dlg_noantenna_title">Чихэвчийг залгах</string> - <string name="add_to_favorite">Дуртай зүйлээ нэмэх</string> - <string name="toast_sdcard_insufficient_space">Хангалттай бус SD картын зай!</string> - <string name="dlg_delete_confirm_title">Дуртай зүйлээсээ хасахыг баталгаажуулах</string> - <string name="optmenu_record">FM-ийг бичих</string> - <string name="optmenu_earphone">Чихэвч</string> - <string name="sound_mode">Дууны горим</string> - <string name="toast_already_favorite">Энэ суваг аль хэдийн дуртай зүйлийн жагсаалтад байна.</string> - <string name="not_available">Одоогоор боломжгүй</string> - <string name="toast_channel_deleted">Дуртай зүйлээс амжилттай хаслаа.</string> - <string name="toast_channel_added">Дуртай зүйлд амжилттай нэмлээ.</string> - <string name="dlg_rds_settings_channel_information">Сувгийн мэдээлэл</string> - <string name="toast_favorite_full">Дуртай зүйлийн жагсаалт дүүрсэн тул суваг нэмж чадахгүй байна.</string> - <string name="btn_save_recording">Хадгалах</string> - <string name="optmenu_search">Хайх</string> - <string name="dlg_rds_settings_alternative_frequency">Альтернатив давтамж</string> - <string name="dlg_progress_text">Сувгуудыг хайх...</string> - <string name="optmenu_exit">Гарах</string> - <string name="more">Илүү</string> - <string name="btn_discard_recording">Хаях</string> - <string name="contmenu_item_edit">Засах</string> - <string name="toast_cannot_search">Боломжтой сувгийг илрүүлж чадахгүй байна.</string> - <string name="dlg_save_recording_storage_warning">Хангалтгүй хадгалах багтаамж! Одоогийн бичлэгийг хадгалахын хүсэж байна уу?</string> - <string name="toast_in_call">Та дуудлага хийж байх үедээ FM радиог ажиллуулах боломжгүй</string> - <string name="dlg_addedit_station_freq">Давтамж:</string> - <string name="toast_recorder_internal_error">Бичлэгт дотоод алдаа тохиолдлоо!</string> - <string name="dlg_save_recording_title">Бичлэгийн файлыг хадгалах</string> - <string name="btn_ok">Тийм</string> - <string name="power">Хүч</string> - <string name="contmenu_item_delete">Дуртай зүйлээс хасах</string> - <string name="toast_powerup_before_record_warning">FM-ээ эхлээд асаа!</string> - <string name="fm_recorder_name">FM бичигч</string> - <string name="toast_recording_lost_warning">SD-ыг чөлөөлснөөс үүдэн таны бичлэг алдагдах болно!</string> - <string name="dlg_delete_confirm_text">Энэ сувгийг өөрийн дуртай зүйлээс устгахыг хүсэж байгаадаа итгэлтэй байна уу?</string> - <string name="default_station_name">Шинэ суваг</string> - <string name="btn_cancel">Цуцлах</string> - <string name="contmenu_title">Ажиллагаа</string> - <string name="btn_no">Үгүй</string> - <string name="favorite_manager">Сувгийн жагсаалт</string> - <string name="toast_invalid_frequency">Одоогийн байршлын хүчингүй давтамж. Хүчинтэй давтамжийн хамрах хүрээ: 87.5-108.0</string> - <string name="toast_sdcard_missing">Таны SD карт байхгүй байна!</string> - <string name="dlg_addedit_station_name">Нэр:</string> - <string name="dlg_addedit_title_edit">Сувгийг засах</string> - <string name="toast_invalid_input">Сүүлийн хүчингүй оролт, хүчинтэй утга is 0 or 5.</string> - <string name="edit_recording_name_hint">Файлын нэрийг энд шивэх</string> - <string name="dlg_noantenna_text">You need an earphone as antenna. Please plug in your earphone.</string> - <string name="toast_player_internal_error">Антен байдлаар ашиглах чихэвч хэрэгтэй. Чихэвчээ залгана уу.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-ms/strings.xml b/MediaTek/FmRadio/res/values-ms/strings.xml deleted file mode 100755 index e9ba9f9..0000000 --- a/MediaTek/FmRadio/res/values-ms/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Radio FM</string> - <string name="favorite_manager">Senarai saluran</string> - <string name="add_to_favorite">Tambah ke Kegemaran</string> - <string name="optmenu_search">Cari</string> - <string name="optmenu_exit">Keluar</string> - <string name="contmenu_title">Operasi</string> - <string name="contmenu_item_edit">Edit</string> - <string name="contmenu_item_delete">Alih keluar daripada kegemaran</string> - <string name="dlg_noantenna_text">Anda memerlukan fon telinga sebagai antena. Sila pasangkan fon telinga anda.</string> - <string name="dlg_noantenna_title">Cucukkan fon telinga</string> - <string name="btn_yes">Ya</string> - <string name="btn_no">Tidak</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Batal</string> - <string name="dlg_progress_title">Imbas</string> - <string name="dlg_progress_text">Imbas saluran…</string> - <string name="dlg_addedit_station_name">Nama:</string> - <string name="dlg_addedit_station_freq">Kekerapan:</string> - <string name="dlg_addedit_title_edit">Edit Saluran</string> - <string name="default_station_name">Saluran Baru</string> - <string name="dlg_delete_confirm_title">Sahkan Padam Saluran</string> - <string name="dlg_delete_confirm_text">Adakah anda pasti anda mahu memadam saluran ini?</string> - <string name="toast_favorite_full">Tidak boleh menambah saluran ke senarai kegemaran kerana sudah penuh.</string> - <string name="toast_already_favorite">Saluran ini sudah ada di dalam senarai kegemaran.</string> - <string name="toast_channel_deleted">Berjaya dialih keluar daripada kegemaran.</string> - <string name="toast_channel_added">Berjaya ditambah pada kegemaran.</string> - <string name="toast_channel_searched">Cari saluran yang tersedia:</string> - <string name="toast_cannot_search">Tidak dapat mencari saluran tersedia.</string> - <string name="optmenu_rds_settings">Tetapan RDS</string> - <string name="dlg_rds_settings_channel_information">Maklumat saluran</string> - <string name="dlg_rds_settings_alternative_frequency">Frekuensi alternatif</string> - <string name="more">Lebih banyak Apl</string> - <string name="power">kuasa</string> - <string name="sound_mode">Mod bunyi</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Pasang fon telinga anda untuk digunakan sebagai antena radio.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Tulis ganti"</string> - <string name="fm_recorder_name">Perakam FM</string> - <string name="toast_recording_lost_warning">Rakaman anda akan hilang disebabkan pengalihan keluar SD!</string> - <string name="toast_start_recording">Mula merakam…</string> - <string name="toast_sdcard_missing">Kad SD anda tiada!</string> - <string name="toast_sdcard_insufficient_space">Ruang kad SD tidak mencukupi!</string> - <string name="toast_recorder_internal_error">Ralat dalaman berlaku dalam perakam!</string> - <string name="toast_player_internal_error">Ralat dalaman berlaku dalam pemain!!</string> - <string name="toast_powerup_before_record_warning">Sila hidupkan FM terlebih dahulu!</string> - <string name="optmenu_record">Rakam FM</string> - <string name="btn_save_recording">Simpan</string> - <string name="btn_discard_recording">Buang</string> - <string name="edit_recording_name_hint">Taipkan nama fail di sini</string> - <string name="dlg_save_recording_title">Simpan fail rakaman</string> - <string name="dlg_save_recording_storage_warning">Storan tidak mencukupi! Adakah anda mahu menyimpan rakaman semasa?</string> - <string name="already_exists">Sudah wujud</string> - <string name="toast_invalid_frequency">Frekuensi tidak sah untuk lokasi semasa. Skop frekuensi sah: 87.5-108.0.</string> - <string name="toast_invalid_input">Input tidak sah terakhir, nilai sah ialah 0 atau 5.</string> - <string name="toast_in_call">Anda tidak boleh melancarkan Radio FM semasa anda sedang membuat panggilan.</string> - <string name="empty_list">Senarai saluran kosong.</string> - <string name="optmenu_speaker">"Pembesar suara"</string> - <string name="optmenu_earphone">Headset</string> - <string name="not_available">Tidak tersedia pada masa ini</string> - <string name="add_to_favorite1">Tambahkan pada saluran dipratetap</string> - <string name="contmenu_item_delete1">Alih keluar daripada saluran dipratetap</string> - <string name="dlg_delete_confirm_title1">Sahkan alih keluar daripada saluran dipratetap</string> - <string name="dlg_delete_confirm_text1">Adakah anda pasti mahu mengalih keluar saluran ini daripada saluran dipratetap?</string> - <string name="toast_favorite_full1">Tidak dapat menambah saluran pada senarai saluran dipratetap kerana ia telah penuh.</string> - <string name="toast_already_favorite1">Saluran ini sudah berada dalam senarai saluran dipratetap.</string> - <string name="toast_channel_deleted1">Berjaya dialih keluar daripada saluran dipratetap.</string> - <string name="toast_channel_added1">Berjaya ditambahkan pada saluran dipratetap.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-my-rMM/strings.xml b/MediaTek/FmRadio/res/values-my-rMM/strings.xml deleted file mode 100755 index ee751b5..0000000 --- a/MediaTek/FmRadio/res/values-my-rMM/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM ရေဒီယို</string> - <string name="favorite_manager">ချန်နယ် စာရင်း</string> - <string name="add_to_favorite">အနှစ်သက်ဆုံးထဲသို့ ထည့်ရန်</string> - <string name="optmenu_search">ရှာဖွေရန်</string> - <string name="optmenu_exit">ထွက်ရန်</string> - <string name="contmenu_title">လုပ်ငန်းများ</string> - <string name="contmenu_item_edit">တည်းဖြတ်ရန်</string> - <string name="contmenu_item_delete">အနှစ်သက်ဆုံးထဲမှ ဖယ်ရှားရန်</string> - <string name="dlg_noantenna_text">ဧရိယာတိုင်အဖြစ် နားကြပ်လိုအပ်သည်။ သင့်နားကြပ်ကြိုးတပ်ပါ။</string> - <string name="dlg_noantenna_title">နားကြပ်ကို တပ်လိုက်ပါ</string> - <string name="btn_yes">မှန်</string> - <string name="btn_no">မှား</string> - <string name="btn_ok">လုပ်မည်</string> - <string name="btn_cancel">ပယ်ဖျက်</string> - <string name="dlg_progress_title">ရှာဖွေရန်</string> - <string name="dlg_progress_text">ချန်နယ်များကို ရှာရန်…</string> - <string name="dlg_addedit_station_name">အမည်-</string> - <string name="dlg_addedit_station_freq">ကြိမ်နှုန်း-</string> - <string name="dlg_addedit_title_edit">ချန်နယ်ကို တည်းဖြတ်ရန်</string> - <string name="default_station_name">ချန်နယ်အသစ်</string> - <string name="dlg_delete_confirm_title">အနှစ်သက်ဆုံးများမှ ဖယ်ရှားရန် အတည်ပြုပါ</string> - <string name="dlg_delete_confirm_text">အနှစ်သက်ဆုံးများမှ ဤချန်နယ်ကို သင်ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။</string> - <string name="toast_favorite_full">ပြည့်နေသောကြောင့် အနှစ်သက်ဆုံးစာရင်းထဲ့သို့ ချန်နယ်ကို ထပ်မထည့်နိုင်ပါ။</string> - <string name="toast_already_favorite">ဤချန်နယ်သည် အနှစ်သက်ဆုံးစာရင်းထဲတွင် ရှိပြီးဖြစ်သည်</string> - <string name="toast_channel_deleted">အနှစ်သက်ဆုံးများမှ အောင်မြင်စွာ ဖယ်ရှားပြီးဖြစ်သည်။</string> - <string name="toast_channel_added">အနှစ်သက်ဆုံးများထဲသို့ အောင်မြင်စွာ ထည့်ပြီးဖြစ်သည်။</string> - <string name="toast_channel_searched">ရနိုင်သော ချန်နယ်များကို ရှာခဲ့သည်-</string> - <string name="toast_cannot_search">ရနိုင်သော ချန်နယ်များကို မရှာနိုင်ခဲ့ပါ-</string> - <string name="toast_invalid_frequency">လက်ရှိနေရာအတွက် ကြိမ်နှုန်း မမှန်ပါ။ မှန်ကန်သော အတိုင်းအတာ- ၈၇.၅-၁၀၈.၀</string> - <string name="toast_invalid_input">ထည့်သွင်းမှု မမှန်ကန်ပါ၊ မှန်ကန်သော တန်ဖိုးမှာ ၀ သို့မဟုတ် ၅။</string> - <string name="optmenu_rds_settings">RDS ဆက်တင်များ</string> - <string name="dlg_rds_settings_channel_information">ချန်နယ်အချက်အလက်များ</string> - <string name="dlg_rds_settings_alternative_frequency">အခြား ကြိမ်နှုန်း</string> - <string name="sound_mode">အသံနည်းစနစ်</string> - <string name="more">နောက်ထပ်</string> - <string name="power">ထပ်ကိန်း</string> - <string name="edit_frequency_overwrite_text">ထပ်ရေးရန်</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">ရေဒီယို အန်တီနာတစ်ခုအဖြစ် သုံးရန် သင့် နားကြပ်များကို တပ်ဆင်ပါ။</string> - <string name="fm_recorder_name">FM အသံဖမ်းစက်</string> - <string name="toast_recording_lost_warning">SD ဖယ်ရှားမှုကြောင့် သင်၏ အသံဖမ်းခြင်းသည် ပျောက်ဆုံးသွားလိမ့်မည်။</string> - <string name="toast_start_recording">အသံဖမ်းခြင်း စတင်ရန်</string> - <string name="toast_sdcard_missing">သင်၏ SD ကတ် ပျောက်နေသည်။</string> - <string name="toast_sdcard_insufficient_space">SD ကတ်နေရာလွတ် မလုံလောက်ပါ။</string> - <string name="toast_recorder_internal_error">အသံဖမ်းစက်တွင် အတွင်းပိုင်း ပြဿနာတစ်ခု ဖြစ်သည်။</string> - <string name="toast_player_internal_error">ဖွင့်စက်တွင် အတွင်းပိုင်း ပြဿနာတစ်ခု ဖြစ်သည်။</string> - <string name="toast_powerup_before_record_warning">FM ကို ဦးစွာ ဖွင့်ပါ။</string> - <string name="optmenu_record">FM ကို မှတ်တမ်းတင်ရန်</string> - <string name="btn_save_recording">သိမ်းရန်</string> - <string name="btn_discard_recording">စွန့်ပစ်ရန်</string> - <string name="edit_recording_name_hint">ဤနေရာတွင် ဖိုင်အမည်ကို ရေးသွင်းပါ</string> - <string name="dlg_save_recording_title">အသံဖမ်းနေသောဖိုင်ကို သိမ်းရန်</string> - <string name="dlg_save_recording_storage_warning">သိမ်းဆည်းနေရာ မလုံလောက်ပါ။ လက်ရှိအသံဖမ်းမှုကို သိမ်းလိုပါသလား။</string> - <string name="already_exists">ရှိပြီးဖြစ်သည်</string> - <string name="toast_in_call">သင်ဖုန်းခေါ်ဆိုနေစဉ် FM ရေဒီယိုဖွင့်၍မရပါ။</string> - <string name="empty_list">လိုင်းစာရင်းမှာ ဗလာဖြစ်နေသည်။</string> - <string name="optmenu_speaker">စပီကာ</string> - <string name="optmenu_earphone">နားကြပ်</string> - <string name="not_available">လောလောဆယ် မရနိုင်ပါ</string> - <string name="add_to_favorite1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များထဲသို့ ထည့်ရန်</string> - <string name="contmenu_item_delete1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များထဲမှ ဖယ်ရှားရန်</string> - <string name="dlg_delete_confirm_title1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များမှ ဖယ်ရှားရန် အတည်ပြုပါ</string> - <string name="dlg_delete_confirm_text1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များမှ ဤချန်နယ်ကို သင်ဖယ်ရှားလိုသည်မှာ သေချာပါသလား။</string> - <string name="toast_favorite_full1">ပြည့်နေသောကြောင့် ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်စာရင်းထဲ့သို့ ချန်နယ်ကို ထပ်မထည့်နိုင်ပါ။</string> - <string name="toast_already_favorite1">ဤချန်နယ်သည် ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်စာရင်းထဲတွင် ရှိပြီးဖြစ်သည်</string> - <string name="toast_channel_deleted1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များမှ အောင်မြင်စွာ ဖယ်ရှားပြီးဖြစ်သည်။</string> - <string name="toast_channel_added1">ကြိုတင်သတ်မှတ်ထားသော ချန်နယ်များထဲသို့ အောင်မြင်စွာ ထည့်ပြီးဖြစ်သည်။</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-my-rZG/strings.xml b/MediaTek/FmRadio/res/values-my-rZG/strings.xml deleted file mode 100755 index 0735d62..0000000 --- a/MediaTek/FmRadio/res/values-my-rZG/strings.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="app_name">FM ေရဒီယို</string> - <string name="favorite_manager">ခ်န္နယ္ စာရင္း</string> - <string name="add_to_favorite">အႏွစ္သက္ဆံုးထဲသို႔ ထည့္ရန္</string> - <string name="add_to_favorite1">ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားထဲသို႔ ထည့္ရန္</string> - <string name="optmenu_search">ရွာေဖြပါ</string> - <string name="optmenu_exit">ထြက္ပါ</string> - <string name="contmenu_title">လုပ္ငန္းမ်ား</string> - <string name="contmenu_item_edit">တည္းျဖတ္ပါ</string> - <string name="contmenu_item_delete">အႏွစ္သက္ဆံုးမ်ားမွ ဖယ္ရွားရန္</string> - <string name="contmenu_item_delete1">ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားထဲမွ ဖယ္ရွားရန္</string> - <string name="dlg_noantenna_text">ဧရိယာတိုင္အျဖစ္ နားၾကပ္လိုအပ္သည္။ သင့္နားၾကပ္ ႀကိဳးတပ္ပါ။</string> - <string name="dlg_noantenna_title">နားၾကပ္ကို တပ္လိုက္ပါ</string> - <string name="btn_yes">ဟုတ္ပါသည္</string> - <string name="btn_no">မဟုတ္ပါ</string> - <string name="btn_ok">အိုေက</string> - <string name="btn_cancel">မလုပ္ပါ</string> - <string name="dlg_progress_title">ရွာေဖြပါ</string> - <string name="dlg_progress_text">ခ်န္နယ္မ်ားကို ရွာရန္…</string> - <string name="dlg_addedit_station_name">အမည္-</string> - <string name="dlg_addedit_station_freq">ႀကိမ္ႏႈန္း-</string> - <string name="dlg_addedit_title_edit">ခ်န္နယ္ကို တည္းျဖတ္ပါ</string> - <string name="default_station_name">ခ်န္နယ္အသစ္</string> - <string name="dlg_delete_confirm_title">အႏွစ္သက္ဆံုးမ်ားမွ ဖယ္ရွားရန္ အတည္ျပဳပါ</string> - <string name="dlg_delete_confirm_title1">ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားမွ ဖယ္ရွားရန္ အတည္ျပဳပါ</string> - <string name="dlg_delete_confirm_text">အႏွစ္သက္ဆံုးမ်ားမွ ဤခ်န္နယ္ကို သင္ဖယ္ရွားလိုသည္မွာ ေသခ်ာပါသလား။</string> - <string name="dlg_delete_confirm_text1">ႀကိဳတင္သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားမွ ဤခ်န္နယ္ကို သင္ဖယ္ရွားလိုသည္မွာ ေသခ်ာပါသလား။</string> - <string name="toast_favorite_full">ျပည့္ေနေသာေၾကာင့္ အႏွစ္သက္ဆံုး စာရင္းထဲသို႔ ခ်န္နယ္ကို ထပ္မထည့္ႏိုင္ပါ။</string> - <string name="toast_favorite_full1">ျပည့္ေနေသာေၾကာင့္ ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္စာရင္းထဲ့သို႔ ခ်န္နယ္ကို ထပ္မထည့္ႏိုင္ပါ။</string> - <string name="toast_already_favorite">ဤခ်န္နယ္သည္ အႏွစ္သက္ဆံုး စာရင္းထဲတြင္ ရွိၿပီးျဖစ္သည္။</string> - <string name="toast_already_favorite1">ဤခ်န္နယ္သည္ ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္စာရင္းထဲတြင္ ရွိၿပီးျဖစ္သည္။</string> - <string name="toast_channel_deleted">အႏွစ္သက္ဆံုးမ်ားမွ ေအာင္ျမင္စြာ ဖယ္ရွားၿပီးျဖစ္သည္။</string> - <string name="toast_channel_deleted1">ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားမွ ေအာင္ျမင္စြာ ဖယ္ရွားၿပီးျဖစ္သည္။</string> - <string name="toast_channel_added">အႏွစ္သက္ဆံုးမ်ားထဲသို႔ ေအာင္ျမင္စြာ ထည့္ၿပီးျဖစ္သည္။</string> - <string name="toast_channel_added1">ႀကိဳတင္ သတ္မွတ္ထားေသာ ခ်န္နယ္မ်ားထဲသို႔ ေအာင္ျမင္စြာ ထည့္ၿပီးျဖစ္သည္။</string> - <string name="toast_channel_searched">ရႏိုင္ေသာ ခ်န္နယ္မ်ားကို ရွာခဲ့သည္-</string> - <string name="toast_cannot_search">ရႏိုင္ေသာ ခ်န္နယ္မ်ားကို မရွာႏိုင္ခဲ့ပါ-</string> - <string name="toast_invalid_frequency">လက္ရွိေနရာအတြက္ ႀကိမ္ႏႈန္း မမွန္ပါ။ မွန္ကန္ေသာ အတိုင္းအတာ- ၈၇.၅-၁၀၈.ဝ</string> - <string name="toast_invalid_input">ထည့္သြင္းမႈ မမွန္ကန္ပါ၊ မွန္ကန္ေသာ တန္ဖိုးမွာ ဝ သို႔မဟုတ္ ၅။</string> - <string name="optmenu_rds_settings">RDS ဆက္တင္မ်ား</string> - <string name="dlg_rds_settings_channel_information">ခ်န္နယ္ အခ်က္အလက္မ်ား</string> - <string name="dlg_rds_settings_alternative_frequency">အျခား ႀကိမ္ႏႈန္း</string> - <string name="sound_mode">အသံနည္းစနစ္</string> - <string name="more">ေနာက္ထပ္</string> - <string name="power">ထပ္ကိန္း</string> - <string name="toast_in_call">သင္ဖုန္းေခၚဆိုေနစဥ္ FM ေရဒီယိုဖြင့္၍မရပါ။</string> - <string name="empty_list">လိုင္းစာရင္းမွာ ဗလာျဖစ္ေနသည္။</string> - <string name="edit_frequency_overwrite_text">ထပ္ေရးရန္</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">နားၾကပ္ကို တပ္လိုက္ပါ</string> - <string name="fm_recorder_name">FM အသံဖမ္းစက္</string> - <string name="toast_recording_lost_warning">SD ဖယ္ရွားမႈေၾကာင့္ သင္၏ အသံဖမ္းျခင္းသည္ ဆုံး႐ႈံးသြားလိမ့္မည္။</string> - <string name="toast_start_recording">အသံဖမ္းျခင္း စတင္ရန္</string> - <string name="toast_sdcard_missing">သင္၏ SD ကတ္ ေပ်ာက္ေနသည္။</string> - <string name="toast_sdcard_insufficient_space">SD ကတ္ေနရာလြတ္ မလံုေလာက္ပါ။</string> - <string name="toast_recorder_internal_error">အသံဖမ္းစက္တြင္ အတြင္းပိုင္း ျပႆနာတစ္ခု ျဖစ္သည္။</string> - <string name="toast_player_internal_error">ဖြင့္စက္တြင္ အတြင္းပိုင္း ျပႆနာတစ္ခု ျဖစ္သည္။</string> - <string name="toast_powerup_before_record_warning">FM ကို ဦးစြာ ဖြင့္ပါ။</string> - <string name="optmenu_record">FM ကို မွတ္တမ္းတင္ရန္</string> - <string name="btn_save_recording">သိမ္းဆည္းပါ</string> - <string name="btn_discard_recording">ျဖဳတ္ခ်ပါ</string> - <string name="edit_recording_name_hint">ဤေနရာတြင္ ဖိုင္အမည္ကို ေရးသြင္းပါ</string> - <string name="dlg_save_recording_title">အသံဖမ္းေနေသာဖိုင္ကို သိမ္းရန္</string> - <string name="dlg_save_recording_storage_warning">သိမ္းဆည္းေနရာ မလံုေလာက္ပါ။ လက္ရွိအသံဖမ္းမႈကို သိမ္းလိုပါသလား။</string> - <string name="already_exists">ရွိၿပီးျဖစ္သည္</string> - <string name="optmenu_speaker">စပီကာ</string> - <string name="optmenu_earphone">နားၾကပ္</string> - <string name="not_available">ေလာေလာဆယ္ မရႏိုင္ပါ</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-nb/strings.xml b/MediaTek/FmRadio/res/values-nb/strings.xml deleted file mode 100755 index 7082e10..0000000 --- a/MediaTek/FmRadio/res/values-nb/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-radio</string> - <string name="favorite_manager">Kanalliste</string> - <string name="add_to_favorite">Legg til favoritt</string> - <string name="optmenu_search">Søk</string> - <string name="optmenu_exit">Avslutt</string> - <string name="contmenu_title">Operasjoner</string> - <string name="contmenu_item_edit">Rediger</string> - <string name="contmenu_item_delete">Fjern fra favoritter</string> - <string name="dlg_noantenna_text">Du må bruke en øretelefon som antenne. Plugg inn øretelefoner.</string> - <string name="dlg_noantenna_title">Plugg inn øretelefon</string> - <string name="btn_yes">"Ja"</string> - <string name="btn_no">"Nei"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Avbryt</string> - <string name="dlg_progress_title">Søk</string> - <string name="dlg_progress_text">Søk etter kanaler …</string> - <string name="dlg_addedit_station_name">Navn:</string> - <string name="dlg_addedit_station_freq">Frekvens:</string> - <string name="dlg_addedit_title_edit">Rediger kanal</string> - <string name="default_station_name">Ny kanal</string> - <string name="dlg_delete_confirm_title">Bekreft fjerning fra favoritter</string> - <string name="dlg_delete_confirm_text">Er du sikker på at du vil fjerne denne kanalen fra favoritter?</string> - <string name="toast_favorite_full">Kan ikke legge til kanalen i favorittlisten, da listen er full.</string> - <string name="toast_already_favorite">Kanalen er allerede i favorittlisten.</string> - <string name="toast_channel_deleted">Kanalen ble fjernet fra favoritter.</string> - <string name="toast_channel_added">Kanalen ble lagt til i favoritter.</string> - <string name="toast_channel_searched">Fant tilgjengelige kanaler:</string> - <string name="toast_cannot_search">Kan ikke finne tilgjengelige kanal.</string> - <string name="toast_invalid_frequency">Ugyldig frekvens for gjeldende plassering. Gyldig frekvensomfang: 87,5–108,0</string> - <string name="toast_invalid_input">Ugyldige inndata. Gyldig verdi er 0 eller 5.</string> - <string name="optmenu_rds_settings">RDS-innstillinger</string> - <string name="dlg_rds_settings_channel_information">Kanalinformasjon</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativ frekvens</string> - <string name="sound_mode">Lydmodus</string> - <string name="more">"Mer"</string> - <string name="power">"potens"</string> - <string name="toast_in_call">Du kan ikke starte FM-radio når du er i en samtale.</string> - <string name="empty_list">Kanallisten er tom.</string> - <string name="edit_frequency_overwrite_text">Overskriv</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Plugg inn øretelefonene for å bruke som en radioantenne.</string> - <string name="fm_recorder_name">FM-opptaker</string> - <string name="toast_recording_lost_warning">Opptaket vil gå tapt på grunn av fjerning av SD!</string> - <string name="toast_start_recording">Start opptak …</string> - <string name="toast_sdcard_missing">SD-kortet mangler!</string> - <string name="toast_sdcard_insufficient_space">Utilstrekkelig plass på SD-kort!</string> - <string name="toast_recorder_internal_error">Det oppstod en intern feil i opptaker!</string> - <string name="toast_player_internal_error">Det oppstod en intern feil i spiller!</string> - <string name="toast_powerup_before_record_warning">Slå på FM først!</string> - <string name="optmenu_record">Ta opp FM</string> - <string name="btn_save_recording">"Lagre"</string> - <string name="btn_discard_recording">Forkast</string> - <string name="edit_recording_name_hint">Skriv inn filnavnet her</string> - <string name="dlg_save_recording_title">Lagre opptaksfil</string> - <string name="dlg_save_recording_storage_warning">Utilstrekkelig plass! Vil du lagre dette opptaket?</string> - <string name="already_exists">finnes allerede</string> - <string name="optmenu_speaker">Hoyttaler</string> - <string name="optmenu_earphone">Hodetelefon</string> - <string name="not_available">Ikke tilgjengelig for øyeblikket</string> - <string name="add_to_favorite1">Legg til forhåndsinnstilte kanaler</string> - <string name="contmenu_item_delete1">Fjern fra forhåndsinnstilte kanaler</string> - <string name="dlg_delete_confirm_title1">Bekreft fjerning fra forhåndsinnstilte kanaler</string> - <string name="dlg_delete_confirm_text1">Er du sikker på at du vil fjerne denne kontoen fra forhåndsinnstilte kanaler?</string> - <string name="toast_favorite_full1">Kan ikke legge til kanalen i liste over forhåndsinnstilte kanaler, da listen er full.</string> - <string name="toast_already_favorite1">Kanalen er allerede i listen over forhåndsinnstilte kanaler.</string> - <string name="toast_channel_deleted1">Kanalen ble fjernet fra forhåndsinnstilte kanaler.</string> - <string name="toast_channel_added1">Kanalen ble lagt til i forhåndsinnstilte kanaler.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-nl/strings.xml b/MediaTek/FmRadio/res/values-nl/strings.xml deleted file mode 100755 index d176812..0000000 --- a/MediaTek/FmRadio/res/values-nl/strings.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM-radio</string> - <string name="favorite_manager">Kanalenlijst</string> - <string name="add_to_favorite">Toevoegen aan favorieten</string> - <string name="optmenu_search">Zoeken</string> - <string name="optmenu_exit">Afsluiten</string> - <string name="contmenu_title">Bewerkingen</string> - <string name="contmenu_item_edit">Bewerken</string> - <string name="contmenu_item_delete">Uit favorieten verwijderen</string> - <string name="dlg_noantenna_text">U hebt een oortelefoon nodig als antenne. Sluit de oortelefoon aan.</string> - <string name="dlg_noantenna_title">Oortelefoon aansluiten</string> - <string name="btn_yes">Ja</string> - <string name="btn_no">Nee</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Annuleren</string> - <string name="dlg_progress_title">Scannen</string> - <string name="dlg_progress_text">Kanalen scannen…</string> - <string name="dlg_addedit_station_name">Naam:</string> - <string name="dlg_addedit_station_freq">Frequentie:</string> - <string name="dlg_addedit_title_edit">Kanaal bewerken</string> - <string name="default_station_name">Nieuw kanaal</string> - <string name="dlg_delete_confirm_title">Verwijderen kanaal bevestigen</string> - <string name="dlg_delete_confirm_text">Weet u zeker dat u dit kanaal wilt verwijderen?</string> - <string name="toast_favorite_full">Kan het kanaal niet toevoegen aan de lijst met favorieten omdat deze vol is.</string> - <string name="toast_already_favorite">Dit kanaal staat al in de favorietenlijst.</string> - <string name="toast_channel_deleted">Verwijderen uit favorieten geslaagd.</string> - <string name="toast_channel_added">Toevoegen aan favorieten geslaagd.</string> - <string name="toast_channel_searched">Gezocht in beschikbare kanalen:</string> - <string name="toast_cannot_search">Kan beschikbaar kanaal niet uitzoeken:</string> - <string name="optmenu_rds_settings">RDS-instellingen</string> - <string name="dlg_rds_settings_channel_information">Kanaalinformatie</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatieve frequentie</string> - <string name="more">Meer toepassingen</string> - <string name="power">macht</string> - <string name="sound_mode">Geluidsmodus</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Sluit de oortelefoon aan om als radio-antenne te gebruiken.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Overschrijven"</string> - <string name="fm_recorder_name">FM-recorder</string> - <string name="toast_recording_lost_warning">Uw opname gaat verloren doordat de SD-kaart is verwijderd!</string> - <string name="toast_start_recording">Opname start…</string> - <string name="toast_sdcard_missing">SD-kaart ontbreekt.</string> - <string name="toast_sdcard_insufficient_space">Onvoldoende ruimte op SD-kaart!</string> - <string name="toast_recorder_internal_error">In de recorder is een interne fout opgetreden!</string> - <string name="toast_player_internal_error">In de speler is een interne fout opgetreden!</string> - <string name="toast_powerup_before_record_warning">Schakel eerst FM in!</string> - <string name="optmenu_record">FM opnemen</string> - <string name="btn_save_recording">Opslaan</string> - <string name="btn_discard_recording">Verwijderen</string> - <string name="edit_recording_name_hint">Typ hier de bestandsnaam</string> - <string name="dlg_save_recording_title">Opnamebestand opslaan</string> - <string name="dlg_save_recording_storage_warning">Onvoldoende opslagruimte! Wilt u de huidige opname opslaan?</string> - <string name="already_exists">bestaat al</string> - <string name="toast_invalid_frequency">Ongeldige frequentie voor huidige locatie. Geldig frequentiebereik: 87,5-108,0.</string> - <string name="toast_invalid_input">De laatste invoer is ongeldig, geldige waarde is 0 of 5.</string> - <string name="toast_in_call">U kunt FM-radio niet starten terwijl u een telefoongesprek voert.</string> - <string name="empty_list">Lijst met zenders is leeg.</string> - <string name="optmenu_speaker">"Luidspreker"</string> - <string name="optmenu_earphone">Kuulokkeet</string> - <string name="not_available">Momenteel niet beschikbaar</string> - <string name="add_to_favorite1">Aan vooringestelde kanalen toevoegen</string> - <string name="contmenu_item_delete1">Uit vooringestelde kanalen verwijderen</string> - <string name="dlg_delete_confirm_title1">Verwijderen uit vooringestelde kanalen bevestigen</string> - <string name="dlg_delete_confirm_text1">Wilt u werkelijk dit kanaal uit vooringestelde kanalen verwijderen?</string> - <string name="toast_favorite_full1">Kan het kanaal niet toevoegen aan de lijst met vooringestelde kanalen omdat deze vol is.</string> - <string name="toast_already_favorite1">Dit kanaal bevindt zich reeds in de lijst met vooringestelde kanalen.</string> - <string name="toast_channel_deleted1">Uit vooringestelde kanalen verwijderd.</string> - <string name="toast_channel_added1">Aan vooringestelde kanalen toegevoegd.</string> -</resources> - diff --git a/MediaTek/FmRadio/res/values-pl/strings.xml b/MediaTek/FmRadio/res/values-pl/strings.xml deleted file mode 100755 index 098e1ea..0000000 --- a/MediaTek/FmRadio/res/values-pl/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Radio FM</string> - <string name="favorite_manager">Lista kanałów</string> - <string name="add_to_favorite">Dodaj do ulubionych</string> - <string name="optmenu_search">Wyszukaj</string> - <string name="optmenu_exit">Zakończ</string> - <string name="contmenu_title">Operacje</string> - <string name="contmenu_item_edit">Edytuj</string> - <string name="contmenu_item_delete">Usuń z ulubionych</string> - <string name="dlg_noantenna_text">Potrzebna jest antena w postaci słuchawek. Podłącz słuchawki.</string> - <string name="dlg_noantenna_title">Podłącz słuchawki</string> - <string name="btn_yes">"Tak"</string> - <string name="btn_no">"Nie"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Anuluj</string> - <string name="dlg_progress_title">Wyszukaj</string> - <string name="dlg_progress_text">Trwa wyszukiwanie kanałów...</string> - <string name="dlg_addedit_station_name">Nazwa:</string> - <string name="dlg_addedit_station_freq">Częstotliwość:</string> - <string name="dlg_addedit_title_edit">Edytuj kanał</string> - <string name="default_station_name">Nowy kanał</string> - <string name="dlg_delete_confirm_title">Potwierdź usunięcie z ulubionych</string> - <string name="dlg_delete_confirm_text">Czy na pewno chcesz usunąć ten kanał z ulubionych?</string> - <string name="toast_favorite_full">Nie można dodać kanału do listy ulubionych, ponieważ została ona zapełniona.</string> - <string name="toast_already_favorite">Kanał ten znajduje się już na liście ulubionych.</string> - <string name="toast_channel_deleted">Pomyślnie usunięto z ulubionych.</string> - <string name="toast_channel_added">Pomyślnie dodano do ulubionych.</string> - <string name="toast_channel_searched">Wyszukano dostępne kanały:</string> - <string name="toast_cannot_search">Nie można wyszukać dostępnych kanałów.</string> - <string name="toast_invalid_frequency">Nieprawidłowa częstotliwość dla bieżącej lokalizacji. Prawidłowy zakres częstotliwości: 87,5–108,0</string> - <string name="toast_invalid_input">Ostatni wpis jest nieprawidłowy; prawidłowa wartość to 0 lub 5.</string> - <string name="optmenu_rds_settings">Ustawienia RDS</string> - <string name="dlg_rds_settings_channel_information">Informacje o kanale</string> - <string name="dlg_rds_settings_alternative_frequency">Częstotliwość alternatywna</string> - <string name="sound_mode">Tryb dźwięku</string> - <string name="more">"Więcej"</string> - <string name="power">"do potęgi"</string> - <string name="toast_in_call">Nie można włączyć radia FM podczas trwania rozmowy telefonicznej.</string> - <string name="empty_list">Lista kanałów jest pusta.</string> - <string name="edit_frequency_overwrite_text">Zastąp</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Podłącz słuchawki, aby móc ich używać jako anteny radiowej.</string> - <string name="fm_recorder_name">Rejestrator FM</string> - <string name="toast_recording_lost_warning">Nagranie zostanie utracone z powodu wyjęcia karty SD!</string> - <string name="toast_start_recording">Trwa rozpoczynanie nagrywania...</string> - <string name="toast_sdcard_missing">Brak karty SD!</string> - <string name="toast_sdcard_insufficient_space">Za mało miejsca na karcie SD!</string> - <string name="toast_recorder_internal_error">Wystąpił błąd wewnętrzny w rejestratorze!</string> - <string name="toast_player_internal_error">Wystąpił błąd wewnętrzny w odtwarzaczu!</string> - <string name="toast_powerup_before_record_warning">Włącz najpierw tryb FM!</string> - <string name="optmenu_record">Nagrywaj w paśmie FM</string> - <string name="btn_save_recording">"Zapisz"</string> - <string name="btn_discard_recording">Odrzuć</string> - <string name="edit_recording_name_hint">Wpisz tutaj nazwę pliku</string> - <string name="dlg_save_recording_title">Zapisz plik nagrania</string> - <string name="dlg_save_recording_storage_warning">Za mało miejsca w pamięci! Czy chcesz zapisać bieżące nagranie?</string> - <string name="already_exists">już istnieje</string> - <string name="optmenu_speaker">Głośnik</string> - <string name="optmenu_earphone">Słuchawki</string> - <string name="not_available">Obecnie niedostępne</string> - <string name="add_to_favorite1">Dodaj do ustawionych wstępnie kanałów</string> - <string name="contmenu_item_delete1">Usuń z ustawionych wstępnie kanałów</string> - <string name="dlg_delete_confirm_title1">Potwierdź usunięcie z ustawionych wstępnie kanałów</string> - <string name="dlg_delete_confirm_text1">Czy na pewno chcesz usunąć ten kanał z ustawionych wstępnie kanałów?</string> - <string name="toast_favorite_full1">Nie można dodać kanału do listy ustawionych wstępnie kanałów, ponieważ została ona zapełniona.</string> - <string name="toast_already_favorite1">Kanał ten znajduje się już na liście ustawionych wstępnie kanałów.</string> - <string name="toast_channel_deleted1">Pomyślnie usunięto z ustawionych wstępnie kanałów.</string> - <string name="toast_channel_added1">Pomyślnie dodano do ustawionych wstępnie kanałów.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-pt-rPT/strings.xml b/MediaTek/FmRadio/res/values-pt-rPT/strings.xml deleted file mode 100755 index 9c6edce..0000000 --- a/MediaTek/FmRadio/res/values-pt-rPT/strings.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Rádio FM</string> - <string name="favorite_manager">Lista de canais</string> - <string name="add_to_favorite">Adicionar a Favorito</string> - <string name="optmenu_search">Procurar</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">Operações</string> - <string name="contmenu_item_edit">Editar</string> - <string name="contmenu_item_delete">Remover dos favoritos</string> - <string name="dlg_noantenna_text">É necessário utilizar os auscultadores como antena. Ligue os auscultadores.</string> - <string name="dlg_noantenna_title">Plugar o fone de ouvido</string> - <string name="btn_yes">Sim</string> - <string name="btn_no">Não</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Cancelar</string> - <string name="dlg_progress_title">Sintonizar</string> - <string name="dlg_progress_text">A pesquisar canais…</string> - <string name="dlg_addedit_station_name">Nome: </string> - <string name="dlg_addedit_station_freq">Frequência:</string> - <string name="dlg_addedit_title_edit">Editar Canal</string> - <string name="default_station_name">Novo Canal</string> - <string name="dlg_delete_confirm_title">Confirmar Exclusão do Canal</string> - <string name="dlg_delete_confirm_text">Você tem certeza que deseja excluir este canal?</string> - <string name="toast_favorite_full">Impossível adicionar o canal à lista de favoritos porque ela está cheia.</string> - <string name="toast_already_favorite">Esta canal já existe na lista de favoritos.</string> - <string name="toast_channel_deleted">Remoção dos favoritos efectuada com êxito.</string> - <string name="toast_channel_added">Adição aos favoritos efectuada com êxito.</string> - <string name="toast_channel_searched">Procurado nos canais disponíveis:</string> - <string name="toast_cannot_search">Impossível encontrar canal disponível.</string> - <string name="optmenu_rds_settings">Config. RDS</string> - <string name="dlg_rds_settings_channel_information">Info. do canal</string> - <string name="dlg_rds_settings_alternative_frequency">Freqüência alternativa</string> - <string name="more">Mais Aplicações</string> - <string name="power">expoente</string> - <string name="sound_mode">Modo de som</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Ligue os seus auscultadores para os utilizar como antena de rádio.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Substituir"</string> - <string name="fm_recorder_name">Gravador FM</string> - <string name="toast_recording_lost_warning">A sua gravação irá perder-se devido à remoção do cartão SD!</string> - <string name="toast_start_recording">Iniciar gravação…</string> - <string name="toast_sdcard_missing">Não existe cartão SD!</string> - <string name="toast_sdcard_insufficient_space">Espaço insuficiente no cartão SD!</string> - <string name="toast_recorder_internal_error">Ocorreu um erro interno no gravador!</string> - <string name="toast_player_internal_error">Ocorreu um erro interno no leitor!</string> - <string name="toast_powerup_before_record_warning">Ligue primeiro o rádio FM!</string> - <string name="optmenu_record">Gravar FM</string> - <string name="btn_save_recording">Guardar</string> - <string name="btn_discard_recording">Rejeitar</string> - <string name="edit_recording_name_hint">Introduza aqui o nome do ficheiro</string> - <string name="dlg_save_recording_title">Guardar ficheiro de gravação</string> - <string name="dlg_save_recording_storage_warning">Espaço de armazenamento insuficiente! Deseja guardar a gravação actual?</string> - <string name="already_exists">já existe</string> - <string name="toast_invalid_frequency">Frequência inválida para local atual. Escopo de frequência válida: 87,5-108,0.</string> - <string name="toast_invalid_input">O último valor introduzido é inválido, o valor válido é 0 ou 5.</string> - <string name="toast_in_call">Não é possível utilizar o Rádio FM durante uma chamada.</string> - <string name="empty_list">A lista de canais está vazia.</string> - <string name="optmenu_speaker">"Altifalante"</string> - <string name="optmenu_earphone">Auricular</string> - <string name="not_available">Não disponível actualmente</string> - <string name="add_to_favorite1">Adicionar como canal predefinido</string> - <string name="contmenu_item_delete1">Remover de canais predefinidos</string> - <string name="dlg_delete_confirm_title1">Confirmar remoção de canais predefinidos</string> - <string name="dlg_delete_confirm_text1">Tem certeza que deseja remover este canal dos canais predefinidos?</string> - <string name="toast_favorite_full1">Impossível adicionar o canal à lista de canais predefinidos porque está cheia.</string> - <string name="toast_already_favorite1">Este canal já está na lista de canais predefinidos.</string> - <string name="toast_channel_deleted1">Removido com sucesso de canais predefinidos.</string> - <string name="toast_channel_added1">Adicionar om sucesso de canais predefinidos.</string> -</resources> - diff --git a/MediaTek/FmRadio/res/values-pt/strings.xml b/MediaTek/FmRadio/res/values-pt/strings.xml deleted file mode 100755 index d2fc5ef..0000000 --- a/MediaTek/FmRadio/res/values-pt/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Transmissão FM</string> - <string name="favorite_manager">Canais</string> - <string name="add_to_favorite">Adicionar aos Favoritos</string> - <string name="optmenu_search">Pesquisar</string> - <string name="optmenu_exit">Sair</string> - <string name="contmenu_title">Operações</string> - <string name="contmenu_item_edit">Editar</string> - <string name="contmenu_item_delete">Remover</string> - <string name="dlg_noantenna_text">Você precisa de um fone de ouvido como antena. Conecte seu fone de ouvido.</string> - <string name="dlg_noantenna_title">Conectar o fone de ouvido</string> - <string name="btn_yes">Sim</string> - <string name="btn_no">Não</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Cancelar</string> - <string name="dlg_progress_title">A procurar</string> - <string name="dlg_progress_text">procurar canais...</string> - <string name="dlg_addedit_station_name">Nome:</string> - <string name="dlg_addedit_station_freq">Frequencia:</string> - <string name="dlg_addedit_title_edit">Editar canal</string> - <string name="default_station_name">Novo canal</string> - <string name="dlg_delete_confirm_title">Confirmar Exclusão de Canal</string> - <string name="dlg_delete_confirm_text">Tem certeza de que deseja excluir este canal?</string> - <string name="toast_favorite_full">Impossível adicionar o canal para a lista de favoritos porque ela está cheia.</string> - <string name="toast_already_favorite">Este canal já está na lista de favoritos.</string> - <string name="toast_channel_deleted">O canal é excluído da lista de favoritos.</string> - <string name="toast_channel_added">O canal é adicionado para lista de favoritos.</string> - <string name="toast_channel_searched">Procurado nos canais disponíveis:</string> - <string name="toast_cannot_search">Impossível encontrar canal disponível.</string> - <string name="optmenu_rds_settings">Config. RDS</string> - <string name="dlg_rds_settings_channel_information">Info. do canal</string> - <string name="dlg_rds_settings_alternative_frequency">Freqüência alternativa</string> - <string name="more">Mais Aplicativos</string> - <string name="power">potência</string> - <string name="sound_mode">Modo de som</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Conecte seus fones de ouvido para usar como uma antena de rádio.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Substituir"</string> - <string name="fm_recorder_name">Gravador FM</string> - <string name="toast_recording_lost_warning">Sua gravação será perdida devido à removação do SD!</string> - <string name="toast_start_recording">Iniciar gravação…</string> - <string name="toast_sdcard_missing">Seu cartão SD está faltando!</string> - <string name="toast_sdcard_insufficient_space">Espaço insuficiente no cartão SD!</string> - <string name="toast_recorder_internal_error">Um erro interno ocorreu no gravador!</string> - <string name="toast_player_internal_error">Um erro interno ocorreu no reprodutor!</string> - <string name="toast_powerup_before_record_warning">Ligue FM primeiro!</string> - <string name="optmenu_record">Gravar FM</string> - <string name="btn_save_recording">Salvar</string> - <string name="btn_discard_recording">Descartar</string> - <string name="edit_recording_name_hint">Digite o nome do arquivo aqui</string> - <string name="dlg_save_recording_title">Salvar arquivo de gravação</string> - <string name="dlg_save_recording_storage_warning">Armazenamento insuficiente! Deseja salvar a gravação atual?</string> - <string name="already_exists">Já existe</string> - <string name="toast_invalid_frequency">Frequência inválida para a localização actual. Intervalo de frequências válidas: 87,5-108,0.</string> - <string name="toast_invalid_input">A última entrada inválida, valor válido é 0 ou 5.</string> - <string name="toast_in_call">Você não pode iniciar a Rádio FM quando esá er chamada.</string> - <string name="empty_list">Lista de canal está vazia.</string> - <string name="optmenu_speaker">"Alto-falante"</string> - <string name="optmenu_earphone">Headset</string> - <string name="not_available">Atualmente indisponível</string> - <string name="add_to_favorite1">Adicionar aos canais predefinidos</string> - <string name="contmenu_item_delete1">Remover dos canais predefinidos</string> - <string name="dlg_delete_confirm_title1">Confirmar a remoção dos canais predefinidos</string> - <string name="dlg_delete_confirm_text1">Deseja realmente remover este canal dos canais predefinidos?</string> - <string name="toast_favorite_full1">Não é possível adicionar o canal à lista de canais predefinidos porque a lista está cheia.</string> - <string name="toast_already_favorite1">Este canal já se encontra na lista de canais predefinidos.</string> - <string name="toast_channel_deleted1">Removido com sucesso dos canais predefinidos.</string> - <string name="toast_channel_added1">Adicionado com sucesso aos canais predefinidos.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-ro/strings.xml b/MediaTek/FmRadio/res/values-ro/strings.xml deleted file mode 100755 index dfc986d..0000000 --- a/MediaTek/FmRadio/res/values-ro/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Radio FM</string> - <string name="favorite_manager">Listă canale</string> - <string name="add_to_favorite">Adăugare la Preferinţe</string> - <string name="optmenu_search">Căutare</string> - <string name="optmenu_exit">Ieşire</string> - <string name="contmenu_title">Operaţii</string> - <string name="contmenu_item_edit">Editare</string> - <string name="contmenu_item_delete">Eliminare din preferinţe</string> - <string name="dlg_noantenna_text">Aveţi nevoie de căşti, acestea acţionând pe post de antenă. Conectaţi căştile.</string> - <string name="dlg_noantenna_title">Conectare căşti</string> - <string name="btn_yes">Da</string> - <string name="btn_no">Nu</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Revocare</string> - <string name="dlg_progress_title">Scanare</string> - <string name="dlg_progress_text">Scanare canale...</string> - <string name="dlg_addedit_station_name">Nume:</string> - <string name="dlg_addedit_station_freq">Frecvenţă:</string> - <string name="dlg_addedit_title_edit">Editare canal</string> - <string name="default_station_name">Canal nou</string> - <string name="dlg_delete_confirm_title">Confirmare eliminare din preferinţe</string> - <string name="dlg_delete_confirm_text">Sigur doriţi să eliminaţi acest canal din preferinţe?</string> - <string name="toast_favorite_full">Imposibil de adăugat canalul la lista de preferinţe deoarece aceasta este plină.</string> - <string name="toast_already_favorite">Canalul este deja în lista de preferinţe.</string> - <string name="toast_channel_deleted">Eliminarea din preferinţe a reuşit.</string> - <string name="toast_channel_added">Adăugarea la preferinţe a reuşit.</string> - <string name="toast_channel_searched">Canale disponibile căutate:</string> - <string name="toast_cannot_search">Imposibil de căutat canalul disponibil.</string> - <string name="toast_invalid_frequency">Frecvenţă nevalidă pentru locaţia curentă. Interval valid de frecvenţă: 87,5-108,0</string> - <string name="optmenu_rds_settings">Setări RDS</string> - <string name="dlg_rds_settings_channel_information">Informaţii canal</string> - <string name="dlg_rds_settings_alternative_frequency">Frecvenţă alternativă</string> - <string name="sound_mode">Mod sunet</string> - <string name="more">Mai multe aplicaţii</string> - <string name="power">putere</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Conectaţi căştile pentru că acestea funcţionează pe post de antenă radio.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Suprascrieţi"</string> - <string name="fm_recorder_name">Înregistrator FM</string> - <string name="toast_recording_lost_warning">Înregistrarea dvs. se va pierde din cauza scoaterii cartelei SD!</string> - <string name="toast_start_recording">Pornire înregistrare...</string> - <string name="toast_sdcard_missing">Cartela SD lipseşte!</string> - <string name="toast_sdcard_insufficient_space">Spaţiu insuficient pe cartela SD!</string> - <string name="toast_recorder_internal_error">S-a produs o eroare internă în înregistrator!</string> - <string name="toast_player_internal_error">S-a produs o eroare internă în player!</string> - <string name="toast_powerup_before_record_warning">Mai întâi porniţi radioul FM!</string> - <string name="optmenu_record">Înregistrare FM</string> - <string name="btn_save_recording">Salvare</string> - <string name="btn_discard_recording">Renunţare</string> - <string name="edit_recording_name_hint">Tastaţi numele de fişier aici</string> - <string name="dlg_save_recording_title">Salvare fişier de înregistrare</string> - <string name="dlg_save_recording_storage_warning">Spaţiu de stocare insuficient! Doriţi să salvaţi înregistrarea curentă?</string> - <string name="already_exists">există deja</string> - <string name="toast_invalid_input">Ultima intrare nevalidă, valoarea validă este 0 sau 5.</string> - <string name="toast_in_call">Nu puteţi lansa aplicaţia de radio FM cât timp vă aflaţi într-un apel.</string> - <string name="empty_list">Lista de canale este goală.</string> - <string name="optmenu_speaker">"Difuzor"</string> - <string name="optmenu_earphone">Set cu căşti</string> - <string name="not_available">Indisponibil în prezent</string> - <string name="add_to_favorite1">Adăugaţi la canalele presetate</string> - <string name="contmenu_item_delete1">Eliminaţi din canalele presetate</string> - <string name="dlg_delete_confirm_title1">Confirmaţi eliminarea din canalele presetate</string> - <string name="dlg_delete_confirm_text1">Sigur doriţi să eliminaţi acest canal din canalele presetate?</string> - <string name="toast_favorite_full1">Imposibil de adăugat canalul la lista de canale presetate deoarece aceasta este plină.</string> - <string name="toast_already_favorite1">Canalul este deja în lista de canale presetate.</string> - <string name="toast_channel_deleted1">Eliminarea din canalele presetate a reuşit.</string> - <string name="toast_channel_added1">Adăugarea la canalele presetate a reuşit.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-ru/strings.xml b/MediaTek/FmRadio/res/values-ru/strings.xml deleted file mode 100755 index 55d8e10..0000000 --- a/MediaTek/FmRadio/res/values-ru/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-станция</string> - <string name="favorite_manager">Список каналов</string> - <string name="add_to_favorite">Добавить в избранное</string> - <string name="optmenu_search">Поиск</string> - <string name="optmenu_exit">Выйти</string> - <string name="contmenu_title">Операции</string> - <string name="contmenu_item_edit">Изменить</string> - <string name="contmenu_item_delete">Удалить из избранного</string> - <string name="dlg_noantenna_text">Вам нужен головной телефон в роли антенны. Подключите головной телефон.</string> - <string name="dlg_noantenna_title">Подключите наушники</string> - <string name="btn_yes">Да </string> - <string name="btn_no">Нет</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Отменить</string> - <string name="dlg_progress_title">Сканирование</string> - <string name="dlg_progress_text">Поиск каналов...</string> - <string name="dlg_addedit_station_name">Имя:</string> - <string name="dlg_addedit_station_freq">Частота:</string> - <string name="dlg_addedit_title_edit">Изменить станция</string> - <string name="default_station_name">Новая станция</string> - <string name="dlg_delete_confirm_title">Подтвердите удаление канала</string> - <string name="dlg_delete_confirm_text">Действительно удалить этот канал?</string> - <string name="toast_favorite_full">Невозможно добавить канал в список избранных, поскольку список полон.</string> - <string name="toast_already_favorite">Этот канал уже добавлен в список избранных.</string> - <string name="toast_channel_deleted">Удалено из папки избранного.</string> - <string name="toast_channel_added">Добавлено в избранное.</string> - <string name="toast_channel_searched">Найденные доступные каналы:</string> - <string name="toast_cannot_search">Не удается найти доступный канал.</string> - <string name="optmenu_rds_settings">Настройки RDS</string> - <string name="dlg_rds_settings_channel_information">Информация о канале</string> - <string name="dlg_rds_settings_alternative_frequency">Альтернативная частота</string> - <string name="more">Еще приложения</string> - <string name="power">в степени</string> - <string name="sound_mode">Звуковой режим</string> - <string name="fm_unit">МГц</string> - <string name="no_antenna_info">Подключите наушники для использования в качестве антенны.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Перезаписать"</string> - <string name="fm_recorder_name">FM-рекордер</string> - <string name="toast_recording_lost_warning">Запись будет утеряна из-за извлечения SD-карты!</string> - <string name="toast_start_recording">Запуск записи…</string> - <string name="toast_sdcard_missing">Отсутствует SD-карта!</string> - <string name="toast_sdcard_insufficient_space">Недостаточно места на SD-карте!</string> - <string name="toast_recorder_internal_error">Внутренняя ошибка в устройстве записи!</string> - <string name="toast_player_internal_error">Внутренняя ошибка в плеере!</string> - <string name="toast_powerup_before_record_warning">Сначала включите FM-приемник!</string> - <string name="optmenu_record">Записать с FM-диапазона</string> - <string name="btn_save_recording">Сохранить</string> - <string name="btn_discard_recording">Аннулировать</string> - <string name="edit_recording_name_hint">Введите имя файла</string> - <string name="dlg_save_recording_title">Сохранить файл записи</string> - <string name="dlg_save_recording_storage_warning">Недостаточно памяти! Сохранить текущую запись?</string> - <string name="already_exists">Уже существует</string> - <string name="toast_invalid_frequency">Недопустимая частота для текущего положения. Диапазон допустимых частот: 87,5-108,0.</string> - <string name="toast_invalid_input">Последний неверный ввод, допустимое значение 0 или 5.</string> - <string name="toast_in_call">Во время вызова нельзя включить FM-радио.</string> - <string name="empty_list">Список каналов пуст.</string> - <string name="optmenu_speaker">"Динамик"</string> - <string name="optmenu_earphone">Наушники</string> - <string name="not_available">Недоступно в данный момент</string> - <string name="add_to_favorite1">Добавить в настроенные каналы</string> - <string name="contmenu_item_delete1">Удалить из настроенных каналов</string> - <string name="dlg_delete_confirm_title1">Подтвердить удаление из настроенных каналов</string> - <string name="dlg_delete_confirm_text1">Действительно удалить данный канал из настроенных каналов?</string> - <string name="toast_favorite_full1">Невозможно добавить данный канал в список настроенных каналов, так как список заполнен.</string> - <string name="toast_already_favorite1">Данный канал уже имеется в списке настроенных каналов.</string> - <string name="toast_channel_deleted1">Удалено из списка настроенных каналов.</string> - <string name="toast_channel_added1">Добавлено в список настроенных каналов.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-sk/strings.xml b/MediaTek/FmRadio/res/values-sk/strings.xml deleted file mode 100755 index 359146d..0000000 --- a/MediaTek/FmRadio/res/values-sk/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Rádio FM</string> - <string name="favorite_manager">Zoznam kanálov</string> - <string name="add_to_favorite">Pridať do zoznamu obľúbených kanálov</string> - <string name="optmenu_search">Vyhľadať</string> - <string name="optmenu_exit">Ukončiť</string> - <string name="contmenu_title">Operácie</string> - <string name="contmenu_item_edit">Upraviť</string> - <string name="contmenu_item_delete">Odstrániť zo zoznamu obľúbených kanálov</string> - <string name="dlg_noantenna_text">Slúchadlá potrebujete ako anténu. Zapojte slúchadlá.</string> - <string name="dlg_noantenna_title">Zapojte slúchadlá</string> - <string name="btn_yes">"Áno"</string> - <string name="btn_no">"Nie"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Zrušiť </string> - <string name="dlg_progress_title">Vyhľadať</string> - <string name="dlg_progress_text">Vyhľadávam kanály...</string> - <string name="dlg_addedit_station_name">Názov:</string> - <string name="dlg_addedit_station_freq">Frekvencia:</string> - <string name="dlg_addedit_title_edit">Upraviť kanál</string> - <string name="default_station_name">Nový kanál</string> - <string name="dlg_delete_confirm_title">Potvrďte odstránenie zo zoznamu obľúbených kanálov</string> - <string name="dlg_delete_confirm_text">Ste si istí, že chcete odstrániť tento kanál zo zoznamu obľúbených kanálov?</string> - <string name="toast_favorite_full">Tento kanál nemožno pridať do zoznamu obľúbených kanálov, pretože je plný.</string> - <string name="toast_already_favorite">Tento kanál je už v zozname obľúbených kanálov.</string> - <string name="toast_channel_deleted">Kanál bol úspešne odstránený zo zoznamu obľúbených kanálov.</string> - <string name="toast_channel_added">Kanál bol úspešne pridaný do zoznamu obľúbených kanálov.</string> - <string name="toast_channel_searched">Vyhľadať dostupné kanály:</string> - <string name="toast_cannot_search">Dostupné kanály nemožno vyhľadať.</string> - <string name="toast_invalid_frequency">Neplatná frekvencia aktuálneho umiestnenia. Platí frekvenčný rozsah: 87,5 až 108,0</string> - <string name="toast_invalid_input">Naposledy zadaný vstup je neplatný. Platná hodnota je 0 alebo 5.</string> - <string name="optmenu_rds_settings">Nastavenia RDS</string> - <string name="dlg_rds_settings_channel_information">Informácie o kanále</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatívna frekvencia</string> - <string name="sound_mode">Režim zvuku</string> - <string name="more">"Viac"</string> - <string name="power">"mocnina"</string> - <string name="toast_in_call">Počas hovoru nemôžete spustiť rádio FM.</string> - <string name="empty_list">Zoznam kanálov je prázdny</string> - <string name="edit_frequency_overwrite_text">Prepísať</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Zapojte slúchadlá a používajte ako rádiovú anténu.</string> - <string name="fm_recorder_name">Nahrávač FM</string> - <string name="toast_recording_lost_warning">Keď vyberiete kartu SD, vaša nahrávka bude stratená!</string> - <string name="toast_start_recording">Spustiť nahrávanie...</string> - <string name="toast_sdcard_missing">Chýba vaša karta SD!</string> - <string name="toast_sdcard_insufficient_space">Nedostatok miesta na karte SD!</string> - <string name="toast_recorder_internal_error">Došlo k internej chybe v nahrávači!</string> - <string name="toast_player_internal_error">Došlo k internej chybe v prehrávači!</string> - <string name="toast_powerup_before_record_warning">Najskôr zapnite rádio FM!</string> - <string name="optmenu_record">Nahrať FM</string> - <string name="btn_save_recording">"Uložiť"</string> - <string name="btn_discard_recording">Vymazať</string> - <string name="edit_recording_name_hint">Sem napíšte názov súboru</string> - <string name="dlg_save_recording_title">Uložiť súbor s nahrávkou</string> - <string name="dlg_save_recording_storage_warning">V pamäti je nedostatok miesta! Chcete uložiť aktuálnu nahrávku?</string> - <string name="already_exists">už existuje</string> - <string name="optmenu_speaker">reproduktor</string> - <string name="optmenu_earphone">Slúchadlá</string> - <string name="not_available">Momentálne nie je k dispozícii</string> - <string name="add_to_favorite1">Pridať do prednastavených kanálov</string> - <string name="contmenu_item_delete1">Odstrániť z prednastavených kanálov</string> - <string name="dlg_delete_confirm_title1">Potvrďte odstránenie z prednastavených kanálov</string> - <string name="dlg_delete_confirm_text1">Ste si istí, že chcete odstrániť tento kanál z prednastavených kanálov?</string> - <string name="toast_favorite_full1">Tento kanál nemožno pridať do zoznamu prednastavených kanálov, pretože je plný.</string> - <string name="toast_already_favorite1">Tento kanál je už v zozname prednastavených kanálov.</string> - <string name="toast_channel_deleted1">Kanál bol úspešne odstránený zo zoznamu prednastavených kanálov.</string> - <string name="toast_channel_added1">Kanál bol úspešne pridaný do zoznamu prednastavených kanálov.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-sl/strings.xml b/MediaTek/FmRadio/res/values-sl/strings.xml deleted file mode 100755 index 460fe51..0000000 --- a/MediaTek/FmRadio/res/values-sl/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Radio FM</string> - <string name="dlg_progress_title">Iskanje</string> - <string name="btn_yes">Da</string> - <string name="optmenu_speaker">Zvočnik</string> - <string name="edit_frequency_overwrite_text">Prepiši</string> - <string name="toast_start_recording">Začetek snemanja ...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Seznam kanalov je prazen.</string> - <string name="optmenu_rds_settings">Nastavitve RDS</string> - <string name="toast_channel_searched">Najdeni razpoložljivi kanali:</string> - <string name="already_exists">že obstaja</string> - <string name="dlg_noantenna_title">Priklop slušalk</string> - <string name="add_to_favorite">Dodaj priljubljenim</string> - <string name="toast_sdcard_insufficient_space">Na kartici SD ni dovolj prostora!</string> - <string name="dlg_delete_confirm_title">Potrdi odstranitev iz priljubljenih</string> - <string name="optmenu_record">Snemanje FM</string> - <string name="optmenu_earphone">Slušalka</string> - <string name="sound_mode">Način zvoka</string> - <string name="toast_already_favorite">Ta kanal je že med priljubljenimi.</string> - <string name="not_available">Trenutno ni na voljo</string> - <string name="toast_channel_deleted">Uspešno odstranjeno iz priljubljenih</string> - <string name="toast_channel_added">Uspešno dodano priljubljenim.</string> - <string name="dlg_rds_settings_channel_information">Podatki o kanalu</string> - <string name="toast_favorite_full">Kanala ni mogoče dodati na seznam priljubljenih, ker je ta poln.</string> - <string name="btn_save_recording">Shrani</string> - <string name="optmenu_search">Išči</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativna frekvenca</string> - <string name="dlg_progress_text">Iskanje kanalov ...</string> - <string name="optmenu_exit">Izhod</string> - <string name="more">Več</string> - <string name="btn_discard_recording">Zavrzi</string> - <string name="contmenu_item_edit">Uredi</string> - <string name="toast_cannot_search">Iskanje razpoložljivih kanalov ni na voljo.</string> - <string name="dlg_save_recording_storage_warning">V pomnilniku ni dovolj prostora! Ali želite shraniti trenutni posnetek?</string> - <string name="toast_in_call">Radia FM ne morete zagnati, medtem ko imate klic.</string> - <string name="dlg_addedit_station_freq">Frekvenca:</string> - <string name="toast_recorder_internal_error">V snemalniku je prišlo do notranje napake!</string> - <string name="dlg_save_recording_title">Shrani posneto datoteko</string> - <string name="btn_ok">V redu</string> - <string name="power">Napajanje</string> - <string name="contmenu_item_delete">Odstrani iz priljubljenih</string> - <string name="toast_powerup_before_record_warning">Najprej napolnite FM!</string> - <string name="fm_recorder_name">Snemalnik FM</string> - <string name="toast_recording_lost_warning">Če odstranite SD, boste posnetek izgubili!</string> - <string name="dlg_delete_confirm_text">Ali ste prepričani, da želite ta kanal odstraniti iz priljubljenih?</string> - <string name="default_station_name">Nov kanal</string> - <string name="btn_cancel">Prekliči</string> - <string name="contmenu_title">Dejanja</string> - <string name="btn_no">Ne</string> - <string name="favorite_manager">Seznam kanalov</string> - <string name="toast_invalid_frequency">Neveljavna frekvenca za trenutno lokacijo. Veljaven frekvenčni razpon: 87,5–108,0</string> - <string name="toast_sdcard_missing">Kartica SD manjka!</string> - <string name="dlg_addedit_station_name">Ime:</string> - <string name="dlg_addedit_title_edit">Urejanje kanala</string> - <string name="toast_invalid_input">Zadnji neveljaven vnos, veljavna vrednost je 0 ali 5.</string> - <string name="edit_recording_name_hint">Sem vpišite ime datoteke</string> - <string name="dlg_noantenna_text">Slušalke rabite kot anteno. Priključite slušalke.</string> - <string name="toast_player_internal_error">V predvajalniku je prišlo do notranje napake!</string> - <string name="no_antenna_info">Priključite slušalke, da bodo služile kot antena radia.</string> - <string name="add_to_favorite1">Dodaj med prednastavljene kanale</string> - <string name="contmenu_item_delete1">Odstrani iz prednastavljenih kanalov</string> - <string name="dlg_delete_confirm_title1">Potrdi odstranitev iz prednastavljenih kanalov</string> - <string name="dlg_delete_confirm_text1">Ali ste prepričani, da želite odstraniti ta kanal iz prednastavljenih kanalov?</string> - <string name="toast_favorite_full1">Kanala ni mogoče dodati na seznam prednastavljenih kanalov, ker je seznam poln.</string> - <string name="toast_already_favorite1">Ta kanal je že na seznamu prednastavljenih kanalov.</string> - <string name="toast_channel_deleted1">Uspešno odstranjeno iz prednastavljenih kanalov.</string> - <string name="toast_channel_added1">Uspešno dodano med prednastavljene kanale.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-sr/strings.xml b/MediaTek/FmRadio/res/values-sr/strings.xml deleted file mode 100755 index bccb8e8..0000000 --- a/MediaTek/FmRadio/res/values-sr/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">FM радио</string> - <string name="dlg_progress_title">Претрага</string> - <string name="btn_yes">Да</string> - <string name="optmenu_speaker">Звучник</string> - <string name="edit_frequency_overwrite_text">Замени</string> - <string name="toast_start_recording">Почни снимање...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Листа канала је празна.</string> - <string name="optmenu_rds_settings">Подешавања RDS</string> - <string name="toast_channel_searched">Претрага доступних канала:</string> - <string name="already_exists">већ постоји</string> - <string name="dlg_noantenna_title">Укључите слушалицу</string> - <string name="add_to_favorite">Листа канала</string> - <string name="toast_sdcard_insufficient_space">Недовољан простор на SD картици!</string> - <string name="dlg_delete_confirm_title">Потврди уклањање из омиљених</string> - <string name="optmenu_record">Сними FM</string> - <string name="optmenu_earphone">Слушалица</string> - <string name="sound_mode">Режим звука</string> - <string name="toast_already_favorite">Овај канал је већ на листи омиљених.</string> - <string name="not_available">Тренутно није доступно</string> - <string name="toast_channel_deleted">Успешно уклоњено из омиљених.</string> - <string name="toast_channel_added">Успешно додато омиљеним.</string> - <string name="dlg_rds_settings_channel_information">Информације о каналу</string> - <string name="toast_favorite_full">Није могуће додати канал на листу омиљених зато што је листа пуна.</string> - <string name="btn_save_recording">Сачувај</string> - <string name="optmenu_search">Претрага</string> - <string name="dlg_rds_settings_alternative_frequency">Алтернативна фреквенција</string> - <string name="dlg_progress_text">Претрага канала...</string> - <string name="optmenu_exit">Изађи</string> - <string name="more">Још</string> - <string name="btn_discard_recording">Одбаци</string> - <string name="contmenu_item_edit">Уреди</string> - <string name="toast_cannot_search">Није могуће тражити доступни канал.</string> - <string name="dlg_save_recording_storage_warning">Недовољна меморија! Желите ли да снимите тренутни снимак?</string> - <string name="toast_in_call">За време позива покретање FM радија није могуће.</string> - <string name="dlg_addedit_station_freq">Име:</string> - <string name="toast_recorder_internal_error">Дошло је до интерне грешке у снимачу!</string> - <string name="dlg_save_recording_title">Сачувај датотеку снимања</string> - <string name="btn_ok">Потврди</string> - <string name="power">Напајање</string> - <string name="contmenu_item_delete">Уклони из омиљених</string> - <string name="toast_powerup_before_record_warning">Прво укључите FM!</string> - <string name="fm_recorder_name">FM снимач</string> - <string name="toast_recording_lost_warning">Ваш снимак ће бити изгубљен због уклањања SD картице!</string> - <string name="dlg_delete_confirm_text">Желите ли сигурно да уклоните овај канал из омиљених?</string> - <string name="default_station_name">Нови канали</string> - <string name="btn_cancel">Откажи</string> - <string name="contmenu_title">Операције</string> - <string name="btn_no">Не</string> - <string name="favorite_manager">Листа канала</string> - <string name="toast_invalid_frequency">Неважећа фреквенција за тренутну локацију. Опсег важеће фреквенције: 87,5-108,0</string> - <string name="toast_sdcard_missing">Ваша SD картица недостаје!</string> - <string name="dlg_addedit_station_name">Повезивање:</string> - <string name="dlg_addedit_title_edit">Уреди канал</string> - <string name="toast_invalid_input">Последњи неважећи унос, важећа вредност је 0 или 5.</string> - <string name="edit_recording_name_hint">Овде укуцајте име датотеке</string> - <string name="dlg_noantenna_text">Потребна вам је слушалица као антена. Укључите слушалицу.</string> - <string name="toast_player_internal_error">Дошло је до интерне грешке у плејеру!</string> - <string name="no_antenna_info">Укључите слушалице да бисте их користили као радио антену</string> - <string name="add_to_favorite1">Додај унапред подешеним каналима</string> - <string name="contmenu_item_delete1">Уклони из унапред подешених канала</string> - <string name="dlg_delete_confirm_title1">Потврди уклањање из унапред подешених канала</string> - <string name="dlg_delete_confirm_text1">Желите ли сигурно да уклоните овај канал из унапред подешених канала?</string> - <string name="toast_favorite_full1">Није могуће додати канал на листу унапред подешених канала зато што је листа пуна.</string> - <string name="toast_already_favorite1">Овај канал је већ на листи унапред подешених.</string> - <string name="toast_channel_deleted1">Успешно уклоњено из унапред подешених канала.</string> - <string name="toast_channel_added1">Успешно додато унапред подешеним каналима.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-sv/strings.xml b/MediaTek/FmRadio/res/values-sv/strings.xml deleted file mode 100755 index adc6834..0000000 --- a/MediaTek/FmRadio/res/values-sv/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-radio</string> - <string name="favorite_manager">Kanallista</string> - <string name="add_to_favorite">Lägg till som favorit</string> - <string name="optmenu_search">Sök</string> - <string name="optmenu_exit">Avsluta</string> - <string name="contmenu_title">Användning</string> - <string name="contmenu_item_edit">Redigera</string> - <string name="contmenu_item_delete">Ta bort från favoriter</string> - <string name="dlg_noantenna_text">Du behöver en hörlur som antenn. Anslut dina hörlurar.</string> - <string name="dlg_noantenna_title">Anslut hörlurar</string> - <string name="btn_yes">"Ja"</string> - <string name="btn_no">"Nej"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Avbryt</string> - <string name="dlg_progress_title">Sök</string> - <string name="dlg_progress_text">Sök kanaler…</string> - <string name="dlg_addedit_station_name">Namn:</string> - <string name="dlg_addedit_station_freq">Frekvens:</string> - <string name="dlg_addedit_title_edit">Redigera kanal</string> - <string name="default_station_name">Ny kanal</string> - <string name="dlg_delete_confirm_title">Bekräfta borttagning från favoriter</string> - <string name="dlg_delete_confirm_text">Är du säker på att du vill ta bort den här kanalen från favoriter?</string> - <string name="toast_favorite_full">Kan inte lägga till kanalen i favoritlistan eftersom den är full.</string> - <string name="toast_already_favorite">Denna kanal finns redan i favoritlistan.</string> - <string name="toast_channel_deleted">Kanalen har tagits bort från favoriter.</string> - <string name="toast_channel_added">Kanalen har lagts till i favoriter.</string> - <string name="toast_channel_searched">Tillgängliga kanaler efter sökning:</string> - <string name="toast_cannot_search">Kan inte söka efter tillgängliga kanaler.</string> - <string name="toast_invalid_frequency">Ogiltig frekvens för nuvarande plats. Giltigt frekvensområde: 87,5-108,0</string> - <string name="toast_invalid_input">Senast ogitliga inmatning, aktivt värde är 0 eller 5.</string> - <string name="optmenu_rds_settings">RDS-inställningar</string> - <string name="dlg_rds_settings_channel_information">Kanalinformation</string> - <string name="dlg_rds_settings_alternative_frequency">Alternativ frekvens</string> - <string name="sound_mode">Ljudläge</string> - <string name="more">"Mer"</string> - <string name="power">"exponent"</string> - <string name="toast_in_call">Du kan inte starta FM-radio när ett samtal pågår.</string> - <string name="empty_list">Kanallistan är tom.</string> - <string name="edit_frequency_overwrite_text">Skriv över</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Anslut dina hörlurar för användning som radioantenn.</string> - <string name="fm_recorder_name">FM-inspelare</string> - <string name="toast_recording_lost_warning">Inspelningen kommer att tappas eftersom SD-kortet borttagning!</string> - <string name="toast_start_recording">Starta inspelning…</string> - <string name="toast_sdcard_missing">SD-kortet saknas!</string> - <string name="toast_sdcard_insufficient_space">Inte tillräckligt med ledigt utrymme på SD-kortet!</string> - <string name="toast_recorder_internal_error">Ett internt fel har inträffat i inspelaren!</string> - <string name="toast_player_internal_error">Ett internt fel har inträffat i spelaren!</string> - <string name="toast_powerup_before_record_warning">Starta FM först!</string> - <string name="optmenu_record">Spela in FM</string> - <string name="btn_save_recording">"Spara"</string> - <string name="btn_discard_recording">Kasta bort</string> - <string name="edit_recording_name_hint">Ange filnamnet här</string> - <string name="dlg_save_recording_title">Spara inspelad fil</string> - <string name="dlg_save_recording_storage_warning">Otillräckligt utrymme! Vill du spara befintlig inspelning?</string> - <string name="already_exists">finns redan</string> - <string name="optmenu_speaker">Högtalare</string> - <string name="optmenu_earphone">hörlur</string> - <string name="not_available">Inte tillgänglig för närvarande</string> - <string name="add_to_favorite1">Lägg till i förinställda kanaler</string> - <string name="contmenu_item_delete1">Ta bort från förinställda kanaler</string> - <string name="dlg_delete_confirm_title1">Bekräfta borttagning från förinställda kanaler</string> - <string name="dlg_delete_confirm_text1">Är du säker på att du vill ta bort den här kanalen från förinställda kanaler?</string> - <string name="toast_favorite_full1">Kan inte lägga till kanalen i listan över förinställda kanaler eftersom den är full.</string> - <string name="toast_already_favorite1">Denna kanal finns redan i listan över förinställda kanaler.</string> - <string name="toast_channel_deleted1">Kanalen har tagits bort från förinställda kanaler.</string> - <string name="toast_channel_added1">Kanalen har lagts till i förinställda kanaler.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-sw/strings.xml b/MediaTek/FmRadio/res/values-sw/strings.xml deleted file mode 100755 index 4d5ae7a..0000000 --- a/MediaTek/FmRadio/res/values-sw/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Redio ya FM</string> - <string name="dlg_progress_title">Tafuta</string> - <string name="btn_yes">Ndiyo</string> - <string name="optmenu_speaker">Spika</string> - <string name="edit_frequency_overwrite_text">Andika juu</string> - <string name="toast_start_recording">Anza kurekodi…</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Orodha ya vituo iko tupu.</string> - <string name="optmenu_rds_settings">Mipangilio ya RDS</string> - <string name="toast_channel_searched">Vituo vinavyopatikana vilivyotafutwa:</string> - <string name="already_exists">tayari ipo</string> - <string name="dlg_noantenna_title">Vaa vifaa vya masikioni</string> - <string name="add_to_favorite">Ongeza kwa Kipendwa</string> - <string name="toast_sdcard_insufficient_space">Nafasi ya kadi ya SD haitoshi!</string> - <string name="dlg_delete_confirm_title">Thibitisha ondoa kutoka kwenye vipendwa</string> - <string name="optmenu_record">Rekodi FM</string> - <string name="optmenu_earphone">Kifaa cha masikio</string> - <string name="sound_mode">Hali ya sauti</string> - <string name="toast_already_favorite">Kituo hiki kiko tayari katika orodha ya vipendwa.</string> - <string name="not_available">Haipatikani kwa sasa</string> - <string name="toast_channel_deleted">Imefanikiwa kuondolewa kwenye vipendwa.</string> - <string name="toast_channel_added">Imefanikiwa kuongezwa kwenye vipendwa.</string> - <string name="dlg_rds_settings_channel_information">Maelezo ya kituto</string> - <string name="toast_favorite_full">Haiwezi kuongeza kituo kwenye orodha ya vipendwa kwa sababu imejaa.</string> - <string name="btn_save_recording">Hifadhi</string> - <string name="optmenu_search">Tafuta</string> - <string name="dlg_rds_settings_alternative_frequency">Masafa mbadala</string> - <string name="dlg_progress_text">Tafuta vituo…</string> - <string name="optmenu_exit">Toka</string> - <string name="more">Zaidi</string> - <string name="btn_discard_recording">Tupa</string> - <string name="contmenu_item_edit">Hariri</string> - <string name="toast_cannot_search">Haiwezi kutafuta kituo kinachopatikana.</string> - <string name="dlg_save_recording_storage_warning">Hifadhi haitoshi! Je, unataka kuhifadhi rekodi ya sasa?</string> - <string name="toast_in_call">Huwezi kuzindua Redio ya FM unapopiga simu.</string> - <string name="dlg_addedit_station_freq">Masafa:</string> - <string name="toast_recorder_internal_error">Hitilafu ya ndani imetokea katika rekoda!</string> - <string name="dlg_save_recording_title">Hifadhi faili ya rekodi</string> - <string name="btn_ok">Sawa</string> - <string name="power">Nishati</string> - <string name="contmenu_item_delete">Ondoa kwenye vipendwa</string> - <string name="toast_powerup_before_record_warning">Tafadhali washa FM kwanza!</string> - <string name="fm_recorder_name">Rekoda ya FM</string> - <string name="toast_recording_lost_warning">Rekodi yako itapotea kwa sababu ya uondoaji SD!</string> - <string name="dlg_delete_confirm_text">Je, una uhakika unataka kuondoa kituo hiki kutoka kwa vipendwa?</string> - <string name="default_station_name">Kituo Kipya</string> - <string name="btn_cancel">Ghairi</string> - <string name="contmenu_title">Shughuli</string> - <string name="btn_no">La</string> - <string name="favorite_manager">Orodha ya vituo</string> - <string name="toast_invalid_frequency">Masafa ya eneo la sasa sio sahihi. Upeo wa masafa sahihi: 87.5-108.0</string> - <string name="toast_sdcard_missing">Kadi yako ya SD inakosekana!</string> - <string name="dlg_addedit_station_name">Jina:</string> - <string name="dlg_addedit_title_edit">Hariri Kituo</string> - <string name="toast_invalid_input">Ingizo la mwisho lisilo halali, thamani halali ni 0 au 5.</string> - <string name="edit_recording_name_hint">Charaza jina la faili hapa</string> - <string name="dlg_noantenna_text">Unahitaji kifaa cha masikio kama antena. Tafadhali chopeka kifaa chako cha masikio.</string> - <string name="toast_player_internal_error">Hitilafu ya kindani imetokea katika kichezaji!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-th/strings.xml b/MediaTek/FmRadio/res/values-th/strings.xml deleted file mode 100755 index 916fe97..0000000 --- a/MediaTek/FmRadio/res/values-th/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">วิทยุ FM</string> - <string name="favorite_manager">รายการสถานี</string> - <string name="add_to_favorite">เพิ่มลงในรายการโปรด</string> - <string name="optmenu_search">ค้นหา</string> - <string name="optmenu_exit">ออก</string> - <string name="contmenu_title">การใช้งาน</string> - <string name="contmenu_item_edit">แก้ไข</string> - <string name="contmenu_item_delete">ลบออกจากรายการที่ชอบ</string> - <string name="dlg_noantenna_text">คุณจำเป็นต้องมีหูฟังเพื่อใช้เป็นเสาอากาศ โปรดเสียบหูฟังของคุณ</string> - <string name="dlg_noantenna_title">เสียบหูฟัง</string> - <string name="btn_yes">"ใช่"</string> - <string name="btn_no">"ไม่"</string> - <string name="btn_ok">ตกลง</string> - <string name="btn_cancel">ยกเลิก</string> - <string name="dlg_progress_title">ค้นหา</string> - <string name="dlg_progress_text">ค้นหาสถานี...</string> - <string name="dlg_addedit_station_name">ชื่อ:</string> - <string name="dlg_addedit_station_freq">ความถี่:</string> - <string name="dlg_addedit_title_edit">แก้ไขแชนเนล</string> - <string name="default_station_name">สถานีใหม่</string> - <string name="dlg_delete_confirm_title">ยืนยันการลบ ช่อง</string> - <string name="dlg_delete_confirm_text">แน่ใจหรือไม่ว่าคุณต้องการลบช่องนี้?</string> - <string name="toast_favorite_full">ไม่สามารถเพิ่มช่องไปยังรายการโปรดได้ เนื่องจากรายการเต็ม</string> - <string name="toast_already_favorite">ช่องนี้อยู่ในรายการโปรดอยู่แล้ว</string> - <string name="toast_channel_deleted">ลบออกจากรายการที่ชอบสำเร็จแล้ว</string> - <string name="toast_channel_added">เพิ่มลงในรายการที่ชอบสำเร็จแล้ว</string> - <string name="toast_channel_searched">ค้นหาจากแชนเนลที่มี:</string> - <string name="toast_cannot_search">ไม่สามารถค้นหาจากแชนเนลที่มี</string> - <string name="optmenu_rds_settings">การตั้งค่า RDS</string> - <string name="dlg_rds_settings_channel_information">ข้อมูลแชนเนล</string> - <string name="dlg_rds_settings_alternative_frequency">ความถี่ทางเลือก</string> - <string name="more">เพิ่มเติม</string> - <string name="power">เปิด/ปิด</string> - <string name="sound_mode">โหมดเสียง</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">เสียบหูฟังเพื่อใช้เป็น เสาอากาศวิทยุ</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"เขียนทับ"</string> - <string name="fm_recorder_name">บันทึกเสียงวิทยุ</string> - <string name="toast_recording_lost_warning">การบันทึกของคุณจะหายไปเนื่องจากการถอด SD ออก!</string> - <string name="toast_start_recording">เริ่มบันทึกเสียง</string> - <string name="toast_sdcard_missing">การ์ด SD ของคุณหายไป</string> - <string name="toast_sdcard_insufficient_space">มีเนื้อที่ว่างในการ์ด SD ไม่เพียงพอ!</string> - <string name="toast_recorder_internal_error">เกิดความผิดพลาดภายในในตัวเครื่องบันทึก!</string> - <string name="toast_player_internal_error">เกิดความผิดพลาดภายในในตัวเครื่องเล่น!</string> - <string name="toast_powerup_before_record_warning">ขั้นแรกกรุณาเปิด FM!</string> - <string name="optmenu_record">บันทึกเสียงวิทยุ</string> - <string name="btn_save_recording">บันทึก</string> - <string name="btn_discard_recording">ยกเลิก</string> - <string name="edit_recording_name_hint">พิมพ์ชื่อไฟล์ที่นี่</string> - <string name="dlg_save_recording_title">บันทึกไฟล์อัดเสียง</string> - <string name="dlg_save_recording_storage_warning">มีเนื้อที่เก็บไม่เพียงพอ! คุณต้องการบันทึกการบันทึกปัจจุบันหรือไม่</string> - <string name="already_exists">มีอยู่แล้ว</string> - <string name="toast_invalid_frequency">ความถี่ใช้ไม่ได้สำหรับที่ตั้งปัจจุบัน ช่วงความถี่ที่ใช้ได้: 87.5-108.0.</string> - <string name="toast_invalid_input">ข้อมูลที่ป้อนล่าสุดไม่ถูกต้อง ค่าที่ถูกต้องคือ 0 หรือ 5</string> - <string name="toast_in_call">คุณไม่สามารถเปิดใช้งานวิทยุเอฟเอ็มได้เมื่อคุณกำลังโทร</string> - <string name="empty_list">รายการสถานีว่างอยู่</string> - <string name="optmenu_speaker">"ลำโพง"</string> - <string name="optmenu_earphone">หูฟัง</string> - <string name="not_available">ขณะนี้ใช้ไม่ได้</string> - <string name="add_to_favorite1">เพิ่มลงในช่องที่ตั้งไว้</string> - <string name="contmenu_item_delete1">ลบออกจากช่องที่ตั้งไว้</string> - <string name="dlg_delete_confirm_title1">ยืนยันการลบออกจากช่องที่ตั้งไว้</string> - <string name="dlg_delete_confirm_text1">คุณแน่ใจว่าต้องการลบช่องนี้ออกจากช่องที่ตั้งไว้หรือไม่</string> - <string name="toast_favorite_full1">ไม่สามารถเพิ่มช่องลงในรายการช่องที่ตั้งไว้ได้ เนื่องจากรายการเต็ม</string> - <string name="toast_already_favorite1">ช่องนี้มีอยู่ในรายการช่องที่ตั้งไว้แล้ว</string> - <string name="toast_channel_deleted1">ลบออกจากช่องที่ตั้งไว้สำเร็จแล้ว</string> - <string name="toast_channel_added1">เพิ่มลงในช่องที่ตั้งไว้สำเร็จแล้ว</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-tl/strings.xml b/MediaTek/FmRadio/res/values-tl/strings.xml deleted file mode 100755 index 3509ba6..0000000 --- a/MediaTek/FmRadio/res/values-tl/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">DM Radyo</string> - <string name="favorite_manager">Listahan ng channel</string> - <string name="add_to_favorite">Magdagdag sa Paborito</string> - <string name="optmenu_search">Maghanap</string> - <string name="optmenu_exit">Lumabas</string> - <string name="contmenu_title">Mga Operasyon</string> - <string name="contmenu_item_edit">I-edit</string> - <string name="contmenu_item_delete">Alisin mula sa mga paborito</string> - <string name="dlg_noantenna_text">Kailangan mo ng earphone bilang antenna. Pakisaksak ang earphone mo.</string> - <string name="dlg_noantenna_title">Isaksak ang earphone</string> - <string name="btn_yes">Oo</string> - <string name="btn_no">Wala</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Kanselahin</string> - <string name="dlg_progress_title">I-scan</string> - <string name="dlg_progress_text">Hanapan ang mga channerl…</string> - <string name="dlg_addedit_station_name">Pangalan:</string> - <string name="dlg_addedit_station_freq">Dalas:</string> - <string name="dlg_addedit_title_edit">I-edit ang Channel</string> - <string name="default_station_name">Bagong Channel</string> - <string name="dlg_delete_confirm_title">Kumpirmahin ang pag-alis mula sa mga paborito</string> - <string name="dlg_delete_confirm_text">Sigurado ka bang nais mong alisin ang channel na ito mula sa mga paborito?</string> - <string name="toast_favorite_full">Hindi maidagdag ang channel sa listahan ng paborito dahil puno na ito.</string> - <string name="toast_already_favorite">Nasa listahan na ng paborito ang channel na ito.</string> - <string name="toast_channel_deleted">Tagumpay na inalis mula sa mga paborito.</string> - <string name="toast_channel_added">Tagumpay na naidagdag sa mga paborito.</string> - <string name="toast_channel_searched">Hinanapan ang mga magagamit na channel.</string> - <string name="toast_cannot_search">Hindi mahanap ang magagamit na channel.</string> - <string name="toast_invalid_frequency">Hindi balidong frequency para sa kasalukuyang lokasyon. Sakop ng balidong frequency: 87.5-108.0.</string> - <string name="optmenu_rds_settings">Mga RDS na setting</string> - <string name="dlg_rds_settings_channel_information">Impormasyon sa channel</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatibong frequency</string> - <string name="sound_mode">Mode ng tunog</string> - <string name="more">Marami Pang Apps</string> - <string name="power">power</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">I-plug ang earphones mo para gamitin bilang antenna ng radyo.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"I-overwrite"</string> - <string name="fm_recorder_name">FM na recorder</string> - <string name="toast_recording_lost_warning">Ang recording mo ay mawawala dahil sa pagtanggal ng SD!</string> - <string name="toast_start_recording">Simulan ang pag-record…</string> - <string name="toast_sdcard_missing">Nawawala ang SD card mo!</string> - <string name="toast_sdcard_insufficient_space">Hindi sapat na espasyo ng SD card!</string> - <string name="toast_recorder_internal_error">May panloob na error na naganap sa recorder!</string> - <string name="toast_player_internal_error">May panloob na error na naganap sa player!</string> - <string name="toast_powerup_before_record_warning">Paki-paganahin muna ang FM!</string> - <string name="optmenu_record">I-record ang FM</string> - <string name="btn_save_recording">I-save</string> - <string name="btn_discard_recording">Itapon</string> - <string name="edit_recording_name_hint">I-type ang pangalan ng file dito</string> - <string name="dlg_save_recording_title">I-save ang file ng recording</string> - <string name="dlg_save_recording_storage_warning">Hindi sapat ang imbakan! Gusto mo bang i-save ang kasalukuyang recording?</string> - <string name="already_exists">umiiral na</string> - <string name="toast_invalid_input">Ang huling hindi balidong input, balidong halaga ay 0 o 5.</string> - <string name="toast_in_call">Hindi mo maila-launch ang FM Radio kapag nasa tawag ka.</string> - <string name="empty_list">Walang laman ang listahan ng channel.</string> - <string name="optmenu_speaker">"Speaker"</string> - <string name="optmenu_earphone">Headset</string> - <string name="not_available">Kasalukuyang hindi magagamit</string> - <string name="add_to_favorite1">Idagdag sa mga naka-set anng channel</string> - <string name="contmenu_item_delete1">Alisin mula sa mga naka-set nang channel</string> - <string name="dlg_delete_confirm_title1">Kumpirmahin ang pag-alis mula sa mga naka-set nang channel</string> - <string name="dlg_delete_confirm_text1">Sigurado ka bang gusto mong alisin ang channel na ito mula sa mga preset na channel?</string> - <string name="toast_favorite_full1">Hindi maidagdag ang channel sa listahan na preset dahil puno na ito.</string> - <string name="toast_already_favorite1">Nasa listahan na ng preset na channel ang channel na ito.</string> - <string name="toast_channel_deleted1">Tagumpay na inalis mula sa mga naka-set nang channel.</string> - <string name="toast_channel_added1">Tagumpay na idinagdag mula sa mga naka-set nang channel.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-tr/strings.xml b/MediaTek/FmRadio/res/values-tr/strings.xml deleted file mode 100755 index 800f5f6..0000000 --- a/MediaTek/FmRadio/res/values-tr/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM Radyo</string> - <string name="favorite_manager">Kanal listesi</string> - <string name="add_to_favorite">Sık Kullanılanlara Ekle</string> - <string name="optmenu_search">Ara</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">İşlemler</string> - <string name="contmenu_item_edit">Düzenle</string> - <string name="contmenu_item_delete">Sık kullanılanlardan kaldır</string> - <string name="dlg_noantenna_text">Anten işlevi için bir kulaklık gerekiyor. Lütfen kulaklığınızı takın.</string> - <string name="dlg_noantenna_title">Kulaklığı takın</string> - <string name="btn_yes">Evet</string> - <string name="btn_no">Hayır</string> - <string name="btn_ok">Tamam</string> - <string name="btn_cancel">İptal</string> - <string name="dlg_progress_title">Tara</string> - <string name="dlg_progress_text">Kanalları ara…</string> - <string name="dlg_addedit_station_name">Ad:</string> - <string name="dlg_addedit_station_freq">Sıklık:</string> - <string name="dlg_addedit_title_edit">Kanalı Düzenle</string> - <string name="default_station_name">Yeni Kanal</string> - <string name="dlg_delete_confirm_title">Kanal Silme İşlemini Onayla</string> - <string name="dlg_delete_confirm_text">Bu kanalı silmek istediğinizden emin misiniz?</string> - <string name="toast_favorite_full">Sık kullanılanlar listesi dolu olduğu için listeye kanal eklenemiyor.</string> - <string name="toast_already_favorite">Bu kanal zaten sık kullanılanlar listesinde.</string> - <string name="toast_channel_deleted">Sık kullanılanlardan başarıyla kaldır.</string> - <string name="toast_channel_added">Sık kullanılanlara başarıyla eklendi.</string> - <string name="toast_channel_searched">Uygun kanallar bulundu:</string> - <string name="toast_cannot_search">Uygun kanal bulunamıyor.</string> - <string name="optmenu_rds_settings">RDS ayarları</string> - <string name="dlg_rds_settings_channel_information">Kanal bilgileri</string> - <string name="dlg_rds_settings_alternative_frequency">Alternatif frekans</string> - <string name="more">Diğer Uyg</string> - <string name="sound_mode">Ses modu</string> - <string name="power">üstü</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Radyo anteni olarak kullanmak için kulaklıklarınızı takın.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Üzerine yaz"</string> - <string name="fm_recorder_name">FM kaydedici</string> - <string name="toast_recording_lost_warning">SD çıkarıldığı için kaydınız kaybolacak!</string> - <string name="toast_start_recording">Kayıdı başla…</string> - <string name="toast_sdcard_missing">SD kartınız yok!</string> - <string name="toast_sdcard_insufficient_space">Yetersiz SD kartı alanı!</string> - <string name="toast_recorder_internal_error">Kayıt cihazında dahili hata oluştu!</string> - <string name="toast_player_internal_error">Müzik çalarda dahili hata oluştu!</string> - <string name="toast_powerup_before_record_warning">"Lütfen ilk önce FM'i açın!"</string> - <string name="optmenu_record">"FM'i kaydet"</string> - <string name="btn_save_recording">Kaydet</string> - <string name="btn_discard_recording">Çıkar</string> - <string name="edit_recording_name_hint">Dosya adını buraya yazın</string> - <string name="dlg_save_recording_title">Kayıt dosyasını kaydet</string> - <string name="dlg_save_recording_storage_warning">Yetersiz depolama alanı! Mevcut kaydı kaydetmek istiyor musunuz?</string> - <string name="already_exists">Zaten var</string> - <string name="toast_invalid_frequency">Şu anki konum için geçersiz frekans. Geçerli frekans aralığı: 87,5 - 108,0.</string> - <string name="toast_invalid_input">"En son geçersiz giriş, geçersiz değer 0 veya 5'dir."</string> - <string name="toast_in_call">"Görüşme sırasında FM Radyo'yu başlatmazsınız."</string> - <string name="empty_list">Kanal listesi boş.</string> - <string name="optmenu_speaker">"Hoparlör"</string> - <string name="optmenu_earphone">Kulaklık</string> - <string name="not_available">Şu anda kullanılamaz</string> - <string name="add_to_favorite1">Önceden ayarlanmış kanallara ekle</string> - <string name="contmenu_item_delete1">Önceden ayarlanmış kanallardan sil</string> - <string name="dlg_delete_confirm_title1">Önceden ayarlanmış kanallardan silmeyi onayla</string> - <string name="dlg_delete_confirm_text1">Bu kanalı önceden ayarlanmış kanallar arasından silmek istediğinizden emin misiniz?</string> - <string name="toast_favorite_full1">Önceden ayarlanmış kanal listesi dolu olduğundan kanal eklenemiyor.</string> - <string name="toast_already_favorite1">Bu kanal zaten önceden ayarlanmış kanal listesinde var.</string> - <string name="toast_channel_deleted1">Önceden ayarlanmış kanallardan başarıyla silindi.</string> - <string name="toast_channel_added1">Önceden ayarlanmış kanallara başarıyla eklendi.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-uk/strings.xml b/MediaTek/FmRadio/res/values-uk/strings.xml deleted file mode 100755 index 7a8678a..0000000 --- a/MediaTek/FmRadio/res/values-uk/strings.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM-радіо</string> - <string name="favorite_manager">Список каналів</string> - <string name="add_to_favorite">Додати до улюбленого</string> - <string name="optmenu_search">Пошук</string> - <string name="optmenu_exit">Вихід</string> - <string name="contmenu_title">Операції</string> - <string name="contmenu_item_edit">Редагувати</string> - <string name="contmenu_item_delete">Видалити з улюбленого</string> - <string name="dlg_noantenna_text">Навушники потрібні як антена. Будь ласка, підключіть навушники.</string> - <string name="dlg_noantenna_title">Увімкніть навушники</string> - <string name="btn_yes">"Так"</string> - <string name="btn_no">"Ні"</string> - <string name="btn_ok">ОК</string> - <string name="btn_cancel">Скасувати</string> - <string name="dlg_progress_title">Пошук</string> - <string name="dlg_progress_text">Пошук каналів...</string> - <string name="dlg_addedit_station_name">Назва:</string> - <string name="dlg_addedit_station_freq">Частота:</string> - <string name="dlg_addedit_title_edit">Редагувати канал</string> - <string name="default_station_name">Новий канал</string> - <string name="dlg_delete_confirm_title">Підтвердити видалення з улюбленого</string> - <string name="dlg_delete_confirm_text">Точно видалити цей канал з улюблених?</string> - <string name="toast_favorite_full">Неможливо додати канал до списку улюблених: він повний.</string> - <string name="toast_already_favorite">Цей канал вже у списку улюбленого.</string> - <string name="toast_channel_deleted">Успішно видалено з улюблених.</string> - <string name="toast_channel_added">Успішно додано до улюблених.</string> - <string name="toast_channel_searched">Пошук доступних каналів:</string> - <string name="toast_cannot_search">Неможливо знайти доступні канали.</string> - <string name="toast_invalid_frequency">Недійсна частота для поточного розташування. Дійсний діапазон частот 87,5 - 108,0</string> - <string name="toast_invalid_input">Недійсне останнє введення. Дійсне значення 0 або 5.</string> - <string name="optmenu_rds_settings">Налаштування RDS</string> - <string name="dlg_rds_settings_channel_information">Інфо канала</string> - <string name="dlg_rds_settings_alternative_frequency">Альтернативна частота</string> - <string name="sound_mode">Режим звуку</string> - <string name="more">"Більше"</string> - <string name="power">"показник ступеня"</string> - <string name="toast_in_call">Неможливо запустити FM-радіо під час виклику.</string> - <string name="empty_list">Список каналів порожній.</string> - <string name="edit_frequency_overwrite_text">Перезапис</string> - <string name="fm_unit">МГц</string> - <string name="no_antenna_info">Підключіть навушники для використання в якості радіоантени. </string> - <string name="fm_recorder_name">FM-запис</string> - <string name="toast_recording_lost_warning">Запис буде втрачено через зняття SD!</string> - <string name="toast_start_recording">Почати запис...</string> - <string name="toast_sdcard_missing">Відсутня карта SD!</string> - <string name="toast_sdcard_insufficient_space">Недостатньо місця на карті SD.</string> - <string name="toast_recorder_internal_error">Внутрішня помилка диктофона!</string> - <string name="toast_player_internal_error">Внутрішня помилка програвача!</string> - <string name="toast_powerup_before_record_warning">Будь ласка, спочатку увімкніть живлення FM!</string> - <string name="optmenu_record">Запис FM</string> - <string name="btn_save_recording">"Зберегти"</string> - <string name="btn_discard_recording">Відхилити</string> - <string name="edit_recording_name_hint">Наберіть тут назву файла</string> - <string name="dlg_save_recording_title">Зберегти файл, що записується</string> - <string name="dlg_save_recording_storage_warning">"Недостаньо пам'яті! Бажаєте зберегти поточний запис?"</string> - <string name="already_exists">вже існує</string> - <string name="optmenu_speaker">Динамік</string> - <string name="optmenu_earphone">Навушник</string> - <string name="not_available">Зараз недоступний</string> - <string name="add_to_favorite1">Додати до поточних каналів</string> - <string name="contmenu_item_delete1">Видалити з поточних каналів</string> - <string name="dlg_delete_confirm_title1">Підтвердіть видалення з поточних каналів</string> - <string name="dlg_delete_confirm_text1">Точно видалити цей канал з поточних?</string> - <string name="toast_favorite_full1">Неможливо додати канал до списку поточних: він повний.</string> - <string name="toast_already_favorite1">Цей канал вже у списку поточних.</string> - <string name="toast_channel_deleted1">Успішно видалено з поточних.</string> - <string name="toast_channel_added1">Успішно додано до поточних каналів.</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values-ur/strings.xml b/MediaTek/FmRadio/res/values-ur/strings.xml deleted file mode 100755 index 5b31f8a..0000000 --- a/MediaTek/FmRadio/res/values-ur/strings.xml +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">ایف ایم ریڈیو</string> - <string name="favorite_manager">چینل کی فہرست</string> - <string name="add_to_favorite">پسند میں شامل کرنا</string> - <string name="optmenu_search">تلاش کرنا</string> - <string name="optmenu_exit">خارج ہونا</string> - <string name="contmenu_title">آپریشن</string> - <string name="contmenu_item_edit">ترمیم کرنا</string> - <string name="contmenu_item_delete">پسندیدگان سے ہٹائيں</string> - <string name="dlg_noantenna_text">آپ کو انٹینا کے بطور ایک ایر فون درکار ہے۔ براہ کرم اپنا ایرفون لگائیں۔</string> - <string name="dlg_noantenna_title">ائیرفون لگائیں</string> - <string name="btn_yes">ہاں</string> - <string name="btn_no">نہیں</string> - <string name="btn_ok">ٹھیک ہے</string> - <string name="btn_cancel">منسوخ کرنا</string> - <string name="dlg_progress_title">اسکین</string> - <string name="dlg_progress_text">چینلز اسکین کریں…</string> - <string name="dlg_addedit_station_name">نام:</string> - <string name="dlg_addedit_station_freq">فریکوئنسی:</string> - <string name="dlg_addedit_title_edit">چینل میں ترمیم کریں</string> - <string name="default_station_name">نیا چینل</string> - <string name="dlg_delete_confirm_title">چینل حذف کرنا یقینی بنانا</string> - <string name="dlg_delete_confirm_text">کیا آپ واقعی یہ چینل حذف کرنا چاہتے ہیں؟</string> - <string name="toast_favorite_full">پسندیدہ فہرست میں چینل شامل نہیں ہوسکتا کیوں کہ یہ بھری ہوا ہے۔</string> - <string name="toast_already_favorite">یہ پہلے سے ہی پسندیدہ فہرست میں موجود ہے۔</string> - <string name="toast_channel_deleted">پسندیدگان سے کامیابی کے ساتھ ہٹایا گیا۔</string> - <string name="toast_channel_added">پسندیدگان میں کامیابی سے شامل کیا گيا۔</string> - <string name="toast_channel_searched">تلاش کردہ دستیاب چینلز:</string> - <string name="toast_cannot_search">دستیبات چینل تلاش نہیں کرسکتا۔</string> - <string name="optmenu_rds_settings">RDS ترتیبات</string> - <string name="dlg_rds_settings_channel_information">چینل کی معلومات</string> - <string name="dlg_rds_settings_alternative_frequency">متبادل تعدد</string> - <string name="more">مزید ایپلی کیشن</string> - <string name="power">پاور</string> - <string name="sound_mode">آواز کی وضع</string> - <string name="edit_frequency_overwrite_text">اس کے اوپر تحریر کریں</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">ریڈیو انٹینا کے بطور استعمال کرنے کے لیے اپنے ایر فون لگائیں۔</string> - <!-- For FM recording --> - <string name="fm_recorder_name">ایف ایم ریکارڈر</string> - <string name="toast_recording_lost_warning">SD ہٹانے کی وجہ سے آپ کی ریکارڈنگ ختم ہوجائے گی!</string> - <string name="toast_start_recording">ریکارڈ کرنا شروع کریں…</string> - <string name="toast_sdcard_missing">آپ کا SD کارڈ غائب ہے!</string> - <string name="toast_sdcard_insufficient_space">SD کارڈ میں جگہ کافی نہيں!</string> - <string name="toast_recorder_internal_error">ریکارڈر میں اندرونی غلطی واقع!</string> - <string name="toast_player_internal_error">پلئیر میں اندرونی غلطی واقع!</string> - <string name="toast_powerup_before_record_warning">برائے مہربانی پہلے FM کھولیں!</string> - <string name="optmenu_record">FM ریکارڈ کریں</string> - <string name="btn_save_recording">محفوظ کریں</string> - <string name="btn_discard_recording">رد کریں</string> - <string name="edit_recording_name_hint">فائل کا نام یہاں لکھیں</string> - <string name="dlg_save_recording_title">ریکارڈنگ کی فائل محفوظ کریں</string> - <string name="dlg_save_recording_storage_warning">ذخیرہ کافی نہيں ہے! کیا آپ حالیہ ریکارڈنگ محفوظ کرنا چاہتے ہيں؟</string> - <string name="already_exists">پہلے سے موجود ہے</string> - <string name="toast_invalid_frequency">حالیہ مقام کے لئے غلط فریکوینسی۔ جائز فریکوینسی کا دائرہ کار: 87.5-108.0.</string> - <string name="toast_invalid_input">آخری غلط اندرج، درست قدر 0 اور 5 ہے۔</string> - <string name="toast_in_call">آپ کال میں رہنے کے دوران FM ریڈیو لانچ نہیں کرسکتے۔</string> - <string name="empty_list">چینل کی فہرست خالی ہے۔</string> - <string name="optmenu_speaker">اسپیکر</string> - <string name="optmenu_earphone">ہیڈ سیٹ</string> - <string name="not_available">ابھی دستیاب نہیں ہے</string> - <string name="add_to_favorite1">پہلے سے مرتب کردہ چینلوں میں شامل کریں</string> - <string name="contmenu_item_delete1">پہلے سے مرتب کردہ چینلوں سے ہٹائيں</string> - <string name="dlg_delete_confirm_title1">پہلے سے مرتب کردہ چینلوں سے ہٹانے کی تصدیق کریں</string> - <string name="dlg_delete_confirm_text1">کیا آپ واقعی اس چینل کو پہلے سے مرتب کردہ چینلوں سے مٹانا چاہتے ہيں؟</string> - <string name="toast_favorite_full1">پہلے سے مرتب کردہ چینل کی فہرست پر ہونے کی وجہ سے چینل کو پہلے سے مرتب کردہ چینل کی فہرست میں شامل نہیں کیا جاسکتا۔</string> - <string name="toast_already_favorite1">یہ چینل پہلے ہی پہلے سے مرتب کردہ چینل کی فہرست میں موجود ہے۔</string> - <string name="toast_channel_deleted1">پہلے سے مرتب کردہ چینلوں کی فہرست سے کامیابی سے ہٹایا گیا۔</string> - <string name="toast_channel_added1">پہلے سے مرتب کردہ چینلوں میں کامیابی سے شامل کیا گيا۔</string> -</resources> - diff --git a/MediaTek/FmRadio/res/values-vi/strings.xml b/MediaTek/FmRadio/res/values-vi/strings.xml deleted file mode 100755 index bd66447..0000000 --- a/MediaTek/FmRadio/res/values-vi/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">Đài FM</string> - <string name="favorite_manager">D.sách kênh</string> - <string name="add_to_favorite">Thêm vào Mục y.thích</string> - <string name="optmenu_search">Tìm kiếm</string> - <string name="optmenu_exit">Thoát</string> - <string name="contmenu_title">Thao tác</string> - <string name="contmenu_item_edit">Sửa</string> - <string name="contmenu_item_delete">Xóa khỏi mục yêu thích</string> - <string name="dlg_noantenna_text">Bạn cần dùng tai nghe làm ăngten. Hãy cắm tai nghe.</string> - <string name="dlg_noantenna_title">Cắm tai nghe</string> - <string name="btn_yes">"Có"</string> - <string name="btn_no">"Không"</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Hủy</string> - <string name="dlg_progress_title">Dò</string> - <string name="dlg_progress_text">Đang dò kênh…</string> - <string name="dlg_addedit_station_name">Tên:</string> - <string name="dlg_addedit_station_freq">Tần suất:</string> - <string name="dlg_addedit_title_edit">Sửa kênh</string> - <string name="default_station_name">Kênh mới</string> - <string name="dlg_delete_confirm_title">Xác nhận xóa kênh</string> - <string name="dlg_delete_confirm_text">Bạn chắc chắn muốn xóa kênh này?</string> - <string name="toast_favorite_full">Không thể thêm kênh vào d.sách yêu thích vì đã đầy.</string> - <string name="toast_already_favorite">Kênh này đã có trong d.sách yêu thích.</string> - <string name="toast_channel_deleted">Đã xóa thành công khỏi mục yêu thích.</string> - <string name="toast_channel_added">Đã thêm thành công vào mục yêu thích.</string> - <string name="toast_channel_searched">Các kênh có sẵn đã tìm thấy:</string> - <string name="toast_cannot_search">Không tìm thấy kênh có sẵn.</string> - <string name="optmenu_rds_settings">Cài đặt RDS</string> - <string name="dlg_rds_settings_channel_information">Thông tin kênh</string> - <string name="dlg_rds_settings_alternative_frequency">Tần số thay thế</string> - <string name="more">Ứng dụng khác</string> - <string name="power">lũy thừa</string> - <string name="sound_mode">C.độ âm thanh</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Cắm tai nghe để dùng làm ăng ten đài FM.</string> - <!-- For FM recording --> - <string name="edit_frequency_overwrite_text">"Ghi đè"</string> - <string name="fm_recorder_name">Máy ghi âm FM</string> - <string name="toast_recording_lost_warning">Bản ghi âm của bạn sẽ bị mất do tháo thẻ SD!</string> - <string name="toast_start_recording">Bắt đầu ghi âm…</string> - <string name="toast_sdcard_missing">Thẻ SD của bạn bị thiếu!</string> - <string name="toast_sdcard_insufficient_space">D.lượng thẻ SD không đủ!</string> - <string name="toast_recorder_internal_error">Đã xảy ra lỗi nội bộ trong máy ghi âm!</string> - <string name="toast_player_internal_error">Đã xảy ra lỗi nội bộ trong trình phát!</string> - <string name="toast_powerup_before_record_warning">Hãy bật nguồn đài FM trước!</string> - <string name="optmenu_record">Ghi âm đài FM</string> - <string name="btn_save_recording">Lưu</string> - <string name="btn_discard_recording">Hủy bỏ</string> - <string name="edit_recording_name_hint">Nhập tên file vào đây</string> - <string name="dlg_save_recording_title">Lưu file ghi âm</string> - <string name="dlg_save_recording_storage_warning">Bộ nhớ không đủ! Bạn muốn lưu lại bản ghi hiện hành?</string> - <string name="already_exists">Đã tồn tại</string> - <string name="toast_invalid_frequency">Tần số không hợp lệ cho địa điểm hiện tại. Phạm vi tần số hợp lệ: 87,5-108,0.</string> - <string name="toast_invalid_input">Nhập số cuối không hợp lệ, giá trị hợp lệ là 0 hoặc 5.</string> - <string name="toast_in_call">Bạn không thể bật đài FM khi đang gọi điện.</string> - <string name="empty_list">Danh sách kênh trống.</string> - <string name="optmenu_speaker">"Loa"</string> - <string name="optmenu_earphone">Tai nghe</string> - <string name="not_available">Hiện không có sẵn</string> - <string name="add_to_favorite1">Thêm vào các kênh cài sẵn</string> - <string name="contmenu_item_delete1">Xóa khỏi các kênh cài sẵn</string> - <string name="dlg_delete_confirm_title1">Xác nhận xóa khỏi các kênh cài sẵn</string> - <string name="dlg_delete_confirm_text1">Bạn chắn chắn muốn xóa kênh này khỏi các kênh cài sẵn?</string> - <string name="toast_favorite_full1">Không thể thêm kênh vào d.sách kênh cài sẵn vì đã đầy.</string> - <string name="toast_already_favorite1">Kênh này đã có trong d.sách kênh cài sẵn.</string> - <string name="toast_channel_deleted1">Đã xóa thành công khỏi các kênh cài sẵn.</string> - <string name="toast_channel_added1">Đã thêm thành công vào các kênh cài sẵn.</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-zh-rCN/strings.xml b/MediaTek/FmRadio/res/values-zh-rCN/strings.xml deleted file mode 100755 index 97cd5d9..0000000 --- a/MediaTek/FmRadio/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">收音机</string> - <string name="favorite_manager">频道列表</string> - <string name="add_to_favorite">添加到收藏</string> - <string name="optmenu_search">搜索</string> - <string name="optmenu_exit">退出</string> - <string name="contmenu_title">操作</string> - <string name="contmenu_item_edit">编辑</string> - <string name="contmenu_item_delete">取消收藏</string> - <string name="dlg_noantenna_text">您需要使用耳机来充当天线。请插入耳机。</string> - <string name="dlg_noantenna_title">插入耳机</string> - <string name="btn_yes">是</string> - <string name="btn_no">否</string> - <string name="btn_ok">确定</string> - <string name="btn_cancel">取消</string> - <string name="dlg_progress_title">搜索</string> - <string name="dlg_progress_text">搜索频道中…</string> - <string name="dlg_addedit_station_name">名字:</string> - <string name="dlg_addedit_station_freq">频率:</string> - <string name="dlg_addedit_title_edit">编辑频道</string> - <string name="default_station_name">新频道</string> - <string name="dlg_delete_confirm_title">确认取消收藏</string> - <string name="dlg_delete_confirm_text">您要取消收藏这个频道吗?</string> - <string name="toast_favorite_full">收藏栏已满,无法添加。</string> - <string name="toast_already_favorite">该频道已在收藏栏中。</string> - <string name="toast_channel_deleted">已取消收藏。</string> - <string name="toast_channel_added">收藏成功。</string> - <string name="toast_channel_searched">共找到有效频道:</string> - <string name="toast_cannot_search">找不到有效频道。</string> - <string name="toast_invalid_frequency">无效频段。有效频率范围:87.5-108.0。</string> - <string name="toast_invalid_input">最后一位输入无效,有效值为0或5。</string> - <string name="optmenu_rds_settings">RDS设置</string> - <string name="dlg_rds_settings_channel_information">频道信息</string> - <string name="dlg_rds_settings_alternative_frequency">自动切换频率</string> - <string name="sound_mode">声音模式</string> - <string name="more">更多</string> - <string name="power">电源</string> - <string name="toast_in_call">通话中无法打开收音机。</string> - <string name="empty_list">频道列表为空。</string> - <string name="optmenu_speaker">扬声器</string> - <string name="optmenu_earphone">耳机</string> - <string name="edit_frequency_overwrite_text">"覆盖"</string> - <string name="fm_unit">兆赫</string> - <string name="no_antenna_info">耳机是收音机的天线,请插入耳机。</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM录音</string> - <string name="toast_recording_lost_warning">由于SD卡被移除,录音文件将丢失!</string> - <string name="toast_start_recording">开始录音...</string> - <string name="toast_sdcard_missing">存储卡丢失!</string> - <string name="toast_sdcard_insufficient_space">SD卡存储空间不足!</string> - <string name="toast_recorder_internal_error">录音机发生内部错误!</string> - <string name="toast_player_internal_error">播放器发生内部错误!</string> - <string name="toast_powerup_before_record_warning">请先打开FM!</string> - <string name="optmenu_record">FM录音</string> - <string name="btn_save_recording">保存</string> - <string name="btn_discard_recording">放弃</string> - <string name="edit_recording_name_hint">在这里输入文件名称</string> - <string name="dlg_save_recording_title">保存录音文件</string> - <string name="dlg_save_recording_storage_warning">存储空间不足!是否要保存当前录音?</string> - <string name="already_exists">已存在</string> - <string name="not_available">当前不可用</string> - <string name="add_to_favorite1">添加至预置频道</string> - <string name="contmenu_item_delete1">从预置频道中删除</string> - <string name="dlg_delete_confirm_title1">确认频道删除</string> - <string name="dlg_delete_confirm_text1">您要删除这个预置频道吗?</string> - <string name="toast_favorite_full1">预置栏已满,无法添加。</string> - <string name="toast_already_favorite1">该频道已在预置栏中。</string> - <string name="toast_channel_deleted1">已从预置栏中删除频道。</string> - <string name="toast_channel_added1">已将频道添加到预置栏。</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-zh-rHK/strings.xml b/MediaTek/FmRadio/res/values-zh-rHK/strings.xml deleted file mode 100755 index 821b450..0000000 --- a/MediaTek/FmRadio/res/values-zh-rHK/strings.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="app_name">FM 收音機</string> - <string name="favorite_manager">頻道清單</string> - <string name="add_to_favorite">新增至我的最愛</string> - <string name="add_to_favorite1">新增至預設頻道</string> - <string name="optmenu_search">"搜尋"</string> - <string name="optmenu_exit">"結束"</string> - <string name="contmenu_title">操作</string> - <string name="contmenu_item_edit">"編輯"</string> - <string name="contmenu_item_delete">從我的最愛移除</string> - <string name="contmenu_item_delete1">從預設頻道刪除</string> - <string name="dlg_noantenna_text">你需要耳機作為天線。請插上你的耳機。</string> - <string name="dlg_noantenna_title">插入耳機</string> - <string name="btn_yes">"是"</string> - <string name="btn_no">"否"</string> - <string name="btn_ok">"確定"</string> - <string name="btn_cancel">"取消"</string> - <string name="dlg_progress_title">"搜尋"</string> - <string name="dlg_progress_text">搜索頻道......</string> - <string name="dlg_addedit_station_name">名字:</string> - <string name="dlg_addedit_station_freq">頻率:</string> - <string name="dlg_addedit_title_edit">編輯通道</string> - <string name="default_station_name">新頻道</string> - <string name="dlg_delete_confirm_title">確認從我的最愛刪除</string> - <string name="dlg_delete_confirm_title1">確認從預設頻道刪除</string> - <string name="dlg_delete_confirm_text">你確定你要從我的最愛中刪除此頻道?</string> - <string name="dlg_delete_confirm_text1">是否確定要從預設的頻道刪除此頻道?</string> - <string name="toast_favorite_full">無法新增此頻道到我的最愛清單,因為它已滿。</string> - <string name="toast_favorite_full1">無法新增此頻道到我的預設頻道清單中,因為它已滿。</string> - <string name="toast_already_favorite">此頻道已在我的最愛清單中。</string> - <string name="toast_already_favorite1">此頻道已在預設的頻道清單中。</string> - <string name="toast_channel_deleted">成功地從我的最愛中刪除。</string> - <string name="toast_channel_deleted1">成功從預設頻道中移除。</string> - <string name="toast_channel_added">已成功新增到我的最愛。</string> - <string name="toast_channel_added1">已成功新增到預設頻道。</string> - <string name="toast_channel_searched">搜詢出可用的頻道:</string> - <string name="toast_cannot_search">無法搜詢出可用的頻道。</string> - <string name="toast_invalid_frequency">不正確頻率為當前所在的位置。有效頻率範圍: 87.5-108.0</string> - <string name="toast_invalid_input">最後一個無效輸入,有效的值是 0 或 5。</string> - <string name="optmenu_rds_settings">RDS 的設定</string> - <string name="dlg_rds_settings_channel_information">頻道資訊</string> - <string name="dlg_rds_settings_alternative_frequency">可替代頻率</string> - <string name="sound_mode">聲音模式</string> - <string name="more">"更多"</string> - <string name="power">"指數"</string> - <string name="toast_in_call">撥接中,無法進行FM收音機。</string> - <string name="empty_list">頻道清單是空的。</string> - <string name="edit_frequency_overwrite_text">"覆寫"</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">插入耳機當作收音機天線。</string> - <string name="fm_recorder_name">FM 答錄機</string> - <string name="toast_recording_lost_warning">因SD卡的移除,您的錄音檔將遺失 !</string> - <string name="toast_start_recording">開始錄製......</string> - <string name="toast_sdcard_missing">你的 SD 已遺失 !</string> - <string name="toast_sdcard_insufficient_space">SD 卡空間不足 !</string> - <string name="toast_recorder_internal_error">在答錄機中出現內部錯誤 !</string> - <string name="toast_player_internal_error">在播放機中出現內部錯誤 !</string> - <string name="toast_powerup_before_record_warning">首先請打開FM電源 !</string> - <string name="optmenu_record">記錄FM</string> - <string name="btn_save_recording">"儲存"</string> - <string name="btn_discard_recording">"捨棄"</string> - <string name="edit_recording_name_hint">在此輸入檔案名稱</string> - <string name="dlg_save_recording_title">將錄音檔保存</string> - <string name="dlg_save_recording_storage_warning">儲存空間不足 !您想保存當前錄製嗎?</string> - <string name="already_exists">已存在</string> - <string name="optmenu_speaker">"揚聲器"</string> - <string name="optmenu_earphone">耳機</string> - <string name="not_available">現在不可用</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-zh-rTW/strings.xml b/MediaTek/FmRadio/res/values-zh-rTW/strings.xml deleted file mode 100755 index b9e47c6..0000000 --- a/MediaTek/FmRadio/res/values-zh-rTW/strings.xml +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">調頻廣播</string> - <string name="favorite_manager">頻道清單</string> - <string name="add_to_favorite">新增到我的最愛</string> - <string name="optmenu_search">搜尋</string> - <string name="optmenu_exit">結束</string> - <string name="contmenu_title">操作</string> - <string name="contmenu_item_edit">編輯</string> - <string name="contmenu_item_delete">從我的最愛移除</string> - <string name="dlg_noantenna_text">您需要耳機充當天線。請插入您的耳機。</string> - <string name="dlg_noantenna_title">插入耳機</string> - <string name="btn_yes">是</string> - <string name="btn_no">否</string> - <string name="btn_ok">確定</string> - <string name="btn_cancel">取消</string> - <string name="dlg_progress_title">搜尋</string> - <string name="dlg_progress_text">搜尋頻道...</string> - <string name="dlg_addedit_station_name">名稱:</string> - <string name="dlg_addedit_station_freq">頻率:</string> - <string name="dlg_addedit_title_edit">編輯頻道</string> - <string name="default_station_name">新頻道</string> - <string name="dlg_delete_confirm_title">確認從我的最愛移除</string> - <string name="dlg_delete_confirm_text">您是否確定要從我的最愛移除這個頻道?</string> - <string name="toast_favorite_full">由於已滿,而無法將頻道新增到我的最愛清單。</string> - <string name="toast_already_favorite">這個頻道已在我的最愛清單內。</string> - <string name="toast_channel_deleted">已成功從我的最愛移除。</string> - <string name="toast_channel_added">已成功新增至我的最愛。</string> - <string name="toast_channel_searched">找到可用頻道:</string> - <string name="toast_cannot_search">找不到可用頻道。</string> - <string name="toast_invalid_frequency">目前位置的頻率無效。有效頻率範圍:87.5至108.0</string> - <string name="toast_invalid_input">最近一次輸入無效,有效值為0或5。</string> - <string name="optmenu_rds_settings">RDS設定</string> - <string name="dlg_rds_settings_channel_information">頻道資訊</string> - <string name="dlg_rds_settings_alternative_frequency">替代頻率</string> - <string name="more">更多應用程式</string> - <string name="power">電源</string> - <string name="sound_mode">音效模式</string> - <string name="toast_in_call">你在通話時,無法啟動調頻(FM)廣播。</string> - <string name="empty_list">頻道清單空白。</string> - <string name="optmenu_speaker">擴音器</string> - <string name="optmenu_earphone">耳機</string> - <string name="edit_frequency_overwrite_text">"覆寫"</string> - <string name="fm_unit">兆赫</string> - <string name="no_antenna_info">插入耳機當作收音機天線。</string> - <!-- For FM recording --> - <string name="fm_recorder_name">調頻(FM)錄音機</string> - <string name="toast_recording_lost_warning">您的錄音將因SD記憶卡移除而遺失!</string> - <string name="toast_start_recording">開始錄製…</string> - <string name="toast_sdcard_missing">您的SD記憶卡遺失中!</string> - <string name="toast_sdcard_insufficient_space">SD記憶卡空間不足!</string> - <string name="toast_recorder_internal_error">錄製程式發生內部錯誤!</string> - <string name="toast_player_internal_error">播放程式發生內部錯誤!</string> - <string name="toast_powerup_before_record_warning">請先打開FM的電源!</string> - <string name="optmenu_record">錄製 FM</string> - <string name="btn_save_recording">儲存</string> - <string name="btn_discard_recording">捨棄</string> - <string name="edit_recording_name_hint">在這裡輸檔案名稱入</string> - <string name="dlg_save_recording_title">儲存錄製檔案</string> - <string name="dlg_save_recording_storage_warning">儲存空間不足!要儲存目前錄製的資料?</string> - <string name="already_exists">已經存在</string> - <string name="not_available">目前不可用</string> - <string name="add_to_favorite1">新增到預設頻道</string> - <string name="contmenu_item_delete1">從預設頻道中移除</string> - <string name="dlg_delete_confirm_title1">確認從預設頻道移除</string> - <string name="dlg_delete_confirm_text1">您是否確定要從預設頻道移除這個頻道?</string> - <string name="toast_favorite_full1">由於已滿,而無法將頻道新增到預設頻道清單。</string> - <string name="toast_already_favorite1">這個頻道已在預設頻道清單內。</string> - <string name="toast_channel_deleted1">已成功從預設頻道移除。</string> - <string name="toast_channel_added1">已成功新增至預設頻道。</string> -</resources> diff --git a/MediaTek/FmRadio/res/values-zu/strings.xml b/MediaTek/FmRadio/res/values-zu/strings.xml deleted file mode 100755 index ecc4715..0000000 --- a/MediaTek/FmRadio/res/values-zu/strings.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name">Umsakazo we-FM</string> - <string name="dlg_progress_title">Sesha</string> - <string name="btn_yes">Yebo</string> - <string name="optmenu_speaker">Isikhulumi</string> - <string name="edit_frequency_overwrite_text">Bhala ngaphezulu</string> - <string name="toast_start_recording">Qala ukuqopha...</string> - <string name="fm_unit">MHz</string> - <string name="empty_list">Uhlu lweshaneli alunalutho.</string> - <string name="optmenu_rds_settings">Amasethingi e-RDS</string> - <string name="toast_channel_searched">Hlolile amashaneli atholakalayo:</string> - <string name="already_exists">ivele ikhona</string> - <string name="dlg_noantenna_title">faka ama-earphone</string> - <string name="add_to_favorite">Engeza Kokuthandwayo</string> - <string name="toast_sdcard_insufficient_space">Isikhala asanele kwikhadi le-SD!</string> - <string name="dlg_delete_confirm_title">Qinisekisa ukususa kokuthandwayo</string> - <string name="optmenu_record">Qopha i-FM</string> - <string name="optmenu_earphone">I-earphone</string> - <string name="sound_mode">Imowudi yomsindo</string> - <string name="toast_already_favorite">Leshaneli isivele ukuhlu lokuthandwayo.</string> - <string name="not_available">Okwamanje ayitholakali</string> - <string name="toast_channel_deleted">Isuswe ngempumelelo kokuthandwayo.</string> - <string name="toast_channel_added">Yongezwe ngokuyimpumelelo kokuthandwayo.</string> - <string name="dlg_rds_settings_channel_information">Imniningwane yeshaneli</string> - <string name="toast_favorite_full">Ayongezeki ishaneli kuhlu lokuthandwayo ngenxa yokuba igcwele.</string> - <string name="btn_save_recording">Gcina</string> - <string name="optmenu_search">Sesha</string> - <string name="dlg_rds_settings_alternative_frequency">Ifrikwensi Enye</string> - <string name="dlg_progress_text">Sesha amashaneli...</string> - <string name="optmenu_exit">Phuma</string> - <string name="more">Okuningi</string> - <string name="btn_discard_recording">Khipha</string> - <string name="contmenu_item_edit">Lungisa</string> - <string name="toast_cannot_search">Akusesheki amashaneli atholakalayo.</string> - <string name="dlg_save_recording_storage_warning">Isikhala sokugcina asanele! Uyafuna ukugcina lokuqopha kwamanje?</string> - <string name="toast_in_call">Ngeke ukwazi ukuphumisa umsaka we-FM uma usefonini.</string> - <string name="dlg_addedit_station_freq">Ifrikwensi:</string> - <string name="toast_recorder_internal_error">Kwenzeke iphutha ngaphakathi kwisiqophi!</string> - <string name="dlg_save_recording_title">Gcina ifayela yokuqopha</string> - <string name="btn_ok">KULUNGILE</string> - <string name="power">Ugesi</string> - <string name="contmenu_item_delete">Susa kokuthandwayo</string> - <string name="toast_powerup_before_record_warning">Sicela ukhanyise i-FM kuqala!</string> - <string name="fm_recorder_name">Isiqophi se-FM</string> - <string name="toast_recording_lost_warning">Ukuqopha kwakho kuzolahleka ngenxa yokususwa kwe-SD!</string> - <string name="dlg_delete_confirm_text">Unesiqiniseko sokuthi ufuna ukususa leshaneli kokuthandwayo?</string> - <string name="default_station_name">Ishanelo Entsha</string> - <string name="btn_cancel">Khansela</string> - <string name="contmenu_title">Imisebenzi</string> - <string name="btn_no">Cha</string> - <string name="favorite_manager">Uhlu lweshaneli</string> - <string name="toast_invalid_frequency">Ifrikwensi engaqinisekisiwe yendawo yamanje. Indawo eqinisekisiwe yefrikwensi: u-87.5 – 108.0</string> - <string name="toast_sdcard_missing">Ikhadi lakho le-SD lilahlekile!</string> - <string name="dlg_addedit_station_name">Igama:</string> - <string name="dlg_addedit_title_edit">Lungisa ishaneli</string> - <string name="toast_invalid_input">Okokugcina okufakiwe phakathi akuqisekiwe, inani eliqinisekisiswe u-0 noma u-5.</string> - <string name="edit_recording_name_hint">Bhala igama lefayela lapha</string> - <string name="dlg_noantenna_text">Udinga i-earphone njenge eriyeli. Sicela ufake i-earphone yakho.</string> - <string name="toast_player_internal_error">Kwenzeke iphutha ngaphakathi kwi-Player!</string> -</resources>
\ No newline at end of file diff --git a/MediaTek/FmRadio/res/values/strings.xml b/MediaTek/FmRadio/res/values/strings.xml deleted file mode 100755 index 0967189..0000000 --- a/MediaTek/FmRadio/res/values/strings.xml +++ /dev/null @@ -1,149 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - <string name="app_name">FM Radio</string> - <string name="favorite_manager">Channel list</string> - <string name="add_to_favorite">Add to Favorite</string> - <string name="optmenu_search">Search</string> - <string name="optmenu_exit">Exit</string> - <string name="contmenu_title">Operations</string> - <string name="contmenu_item_edit">Edit</string> - <string name="contmenu_item_delete">Remove from favorites</string> - <string name="dlg_noantenna_text">You need an earphone as antenna. Please plug in your earphone.</string> - <string name="dlg_noantenna_title">Plug in earphone</string> - <string name="btn_yes">Yes</string> - <string name="btn_no">No</string> - <string name="btn_ok">OK</string> - <string name="btn_cancel">Cancel</string> - <string name="dlg_progress_title">Search</string> - <string name="dlg_progress_text">Search channels...</string> - <string name="dlg_addedit_station_name">Name:</string> - <string name="dlg_addedit_station_freq">Frequency:</string> - <string name="dlg_addedit_title_edit">Edit Channel</string> - <string name="default_station_name">New Channel</string> - <string name="dlg_delete_confirm_title">Confirm remove from favorites</string> - <string name="dlg_delete_confirm_text">Are you sure you want to remove this channel from favorites?</string> - <string name="toast_favorite_full">Cannot add the channel to favorite list because it is full.</string> - <string name="toast_already_favorite">This channel is already in favorite list.</string> - <string name="toast_channel_deleted">Successfully removed from favorites.</string> - <string name="toast_channel_added">Successfully added to favorites.</string> - <string name="toast_channel_searched">Searched out available channels:</string> - <string name="toast_cannot_search">Cannot search out available channel.</string> - <string name="toast_invalid_frequency">Invalid frequency for current location. Valid frequency scope: 87.5-108.0</string> - <string name="toast_invalid_input">The last invalid input, valid value is 0 or 5.</string> - <string name="optmenu_rds_settings">RDS settings</string> - <string name="dlg_rds_settings_channel_information">Channel information</string> - <string name="dlg_rds_settings_alternative_frequency">Alternative frequency</string> - <string name="sound_mode">Sound mode</string> - <string name="more">More</string> - <string name="power">Power</string> - <string name="toast_in_call">You can not launch FM Radio when you are in call.</string> - <string name="empty_list">Channel list is empty.</string> - <string name="edit_frequency_overwrite_text">Overwrite</string> - <string name="fm_unit">MHz</string> - <string name="no_antenna_info">Plug in your earphones to use as a radio antenna.</string> - <!-- For FM recording --> - <string name="fm_recorder_name">FM Recorder</string> - <string name="toast_recording_lost_warning">Your recording will be lost due to SD removal!</string> - <string name="toast_start_recording">Start recording...</string> - <string name="toast_sdcard_missing">Your SD card is missing!</string> - <string name="toast_sdcard_insufficient_space">Insufficient SD card space!</string> - <string name="toast_recorder_internal_error">An internal error occured in recorder!</string> - <string name="toast_player_internal_error">An internal error occured in player!</string> - <string name="toast_powerup_before_record_warning">Please power up FM first!</string> - <string name="optmenu_record">Record FM</string> - <string name="btn_save_recording">Save</string> - <string name="btn_discard_recording">Discard</string> - <string name="edit_recording_name_hint">Type file name here</string> - <string name="dlg_save_recording_title">Save recording file</string> - <string name="dlg_save_recording_storage_warning">Insufficient storage! Do you want to save current recording?</string> - <string name="already_exists">already exists</string> - <string name="optmenu_speaker">Speaker</string> - <string name="optmenu_earphone">Earphone</string> - <string name="not_available">Currently not available</string> - <string name="add_to_favorite1">Add to preset channels</string> - <string name="contmenu_item_delete1">Remove from preset channels</string> - <string name="dlg_delete_confirm_title1">Confirm remove from preset channels</string> - <string name="dlg_delete_confirm_text1">Are you sure you want to remove this channel from preset channels?</string> - <string name="toast_favorite_full1">Cannot add the channel to preset channel list because it is full.</string> - <string name="toast_already_favorite1">This channel is already in preset channel list.</string> - <string name="toast_channel_deleted1">Successfully removed from preset channels.</string> - <string name="toast_channel_added1">Successfully added to preset channels.</string> - - <!-- For Em Rx --> - <string name="FMR_Freq_text" translatable="false">Freq(MHz)</string> - <string name="FMR_Freq_tune" translatable="false">Tune</string> - <string name="FMR_Antenna_text" translatable="false">Antenna Type</string> - <string name="FMR_Antenna_short" translatable="false">Short</string> - <string name="FMR_Antenna_long" translatable="false">EarPhone</string> - <string name="FMR_Status_text" translatable="false">Status</string> - <string name="FMR_Force_Stereomono_text" translatable="false">Force Set:</string> - <string name="FMR_Status_Stereomono_text" translatable="false">Stereo/Mono:</string> - <string name="FMR_Stereomono_stereo" translatable="false">Stereo</string> - <string name="FMR_Stereomono_mono" translatable="false">Mono</string> - <string name="FMR_Status_Stereomono" translatable="false">detecting...</string> - <string name="FMR_Status_RSSI_text" translatable="false">RSSI(dBm):</string> - <string name="FMR_Status_RSSI" translatable="false">detecting...</string> - <string name="FMR_Status_Caparray_text" translatable="false">CapArray(pF):</string> - <string name="FMR_Status_Caparray" translatable="false">detecting...</string> - <string name="FMR_RDS_text" translatable="false">RDS</string> - <string name="FMR_RDS_Ratio_text" translatable="false">Ratio:</string> - <string name="FMR_RDS_Ratio" translatable="false">detecting...</string> - <string name="FMR_RDS_PS_text" translatable="false">PS:</string> - <string name="FMR_RDS_PS" translatable="false">None.</string> - <string name="FMR_RDS_RT_text" translatable="false">RT:</string> - <string name="FMR_RDS_RT" translatable="false">None.</string> - <string name="FMR_Hardware_version" translatable="false">Hardware Version</string> - <string name="FMR_Chip_ID_text" translatable="false">Chip ID</string> - <string name="FMR_Chip_ID" translatable="false">None.</string> - <string name="FMR_ECO_Version_text" translatable="false">ECO Version</string> - <string name="FMR_ECO_Version" translatable="false">None.</string> - <string name="FMR_Patch_Version_text" translatable="false">Patch Version</string> - <string name="FMR_Patch_Version" translatable="false">None.</string> - <string name="FMR_DSP_Version_text" translatable="false">DSP Version</string> - <string name="FMR_DSP_Version" translatable="false">None.</string> - <string name="FMR_EM_RSSI_THRESHOLD_text" translatable="false">RSSI THRESHOLD</string> - <string name="FMR_EM_MUTE_GAIN_text" translatable="false">SMG</string> - <string name="FMR_EM_DESENSE_RSSI_text" translatable="false">Desense RSSI</string> - <string name="FMR_EM_OK_TEXT" translatable="false">OK</string> - <string name="FMR_EM_CMD_text" translatable="false">0X</string> - <string name="FMR_EM_CMD_title" translatable="false">CMD EXPAND</string> - <string name="FMR_EM_CMD_return" translatable="false">CMD EXPAND RETURN VALUE</string> - <string name="FMR_EM_DEFAULT_VALUE" translatable="false">0</string> -</resources> diff --git a/MediaTek/FmRadio/res/values/strings_test.xml b/MediaTek/FmRadio/res/values/strings_test.xml deleted file mode 100755 index 1bdedc4..0000000 --- a/MediaTek/FmRadio/res/values/strings_test.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <string name="test_success" translatable="false">成功</string> - <string name="test_fail" translatable="false">失败</string> - <string name="test_search" translatable="false">搜索</string> -</resources> diff --git a/MediaTek/FmRadio/res/values/styles.xml b/MediaTek/FmRadio/res/values/styles.xml deleted file mode 100755 index 34c1a83..0000000 --- a/MediaTek/FmRadio/res/values/styles.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright Statement: - - This software/firmware and related documentation ("MediaTek Software") are - protected under relevant copyright laws. The information contained herein is - confidential and proprietary to MediaTek Inc. and/or its licensors. Without - the prior written permission of MediaTek inc. and/or its licensors, any - reproduction, modification, use or disclosure of MediaTek Software, and - information contained herein, in whole or in part, shall be strictly - prohibited. - - MediaTek Inc. (C) 2011-2014. All rights reserved. - - BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - - The following software/firmware and/or related documentation ("MediaTek - Software") have been modified by MediaTek Inc. All revisions are subject to - any receiver's applicable license agreements with MediaTek Inc. ---> -<resources> - - <style name="AppTheme" parent="@android:style/Theme.Material"> - - </style> - -</resources> diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java deleted file mode 100755 index f40619c..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java +++ /dev/null @@ -1,2196 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.ActionBar; -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.content.BroadcastReceiver; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.ServiceConnection; -import android.content.SharedPreferences; -import android.media.AudioManager; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.os.SystemClock; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnDismissListener; -import android.widget.PopupMenu.OnMenuItemClickListener; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; - -import com.mediatek.fmradio.dialogs.NoAntennaDialog; -import com.mediatek.fmradio.dialogs.SearchChannelsDialog; -import com.mediatek.fmradio.ext.IProjectStringExt; - -import java.io.File; -/* Vanzo:libing on: Thu, 15 May 2014 19:34:51 +0800 - */ -import java.io.FileReader; -import java.io.IOException; -import android.app.ActivityManager; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.os.SystemProperties; -//import com.android.featureoption.FeatureOption; -// End of Vanzo:libing - -/** - * This class interact with user, provider FM basic function and FM recording - * function - */ -public class FmRadioActivity extends Activity implements -/* Vanzo:libing on: Thu, 15 May 2014 19:36:32 +0800 - */ - SensorEventListener, -// End of Vanzo:libing - OnMenuItemClickListener, OnDismissListener, - NoAntennaDialog.NoAntennaListener, - SearchChannelsDialog.CancelSearchListener, - FmRecordDialogFragment.OnRecordingDialogClickListener { - // Logging - private static final String TAG = "FmRx/Activity"; - - // Dialog tags - private static final String TAG_SEARCH = "Search"; - private static final String TAG_SAVE_RECORDINGD = "SaveRecording"; - private static final String TAG_NO_ANTENNA = "NoAntenna"; - - // Use shared preference to store record or play time - private static final String REFS_NAME = "FMRecord"; - private static final String START_RECORD_TIME = "startRecordTime"; - private static final String START_PLAY_TIME = "startPlayTime"; - - // Request code - private static final int REQUEST_CODE_FAVORITE = 1; - - // FM - private static final String FM = "FM"; - // Short antenna support - private static final boolean SHORT_ANNTENNA_SUPPORT = FmRadioUtils.isFmShortAntennaSupport(); - - // UI views - private TextView mTextStationName = null; - private TextView mTextStationValue = null; - // RDS text view - private TextView mTextRds = null; - // Text view display "FM" - private TextView mTextFm = null; - // Text View display "MHZ" - private TextView mTextMHz = null; - private TextView mTxtRecInfoLeft = null; - private TextView mTxtRecInfoRight = null; - private ImageButton mButtonDecrease = null; - private ImageButton mButtonPrevStation = null; - private ImageButton mButtonNextStation = null; - private ImageButton mButtonIncrease = null; - private ImageButton mButtonAddToFavorite = null; - private ImageButton mButtonRecord = null; - private ImageButton mButtonStop = null; - private ImageButton mButtonPlayback = null; - private Animation mAnimation = null; - private ImageView mAnimImage = null; - - // Layout display recording file information - private RelativeLayout mRLRecordInfo = null; - - // Menu items - private MenuItem mMenuItemChannelList = null; - private MenuItem mMenuItemOverflow = null; - private MenuItem mMenuItemPower = null; - private PopupMenu mPopupMenu = null; - - // State variables - private boolean mIsServiceStarted = false; - private boolean mIsServiceBinded = false; - private boolean mNeedTuneto = false; - private boolean mIsNeedDisablePower = false; - private boolean mIsPlaying = false; - private boolean mIsInRecordingMode = false; - private boolean mIsNeedShowRecordDlg = false; - private boolean mIsNeedShowNoAntennaDlg = false; - private boolean mIsNeedShowSearchDlg = true; - private boolean mIsActivityForeground = true; - - // Record variables - private long mRecordStartTime = 0; - private long mPlayStartTime = 0; - private int mPrevRecorderState = FmRecorder.STATE_INVALID; - private int mCurrentStation = FmRadioUtils.DEFAULT_STATION; - private int mRecordState = 0; - - // Instance variables - private FmRadioService mService = null; - private Context mContext = null; - private Toast mToast = null; - private FragmentManager mFragmentManager = null; - private AudioManager mAudioManager = null; - - // Plugin - private IProjectStringExt mProjectStringExt = null; -/* Vanzo:libing on: Fri, 02 Aug 2013 15:31:08 +0800 - */ - private static final String GESTURE_SWITCH_FLAG = "persist.sys.gesture_switch"; - private static final String GESTURE_FMRADIO_FLAG = "persist.sys.gesture_fmradio"; - - // 1.first psensor value large than the GESTURE_FMRADIO_MAX_DISTANCE - private static int GESTURE_FMRADIO_MAX_DISTANCE = 350; - // 2.second psensor value small than the GESTURE_FMRADIO_MIN_DISTANCE - private static int GESTURE_FMRADIO_MIN_DISTANCE = 150; - // delay time of the gesture run hander,200 is 0.2s - private static final int GESTURE_RUN_POST_DELAY_TIME = 200; - private SensorManager mSensorManager; - private Sensor mSensor = null; - private Handler myHandler; - private int mPrePsensor = 0; - - private boolean mGestureEnabled; - private boolean mFMRadioEnabled; - private boolean mHavePsensor = true; - private boolean mHadGesture = false; -// end of vanzo:libing -/* Vanzo:lupei on: Fri, 28 Aug 2015 14:50:36 +0800 - * add default gesture distance max min value - */ - //private String DEFAULT_GESTURE_DIST_MAX_MIN = com.android.featureoption.FeatureOption.VANZO_FEATURE_DEFAULT_GESTURE_DISTANCE_MAX_MIN_VALUE; -// End of Vanzo:lupei - - // Service listener - private FmRadioListener mFmRadioListener = new FmRadioListener() { - @Override - public void onCallBack(Bundle bundle) { - int flag = bundle.getInt(FmRadioListener.CALLBACK_FLAG); - Log.d(TAG, "call back method flag:" + flag); - - if (flag == FmRadioListener.MSGID_FM_EXIT) { - mHandler.removeCallbacksAndMessages(null); - } - - // remove tag message first, avoid too many same messages in queue. - Message msg = mHandler.obtainMessage(flag); - msg.setData(bundle); - mHandler.removeMessages(flag); - mHandler.sendMessage(msg); - } - }; - - // Handle sdcard unmount event - private final BroadcastReceiver mSdcardListener = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - - if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) { - Log.d(TAG, "Sd card mounted"); - return; - } - - // If not unmount recording sd card, do nothing; - if (!isRecordingCardUnmount(intent)) { - return; - } - - if (Intent.ACTION_MEDIA_EJECT.equals(action) - || Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - FmRecordDialogFragment df = (FmRecordDialogFragment) mFragmentManager - .findFragmentByTag(TAG_SAVE_RECORDINGD); - if ((null != df && df.getShowsDialog()) || mIsNeedShowRecordDlg) { - Log.d(TAG, "recording sd card unmounted,dismiss save dialog"); - dismissSaveRecordingDialog(); - mIsNeedShowRecordDlg = false; - showToast(getString(R.string.toast_recording_lost_warning)); - } - Log.d(TAG, "Sd card Eject or unmounted"); - } - } - }; - - // Button click listeners on UI - private final View.OnClickListener mButtonClickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_record: - // if power up, record FM, else toast prompt user to power up - Log.d(TAG, "btn record: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - if (!mIsPlaying) { - showToast(getString(R.string.toast_powerup_before_record_warning)); - return; - } - refreshRecordNotIdle(); - mRecordStartTime = SystemClock.elapsedRealtime(); - editSharedPreferences(START_RECORD_TIME, mRecordStartTime); - mService.startRecordingAsync(); - mService.setModifiedRecordingName(null); - break; - - case R.id.btn_stop: - // stop record and stop play record file - Log.d(TAG, "btn stop: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - refreshRecordNotIdle(); - mService.stopRecordingAsync(); - mService.stopPlaybackAsync(); - break; - - case R.id.btn_playback: - Log.d(TAG, "btn playback: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - refreshRecordNotIdle(); - mPlayStartTime = SystemClock.elapsedRealtime(); - editSharedPreferences(START_PLAY_TIME, mPlayStartTime); - mService.startPlaybackAsync(); - break; - - case R.id.button_add_to_favorite: - Log.d(TAG, "onClick AddToFavorite start"); - updateFavoriteStation(); - Log.d(TAG, "onClick AddToFavorite end"); - break; - - case R.id.button_decrease: - tuneToStation(FmRadioUtils.computeDecreaseStation(mCurrentStation)); - break; - - case R.id.button_increase: - tuneToStation(FmRadioUtils.computeIncreaseStation(mCurrentStation)); - break; - - case R.id.button_prevstation: - Log.d(TAG, "onClick PrevStation"); - // Search for the previous station. - seekStation(mCurrentStation, false); // false: previous station - // true: next station - break; - - case R.id.button_nextstation: - // Search for the next station. - seekStation(mCurrentStation, true); // false: previous station - // true: next station - break; - - default: - Log.d(TAG, "invalid view id"); - break; - } - } - }; - - /** - * Main thread handler to update UI - */ - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - Log.d(TAG, "mHandler.handleMessage: what = " + msg.what + - ",hashcode:" + mHandler.hashCode()); - Bundle bundle; - switch (msg.what) { - case FmRadioListener.MSGID_REFRESH: - refreshTimeText(); - break; - - case FmRadioListener.MSGID_POWERUP_FINISHED: - bundle = msg.getData(); - boolean isPowerup = bundle - .getBoolean(FmRadioListener.KEY_IS_POWER_UP); - mIsPlaying = isPowerup; - Log.d(TAG, "updateFMState: FMRadio is powerup = " + isPowerup); - stopAnimation(); - if (isPowerup) { - refreshImageButton(true); - refreshPopupMenuItem(true); - refreshActionMenuItem(true); - } else { - showToast(getString(R.string.not_available)); - } - // if not powerup success, refresh power to enable. - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_SWITCH_ANNTENNA: - bundle = msg.getData(); - boolean isSwitch = bundle - .getBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA); - Log.d(TAG, "[FmRadioActivity.mHandler] swtich antenna: " + isSwitch); - if (!isSwitch) { - if (mIsActivityForeground) { - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } else { - Log.d(TAG, "need show no antenna dialog after onResume:"); - mIsNeedShowNoAntennaDlg = true; - } - stopAnimation(); - // if not powerup success, refresh power to enable. - refreshActionMenuPower(true); - } else { - mIsNeedShowNoAntennaDlg = false; - dismissNoAntennaDialog(); - } - break; - - case FmRadioListener.MSGID_POWERDOWN_FINISHED: - bundle = msg.getData(); - boolean isPowerdown = bundle - .getBoolean(FmRadioListener.KEY_IS_POWER_DOWN); - mIsPlaying = !isPowerdown; - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_TUNE_FINISHED: - bundle = msg.getData(); - boolean tuneFinish = bundle.getBoolean(FmRadioListener.KEY_IS_TUNE); - boolean isPowerUp = bundle.getBoolean(FmRadioListener.KEY_IS_POWER_UP); - // when power down state, tune from channel list, - // will call back send mIsPowerup state. - mIsPlaying = mIsPlaying ? mIsPlaying : isPowerUp; - - stopAnimation(); - // tune finished, should make power enable - mIsNeedDisablePower = false; - float frequency = bundle.getFloat(FmRadioListener.KEY_TUNE_TO_STATION); - mCurrentStation = FmRadioUtils.computeStation(frequency); - // After tune to station finished, refresh favorite button and - // other button status. - refreshStationUI(mCurrentStation); - // tune fail,should resume button status - if (!tuneFinish) { - Log.d(TAG, "mHandler.tune: " + tuneFinish); - refreshActionMenuItem(mIsPlaying); - refreshImageButton(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - refreshActionMenuPower(true); - return; - } - refreshImageButton(true); - refreshActionMenuItem(true); - refreshPopupMenuItem(true); - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_SCAN_FINISHED: - bundle = msg.getData(); - // cancel scan happen - boolean isScan = bundle.getBoolean(FmRadioListener.KEY_IS_SCAN); - int tuneToStation = bundle.getInt(FmRadioListener.KEY_TUNE_TO_STATION); - int searchedNum = bundle.getInt(FmRadioListener.KEY_STATION_NUM); - refreshActionMenuItem(mIsPlaying); - refreshImageButton(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - // ebable action menu power items - refreshActionMenuPower(true); - - if (!isScan) { - dismissSearchDialog(); - Log.d(TAG, "mHandler.scan canceled. not enter to channel list."); - return; - } - - mCurrentStation = tuneToStation; - // After tune to station finished, refresh favorite button and - // other button status. - refreshStationUI(mCurrentStation); - dismissSearchDialog(); - - if (searchedNum == 0) { - showToast(getString(R.string.toast_cannot_search)); - return; - } - - enterChannelList(); - // Show toast to tell user how many stations have been searched - showToast(getString(R.string.toast_channel_searched) + " " + - String.valueOf(searchedNum)); - break; - - case FmRadioListener.MSGID_FM_EXIT: - finish(); - break; - - case FmRadioListener.LISTEN_RDSSTATION_CHANGED: - bundle = msg.getData(); - int rdsStation = bundle.getInt(FmRadioListener.KEY_RDS_STATION); - refreshStationUI(rdsStation); - break; - - case FmRadioListener.LISTEN_PS_CHANGED: - case FmRadioListener.LISTEN_RT_CHANGED: - bundle = msg.getData(); - String text = ""; - String psString = bundle.getString(FmRadioListener.KEY_PS_INFO); - String rtString = bundle.getString(FmRadioListener.KEY_RT_INFO); - if ((null != psString) && (psString.length() > 0)) { - text += psString; - } - if ((null != rtString) && (rtString.length() > 0)) { - if (text.length() > 0) { - text += " "; - } - text += rtString; - } - showRds(text); - break; - - case FmRadioListener.LISTEN_RECORDSTATE_CHANGED: - bundle = msg.getData(); - int recorderState = bundle - .getInt(FmRadioListener.KEY_RECORDING_STATE); - Log.d(TAG, "FmRadioActivity.mHandler: recorderState = " - + recorderState); - updateRecordingState(recorderState); - break; - - case FmRadioListener.LISTEN_RECORDERROR: - bundle = msg.getData(); - int errorState = bundle - .getInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE); - updateRecorderError(errorState); - break; - - case FmRadioListener.LISTEN_RECORDMODE_CHANGED: - bundle = msg.getData(); - boolean isInRecordingMode = bundle - .getBoolean(FmRadioListener.KEY_IS_RECORDING_MODE); - exitRecordingMode(isInRecordingMode); - break; - - case FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED: - bundle = msg.getData(); - boolean isSpeakerMode = bundle - .getBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE); - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_sound_mode).setTitle(isSpeakerMode ? - R.string.optmenu_earphone : R.string.optmenu_speaker); - refreshSoundModeVisiable(); - } - break; - - default: - Log.d(TAG, "invalid message"); - break; - } - Log.d(TAG, "handleMessage"); - } - }; - - // When call bind service, it will call service connect. register call back - // listener and initial device - private final ServiceConnection mServiceConnection = new ServiceConnection() { - - /** - * called by system when bind service - * - * @param className component name - * @param service service binder - */ - @Override - public void onServiceConnected(ComponentName className, IBinder service) { - Log.d(TAG, "FmRadioActivity.onServiceConnected start"); - mService = ((FmRadioService.ServiceBinder) service).getService(); - if (null == mService) { - Log.e(TAG, "ServiceConnection: Error: can't get Service"); - finish(); - return; - } - - mService.registerFmRadioListener(mFmRadioListener); - if (!mService.isServiceInited()) { - Log.d(TAG, "ServiceConnection: FM service is not init"); - mService.initService(mCurrentStation); - powerUpFm(); - } else { - Log.d(TAG, "ServiceConnection: FM service is already init"); - if (mService.isDeviceOpen()) { - - // ALPS01768123 Need to power up for this case - // Without earphone->Start FM->Click Home->Plug in earphone->Enter FM - // -> Power Menu will be power down status and disabled - // ALPS01811383 Cannot power up when in call, because cannot get AudioFocus - if (!mService.isPowerUp() && mService.isModeNormal()) { - Log.d(TAG, "Need to power up auto for this case"); - powerUpFm(); - } else if (!mService.isPowerUp() && !mService.isModeNormal()) { - // if onStop() has been called before resuming this activity during - // phone call, need check whether show no-antenna dialog. - if (!mIsNeedShowNoAntennaDlg && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - } - - // tunetostation during changing language,we need to tune - // again when service bind success - if (mNeedTuneto) { - tuneToStation(mCurrentStation); - mNeedTuneto = false; - } - updateCurrentStation(); - boolean isPlaying = mService.isPowerUp(); - // back key destroy activity, mIsPlaying will be the default - // false. - // but it may be true. so the power button will be in wrong - // state. - mIsPlaying = isPlaying; - updateMenuStatus(); - updateDialogStatus(); - - // check whether set play back button enable - if (!isRecordFileExist()) { - mButtonPlayback.setEnabled(false); - } - updateRds(); - restoreRecorderState(); - } else { - // Normal case will not come here - // Need to exit FM for this case - Log.e(TAG, "ServiceConnection: service is exiting while start FM again"); - exitService(); - finish(); - } - } - Log.d(TAG, "FmRadioActivity.onServiceConnected end"); - } - - /** - * When unbind service will call this method - * - * @param className The component name - */ - @Override - public void onServiceDisconnected(ComponentName className) { - Log.d(TAG, "FmRadioActivity.onServiceDisconnected"); - } - }; - - /** - * Update FM recording state with given state from FM service - * - * @param recorderState The recorder state - */ - private void updateRecordingState(int recorderState) { - mRecordState = recorderState; - refreshRecordingStatus(recorderState); - - switch (recorderState) { - case FmRecorder.STATE_RECORDING: - showToast(getString(R.string.toast_start_recording)); - Log.d(TAG, "updateRecordingState:startRecording"); - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - break; - - case FmRecorder.STATE_PLAYBACK: - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - break; - - case FmRecorder.STATE_IDLE: - Log.d(TAG, "updateRecordingState:remove message"); - mHandler.removeMessages(FmRadioListener.MSGID_REFRESH); - break; - - default: - mHandler.removeMessages(FmRadioListener.MSGID_REFRESH); - break; - } - } - - /** - * Update FM recorder error with given error from FM service - * - * @param errorType The record error type - */ - private void updateRecorderError(int errorType) { - Log.d(TAG, "updateRecorderError.errorType: " + errorType); - String showString = null; - // In FMRecorder.startRecording() error occurs,then we should set - // mButtonRecord enable, because we set mButtonRecord disable ago - refreshRecordIdle(); - switch (errorType) { - case FmRecorder.ERROR_SDCARD_NOT_PRESENT: - showString = getString(R.string.toast_sdcard_missing); - break; - - case FmRecorder.ERROR_SDCARD_INSUFFICIENT_SPACE: - showString = getString(R.string.toast_sdcard_insufficient_space); - break; - - case FmRecorder.ERROR_RECORDER_INTERNAL: - showString = getString(R.string.toast_recorder_internal_error); - break; - - case FmRecorder.ERROR_PLAYER_INTERNAL: - showString = getString(R.string.toast_player_internal_error); - break; - - case FmRadioListener.NOT_AUDIO_FOCUS: - showString = getString(R.string.not_available); - if (isRecordFileExist()) { - refreshPlaybackIdle(true); - } - break; - case FmRecorder.ERROR_RECORDER_INVALID_STATE: - showString = getString(R.string.toast_powerup_before_record_warning); - break; - default: - Log.d(TAG, "invalid recorder error"); - break; - } - - showToast(showString); - } - - /** - * Update FM recorder mode with given mode from FM service - * - * @param isInRecordingMode The current mode, true if current is in - * recording mode - */ - private void exitRecordingMode(boolean isInRecordingMode) { - refreshImageButton(mIsPlaying); - refreshActionMenuItem(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - refreshActionMenuPower(true); - if (!isInRecordingMode) { - // Service has already set recording mode to false, need to modify - // UI here - mIsInRecordingMode = false; - switchRecordLayout(isInRecordingMode); - } - } - - /** - * Format the given time to be string by hour:minute:second - * - * @param time The time to be formated - * - * @return string The formated time - */ - private String getTimeString(int time) { - final int oneHour = 3600; - int hour = time / oneHour; - final int minuteSecond = 60; - int minute = (time / minuteSecond) % minuteSecond; - int second = time % minuteSecond; - String timeString = null; - - if (hour > 0) { - final String timeFormatLong = "%02d:%02d:%02d"; - timeString = String.format(timeFormatLong, hour, minute, second); - } else { - final String timeFormatShort = "%02d:%02d"; - timeString = String.format(timeFormatShort, minute, second); - } - - return timeString; - } - - /** - * Update the favorite UI state - */ - private void updateFavoriteStation() { - String showString = null; - // Judge the current output and switch between the devices. - if (FmRadioStation.isFavoriteStation(mContext, mCurrentStation)) { - // Need to delete this favorite channel. - String stationName = FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE); - FmRadioStation.updateStationToDb(mContext, stationName, - FmRadioStation.STATION_TYPE_SEARCHED, mCurrentStation); - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - showString = mProjectStringExt.getProjectString(mContext, - R.string.toast_channel_deleted, R.string.toast_channel_deleted1); - } else { - // Add the station to favorite - String stationName = FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_SEARCHED); - if (FmRadioStation.isStationExist(mContext, mCurrentStation, - FmRadioStation.STATION_TYPE_SEARCHED)) { - FmRadioStation.updateStationToDb(mContext, stationName, - FmRadioStation.STATION_TYPE_FAVORITE, - mCurrentStation); - } else { - FmRadioStation.insertStationToDb(mContext, stationName, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE); - } - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(stationName); - showString = mProjectStringExt.getProjectString(mContext, - R.string.toast_channel_added, R.string.toast_channel_added1); - } - showToast(showString); - } - - /** - * Edit value which saved in shared preference - * - * @param key The preferences editor key - * @param time The preferences editor value - */ - private void editSharedPreferences(String key, long time) { - SharedPreferences sharedPreferences = getSharedPreferences(REFS_NAME, 0); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putLong(key, time); - editor.commit(); - } - - /** - * Called when the activity is first created, initial variables - * - * @param savedInstanceState The saved bundle in onSaveInstanceState - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); -/* Vanzo:libing on: Thu, 15 May 2014 18:13:02 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onCreate initPsensorManager()"); - if (isFmRadioGestureSupport()) { - initPsensorManager(); - } -// End of Vanzo:libing - Log.i(TAG, "FmRadioActivity.onCreate start"); - // Bind the activity to FM audio stream. - setVolumeControlStream(AudioManager.STREAM_MUSIC); - setContentView(R.layout.main); - mFragmentManager = getFragmentManager(); - mContext = getApplicationContext(); - - FmRadioStation.initFmDatabase(mContext); - mProjectStringExt = ExtensionUtils.getExtension(mContext); - initUiComponent(); - registerButtonClickListener(); - registerSdcardReceiver(); - mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - Log.d(TAG, "FmRadioActivity.onCreate end"); - } -/* Vanzo:libing on: Thu, 15 May 2014 18:14:21 +0800 - * add for gesture - */ - public void initPsensorManager() { - return; - /*File file = new File("/sys/bus/platform/drivers/als_ps/ps"); - if (!file.exists()) { - mHavePsensor = false; - } - // has no psensor return - if (mHavePsensor == false) { - Log.w(TAG, "initPsensorManager() has no psensor !!!"); - return; - } - mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); -*/ -/* Vanzo:lupei on: Fri, 28 Aug 2015 14:51:36 +0800 - * add default gesture distance max min value - */ - /*android.util.Log.d(TAG, "DEFAULT_GESTURE_DIST_MAX_MIN = "+DEFAULT_GESTURE_DIST_MAX_MIN); - if (!("".equals(DEFAULT_GESTURE_DIST_MAX_MIN))) { - String[] value = DEFAULT_GESTURE_DIST_MAX_MIN.split(","); - if (value[0]!= "" && value[1] != "") { - GESTURE_FMRADIO_MAX_DISTANCE = Integer.parseInt(value[0]); - GESTURE_FMRADIO_MIN_DISTANCE = Integer.parseInt(value[1]); - } - }*/ -// End of Vanzo:lupei - - } - - public Runnable myRunnable = new Runnable() { - @Override - public void run() { - File file = new File("/sys/bus/platform/drivers/als_ps/ps"); - if (!file.exists()) { - file = new File("/sys/bus/platform/drivers/als_ps_cm3628/ps"); - } - if (file.exists()) { - String pSensorValues2 = readFile(file); - if (pSensorValues2.trim().contains("-")) { - return; - } - if (pSensorValues2.trim().contains("0x")) { - mPrePsensor = Integer.parseInt(pSensorValues2.trim().substring(2), 16); - } else { - mPrePsensor = Integer.parseInt(pSensorValues2.trim()); - } - android.util.Log.d(TAG, "fmradio isGestureOpen " + isGestureOpen()); - if (isGestureOpen() && isTopActivity()) { - if (mPrePsensor > GESTURE_FMRADIO_MAX_DISTANCE) { - mHadGesture = true; - } else if (mHadGesture && mPrePsensor < GESTURE_FMRADIO_MIN_DISTANCE) { - mHadGesture = false; - seekStation(mCurrentStation, true); // false: previous station - } - } - } - myHandler.postDelayed(myRunnable, GESTURE_RUN_POST_DELAY_TIME); - } - }; - - private boolean isTopActivity() { - ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); - ComponentName cn = am.getRunningTasks(2).get(0).topActivity; - String topClassName = cn.getClassName(); - String myClassName = FmRadioActivity.this.getComponentName().getClassName(); - - return topClassName.equalsIgnoreCase(myClassName); - } - - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } - - private static String readFile(File fn) { - FileReader f; - int len; - - f = null; - try { - f = new FileReader(fn); - String s = ""; - char[] cbuf = new char[200]; - while ((len = f.read(cbuf, 0, cbuf.length)) >= 0) { - s += String.valueOf(cbuf, 0, len); - } - return s; - } catch (IOException ex) { - return "0"; - } finally { - if (f != null) { - try { - f.close(); - } catch (IOException ex) { - return "0"; - } - } - } - } - - public void onSensorChanged(SensorEvent event) { - } - - private boolean isGestureOpen() { - mGestureEnabled = SystemProperties.getInt(GESTURE_SWITCH_FLAG , 0) == 1 ? true : false; - mFMRadioEnabled = SystemProperties.getInt(GESTURE_FMRADIO_FLAG , 0) == 1 ? true : false; - - return mGestureEnabled && mFMRadioEnabled; - } - - private void stopPsensor() { - mSensorManager.unregisterListener(this); - if (myHandler != null) { - myHandler.removeCallbacks(myRunnable); - } - } - - private void resumePsensor() { - mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); - mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); - - myHandler = new Handler(); - myHandler.post(myRunnable); - } - - public static boolean isFmRadioGestureSupport() { - boolean enable = false; //FeatureOption.VANZO_FEATURE_FM_RADIO_GESTURE; - android.util.Log.i(TAG, "isFmRadioGestureSupport enable = " + enable); - return enable; - } -// End of Vanzo:libing - /** - * Go to channel list activity - */ - private void enterChannelList() { - Log.d(TAG, "enterChannelList"); - if (mService != null) { - // AMS change the design for background start - // activity. need check app is background in app code - if (mIsActivityForeground) { - Intent intent = new Intent(); - intent.setClass(FmRadioActivity.this, FmRadioFavorite.class); - startActivityForResult(intent, REQUEST_CODE_FAVORITE); - } else { - Log.d(TAG, "enterChannelList. activity is background, not enter channel list."); - } - } - } - - /** - * Refresh the favorite button with the given station, if the station is - * favorite station, show favorite icon, else show non-favorite icon. - * - * @param station The station frequency - */ - private void refreshStationUI(int station) { - // Change the station frequency displayed. - mTextStationValue.setText(FmRadioUtils.formatStation(station)); - // Show or hide the favorite icon - if (FmRadioStation.isFavoriteStation(mContext, station)) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName(mContext, - station, FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - } - } - - @SuppressWarnings("deprecation") - private void restoreConfiguration() { - // after configuration change, need to reduction else the UI is abnormal - if (null != getLastNonConfigurationInstance()) { - Log.d(TAG, - "Configration changes,activity restart,need to reset UI!"); - Bundle bundle = (Bundle) getLastNonConfigurationInstance(); - if (null == bundle) { - return; - } - mPrevRecorderState = bundle.getInt("mPrevRecorderState"); - mRecordState = bundle.getInt("mRecordState"); - mIsNeedShowRecordDlg = bundle.getBoolean("mIsFreshRecordingStatus"); - // mIsNeedShowNoAntennaDlg = bundle.getBoolean("mIsNeedShowNoAntennaDlg"); - mIsNeedShowSearchDlg = bundle.getBoolean("mIsNeedShowSearchDlg"); - // we doesn't get it from service because the service may be - // null because not bind - mIsInRecordingMode = bundle.getBoolean("isInRecordingMode"); - mIsPlaying = bundle.getBoolean("mIsPlaying"); - Log.d(TAG, "bundle = " + bundle); - } - } - - /** - * Start and bind service, reduction variable values if configuration - * changed - */ - @Override - public void onStart() { - super.onStart(); - FmRadioService.setActivityIsOnStop(false); - Log.d(TAG, "FmRadioActivity.onStart start"); - // Should start FM service first. - if (null == startService(new Intent(FmRadioActivity.this, - FmRadioService.class))) { - Log.e(TAG, "Error: Cannot start FM service"); - return; - } - - mIsServiceStarted = true; - mIsServiceBinded = bindService(new Intent(FmRadioActivity.this, - FmRadioService.class), mServiceConnection, - Context.BIND_AUTO_CREATE); - - if (!mIsServiceBinded) { - Log.e(TAG, "Error: Cannot bind FM service"); - finish(); - return; - } - restoreConfiguration(); - Log.d(TAG, "FmRadioActivity.onStart end"); - } - - /** - * Refresh UI, when stop search, dismiss search dialog, pop up recording - * dialog if FM stopped when recording in background - */ - @Override - public void onResume() { - super.onResume(); -/* Vanzo:libing on: Thu, 15 May 2014 18:17:38 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onResume isGestureOpen = " + isGestureOpen()); - if (isFmRadioGestureSupport() && isGestureOpen()) { - resumePsensor(); - } -// End of Vanzo:libing - Log.d(TAG, "FmRadioActivity.onResume start"); - mIsActivityForeground = true; - if (null == mService) { - Log.d(TAG, "service has not bind finished"); - mIsNeedShowNoAntennaDlg = false; - return; - } - updateMenuStatus(); - updateDialogStatus(); - if (!isRecordFileExist()) { - mButtonPlayback.setEnabled(false); - } - checkNoAntennaDialogInOnResume(); - Log.d(TAG, "FmRadioActivity.onResume end"); - } - - /** - * In call and plug out earphone(in onPause state), need to show no antenna dialog but - * use mIsNeedShowNoAntennaDlg to save the state, because there is no where to show this dialog after onResume() for this case - */ - private void checkNoAntennaDialogInOnResume() { - if (mIsNeedShowNoAntennaDlg && mService != null && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - } - - /** - * When activity is paused call this method, indicate activity enter - * background if press exit, power down FM - */ - @Override - public void onPause() { - Log.d(TAG, "start FmRadioActivity.onPause"); - mIsActivityForeground = false; - /** - * Should dismiss before call onSaveInstance, or it will resume - * automatic - */ - mIsNeedShowSearchDlg = true; - dismissSearchDialog(); - - /** - * should dismiss before call onSaveInstance, or it will resume - * automatic. - */ - FmRecordDialogFragment df = (FmRecordDialogFragment) mFragmentManager - .findFragmentByTag(TAG_SAVE_RECORDINGD); - if (null != df && df.getShowsDialog()) { - Log.d(TAG, "onPause.dismissSaveRecordingDialog()"); - if (mService != null) { - mService.setModifiedRecordingName(df.getRecordingNameToSave()); - } - dismissSaveRecordingDialog(); - mIsNeedShowRecordDlg = true; - } - - // Need to dismiss avoid AMS popup this dialog again for power up will show this dialog - if (dismissNoAntennaDialog()) { - mIsNeedShowNoAntennaDlg = true; - } - - Log.d(TAG, "end FmRadioActivity.onPause"); - super.onPause(); - } - - /** - * Called when activity enter stopped state, unbind service, if exit - * pressed, stop service - */ - @Override - public void onStop() { - FmRadioService.setActivityIsOnStop(true); - Log.d(TAG, "start FmRadioActivity.onStop"); - if (mIsServiceBinded) { - unbindService(mServiceConnection); - mIsServiceBinded = false; - } - mIsNeedShowNoAntennaDlg = false; - Log.d(TAG, "end FmRadioActivity.onStop"); - super.onStop(); -/* Vanzo:libing on: Thu, 15 May 2014 18:15:55 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onStop stopPsensor()"); - if (isFmRadioGestureSupport()) { - stopPsensor(); - } -// End of Vanzo:libing - } - - /** - * W activity destroy, unregister broadcast receiver and remove handler - * message - */ - @Override - public void onDestroy() { - Log.d(TAG, "start FmRadioActivity.onDestroy"); - unregisterSdcardReceiver(); - // need to call this function because if doesn't do this,after - // configuration change will have many instance and recording time - // or playing time will not refresh - // Remove all the handle message - mHandler.removeCallbacksAndMessages(null); - if (mService != null) { - mService.unregisterFmRadioListener(mFmRadioListener); - } - mFmRadioListener = null; - if (null != mPopupMenu) { - mPopupMenu.dismiss(); - mPopupMenu = null; - } - Log.d(TAG, "end FmRadioActivity.onDestroy"); - super.onDestroy(); - } - - /** - * Create options menu - * - * @param menu The option menu - * - * @return true or false indicate need to handle other menu item - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - Log.d(TAG, "start FmRadioActivity.onCreateOptionsMenu"); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.fm_action_bar, menu); - mMenuItemChannelList = menu.findItem(R.id.fm_channel_list); - mMenuItemOverflow = menu.findItem(R.id.fm_menu); - mMenuItemPower = menu.findItem(R.id.fm_power); - Log.d(TAG, "end FmRadioActivity.onCreateOptionsMenu"); - return true; - } - - /** - * Prepare options menu - * - * @param menu The option menu - * - * @return true or false indicate need to handle other menu item - */ - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - Log.d(TAG, "start FmRadioActivity.onPrepareOptionsMenu"); - mMenuItemChannelList.setVisible(!mIsInRecordingMode); - mMenuItemOverflow.setVisible(!mIsInRecordingMode); - mMenuItemPower.setVisible(!mIsInRecordingMode); - if (null == mService) { - Log.d(TAG, "mService is null"); - return !mIsInRecordingMode; - } - - boolean isPlaying = mService.isPowerUp(); - boolean isMakePowerdown = mService.isMakePowerDown(); - boolean isSeeking = mService.isSeeking(); - boolean isScan = mService.isScanning(); - // if fm power down by other app, should enable power menu, make it to - // powerup. - refreshActionMenuItem((isSeeking || isScan) ? false : isPlaying); - refreshActionMenuPower((isScan || isSeeking) - ? false - : (isPlaying || (isMakePowerdown && !mIsNeedDisablePower))); - - // check whether show animation - if (isSeeking) { - Log.d(TAG, "onPrepareOptionsMenu: it is seeking"); - startAnimation(); - } - - Log.d(TAG, "end FmRadioActivity.onPrepareOptionsMenu"); - return !mIsInRecordingMode; - } - - /** - * Handle event when option item selected - * - * @param item The clicked item - * - * @return true or false indicate need to handle other menu item or not - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - Log.d(TAG, "start FmRadioActivity.onOptionsItemSelected"); - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - break; - - case R.id.fm_channel_list: - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - // Show favorite activity. - enterChannelList(); - break; - - case R.id.fm_power: - Log.d(TAG, "click fm_power menu"); - if (mIsPlaying) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - exitService(); - break; - } - powerUpFm(); - break; - - case R.id.fm_menu: - item.setEnabled(false); - - mPopupMenu = new PopupMenu(mContext, findViewById(R.id.fm_menu)); - Menu menu = mPopupMenu.getMenu(); - mPopupMenu.getMenuInflater().inflate(R.menu.fm_menu, menu); - mPopupMenu.setOnMenuItemClickListener(this); - mPopupMenu.setOnDismissListener(this); - - boolean isPlaying = mService.isPowerUp(); - if (isPlaying) { - menu.findItem(R.id.fm_record).setEnabled(true); - menu.findItem(R.id.fm_sound_mode).setEnabled(!mService.isBtConnected()); - menu.findItem(R.id.fm_sound_mode).setTitle( - mService.isSpeakerUsed() ? R.string.optmenu_earphone - : R.string.optmenu_speaker); - menu.findItem(R.id.fm_search).setEnabled(true); - } - refreshSoundModeVisiable(); - mPopupMenu.show(); - break; - - default: - Log.e(TAG, "Error: Invalid options menu item."); - break; - } - Log.d(TAG, "end FmRadioActivity.onOptionsItemSelected"); - return super.onOptionsItemSelected(item); - } - - /** - * Check whether antenna is available - * - * @return true or false indicate antenna available or not - */ - private boolean isAntennaAvailable() { - return mAudioManager.isWiredHeadsetOn(); - } - - /** - * When on activity result, tune to station which is from channel list - * - * @param requestCode The request code - * @param resultCode The result code - * @param data The intent from channel list - */ - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (RESULT_OK == resultCode) { - if (REQUEST_CODE_FAVORITE != requestCode) { - Log.e(TAG, "Error: Invalid requestcode."); - return; - } - int iStation = data.getIntExtra( - FmRadioFavorite.ACTIVITY_RESULT, mCurrentStation); - // Tune to this station. - mCurrentStation = iStation; - // if tune from channel list, we should disable power menu, - // especially for - // power down state - mIsNeedDisablePower = true; - Log.d(TAG, "onActivityForReult:" + mIsNeedDisablePower); - if (null == mService) { - Log.d(TAG, "activity.onActivityResult mService is null"); - mNeedTuneto = true; - return; - } - tuneToStation(iStation); - return; - } - - if (FmRadioStation.isFavoriteStation(mContext, mCurrentStation)) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName( - mContext, mCurrentStation, - FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - } - - // Do not handle other result. - Log.v(TAG, "The activity for requestcode " + requestCode - + " does not return any data."); - } - - /** - * Start animation - */ - private void startAnimation() { - mAnimImage.setAnimation(mAnimation); - mAnimImage.setVisibility(View.VISIBLE); - Log.d(TAG, "FmRadioActivity.startAnimation end"); - } - - /** - * Stop animation - */ - private void stopAnimation() { - mAnimImage.setVisibility(View.INVISIBLE); - mAnimImage.setAnimation(null); - } - - /** - * Restore recorder state from shared preference - */ - private void restoreRecorderState() { - // here should do some recorder related. - mIsInRecordingMode = mService.getRecordingMode(); - mRecordState = mService.getRecorderState(); - RelativeLayout recInfoBar = (RelativeLayout) findViewById(R.id.rl_recinfo); - // if recording or play backing state, should send message trigger - // refresh. - if ((FmRecorder.STATE_RECORDING == mRecordState) - || (FmRecorder.STATE_PLAYBACK == mRecordState)) { - SharedPreferences sharedPreferences = getSharedPreferences(REFS_NAME, 0); - mRecordStartTime = sharedPreferences.getLong(START_RECORD_TIME, 0); - mPlayStartTime = sharedPreferences.getLong(START_PLAY_TIME, 0); - recInfoBar.setVisibility(View.VISIBLE); - Log.d(TAG, "&&&sendemptyMessage:mRecoderStart:" + mRecordStartTime); - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - } else { - recInfoBar.setVisibility(View.GONE); - } - // if remove from app list, it will make recorder ui confused. - switchRecordLayout(mIsInRecordingMode); - changeRecordingMode(mIsInRecordingMode); - if (mIsInRecordingMode) { - refreshRecordingStatus(FmRecorder.STATE_INVALID); - } - } - - /** - * Power up FM - */ - private void powerUpFm() { - Log.v(TAG, "start powerUpFm"); - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - startAnimation(); - mService.powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - Log.v(TAG, "end powerUpFm"); - } - - private void setSpeakerPhoneOn(boolean isSpeaker) { - if (isSpeaker) { - Log.v(TAG, "UseSpeaker"); - mService.setSpeakerPhoneOn(true); - } else { - Log.v(TAG, "UseEarphone"); - mService.setSpeakerPhoneOn(false); - } - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_sound_mode).setTitle(mService.isSpeakerUsed() ? - R.string.optmenu_earphone : R.string.optmenu_speaker); - } - } - - /** - * Tune to a station - * - * @param station The tune station - */ - private void tuneToStation(final int station) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - mService.tuneStationAsync(FmRadioUtils.computeFrequency(station)); - if (!mIsPlaying) { - startAnimation(); - } - } - - /** - * Seek station according current frequency and direction - * - * @param station The seek start station - * @param direction The seek direction - */ - private void seekStation(final int station, boolean direction) { - // If the seek AsyncTask has been executed and not canceled, cancel it - // before start new. - startAnimation(); - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - mService.seekStationAsync(FmRadioUtils.computeFrequency(station), - direction); - } - - private void refreshImageButton(boolean enabled) { - mButtonDecrease.setEnabled(enabled); - mButtonPrevStation.setEnabled(enabled); - mButtonNextStation.setEnabled(enabled); - mButtonIncrease.setEnabled(enabled); - } - - // Refresh action menu except power menu - private void refreshActionMenuItem(boolean enabled) { - // action menu - if (null != mMenuItemChannelList) { - // if power down by other app, should disable channelist list, over - // menu - mMenuItemChannelList.setEnabled(enabled); - mMenuItemOverflow.setEnabled(enabled); - } - } - - // Refresh action menu only power menu - private void refreshActionMenuPower(boolean enabled) { - Log.d(TAG, "refreshActionMenuPower enabled:" + enabled + ", mIsPlaying:" + mIsPlaying); - // action menu - if (null != mMenuItemChannelList) { - // if fm power down by other app, should enable this button to - // powerup. - mMenuItemPower.setEnabled(enabled); - mMenuItemPower.setIcon(mIsPlaying ? R.drawable.btn_fm_powerup_selector - : R.drawable.btn_fm_powerdown_selector); - } - } - - private void refreshPopupMenuItem(boolean enabled) { - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_record).setEnabled(enabled); - menu.findItem(R.id.fm_search).setEnabled(enabled); - menu.findItem(R.id.fm_sound_mode).setEnabled(enabled && !mService.isBtConnected()); - refreshSoundModeVisiable(); - } - } - - private void refreshSoundModeVisiable() { - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - // Need hide only short antenna support and not plug in earphone - boolean hideSoundMode = SHORT_ANNTENNA_SUPPORT && !mService.isAntennaAvailable(); - boolean showSoundMode = !hideSoundMode; - menu.findItem(R.id.fm_sound_mode).setVisible(showSoundMode); - } - } - - private void refreshRecordNotIdle() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(false); - } - - private void refreshRecordIdle() { - mButtonRecord.setEnabled(true); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(false); - } - - private void refreshPlaybackIdle(boolean btnPlayBack) { - mButtonRecord.setEnabled(true); - mButtonPlayback.setEnabled(btnPlayBack); - mButtonStop.setEnabled(false); - } - - private void refreshRecording() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(true); - } - - private void refreshPlaybacking() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(true); - } - - /** - * Called when back pressed - */ - @Override - public void onBackPressed() { - Log.d(TAG, "begin FmRadioActivity.onBackPressed"); - - if (mIsInRecordingMode) { - changeRecordingMode(false); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - // no need consider power down and other situation - boolean isPlaying = mService.isPowerUp(); - refreshImageButton(isPlaying); - refreshPopupMenuItem(isPlaying); - refreshActionMenuItem(isPlaying); - refreshActionMenuPower(true); - if (mService != null && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - return; - } - - // exit fm, disable all button - if (!mIsPlaying && (null != mService) && !mService.isPowerUping()) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - exitService(); - return; - } - - super.onBackPressed(); - Log.d(TAG, "end FmRadioActivity.onBackPressed"); - } - - private void showToast(CharSequence text) { - if (null == mToast) { - mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT); - } - mToast.setText(text); - mToast.show(); - Log.v(TAG, "FmRadioActivity.showToast: toast = " + text); - } - - private void showRds(String text) { - mTextRds.setText(text); - mTextRds.setSelected(true); - Log.v(TAG, "FmRadioActivity.showRds: RDS = " + text); - } - - /** - * Change recording mode - * - * @param recordingMode The current recording mode - */ - private void changeRecordingMode(boolean recordingMode) { - Log.d(TAG, "changeRecordingMode: " + recordingMode); - if (mIsInRecordingMode == recordingMode) { - Log.e(TAG, "FM already " + (recordingMode ? "in" : "NOT in") - + "recording mode!"); - return; - } - mIsInRecordingMode = recordingMode; - mService.setRecordingModeAsync(recordingMode); - switchRecordLayout(recordingMode); - } - - /** - * Switch to record layout, if in recorder mode. - * - * @param recordingMode true in recorder mode, false not in recorder mode - */ - private void switchRecordLayout(boolean recordingMode) { - ActionBar actionBar = getActionBar(); - invalidateOptionsMenu(); - - // Set the action bar on the right to be up navigation - actionBar.setDisplayHomeAsUpEnabled(recordingMode); - actionBar.setHomeButtonEnabled(recordingMode); - actionBar.setTitle(recordingMode ? R.string.fm_recorder_name - : R.string.app_name); - - LinearLayout recBar = (LinearLayout) findViewById(R.id.bottom_bar_recorder); - LinearLayout bottomBar = (LinearLayout) findViewById(R.id.bottom_bar); - - bottomBar.setVisibility(recordingMode ? View.GONE : View.VISIBLE); - recBar.setVisibility(recordingMode ? View.VISIBLE : View.GONE); - mButtonAddToFavorite.setVisibility(recordingMode ? View.GONE - : View.VISIBLE); - } - - /** - * Update recording UI according record state - * - * @param stateOverride The recording state - */ - private void refreshRecordingStatus(int stateOverride) { - int recorderState = FmRecorder.STATE_INVALID; - - recorderState = (stateOverride == FmRecorder.STATE_INVALID ? mService - .getRecorderState() : stateOverride); - - Log.d(TAG, "refreshRecordingStatus: state=" + recorderState); - switch (recorderState) { - case FmRecorder.STATE_IDLE: - long recordTime = mService.getRecordTime(); - if (recordTime > 0) { - if (isRecordFileExist()) { - mButtonPlayback.setEnabled(true); - } - - if (FmRecorder.STATE_RECORDING == mPrevRecorderState) { - Log.d(TAG, "need show recorder dialog.mPrevRecorderState:" + - mPrevRecorderState); - if (mIsActivityForeground) { - showSaveRecordingDialog(); - } else { - mIsNeedShowRecordDlg = true; - } - } - } else { - mButtonPlayback.setEnabled(false); - } - - refreshPlaybackIdle((recordTime > 0) && isRecordFileExist()); - mRLRecordInfo.setVisibility(View.GONE); - break; - - case FmRecorder.STATE_RECORDING: - mTxtRecInfoLeft.setText(""); - mTxtRecInfoRight.setText(""); - mTxtRecInfoLeft.setSelected(false); - refreshRecording(); - mRLRecordInfo.setVisibility(View.VISIBLE); - break; - - case FmRecorder.STATE_PLAYBACK: - String recordingName = mService.getRecordingName(); - if (null == recordingName) { - recordingName = ""; - } - mTxtRecInfoLeft.setText(recordingName); - mTxtRecInfoRight.setText(""); - mTxtRecInfoLeft.setSelected(true); - refreshPlaybacking(); - mRLRecordInfo.setVisibility(View.VISIBLE); - break; - - case FmRecorder.STATE_INVALID: - refreshRecordIdle(); - mRLRecordInfo.setVisibility(View.GONE); - break; - - default: - Log.d(TAG, "invalid record status"); - break; - } - mPrevRecorderState = recorderState; - Log.d(TAG, "refreshRecordingStatus.mPrevRecorderState:" + mPrevRecorderState); - } - - /** - * Check whether FM recording temporary file exist - * - * @return true if FM recording temporary file exist, false not exist FM - * recording temporary file - */ - private boolean isRecordFileExist() { - String fileName = null; - fileName = mService.getRecordingNameWithPath(); - // if recording file is delete by user, play button disabled - File recordingFileToSave = new File(fileName + FmRecorder.RECORDING_FILE_EXTENSION); - return recordingFileToSave.exists(); - } - - /** - * use onRetainNonConfigurationInstance because after configuration change, - * activity will destroy and create need use this function to save some - * important variables - */ - @Override - public Object onRetainNonConfigurationInstance() { - final int size = 5; - Bundle bundle = new Bundle(size); - bundle.putBoolean("isInRecordingMode", mIsInRecordingMode); - bundle.putInt("mPrevRecorderState", mPrevRecorderState); - bundle.putBoolean("mIsFreshRecordingStatus", mIsNeedShowRecordDlg); - //bundle.putBoolean("mIsNeedShowNoAntennaDlg", mIsNeedShowNoAntennaDlg); - bundle.putBoolean("mIsNeedShowSearchDlg", mIsNeedShowSearchDlg); - bundle.putInt("mRecordState", mRecordState); - bundle.putBoolean("mIsPlaying", mIsPlaying); - Log.d(TAG, "onRetainNonConfigurationInstance() bundle:" + bundle); - return bundle; - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - Log.d(TAG, "onSaveInstanceState"); - super.onSaveInstanceState(outState); - } - - /** - * Handle event about pop up menu clicked - * - * @param item The pop up menu item - * - * @return true or false indicate need to handle other menu item or not - */ - @Override - public boolean onMenuItemClick(MenuItem item) { - Log.d(TAG, "onMenuItemClick:" + item.getItemId()); - switch (item.getItemId()) { - case R.id.fm_search: - // Don't show search dialog when activity is background - if (!mIsActivityForeground) { - Log.w(TAG, "click searh menu in background, don't show search dialog"); - return false; - } - mIsNeedShowSearchDlg = true; - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - showSearchDialog(); - FmRadioStation.cleanSearchedStations(mContext); - mService.startScanAsync(); - break; - - case R.id.fm_sound_mode: - setSpeakerPhoneOn(!mService.isSpeakerUsed()); - break; - - case R.id.fm_record: - changeRecordingMode(true); - refreshRecordingStatus(FmRecorder.STATE_INVALID); - break; - - default: - Log.d(TAG, "invalid menu item"); - break; - } - return false; - } - - /** - * Called when PopUp menu dismissed - * - * @param PopUp The menu which dismiss - */ - @Override - public void onDismiss(PopupMenu menu) { - Log.d(TAG, "popmenu dismiss listener:" + menu); - invalidateOptionsMenu(); - } - - /** - * Exit FM service - */ - private void exitService() { - Log.i(TAG, "exitService"); - if (mIsServiceBinded) { - unbindService(mServiceConnection); - mIsServiceBinded = false; - } - - if (mIsServiceStarted) { - boolean isSuccess = stopService(new Intent( - FmRadioActivity.this, FmRadioService.class)); - if (!isSuccess) { - Log.e(TAG, "Error: Cannot stop the FM service."); - } - mIsServiceStarted = false; - } - } - - /** - * Show no antenna dialog - */ - public void showNoAntennaDialog() { - NoAntennaDialog newFragment = NoAntennaDialog.newInstance(); - newFragment.show(mFragmentManager, TAG_NO_ANTENNA); - mFragmentManager.executePendingTransactions(); - } - - /** - * Show save recording dialog - * - * @param name The recording file name - */ - public void showSaveRecordingDialog() { - String sdcard = FmRadioService.getRecordingSdcard(); - String defaultName = mService.getRecordingName(); - String recordingName = mService.getModifiedRecordingName(); - FmRecordDialogFragment newFragment = - new FmRecordDialogFragment(sdcard, defaultName, recordingName); - newFragment.show(mFragmentManager, TAG_SAVE_RECORDINGD); - mFragmentManager.executePendingTransactions(); - } - - /** - * Show search dialog - */ - private void showSearchDialog() { - SearchChannelsDialog newFragment = SearchChannelsDialog.newInstance(); - newFragment.show(mFragmentManager, TAG_SEARCH); - mFragmentManager.executePendingTransactions(); - } - - /** - * Dismiss search dialog - */ - private void dismissSearchDialog() { - SearchChannelsDialog newFragment = (SearchChannelsDialog) mFragmentManager - .findFragmentByTag(TAG_SEARCH); - if (null != newFragment) { - newFragment.dismissAllowingStateLoss(); - } - } - - /** - * Dismiss save recording dialog - */ - private void dismissSaveRecordingDialog() { - FragmentTransaction ft = mFragmentManager.beginTransaction(); - Fragment fragment = mFragmentManager.findFragmentByTag(TAG_SAVE_RECORDINGD); - if (null != fragment) { - ft.remove(fragment); - ft.commitAllowingStateLoss(); - } - } - - /** - * Check whether recording card is unmounted - * - * @param intent The intent about sdcard - * - * @return true or false indicate recording card unmount or not - */ - private boolean isRecordingCardUnmount(Intent intent) { - String sdcard = FmRadioService.getRecordingSdcard(); - String unmountSDCard = intent.getData().toString(); - Log.d(TAG, "unmount sd card file path: " + unmountSDCard); - return unmountSDCard.equalsIgnoreCase("file://" + sdcard) ? true - : false; - } - - /** - * Dismiss no antenna dialog - */ - private boolean dismissNoAntennaDialog() { - NoAntennaDialog newFragment = (NoAntennaDialog) mFragmentManager - .findFragmentByTag(TAG_NO_ANTENNA); - if (null != newFragment) { - newFragment.dismissAllowingStateLoss(); - return true; - } - return false; - } - - /** - * Cancel search progress - */ - public void cancelSearch() { - Log.d(TAG, "FmRadioActivity.cancelSearch"); - mService.stopScan(); - } - - /** - * No antenna continue to operate - */ - @Override - public void noAntennaContinue() { - // We let user use the app if no antenna. - // But we do not automatically start FM. - Log.d(TAG, " noAntennaContinue.onClick ok to continue"); - if (isAntennaAvailable()) { - powerUpFm(); - } else { - Log.d(TAG, "noAntennaContinue.earphone is not ready"); - mService.switchAntennaAsync(1); - } - } - - /** - * No antenna cancel to operate - */ - @Override - public void noAntennaCancel() { - Log.d(TAG, " onClick Negative"); - if (mService != null && !mService.isInLockTaskMode()) { - exitService(); - } else { - Log.d(TAG, "No need exit Service and Activity cause current is lock mode"); - } - } - - /** - * Recording dialog click - * - * @param recordingName The new recording name - */ - @Override - public void onRecordingDialogClick(String recordingName) { - mService.saveRecordingAsync(recordingName); - mService.setModifiedRecordingName(null); - } - - /** - * Update rds information - */ - private void updateRds() { - if (mIsPlaying) { - Bundle bundle = new Bundle(2); - bundle.putString(FmRadioListener.KEY_PS_INFO, mService.getPS()); - bundle.putString(FmRadioListener.KEY_RT_INFO, mService.getLRText()); - Message msg = mHandler - .obtainMessage(FmRadioListener.LISTEN_PS_CHANGED); - msg.setData(bundle); - mHandler.sendMessage(msg); - } - } - - /** - * Update current station according service station - */ - private void updateCurrentStation() { - // get the frequency from service, set frequency in activity, UI, - // database - // same as the frequency in service - int freq = mService.getFrequency(); - if (FmRadioUtils.isValidStation(freq)) { - if (mCurrentStation != freq) { - Log.d(TAG, "frequency in service isn't same as in database"); - mCurrentStation = freq; - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - refreshStationUI(mCurrentStation); - } - } - } - - /** - * Update button status, and dialog status - */ - private void updateDialogStatus() { - Log.d(TAG, "updateDialogStatus.mIsNeedShowSearchDlg:" + mIsNeedShowSearchDlg); - boolean isScan = mService.isScanning(); - // check whether show search dialog, because it may be dismissed - // onSaveInstance - if (isScan && mIsNeedShowSearchDlg) { - Log.d(TAG, "updateDialogStatus: show search dialog. isScan is " + isScan); - mIsNeedShowSearchDlg = false; - showSearchDialog(); - } - - // check whether show recorder dialog, when activity is foreground - if (mIsNeedShowRecordDlg) { - Log.d(TAG, "updateDialogStatus.resume recordDlg.mPrevRecorderState:" + - mPrevRecorderState); - showSaveRecordingDialog(); - mIsNeedShowRecordDlg = false; - } - - /* - // check whether show no antenna dialog, when activity is foreground - if (mIsNeedShowNoAntennaDlg) { - Log.d(TAG, "updateDialogStatus.resume noAntennaDlg:"); - showNoAntennaDialog(); - refreshActionMenuPower(true); - mIsNeedShowNoAntennaDlg = false; - } - */ - } - - /** - * Update menu status, and animation - */ - private void updateMenuStatus() { - boolean isPlaying = mService.isPowerUp(); - boolean isPoweruping = mService.isPowerUping(); - boolean isSeeking = mService.isSeeking(); - boolean isScan = mService.isScanning(); - boolean isMakePowerdown = mService.isMakePowerDown(); - Log.d(TAG, "updateMenuStatus.isSeeking:" + isSeeking); - boolean fmStatus = (isScan || isSeeking || isPoweruping); - // when seeking, all button should disabled, - // else should update as origin status - refreshImageButton(fmStatus ? false : isPlaying); - refreshPopupMenuItem(fmStatus ? false : isPlaying); - refreshActionMenuItem(fmStatus ? false : isPlaying); - // if fm power down by other app, should enable power button - // to powerup. - Log.d(TAG, "updateMenuStatus.mIsNeedDisablePower: " + mIsNeedDisablePower); - refreshActionMenuPower(fmStatus ? false : - (isPlaying || (isMakePowerdown && !mIsNeedDisablePower))); - - // check whether show animation - if (isSeeking || isPoweruping) { - Log.d(TAG, "updateMenuStatus. it is seeking or poweruping"); - startAnimation(); - } - } - - private void initUiComponent() { - Log.i(TAG, "initUIComponent"); - mTextRds = (TextView) findViewById(R.id.text_rds); - mTextRds.setText(""); - mTextFm = (TextView) findViewById(R.id.text_fm); - mTextFm.setText(FM); - mTextMHz = (TextView) findViewById(R.id.text_mhz); - mTextMHz.setText(R.string.fm_unit); - - mTextStationValue = (TextView) findViewById(R.id.station_value); - mTxtRecInfoLeft = (TextView) findViewById(R.id.txtRecInfoLeft); - mTxtRecInfoRight = (TextView) findViewById(R.id.txtRecInfoRight); - mRLRecordInfo = (RelativeLayout) findViewById(R.id.rl_recinfo); - mButtonRecord = (ImageButton) findViewById(R.id.btn_record); - mButtonStop = (ImageButton) findViewById(R.id.btn_stop); - mButtonPlayback = (ImageButton) findViewById(R.id.btn_playback); - mButtonAddToFavorite = (ImageButton) findViewById(R.id.button_add_to_favorite); - mTextStationName = (TextView) findViewById(R.id.station_name); - mButtonDecrease = (ImageButton) findViewById(R.id.button_decrease); - mButtonIncrease = (ImageButton) findViewById(R.id.button_increase); - mButtonPrevStation = (ImageButton) findViewById(R.id.button_prevstation); - mButtonNextStation = (ImageButton) findViewById(R.id.button_nextstation); - - // initial mPopupMenu - mPopupMenu = new PopupMenu(mContext, findViewById(R.id.fm_menu)); - Menu menu = mPopupMenu.getMenu(); - mPopupMenu.getMenuInflater().inflate(R.menu.fm_menu, menu); - - // put favorite button here since it might be used very early in - // changing recording mode - mCurrentStation = FmRadioStation.getCurrentStation(mContext); - boolean isFavoriteStation = FmRadioStation.isFavoriteStation(mContext, - mCurrentStation); - // If the current station is in favorite, set its icon to favorite icon; - // else, set to none favorite icon. - if (isFavoriteStation) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - } - - mTextStationValue.setText(FmRadioUtils.formatStation(mCurrentStation)); - mAnimation = (Animation) AnimationUtils.loadAnimation(this, - R.drawable.anim); - mAnimImage = (ImageView) findViewById(R.id.iv_anim); - mAnimImage.setVisibility(View.INVISIBLE); - } - - private void registerButtonClickListener() { - mButtonRecord.setOnClickListener(mButtonClickListener); - mButtonStop.setOnClickListener(mButtonClickListener); - mButtonPlayback.setOnClickListener(mButtonClickListener); - mButtonAddToFavorite.setOnClickListener(mButtonClickListener); - mButtonDecrease.setOnClickListener(mButtonClickListener); - mButtonIncrease.setOnClickListener(mButtonClickListener); - mButtonPrevStation.setOnClickListener(mButtonClickListener); - mButtonNextStation.setOnClickListener(mButtonClickListener); - } - - private void registerSdcardReceiver() { - IntentFilter iFilter = new IntentFilter(); - iFilter.addAction(Intent.ACTION_MEDIA_EJECT); - iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); - iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); - iFilter.addDataScheme("file"); - registerReceiver(mSdcardListener, iFilter); - } - - private void unregisterSdcardReceiver() { - unregisterReceiver(mSdcardListener); - } - - private void refreshTimeText() { - Log.d(TAG, "refreshTimeText:mRecordState:" + mRecordState); - if (!mIsInRecordingMode) { - Log.d(TAG, "refreshTimeText:mIsInRecordingMode:" + mIsInRecordingMode); - if (mRecordState == FmRecorder.STATE_RECORDING) { - mService.stopRecordingAsync(); - } else if (mRecordState == FmRecorder.STATE_PLAYBACK) { - mService.stopPlaybackAsync(); - } - return; - } - - final int oneSecond = 1000; - switch (mRecordState) { - case FmRecorder.STATE_RECORDING: - int recordTime = (int) ((SystemClock.elapsedRealtime() - mRecordStartTime) / - oneSecond); - mTxtRecInfoLeft.setText(getTimeString(recordTime)); - Log.d(TAG, "Recording time = " + mTxtRecInfoLeft.getText()); - String recordingSdcard = FmRadioService.getRecordingSdcard(); - if (!FmRadioUtils.hasEnoughSpace(recordingSdcard)) { - // recordTime 1s to avoid start() then quickly stop() native exception - if (recordTime > 1) { - // Insufficient storage - mService.stopRecordingAsync(); - } - } - break; - - case FmRecorder.STATE_PLAYBACK: - int playTime = (int) ((SystemClock.elapsedRealtime() - mPlayStartTime) / oneSecond); - mTxtRecInfoRight.setText(getTimeString(playTime)); - Log.d(TAG, "Playing time = " + mTxtRecInfoRight.getText()); - break; - - default: - break; - } - mHandler.sendEmptyMessageDelayed(FmRadioListener.MSGID_REFRESH, oneSecond); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java~ b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java~ deleted file mode 100755 index 37ddfdd..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java~ +++ /dev/null @@ -1,2196 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.ActionBar; -import android.app.Activity; -import android.app.Fragment; -import android.app.FragmentManager; -import android.app.FragmentTransaction; -import android.content.BroadcastReceiver; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.ServiceConnection; -import android.content.SharedPreferences; -import android.media.AudioManager; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.os.SystemClock; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnDismissListener; -import android.widget.PopupMenu.OnMenuItemClickListener; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; - -import com.mediatek.fmradio.dialogs.NoAntennaDialog; -import com.mediatek.fmradio.dialogs.SearchChannelsDialog; -import com.mediatek.fmradio.ext.IProjectStringExt; - -import java.io.File; -/* Vanzo:libing on: Thu, 15 May 2014 19:34:51 +0800 - */ -import java.io.FileReader; -import java.io.IOException; -import android.app.ActivityManager; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.os.SystemProperties; -//import com.android.featureoption.FeatureOption; -// End of Vanzo:libing - -/** - * This class interact with user, provider FM basic function and FM recording - * function - */ -public class FmRadioActivity extends Activity implements -/* Vanzo:libing on: Thu, 15 May 2014 19:36:32 +0800 - */ - SensorEventListener, -// End of Vanzo:libing - OnMenuItemClickListener, OnDismissListener, - NoAntennaDialog.NoAntennaListener, - SearchChannelsDialog.CancelSearchListener, - FmRecordDialogFragment.OnRecordingDialogClickListener { - // Logging - private static final String TAG = "FmRx/Activity"; - - // Dialog tags - private static final String TAG_SEARCH = "Search"; - private static final String TAG_SAVE_RECORDINGD = "SaveRecording"; - private static final String TAG_NO_ANTENNA = "NoAntenna"; - - // Use shared preference to store record or play time - private static final String REFS_NAME = "FMRecord"; - private static final String START_RECORD_TIME = "startRecordTime"; - private static final String START_PLAY_TIME = "startPlayTime"; - - // Request code - private static final int REQUEST_CODE_FAVORITE = 1; - - // FM - private static final String FM = "FM"; - // Short antenna support - private static final boolean SHORT_ANNTENNA_SUPPORT = FmRadioUtils.isFmShortAntennaSupport(); - - // UI views - private TextView mTextStationName = null; - private TextView mTextStationValue = null; - // RDS text view - private TextView mTextRds = null; - // Text view display "FM" - private TextView mTextFm = null; - // Text View display "MHZ" - private TextView mTextMHz = null; - private TextView mTxtRecInfoLeft = null; - private TextView mTxtRecInfoRight = null; - private ImageButton mButtonDecrease = null; - private ImageButton mButtonPrevStation = null; - private ImageButton mButtonNextStation = null; - private ImageButton mButtonIncrease = null; - private ImageButton mButtonAddToFavorite = null; - private ImageButton mButtonRecord = null; - private ImageButton mButtonStop = null; - private ImageButton mButtonPlayback = null; - private Animation mAnimation = null; - private ImageView mAnimImage = null; - - // Layout display recording file information - private RelativeLayout mRLRecordInfo = null; - - // Menu items - private MenuItem mMenuItemChannelList = null; - private MenuItem mMenuItemOverflow = null; - private MenuItem mMenuItemPower = null; - private PopupMenu mPopupMenu = null; - - // State variables - private boolean mIsServiceStarted = false; - private boolean mIsServiceBinded = false; - private boolean mNeedTuneto = false; - private boolean mIsNeedDisablePower = false; - private boolean mIsPlaying = false; - private boolean mIsInRecordingMode = false; - private boolean mIsNeedShowRecordDlg = false; - private boolean mIsNeedShowNoAntennaDlg = false; - private boolean mIsNeedShowSearchDlg = true; - private boolean mIsActivityForeground = true; - - // Record variables - private long mRecordStartTime = 0; - private long mPlayStartTime = 0; - private int mPrevRecorderState = FmRecorder.STATE_INVALID; - private int mCurrentStation = FmRadioUtils.DEFAULT_STATION; - private int mRecordState = 0; - - // Instance variables - private FmRadioService mService = null; - private Context mContext = null; - private Toast mToast = null; - private FragmentManager mFragmentManager = null; - private AudioManager mAudioManager = null; - - // Plugin - private IProjectStringExt mProjectStringExt = null; -/* Vanzo:libing on: Fri, 02 Aug 2013 15:31:08 +0800 - */ - private static final String GESTURE_SWITCH_FLAG = "persist.sys.gesture_switch"; - private static final String GESTURE_FMRADIO_FLAG = "persist.sys.gesture_fmradio"; - - // 1.first psensor value large than the GESTURE_FMRADIO_MAX_DISTANCE - private static int GESTURE_FMRADIO_MAX_DISTANCE = 350; - // 2.second psensor value small than the GESTURE_FMRADIO_MIN_DISTANCE - private static int GESTURE_FMRADIO_MIN_DISTANCE = 150; - // delay time of the gesture run hander,200 is 0.2s - private static final int GESTURE_RUN_POST_DELAY_TIME = 200; - private SensorManager mSensorManager; - private Sensor mSensor = null; - private Handler myHandler; - private int mPrePsensor = 0; - - private boolean mGestureEnabled; - private boolean mFMRadioEnabled; - private boolean mHavePsensor = true; - private boolean mHadGesture = false; -// end of vanzo:libing -/* Vanzo:lupei on: Fri, 28 Aug 2015 14:50:36 +0800 - * add default gesture distance max min value - */ - //private String DEFAULT_GESTURE_DIST_MAX_MIN = com.android.featureoption.FeatureOption.VANZO_FEATURE_DEFAULT_GESTURE_DISTANCE_MAX_MIN_VALUE; -// End of Vanzo:lupei - - // Service listener - private FmRadioListener mFmRadioListener = new FmRadioListener() { - @Override - public void onCallBack(Bundle bundle) { - int flag = bundle.getInt(FmRadioListener.CALLBACK_FLAG); - Log.d(TAG, "call back method flag:" + flag); - - if (flag == FmRadioListener.MSGID_FM_EXIT) { - mHandler.removeCallbacksAndMessages(null); - } - - // remove tag message first, avoid too many same messages in queue. - Message msg = mHandler.obtainMessage(flag); - msg.setData(bundle); - mHandler.removeMessages(flag); - mHandler.sendMessage(msg); - } - }; - - // Handle sdcard unmount event - private final BroadcastReceiver mSdcardListener = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - - if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) { - Log.d(TAG, "Sd card mounted"); - return; - } - - // If not unmount recording sd card, do nothing; - if (!isRecordingCardUnmount(intent)) { - return; - } - - if (Intent.ACTION_MEDIA_EJECT.equals(action) - || Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - FmRecordDialogFragment df = (FmRecordDialogFragment) mFragmentManager - .findFragmentByTag(TAG_SAVE_RECORDINGD); - if ((null != df && df.getShowsDialog()) || mIsNeedShowRecordDlg) { - Log.d(TAG, "recording sd card unmounted,dismiss save dialog"); - dismissSaveRecordingDialog(); - mIsNeedShowRecordDlg = false; - showToast(getString(R.string.toast_recording_lost_warning)); - } - Log.d(TAG, "Sd card Eject or unmounted"); - } - } - }; - - // Button click listeners on UI - private final View.OnClickListener mButtonClickListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_record: - // if power up, record FM, else toast prompt user to power up - Log.d(TAG, "btn record: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - if (!mIsPlaying) { - showToast(getString(R.string.toast_powerup_before_record_warning)); - return; - } - refreshRecordNotIdle(); - mRecordStartTime = SystemClock.elapsedRealtime(); - editSharedPreferences(START_RECORD_TIME, mRecordStartTime); - mService.startRecordingAsync(); - mService.setModifiedRecordingName(null); - break; - - case R.id.btn_stop: - // stop record and stop play record file - Log.d(TAG, "btn stop: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - refreshRecordNotIdle(); - mService.stopRecordingAsync(); - mService.stopPlaybackAsync(); - break; - - case R.id.btn_playback: - Log.d(TAG, "btn playback: CLICK!!"); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - refreshRecordNotIdle(); - mPlayStartTime = SystemClock.elapsedRealtime(); - editSharedPreferences(START_PLAY_TIME, mPlayStartTime); - mService.startPlaybackAsync(); - break; - - case R.id.button_add_to_favorite: - Log.d(TAG, "onClick AddToFavorite start"); - updateFavoriteStation(); - Log.d(TAG, "onClick AddToFavorite end"); - break; - - case R.id.button_decrease: - tuneToStation(FmRadioUtils.computeDecreaseStation(mCurrentStation)); - break; - - case R.id.button_increase: - tuneToStation(FmRadioUtils.computeIncreaseStation(mCurrentStation)); - break; - - case R.id.button_prevstation: - Log.d(TAG, "onClick PrevStation"); - // Search for the previous station. - seekStation(mCurrentStation, false); // false: previous station - // true: next station - break; - - case R.id.button_nextstation: - // Search for the next station. - seekStation(mCurrentStation, true); // false: previous station - // true: next station - break; - - default: - Log.d(TAG, "invalid view id"); - break; - } - } - }; - - /** - * Main thread handler to update UI - */ - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - Log.d(TAG, "mHandler.handleMessage: what = " + msg.what + - ",hashcode:" + mHandler.hashCode()); - Bundle bundle; - switch (msg.what) { - case FmRadioListener.MSGID_REFRESH: - refreshTimeText(); - break; - - case FmRadioListener.MSGID_POWERUP_FINISHED: - bundle = msg.getData(); - boolean isPowerup = bundle - .getBoolean(FmRadioListener.KEY_IS_POWER_UP); - mIsPlaying = isPowerup; - Log.d(TAG, "updateFMState: FMRadio is powerup = " + isPowerup); - stopAnimation(); - if (isPowerup) { - refreshImageButton(true); - refreshPopupMenuItem(true); - refreshActionMenuItem(true); - } else { - showToast(getString(R.string.not_available)); - } - // if not powerup success, refresh power to enable. - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_SWITCH_ANNTENNA: - bundle = msg.getData(); - boolean isSwitch = bundle - .getBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA); - Log.d(TAG, "[FmRadioActivity.mHandler] swtich antenna: " + isSwitch); - if (!isSwitch) { - if (mIsActivityForeground) { - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } else { - Log.d(TAG, "need show no antenna dialog after onResume:"); - mIsNeedShowNoAntennaDlg = true; - } - stopAnimation(); - // if not powerup success, refresh power to enable. - refreshActionMenuPower(true); - } else { - mIsNeedShowNoAntennaDlg = false; - dismissNoAntennaDialog(); - } - break; - - case FmRadioListener.MSGID_POWERDOWN_FINISHED: - bundle = msg.getData(); - boolean isPowerdown = bundle - .getBoolean(FmRadioListener.KEY_IS_POWER_DOWN); - mIsPlaying = !isPowerdown; - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_TUNE_FINISHED: - bundle = msg.getData(); - boolean tuneFinish = bundle.getBoolean(FmRadioListener.KEY_IS_TUNE); - boolean isPowerUp = bundle.getBoolean(FmRadioListener.KEY_IS_POWER_UP); - // when power down state, tune from channel list, - // will call back send mIsPowerup state. - mIsPlaying = mIsPlaying ? mIsPlaying : isPowerUp; - - stopAnimation(); - // tune finished, should make power enable - mIsNeedDisablePower = false; - float frequency = bundle.getFloat(FmRadioListener.KEY_TUNE_TO_STATION); - mCurrentStation = FmRadioUtils.computeStation(frequency); - // After tune to station finished, refresh favorite button and - // other button status. - refreshStationUI(mCurrentStation); - // tune fail,should resume button status - if (!tuneFinish) { - Log.d(TAG, "mHandler.tune: " + tuneFinish); - refreshActionMenuItem(mIsPlaying); - refreshImageButton(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - refreshActionMenuPower(true); - return; - } - refreshImageButton(true); - refreshActionMenuItem(true); - refreshPopupMenuItem(true); - refreshActionMenuPower(true); - break; - - case FmRadioListener.MSGID_SCAN_FINISHED: - bundle = msg.getData(); - // cancel scan happen - boolean isScan = bundle.getBoolean(FmRadioListener.KEY_IS_SCAN); - int tuneToStation = bundle.getInt(FmRadioListener.KEY_TUNE_TO_STATION); - int searchedNum = bundle.getInt(FmRadioListener.KEY_STATION_NUM); - refreshActionMenuItem(mIsPlaying); - refreshImageButton(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - // ebable action menu power items - refreshActionMenuPower(true); - - if (!isScan) { - dismissSearchDialog(); - Log.d(TAG, "mHandler.scan canceled. not enter to channel list."); - return; - } - - mCurrentStation = tuneToStation; - // After tune to station finished, refresh favorite button and - // other button status. - refreshStationUI(mCurrentStation); - dismissSearchDialog(); - - if (searchedNum == 0) { - showToast(getString(R.string.toast_cannot_search)); - return; - } - - enterChannelList(); - // Show toast to tell user how many stations have been searched - showToast(getString(R.string.toast_channel_searched) + " " + - String.valueOf(searchedNum)); - break; - - case FmRadioListener.MSGID_FM_EXIT: - finish(); - break; - - case FmRadioListener.LISTEN_RDSSTATION_CHANGED: - bundle = msg.getData(); - int rdsStation = bundle.getInt(FmRadioListener.KEY_RDS_STATION); - refreshStationUI(rdsStation); - break; - - case FmRadioListener.LISTEN_PS_CHANGED: - case FmRadioListener.LISTEN_RT_CHANGED: - bundle = msg.getData(); - String text = ""; - String psString = bundle.getString(FmRadioListener.KEY_PS_INFO); - String rtString = bundle.getString(FmRadioListener.KEY_RT_INFO); - if ((null != psString) && (psString.length() > 0)) { - text += psString; - } - if ((null != rtString) && (rtString.length() > 0)) { - if (text.length() > 0) { - text += " "; - } - text += rtString; - } - showRds(text); - break; - - case FmRadioListener.LISTEN_RECORDSTATE_CHANGED: - bundle = msg.getData(); - int recorderState = bundle - .getInt(FmRadioListener.KEY_RECORDING_STATE); - Log.d(TAG, "FmRadioActivity.mHandler: recorderState = " - + recorderState); - updateRecordingState(recorderState); - break; - - case FmRadioListener.LISTEN_RECORDERROR: - bundle = msg.getData(); - int errorState = bundle - .getInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE); - updateRecorderError(errorState); - break; - - case FmRadioListener.LISTEN_RECORDMODE_CHANGED: - bundle = msg.getData(); - boolean isInRecordingMode = bundle - .getBoolean(FmRadioListener.KEY_IS_RECORDING_MODE); - exitRecordingMode(isInRecordingMode); - break; - - case FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED: - bundle = msg.getData(); - boolean isSpeakerMode = bundle - .getBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE); - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_sound_mode).setTitle(isSpeakerMode ? - R.string.optmenu_earphone : R.string.optmenu_speaker); - refreshSoundModeVisiable(); - } - break; - - default: - Log.d(TAG, "invalid message"); - break; - } - Log.d(TAG, "handleMessage"); - } - }; - - // When call bind service, it will call service connect. register call back - // listener and initial device - private final ServiceConnection mServiceConnection = new ServiceConnection() { - - /** - * called by system when bind service - * - * @param className component name - * @param service service binder - */ - @Override - public void onServiceConnected(ComponentName className, IBinder service) { - Log.d(TAG, "FmRadioActivity.onServiceConnected start"); - mService = ((FmRadioService.ServiceBinder) service).getService(); - if (null == mService) { - Log.e(TAG, "ServiceConnection: Error: can't get Service"); - finish(); - return; - } - - mService.registerFmRadioListener(mFmRadioListener); - if (!mService.isServiceInited()) { - Log.d(TAG, "ServiceConnection: FM service is not init"); - mService.initService(mCurrentStation); - powerUpFm(); - } else { - Log.d(TAG, "ServiceConnection: FM service is already init"); - if (mService.isDeviceOpen()) { - - // ALPS01768123 Need to power up for this case - // Without earphone->Start FM->Click Home->Plug in earphone->Enter FM - // -> Power Menu will be power down status and disabled - // ALPS01811383 Cannot power up when in call, because cannot get AudioFocus - if (!mService.isPowerUp() && mService.isModeNormal()) { - Log.d(TAG, "Need to power up auto for this case"); - powerUpFm(); - } else if (!mService.isPowerUp() && !mService.isModeNormal()) { - // if onStop() has been called before resuming this activity during - // phone call, need check whether show no-antenna dialog. - if (!mIsNeedShowNoAntennaDlg && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - } - - // tunetostation during changing language,we need to tune - // again when service bind success - if (mNeedTuneto) { - tuneToStation(mCurrentStation); - mNeedTuneto = false; - } - updateCurrentStation(); - boolean isPlaying = mService.isPowerUp(); - // back key destroy activity, mIsPlaying will be the default - // false. - // but it may be true. so the power button will be in wrong - // state. - mIsPlaying = isPlaying; - updateMenuStatus(); - updateDialogStatus(); - - // check whether set play back button enable - if (!isRecordFileExist()) { - mButtonPlayback.setEnabled(false); - } - updateRds(); - restoreRecorderState(); - } else { - // Normal case will not come here - // Need to exit FM for this case - Log.e(TAG, "ServiceConnection: service is exiting while start FM again"); - exitService(); - finish(); - } - } - Log.d(TAG, "FmRadioActivity.onServiceConnected end"); - } - - /** - * When unbind service will call this method - * - * @param className The component name - */ - @Override - public void onServiceDisconnected(ComponentName className) { - Log.d(TAG, "FmRadioActivity.onServiceDisconnected"); - } - }; - - /** - * Update FM recording state with given state from FM service - * - * @param recorderState The recorder state - */ - private void updateRecordingState(int recorderState) { - mRecordState = recorderState; - refreshRecordingStatus(recorderState); - - switch (recorderState) { - case FmRecorder.STATE_RECORDING: - showToast(getString(R.string.toast_start_recording)); - Log.d(TAG, "updateRecordingState:startRecording"); - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - break; - - case FmRecorder.STATE_PLAYBACK: - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - break; - - case FmRecorder.STATE_IDLE: - Log.d(TAG, "updateRecordingState:remove message"); - mHandler.removeMessages(FmRadioListener.MSGID_REFRESH); - break; - - default: - mHandler.removeMessages(FmRadioListener.MSGID_REFRESH); - break; - } - } - - /** - * Update FM recorder error with given error from FM service - * - * @param errorType The record error type - */ - private void updateRecorderError(int errorType) { - Log.d(TAG, "updateRecorderError.errorType: " + errorType); - String showString = null; - // In FMRecorder.startRecording() error occurs,then we should set - // mButtonRecord enable, because we set mButtonRecord disable ago - refreshRecordIdle(); - switch (errorType) { - case FmRecorder.ERROR_SDCARD_NOT_PRESENT: - showString = getString(R.string.toast_sdcard_missing); - break; - - case FmRecorder.ERROR_SDCARD_INSUFFICIENT_SPACE: - showString = getString(R.string.toast_sdcard_insufficient_space); - break; - - case FmRecorder.ERROR_RECORDER_INTERNAL: - showString = getString(R.string.toast_recorder_internal_error); - break; - - case FmRecorder.ERROR_PLAYER_INTERNAL: - showString = getString(R.string.toast_player_internal_error); - break; - - case FmRadioListener.NOT_AUDIO_FOCUS: - showString = getString(R.string.not_available); - if (isRecordFileExist()) { - refreshPlaybackIdle(true); - } - break; - case FmRecorder.ERROR_RECORDER_INVALID_STATE: - showString = getString(R.string.toast_powerup_before_record_warning); - break; - default: - Log.d(TAG, "invalid recorder error"); - break; - } - - showToast(showString); - } - - /** - * Update FM recorder mode with given mode from FM service - * - * @param isInRecordingMode The current mode, true if current is in - * recording mode - */ - private void exitRecordingMode(boolean isInRecordingMode) { - refreshImageButton(mIsPlaying); - refreshActionMenuItem(mIsPlaying); - refreshPopupMenuItem(mIsPlaying); - refreshActionMenuPower(true); - if (!isInRecordingMode) { - // Service has already set recording mode to false, need to modify - // UI here - mIsInRecordingMode = false; - switchRecordLayout(isInRecordingMode); - } - } - - /** - * Format the given time to be string by hour:minute:second - * - * @param time The time to be formated - * - * @return string The formated time - */ - private String getTimeString(int time) { - final int oneHour = 3600; - int hour = time / oneHour; - final int minuteSecond = 60; - int minute = (time / minuteSecond) % minuteSecond; - int second = time % minuteSecond; - String timeString = null; - - if (hour > 0) { - final String timeFormatLong = "%02d:%02d:%02d"; - timeString = String.format(timeFormatLong, hour, minute, second); - } else { - final String timeFormatShort = "%02d:%02d"; - timeString = String.format(timeFormatShort, minute, second); - } - - return timeString; - } - - /** - * Update the favorite UI state - */ - private void updateFavoriteStation() { - String showString = null; - // Judge the current output and switch between the devices. - if (FmRadioStation.isFavoriteStation(mContext, mCurrentStation)) { - // Need to delete this favorite channel. - String stationName = FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE); - FmRadioStation.updateStationToDb(mContext, stationName, - FmRadioStation.STATION_TYPE_SEARCHED, mCurrentStation); - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - showString = mProjectStringExt.getProjectString(mContext, - R.string.toast_channel_deleted, R.string.toast_channel_deleted1); - } else { - // Add the station to favorite - String stationName = FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_SEARCHED); - if (FmRadioStation.isStationExist(mContext, mCurrentStation, - FmRadioStation.STATION_TYPE_SEARCHED)) { - FmRadioStation.updateStationToDb(mContext, stationName, - FmRadioStation.STATION_TYPE_FAVORITE, - mCurrentStation); - } else { - FmRadioStation.insertStationToDb(mContext, stationName, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE); - } - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(stationName); - showString = mProjectStringExt.getProjectString(mContext, - R.string.toast_channel_added, R.string.toast_channel_added1); - } - showToast(showString); - } - - /** - * Edit value which saved in shared preference - * - * @param key The preferences editor key - * @param time The preferences editor value - */ - private void editSharedPreferences(String key, long time) { - SharedPreferences sharedPreferences = getSharedPreferences(REFS_NAME, 0); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putLong(key, time); - editor.commit(); - } - - /** - * Called when the activity is first created, initial variables - * - * @param savedInstanceState The saved bundle in onSaveInstanceState - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); -/* Vanzo:libing on: Thu, 15 May 2014 18:13:02 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onCreate initPsensorManager()"); - if (isFmRadioGestureSupport()) { - initPsensorManager(); - } -// End of Vanzo:libing - Log.i(TAG, "FmRadioActivity.onCreate start"); - // Bind the activity to FM audio stream. - setVolumeControlStream(AudioManager.STREAM_MUSIC); - setContentView(R.layout.main); - mFragmentManager = getFragmentManager(); - mContext = getApplicationContext(); - - FmRadioStation.initFmDatabase(mContext); - mProjectStringExt = ExtensionUtils.getExtension(mContext); - initUiComponent(); - registerButtonClickListener(); - registerSdcardReceiver(); - mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - Log.d(TAG, "FmRadioActivity.onCreate end"); - } -/* Vanzo:libing on: Thu, 15 May 2014 18:14:21 +0800 - * add for gesture - */ - public void initPsensorManager() { - return; - /*File file = new File("/sys/bus/platform/drivers/als_ps/ps"); - if (!file.exists()) { - mHavePsensor = false; - } - // has no psensor return - if (mHavePsensor == false) { - Log.w(TAG, "initPsensorManager() has no psensor !!!"); - return; - } - mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); -*/ -/* Vanzo:lupei on: Fri, 28 Aug 2015 14:51:36 +0800 - * add default gesture distance max min value - */ - /*android.util.Log.d(TAG, "DEFAULT_GESTURE_DIST_MAX_MIN = "+DEFAULT_GESTURE_DIST_MAX_MIN); - if (!("".equals(DEFAULT_GESTURE_DIST_MAX_MIN))) { - String[] value = DEFAULT_GESTURE_DIST_MAX_MIN.split(","); - if (value[0]!= "" && value[1] != "") { - GESTURE_FMRADIO_MAX_DISTANCE = Integer.parseInt(value[0]); - GESTURE_FMRADIO_MIN_DISTANCE = Integer.parseInt(value[1]); - } - }*/ -// End of Vanzo:lupei - - } - - public Runnable myRunnable = new Runnable() { - @Override - public void run() { - File file = new File("/sys/bus/platform/drivers/als_ps/ps"); - if (!file.exists()) { - file = new File("/sys/bus/platform/drivers/als_ps_cm3628/ps"); - } - if (file.exists()) { - String pSensorValues2 = readFile(file); - if (pSensorValues2.trim().contains("-")) { - return; - } - if (pSensorValues2.trim().contains("0x")) { - mPrePsensor = Integer.parseInt(pSensorValues2.trim().substring(2), 16); - } else { - mPrePsensor = Integer.parseInt(pSensorValues2.trim()); - } - android.util.Log.d(TAG, "fmradio isGestureOpen " + isGestureOpen()); - if (isGestureOpen() && isTopActivity()) { - if (mPrePsensor > GESTURE_FMRADIO_MAX_DISTANCE) { - mHadGesture = true; - } else if (mHadGesture && mPrePsensor < GESTURE_FMRADIO_MIN_DISTANCE) { - mHadGesture = false; - seekStation(mCurrentStation, true); // false: previous station - } - } - } - myHandler.postDelayed(myRunnable, GESTURE_RUN_POST_DELAY_TIME); - } - }; - - private boolean isTopActivity() { - ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); - ComponentName cn = am.getRunningTasks(2).get(0).topActivity; - String topClassName = cn.getClassName(); - String myClassName = FmRadioActivity.this.getComponentName().getClassName(); - - return topClassName.equalsIgnoreCase(myClassName); - } - - public void onAccuracyChanged(Sensor sensor, int accuracy) { - } - - private static String readFile(File fn) { - FileReader f; - int len; - - f = null; - try { - f = new FileReader(fn); - String s = ""; - char[] cbuf = new char[200]; - while ((len = f.read(cbuf, 0, cbuf.length)) >= 0) { - s += String.valueOf(cbuf, 0, len); - } - return s; - } catch (IOException ex) { - return "0"; - } finally { - if (f != null) { - try { - f.close(); - } catch (IOException ex) { - return "0"; - } - } - } - } - - public void onSensorChanged(SensorEvent event) { - } - - private boolean isGestureOpen() { - mGestureEnabled = SystemProperties.getInt(GESTURE_SWITCH_FLAG , 0) == 1 ? true : false; - mFMRadioEnabled = SystemProperties.getInt(GESTURE_FMRADIO_FLAG , 0) == 1 ? true : false; - - return mGestureEnabled && mFMRadioEnabled; - } - - private void stopPsensor() { - mSensorManager.unregisterListener(this); - if (myHandler != null) { - myHandler.removeCallbacks(myRunnable); - } - } - - private void resumePsensor() { - mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); - mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); - - myHandler = new Handler(); - myHandler.post(myRunnable); - } - - public static boolean isFmRadioGestureSupport() { - boolean enable = FeatureOption.VANZO_FEATURE_FM_RADIO_GESTURE; - android.util.Log.i(TAG, "isFmRadioGestureSupport enable = " + enable); - return enable; - } -// End of Vanzo:libing - /** - * Go to channel list activity - */ - private void enterChannelList() { - Log.d(TAG, "enterChannelList"); - if (mService != null) { - // AMS change the design for background start - // activity. need check app is background in app code - if (mIsActivityForeground) { - Intent intent = new Intent(); - intent.setClass(FmRadioActivity.this, FmRadioFavorite.class); - startActivityForResult(intent, REQUEST_CODE_FAVORITE); - } else { - Log.d(TAG, "enterChannelList. activity is background, not enter channel list."); - } - } - } - - /** - * Refresh the favorite button with the given station, if the station is - * favorite station, show favorite icon, else show non-favorite icon. - * - * @param station The station frequency - */ - private void refreshStationUI(int station) { - // Change the station frequency displayed. - mTextStationValue.setText(FmRadioUtils.formatStation(station)); - // Show or hide the favorite icon - if (FmRadioStation.isFavoriteStation(mContext, station)) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName(mContext, - station, FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - } - } - - @SuppressWarnings("deprecation") - private void restoreConfiguration() { - // after configuration change, need to reduction else the UI is abnormal - if (null != getLastNonConfigurationInstance()) { - Log.d(TAG, - "Configration changes,activity restart,need to reset UI!"); - Bundle bundle = (Bundle) getLastNonConfigurationInstance(); - if (null == bundle) { - return; - } - mPrevRecorderState = bundle.getInt("mPrevRecorderState"); - mRecordState = bundle.getInt("mRecordState"); - mIsNeedShowRecordDlg = bundle.getBoolean("mIsFreshRecordingStatus"); - // mIsNeedShowNoAntennaDlg = bundle.getBoolean("mIsNeedShowNoAntennaDlg"); - mIsNeedShowSearchDlg = bundle.getBoolean("mIsNeedShowSearchDlg"); - // we doesn't get it from service because the service may be - // null because not bind - mIsInRecordingMode = bundle.getBoolean("isInRecordingMode"); - mIsPlaying = bundle.getBoolean("mIsPlaying"); - Log.d(TAG, "bundle = " + bundle); - } - } - - /** - * Start and bind service, reduction variable values if configuration - * changed - */ - @Override - public void onStart() { - super.onStart(); - FmRadioService.setActivityIsOnStop(false); - Log.d(TAG, "FmRadioActivity.onStart start"); - // Should start FM service first. - if (null == startService(new Intent(FmRadioActivity.this, - FmRadioService.class))) { - Log.e(TAG, "Error: Cannot start FM service"); - return; - } - - mIsServiceStarted = true; - mIsServiceBinded = bindService(new Intent(FmRadioActivity.this, - FmRadioService.class), mServiceConnection, - Context.BIND_AUTO_CREATE); - - if (!mIsServiceBinded) { - Log.e(TAG, "Error: Cannot bind FM service"); - finish(); - return; - } - restoreConfiguration(); - Log.d(TAG, "FmRadioActivity.onStart end"); - } - - /** - * Refresh UI, when stop search, dismiss search dialog, pop up recording - * dialog if FM stopped when recording in background - */ - @Override - public void onResume() { - super.onResume(); -/* Vanzo:libing on: Thu, 15 May 2014 18:17:38 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onResume isGestureOpen = " + isGestureOpen()); - if (isFmRadioGestureSupport() && isGestureOpen()) { - resumePsensor(); - } -// End of Vanzo:libing - Log.d(TAG, "FmRadioActivity.onResume start"); - mIsActivityForeground = true; - if (null == mService) { - Log.d(TAG, "service has not bind finished"); - mIsNeedShowNoAntennaDlg = false; - return; - } - updateMenuStatus(); - updateDialogStatus(); - if (!isRecordFileExist()) { - mButtonPlayback.setEnabled(false); - } - checkNoAntennaDialogInOnResume(); - Log.d(TAG, "FmRadioActivity.onResume end"); - } - - /** - * In call and plug out earphone(in onPause state), need to show no antenna dialog but - * use mIsNeedShowNoAntennaDlg to save the state, because there is no where to show this dialog after onResume() for this case - */ - private void checkNoAntennaDialogInOnResume() { - if (mIsNeedShowNoAntennaDlg && mService != null && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - } - - /** - * When activity is paused call this method, indicate activity enter - * background if press exit, power down FM - */ - @Override - public void onPause() { - Log.d(TAG, "start FmRadioActivity.onPause"); - mIsActivityForeground = false; - /** - * Should dismiss before call onSaveInstance, or it will resume - * automatic - */ - mIsNeedShowSearchDlg = true; - dismissSearchDialog(); - - /** - * should dismiss before call onSaveInstance, or it will resume - * automatic. - */ - FmRecordDialogFragment df = (FmRecordDialogFragment) mFragmentManager - .findFragmentByTag(TAG_SAVE_RECORDINGD); - if (null != df && df.getShowsDialog()) { - Log.d(TAG, "onPause.dismissSaveRecordingDialog()"); - if (mService != null) { - mService.setModifiedRecordingName(df.getRecordingNameToSave()); - } - dismissSaveRecordingDialog(); - mIsNeedShowRecordDlg = true; - } - - // Need to dismiss avoid AMS popup this dialog again for power up will show this dialog - if (dismissNoAntennaDialog()) { - mIsNeedShowNoAntennaDlg = true; - } - - Log.d(TAG, "end FmRadioActivity.onPause"); - super.onPause(); - } - - /** - * Called when activity enter stopped state, unbind service, if exit - * pressed, stop service - */ - @Override - public void onStop() { - FmRadioService.setActivityIsOnStop(true); - Log.d(TAG, "start FmRadioActivity.onStop"); - if (mIsServiceBinded) { - unbindService(mServiceConnection); - mIsServiceBinded = false; - } - mIsNeedShowNoAntennaDlg = false; - Log.d(TAG, "end FmRadioActivity.onStop"); - super.onStop(); -/* Vanzo:libing on: Thu, 15 May 2014 18:15:55 +0800 - * add for gesture - */ - Log.d(TAG, "FMRadio onStop stopPsensor()"); - if (isFmRadioGestureSupport()) { - stopPsensor(); - } -// End of Vanzo:libing - } - - /** - * W activity destroy, unregister broadcast receiver and remove handler - * message - */ - @Override - public void onDestroy() { - Log.d(TAG, "start FmRadioActivity.onDestroy"); - unregisterSdcardReceiver(); - // need to call this function because if doesn't do this,after - // configuration change will have many instance and recording time - // or playing time will not refresh - // Remove all the handle message - mHandler.removeCallbacksAndMessages(null); - if (mService != null) { - mService.unregisterFmRadioListener(mFmRadioListener); - } - mFmRadioListener = null; - if (null != mPopupMenu) { - mPopupMenu.dismiss(); - mPopupMenu = null; - } - Log.d(TAG, "end FmRadioActivity.onDestroy"); - super.onDestroy(); - } - - /** - * Create options menu - * - * @param menu The option menu - * - * @return true or false indicate need to handle other menu item - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - Log.d(TAG, "start FmRadioActivity.onCreateOptionsMenu"); - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.fm_action_bar, menu); - mMenuItemChannelList = menu.findItem(R.id.fm_channel_list); - mMenuItemOverflow = menu.findItem(R.id.fm_menu); - mMenuItemPower = menu.findItem(R.id.fm_power); - Log.d(TAG, "end FmRadioActivity.onCreateOptionsMenu"); - return true; - } - - /** - * Prepare options menu - * - * @param menu The option menu - * - * @return true or false indicate need to handle other menu item - */ - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - Log.d(TAG, "start FmRadioActivity.onPrepareOptionsMenu"); - mMenuItemChannelList.setVisible(!mIsInRecordingMode); - mMenuItemOverflow.setVisible(!mIsInRecordingMode); - mMenuItemPower.setVisible(!mIsInRecordingMode); - if (null == mService) { - Log.d(TAG, "mService is null"); - return !mIsInRecordingMode; - } - - boolean isPlaying = mService.isPowerUp(); - boolean isMakePowerdown = mService.isMakePowerDown(); - boolean isSeeking = mService.isSeeking(); - boolean isScan = mService.isScanning(); - // if fm power down by other app, should enable power menu, make it to - // powerup. - refreshActionMenuItem((isSeeking || isScan) ? false : isPlaying); - refreshActionMenuPower((isScan || isSeeking) - ? false - : (isPlaying || (isMakePowerdown && !mIsNeedDisablePower))); - - // check whether show animation - if (isSeeking) { - Log.d(TAG, "onPrepareOptionsMenu: it is seeking"); - startAnimation(); - } - - Log.d(TAG, "end FmRadioActivity.onPrepareOptionsMenu"); - return !mIsInRecordingMode; - } - - /** - * Handle event when option item selected - * - * @param item The clicked item - * - * @return true or false indicate need to handle other menu item or not - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - Log.d(TAG, "start FmRadioActivity.onOptionsItemSelected"); - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - break; - - case R.id.fm_channel_list: - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - // Show favorite activity. - enterChannelList(); - break; - - case R.id.fm_power: - Log.d(TAG, "click fm_power menu"); - if (mIsPlaying) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - exitService(); - break; - } - powerUpFm(); - break; - - case R.id.fm_menu: - item.setEnabled(false); - - mPopupMenu = new PopupMenu(mContext, findViewById(R.id.fm_menu)); - Menu menu = mPopupMenu.getMenu(); - mPopupMenu.getMenuInflater().inflate(R.menu.fm_menu, menu); - mPopupMenu.setOnMenuItemClickListener(this); - mPopupMenu.setOnDismissListener(this); - - boolean isPlaying = mService.isPowerUp(); - if (isPlaying) { - menu.findItem(R.id.fm_record).setEnabled(true); - menu.findItem(R.id.fm_sound_mode).setEnabled(!mService.isBtConnected()); - menu.findItem(R.id.fm_sound_mode).setTitle( - mService.isSpeakerUsed() ? R.string.optmenu_earphone - : R.string.optmenu_speaker); - menu.findItem(R.id.fm_search).setEnabled(true); - } - refreshSoundModeVisiable(); - mPopupMenu.show(); - break; - - default: - Log.e(TAG, "Error: Invalid options menu item."); - break; - } - Log.d(TAG, "end FmRadioActivity.onOptionsItemSelected"); - return super.onOptionsItemSelected(item); - } - - /** - * Check whether antenna is available - * - * @return true or false indicate antenna available or not - */ - private boolean isAntennaAvailable() { - return mAudioManager.isWiredHeadsetOn(); - } - - /** - * When on activity result, tune to station which is from channel list - * - * @param requestCode The request code - * @param resultCode The result code - * @param data The intent from channel list - */ - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (RESULT_OK == resultCode) { - if (REQUEST_CODE_FAVORITE != requestCode) { - Log.e(TAG, "Error: Invalid requestcode."); - return; - } - int iStation = data.getIntExtra( - FmRadioFavorite.ACTIVITY_RESULT, mCurrentStation); - // Tune to this station. - mCurrentStation = iStation; - // if tune from channel list, we should disable power menu, - // especially for - // power down state - mIsNeedDisablePower = true; - Log.d(TAG, "onActivityForReult:" + mIsNeedDisablePower); - if (null == mService) { - Log.d(TAG, "activity.onActivityResult mService is null"); - mNeedTuneto = true; - return; - } - tuneToStation(iStation); - return; - } - - if (FmRadioStation.isFavoriteStation(mContext, mCurrentStation)) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName( - mContext, mCurrentStation, - FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - mTextStationName.setText(""); - } - - // Do not handle other result. - Log.v(TAG, "The activity for requestcode " + requestCode - + " does not return any data."); - } - - /** - * Start animation - */ - private void startAnimation() { - mAnimImage.setAnimation(mAnimation); - mAnimImage.setVisibility(View.VISIBLE); - Log.d(TAG, "FmRadioActivity.startAnimation end"); - } - - /** - * Stop animation - */ - private void stopAnimation() { - mAnimImage.setVisibility(View.INVISIBLE); - mAnimImage.setAnimation(null); - } - - /** - * Restore recorder state from shared preference - */ - private void restoreRecorderState() { - // here should do some recorder related. - mIsInRecordingMode = mService.getRecordingMode(); - mRecordState = mService.getRecorderState(); - RelativeLayout recInfoBar = (RelativeLayout) findViewById(R.id.rl_recinfo); - // if recording or play backing state, should send message trigger - // refresh. - if ((FmRecorder.STATE_RECORDING == mRecordState) - || (FmRecorder.STATE_PLAYBACK == mRecordState)) { - SharedPreferences sharedPreferences = getSharedPreferences(REFS_NAME, 0); - mRecordStartTime = sharedPreferences.getLong(START_RECORD_TIME, 0); - mPlayStartTime = sharedPreferences.getLong(START_PLAY_TIME, 0); - recInfoBar.setVisibility(View.VISIBLE); - Log.d(TAG, "&&&sendemptyMessage:mRecoderStart:" + mRecordStartTime); - mHandler.sendEmptyMessage(FmRadioListener.MSGID_REFRESH); - } else { - recInfoBar.setVisibility(View.GONE); - } - // if remove from app list, it will make recorder ui confused. - switchRecordLayout(mIsInRecordingMode); - changeRecordingMode(mIsInRecordingMode); - if (mIsInRecordingMode) { - refreshRecordingStatus(FmRecorder.STATE_INVALID); - } - } - - /** - * Power up FM - */ - private void powerUpFm() { - Log.v(TAG, "start powerUpFm"); - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - startAnimation(); - mService.powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - Log.v(TAG, "end powerUpFm"); - } - - private void setSpeakerPhoneOn(boolean isSpeaker) { - if (isSpeaker) { - Log.v(TAG, "UseSpeaker"); - mService.setSpeakerPhoneOn(true); - } else { - Log.v(TAG, "UseEarphone"); - mService.setSpeakerPhoneOn(false); - } - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_sound_mode).setTitle(mService.isSpeakerUsed() ? - R.string.optmenu_earphone : R.string.optmenu_speaker); - } - } - - /** - * Tune to a station - * - * @param station The tune station - */ - private void tuneToStation(final int station) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - mService.tuneStationAsync(FmRadioUtils.computeFrequency(station)); - if (!mIsPlaying) { - startAnimation(); - } - } - - /** - * Seek station according current frequency and direction - * - * @param station The seek start station - * @param direction The seek direction - */ - private void seekStation(final int station, boolean direction) { - // If the seek AsyncTask has been executed and not canceled, cancel it - // before start new. - startAnimation(); - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - mService.seekStationAsync(FmRadioUtils.computeFrequency(station), - direction); - } - - private void refreshImageButton(boolean enabled) { - mButtonDecrease.setEnabled(enabled); - mButtonPrevStation.setEnabled(enabled); - mButtonNextStation.setEnabled(enabled); - mButtonIncrease.setEnabled(enabled); - } - - // Refresh action menu except power menu - private void refreshActionMenuItem(boolean enabled) { - // action menu - if (null != mMenuItemChannelList) { - // if power down by other app, should disable channelist list, over - // menu - mMenuItemChannelList.setEnabled(enabled); - mMenuItemOverflow.setEnabled(enabled); - } - } - - // Refresh action menu only power menu - private void refreshActionMenuPower(boolean enabled) { - Log.d(TAG, "refreshActionMenuPower enabled:" + enabled + ", mIsPlaying:" + mIsPlaying); - // action menu - if (null != mMenuItemChannelList) { - // if fm power down by other app, should enable this button to - // powerup. - mMenuItemPower.setEnabled(enabled); - mMenuItemPower.setIcon(mIsPlaying ? R.drawable.btn_fm_powerup_selector - : R.drawable.btn_fm_powerdown_selector); - } - } - - private void refreshPopupMenuItem(boolean enabled) { - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - menu.findItem(R.id.fm_record).setEnabled(enabled); - menu.findItem(R.id.fm_search).setEnabled(enabled); - menu.findItem(R.id.fm_sound_mode).setEnabled(enabled && !mService.isBtConnected()); - refreshSoundModeVisiable(); - } - } - - private void refreshSoundModeVisiable() { - if (null != mPopupMenu) { - Menu menu = mPopupMenu.getMenu(); - // Need hide only short antenna support and not plug in earphone - boolean hideSoundMode = SHORT_ANNTENNA_SUPPORT && !mService.isAntennaAvailable(); - boolean showSoundMode = !hideSoundMode; - menu.findItem(R.id.fm_sound_mode).setVisible(showSoundMode); - } - } - - private void refreshRecordNotIdle() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(false); - } - - private void refreshRecordIdle() { - mButtonRecord.setEnabled(true); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(false); - } - - private void refreshPlaybackIdle(boolean btnPlayBack) { - mButtonRecord.setEnabled(true); - mButtonPlayback.setEnabled(btnPlayBack); - mButtonStop.setEnabled(false); - } - - private void refreshRecording() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(true); - } - - private void refreshPlaybacking() { - mButtonRecord.setEnabled(false); - mButtonPlayback.setEnabled(false); - mButtonStop.setEnabled(true); - } - - /** - * Called when back pressed - */ - @Override - public void onBackPressed() { - Log.d(TAG, "begin FmRadioActivity.onBackPressed"); - - if (mIsInRecordingMode) { - changeRecordingMode(false); - if (null == mService) { - Log.d(TAG, "mService is null"); - return; - } - // no need consider power down and other situation - boolean isPlaying = mService.isPowerUp(); - refreshImageButton(isPlaying); - refreshPopupMenuItem(isPlaying); - refreshActionMenuItem(isPlaying); - refreshActionMenuPower(true); - if (mService != null && !mService.isAntennaAvailable() - && !FmRadioUtils.isFmShortAntennaSupport()) { - Log.w(TAG, "Need to show no antenna dialog for plug out earphone in onPause state"); - dismissNoAntennaDialog(); - showNoAntennaDialog(); - } - return; - } - - // exit fm, disable all button - if (!mIsPlaying && (null != mService) && !mService.isPowerUping()) { - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - exitService(); - return; - } - - super.onBackPressed(); - Log.d(TAG, "end FmRadioActivity.onBackPressed"); - } - - private void showToast(CharSequence text) { - if (null == mToast) { - mToast = Toast.makeText(mContext, text, Toast.LENGTH_SHORT); - } - mToast.setText(text); - mToast.show(); - Log.v(TAG, "FmRadioActivity.showToast: toast = " + text); - } - - private void showRds(String text) { - mTextRds.setText(text); - mTextRds.setSelected(true); - Log.v(TAG, "FmRadioActivity.showRds: RDS = " + text); - } - - /** - * Change recording mode - * - * @param recordingMode The current recording mode - */ - private void changeRecordingMode(boolean recordingMode) { - Log.d(TAG, "changeRecordingMode: " + recordingMode); - if (mIsInRecordingMode == recordingMode) { - Log.e(TAG, "FM already " + (recordingMode ? "in" : "NOT in") - + "recording mode!"); - return; - } - mIsInRecordingMode = recordingMode; - mService.setRecordingModeAsync(recordingMode); - switchRecordLayout(recordingMode); - } - - /** - * Switch to record layout, if in recorder mode. - * - * @param recordingMode true in recorder mode, false not in recorder mode - */ - private void switchRecordLayout(boolean recordingMode) { - ActionBar actionBar = getActionBar(); - invalidateOptionsMenu(); - - // Set the action bar on the right to be up navigation - actionBar.setDisplayHomeAsUpEnabled(recordingMode); - actionBar.setHomeButtonEnabled(recordingMode); - actionBar.setTitle(recordingMode ? R.string.fm_recorder_name - : R.string.app_name); - - LinearLayout recBar = (LinearLayout) findViewById(R.id.bottom_bar_recorder); - LinearLayout bottomBar = (LinearLayout) findViewById(R.id.bottom_bar); - - bottomBar.setVisibility(recordingMode ? View.GONE : View.VISIBLE); - recBar.setVisibility(recordingMode ? View.VISIBLE : View.GONE); - mButtonAddToFavorite.setVisibility(recordingMode ? View.GONE - : View.VISIBLE); - } - - /** - * Update recording UI according record state - * - * @param stateOverride The recording state - */ - private void refreshRecordingStatus(int stateOverride) { - int recorderState = FmRecorder.STATE_INVALID; - - recorderState = (stateOverride == FmRecorder.STATE_INVALID ? mService - .getRecorderState() : stateOverride); - - Log.d(TAG, "refreshRecordingStatus: state=" + recorderState); - switch (recorderState) { - case FmRecorder.STATE_IDLE: - long recordTime = mService.getRecordTime(); - if (recordTime > 0) { - if (isRecordFileExist()) { - mButtonPlayback.setEnabled(true); - } - - if (FmRecorder.STATE_RECORDING == mPrevRecorderState) { - Log.d(TAG, "need show recorder dialog.mPrevRecorderState:" + - mPrevRecorderState); - if (mIsActivityForeground) { - showSaveRecordingDialog(); - } else { - mIsNeedShowRecordDlg = true; - } - } - } else { - mButtonPlayback.setEnabled(false); - } - - refreshPlaybackIdle((recordTime > 0) && isRecordFileExist()); - mRLRecordInfo.setVisibility(View.GONE); - break; - - case FmRecorder.STATE_RECORDING: - mTxtRecInfoLeft.setText(""); - mTxtRecInfoRight.setText(""); - mTxtRecInfoLeft.setSelected(false); - refreshRecording(); - mRLRecordInfo.setVisibility(View.VISIBLE); - break; - - case FmRecorder.STATE_PLAYBACK: - String recordingName = mService.getRecordingName(); - if (null == recordingName) { - recordingName = ""; - } - mTxtRecInfoLeft.setText(recordingName); - mTxtRecInfoRight.setText(""); - mTxtRecInfoLeft.setSelected(true); - refreshPlaybacking(); - mRLRecordInfo.setVisibility(View.VISIBLE); - break; - - case FmRecorder.STATE_INVALID: - refreshRecordIdle(); - mRLRecordInfo.setVisibility(View.GONE); - break; - - default: - Log.d(TAG, "invalid record status"); - break; - } - mPrevRecorderState = recorderState; - Log.d(TAG, "refreshRecordingStatus.mPrevRecorderState:" + mPrevRecorderState); - } - - /** - * Check whether FM recording temporary file exist - * - * @return true if FM recording temporary file exist, false not exist FM - * recording temporary file - */ - private boolean isRecordFileExist() { - String fileName = null; - fileName = mService.getRecordingNameWithPath(); - // if recording file is delete by user, play button disabled - File recordingFileToSave = new File(fileName + FmRecorder.RECORDING_FILE_EXTENSION); - return recordingFileToSave.exists(); - } - - /** - * use onRetainNonConfigurationInstance because after configuration change, - * activity will destroy and create need use this function to save some - * important variables - */ - @Override - public Object onRetainNonConfigurationInstance() { - final int size = 5; - Bundle bundle = new Bundle(size); - bundle.putBoolean("isInRecordingMode", mIsInRecordingMode); - bundle.putInt("mPrevRecorderState", mPrevRecorderState); - bundle.putBoolean("mIsFreshRecordingStatus", mIsNeedShowRecordDlg); - //bundle.putBoolean("mIsNeedShowNoAntennaDlg", mIsNeedShowNoAntennaDlg); - bundle.putBoolean("mIsNeedShowSearchDlg", mIsNeedShowSearchDlg); - bundle.putInt("mRecordState", mRecordState); - bundle.putBoolean("mIsPlaying", mIsPlaying); - Log.d(TAG, "onRetainNonConfigurationInstance() bundle:" + bundle); - return bundle; - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - Log.d(TAG, "onSaveInstanceState"); - super.onSaveInstanceState(outState); - } - - /** - * Handle event about pop up menu clicked - * - * @param item The pop up menu item - * - * @return true or false indicate need to handle other menu item or not - */ - @Override - public boolean onMenuItemClick(MenuItem item) { - Log.d(TAG, "onMenuItemClick:" + item.getItemId()); - switch (item.getItemId()) { - case R.id.fm_search: - // Don't show search dialog when activity is background - if (!mIsActivityForeground) { - Log.w(TAG, "click searh menu in background, don't show search dialog"); - return false; - } - mIsNeedShowSearchDlg = true; - refreshImageButton(false); - refreshActionMenuItem(false); - refreshPopupMenuItem(false); - refreshActionMenuPower(false); - showSearchDialog(); - FmRadioStation.cleanSearchedStations(mContext); - mService.startScanAsync(); - break; - - case R.id.fm_sound_mode: - setSpeakerPhoneOn(!mService.isSpeakerUsed()); - break; - - case R.id.fm_record: - changeRecordingMode(true); - refreshRecordingStatus(FmRecorder.STATE_INVALID); - break; - - default: - Log.d(TAG, "invalid menu item"); - break; - } - return false; - } - - /** - * Called when PopUp menu dismissed - * - * @param PopUp The menu which dismiss - */ - @Override - public void onDismiss(PopupMenu menu) { - Log.d(TAG, "popmenu dismiss listener:" + menu); - invalidateOptionsMenu(); - } - - /** - * Exit FM service - */ - private void exitService() { - Log.i(TAG, "exitService"); - if (mIsServiceBinded) { - unbindService(mServiceConnection); - mIsServiceBinded = false; - } - - if (mIsServiceStarted) { - boolean isSuccess = stopService(new Intent( - FmRadioActivity.this, FmRadioService.class)); - if (!isSuccess) { - Log.e(TAG, "Error: Cannot stop the FM service."); - } - mIsServiceStarted = false; - } - } - - /** - * Show no antenna dialog - */ - public void showNoAntennaDialog() { - NoAntennaDialog newFragment = NoAntennaDialog.newInstance(); - newFragment.show(mFragmentManager, TAG_NO_ANTENNA); - mFragmentManager.executePendingTransactions(); - } - - /** - * Show save recording dialog - * - * @param name The recording file name - */ - public void showSaveRecordingDialog() { - String sdcard = FmRadioService.getRecordingSdcard(); - String defaultName = mService.getRecordingName(); - String recordingName = mService.getModifiedRecordingName(); - FmRecordDialogFragment newFragment = - new FmRecordDialogFragment(sdcard, defaultName, recordingName); - newFragment.show(mFragmentManager, TAG_SAVE_RECORDINGD); - mFragmentManager.executePendingTransactions(); - } - - /** - * Show search dialog - */ - private void showSearchDialog() { - SearchChannelsDialog newFragment = SearchChannelsDialog.newInstance(); - newFragment.show(mFragmentManager, TAG_SEARCH); - mFragmentManager.executePendingTransactions(); - } - - /** - * Dismiss search dialog - */ - private void dismissSearchDialog() { - SearchChannelsDialog newFragment = (SearchChannelsDialog) mFragmentManager - .findFragmentByTag(TAG_SEARCH); - if (null != newFragment) { - newFragment.dismissAllowingStateLoss(); - } - } - - /** - * Dismiss save recording dialog - */ - private void dismissSaveRecordingDialog() { - FragmentTransaction ft = mFragmentManager.beginTransaction(); - Fragment fragment = mFragmentManager.findFragmentByTag(TAG_SAVE_RECORDINGD); - if (null != fragment) { - ft.remove(fragment); - ft.commitAllowingStateLoss(); - } - } - - /** - * Check whether recording card is unmounted - * - * @param intent The intent about sdcard - * - * @return true or false indicate recording card unmount or not - */ - private boolean isRecordingCardUnmount(Intent intent) { - String sdcard = FmRadioService.getRecordingSdcard(); - String unmountSDCard = intent.getData().toString(); - Log.d(TAG, "unmount sd card file path: " + unmountSDCard); - return unmountSDCard.equalsIgnoreCase("file://" + sdcard) ? true - : false; - } - - /** - * Dismiss no antenna dialog - */ - private boolean dismissNoAntennaDialog() { - NoAntennaDialog newFragment = (NoAntennaDialog) mFragmentManager - .findFragmentByTag(TAG_NO_ANTENNA); - if (null != newFragment) { - newFragment.dismissAllowingStateLoss(); - return true; - } - return false; - } - - /** - * Cancel search progress - */ - public void cancelSearch() { - Log.d(TAG, "FmRadioActivity.cancelSearch"); - mService.stopScan(); - } - - /** - * No antenna continue to operate - */ - @Override - public void noAntennaContinue() { - // We let user use the app if no antenna. - // But we do not automatically start FM. - Log.d(TAG, " noAntennaContinue.onClick ok to continue"); - if (isAntennaAvailable()) { - powerUpFm(); - } else { - Log.d(TAG, "noAntennaContinue.earphone is not ready"); - mService.switchAntennaAsync(1); - } - } - - /** - * No antenna cancel to operate - */ - @Override - public void noAntennaCancel() { - Log.d(TAG, " onClick Negative"); - if (mService != null && !mService.isInLockTaskMode()) { - exitService(); - } else { - Log.d(TAG, "No need exit Service and Activity cause current is lock mode"); - } - } - - /** - * Recording dialog click - * - * @param recordingName The new recording name - */ - @Override - public void onRecordingDialogClick(String recordingName) { - mService.saveRecordingAsync(recordingName); - mService.setModifiedRecordingName(null); - } - - /** - * Update rds information - */ - private void updateRds() { - if (mIsPlaying) { - Bundle bundle = new Bundle(2); - bundle.putString(FmRadioListener.KEY_PS_INFO, mService.getPS()); - bundle.putString(FmRadioListener.KEY_RT_INFO, mService.getLRText()); - Message msg = mHandler - .obtainMessage(FmRadioListener.LISTEN_PS_CHANGED); - msg.setData(bundle); - mHandler.sendMessage(msg); - } - } - - /** - * Update current station according service station - */ - private void updateCurrentStation() { - // get the frequency from service, set frequency in activity, UI, - // database - // same as the frequency in service - int freq = mService.getFrequency(); - if (FmRadioUtils.isValidStation(freq)) { - if (mCurrentStation != freq) { - Log.d(TAG, "frequency in service isn't same as in database"); - mCurrentStation = freq; - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - refreshStationUI(mCurrentStation); - } - } - } - - /** - * Update button status, and dialog status - */ - private void updateDialogStatus() { - Log.d(TAG, "updateDialogStatus.mIsNeedShowSearchDlg:" + mIsNeedShowSearchDlg); - boolean isScan = mService.isScanning(); - // check whether show search dialog, because it may be dismissed - // onSaveInstance - if (isScan && mIsNeedShowSearchDlg) { - Log.d(TAG, "updateDialogStatus: show search dialog. isScan is " + isScan); - mIsNeedShowSearchDlg = false; - showSearchDialog(); - } - - // check whether show recorder dialog, when activity is foreground - if (mIsNeedShowRecordDlg) { - Log.d(TAG, "updateDialogStatus.resume recordDlg.mPrevRecorderState:" + - mPrevRecorderState); - showSaveRecordingDialog(); - mIsNeedShowRecordDlg = false; - } - - /* - // check whether show no antenna dialog, when activity is foreground - if (mIsNeedShowNoAntennaDlg) { - Log.d(TAG, "updateDialogStatus.resume noAntennaDlg:"); - showNoAntennaDialog(); - refreshActionMenuPower(true); - mIsNeedShowNoAntennaDlg = false; - } - */ - } - - /** - * Update menu status, and animation - */ - private void updateMenuStatus() { - boolean isPlaying = mService.isPowerUp(); - boolean isPoweruping = mService.isPowerUping(); - boolean isSeeking = mService.isSeeking(); - boolean isScan = mService.isScanning(); - boolean isMakePowerdown = mService.isMakePowerDown(); - Log.d(TAG, "updateMenuStatus.isSeeking:" + isSeeking); - boolean fmStatus = (isScan || isSeeking || isPoweruping); - // when seeking, all button should disabled, - // else should update as origin status - refreshImageButton(fmStatus ? false : isPlaying); - refreshPopupMenuItem(fmStatus ? false : isPlaying); - refreshActionMenuItem(fmStatus ? false : isPlaying); - // if fm power down by other app, should enable power button - // to powerup. - Log.d(TAG, "updateMenuStatus.mIsNeedDisablePower: " + mIsNeedDisablePower); - refreshActionMenuPower(fmStatus ? false : - (isPlaying || (isMakePowerdown && !mIsNeedDisablePower))); - - // check whether show animation - if (isSeeking || isPoweruping) { - Log.d(TAG, "updateMenuStatus. it is seeking or poweruping"); - startAnimation(); - } - } - - private void initUiComponent() { - Log.i(TAG, "initUIComponent"); - mTextRds = (TextView) findViewById(R.id.text_rds); - mTextRds.setText(""); - mTextFm = (TextView) findViewById(R.id.text_fm); - mTextFm.setText(FM); - mTextMHz = (TextView) findViewById(R.id.text_mhz); - mTextMHz.setText(R.string.fm_unit); - - mTextStationValue = (TextView) findViewById(R.id.station_value); - mTxtRecInfoLeft = (TextView) findViewById(R.id.txtRecInfoLeft); - mTxtRecInfoRight = (TextView) findViewById(R.id.txtRecInfoRight); - mRLRecordInfo = (RelativeLayout) findViewById(R.id.rl_recinfo); - mButtonRecord = (ImageButton) findViewById(R.id.btn_record); - mButtonStop = (ImageButton) findViewById(R.id.btn_stop); - mButtonPlayback = (ImageButton) findViewById(R.id.btn_playback); - mButtonAddToFavorite = (ImageButton) findViewById(R.id.button_add_to_favorite); - mTextStationName = (TextView) findViewById(R.id.station_name); - mButtonDecrease = (ImageButton) findViewById(R.id.button_decrease); - mButtonIncrease = (ImageButton) findViewById(R.id.button_increase); - mButtonPrevStation = (ImageButton) findViewById(R.id.button_prevstation); - mButtonNextStation = (ImageButton) findViewById(R.id.button_nextstation); - - // initial mPopupMenu - mPopupMenu = new PopupMenu(mContext, findViewById(R.id.fm_menu)); - Menu menu = mPopupMenu.getMenu(); - mPopupMenu.getMenuInflater().inflate(R.menu.fm_menu, menu); - - // put favorite button here since it might be used very early in - // changing recording mode - mCurrentStation = FmRadioStation.getCurrentStation(mContext); - boolean isFavoriteStation = FmRadioStation.isFavoriteStation(mContext, - mCurrentStation); - // If the current station is in favorite, set its icon to favorite icon; - // else, set to none favorite icon. - if (isFavoriteStation) { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_on_selector); - mTextStationName.setText(FmRadioStation.getStationName(mContext, - mCurrentStation, FmRadioStation.STATION_TYPE_FAVORITE)); - } else { - mButtonAddToFavorite - .setImageResource(R.drawable.btn_fm_favorite_off_selector); - } - - mTextStationValue.setText(FmRadioUtils.formatStation(mCurrentStation)); - mAnimation = (Animation) AnimationUtils.loadAnimation(this, - R.drawable.anim); - mAnimImage = (ImageView) findViewById(R.id.iv_anim); - mAnimImage.setVisibility(View.INVISIBLE); - } - - private void registerButtonClickListener() { - mButtonRecord.setOnClickListener(mButtonClickListener); - mButtonStop.setOnClickListener(mButtonClickListener); - mButtonPlayback.setOnClickListener(mButtonClickListener); - mButtonAddToFavorite.setOnClickListener(mButtonClickListener); - mButtonDecrease.setOnClickListener(mButtonClickListener); - mButtonIncrease.setOnClickListener(mButtonClickListener); - mButtonPrevStation.setOnClickListener(mButtonClickListener); - mButtonNextStation.setOnClickListener(mButtonClickListener); - } - - private void registerSdcardReceiver() { - IntentFilter iFilter = new IntentFilter(); - iFilter.addAction(Intent.ACTION_MEDIA_EJECT); - iFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); - iFilter.addAction(Intent.ACTION_MEDIA_MOUNTED); - iFilter.addDataScheme("file"); - registerReceiver(mSdcardListener, iFilter); - } - - private void unregisterSdcardReceiver() { - unregisterReceiver(mSdcardListener); - } - - private void refreshTimeText() { - Log.d(TAG, "refreshTimeText:mRecordState:" + mRecordState); - if (!mIsInRecordingMode) { - Log.d(TAG, "refreshTimeText:mIsInRecordingMode:" + mIsInRecordingMode); - if (mRecordState == FmRecorder.STATE_RECORDING) { - mService.stopRecordingAsync(); - } else if (mRecordState == FmRecorder.STATE_PLAYBACK) { - mService.stopPlaybackAsync(); - } - return; - } - - final int oneSecond = 1000; - switch (mRecordState) { - case FmRecorder.STATE_RECORDING: - int recordTime = (int) ((SystemClock.elapsedRealtime() - mRecordStartTime) / - oneSecond); - mTxtRecInfoLeft.setText(getTimeString(recordTime)); - Log.d(TAG, "Recording time = " + mTxtRecInfoLeft.getText()); - String recordingSdcard = FmRadioService.getRecordingSdcard(); - if (!FmRadioUtils.hasEnoughSpace(recordingSdcard)) { - // recordTime 1s to avoid start() then quickly stop() native exception - if (recordTime > 1) { - // Insufficient storage - mService.stopRecordingAsync(); - } - } - break; - - case FmRecorder.STATE_PLAYBACK: - int playTime = (int) ((SystemClock.elapsedRealtime() - mPlayStartTime) / oneSecond); - mTxtRecInfoRight.setText(getTimeString(playTime)); - Log.d(TAG, "Playing time = " + mTxtRecInfoRight.getText()); - break; - - default: - break; - } - mHandler.sendEmptyMessageDelayed(FmRadioListener.MSGID_REFRESH, oneSecond); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioContentProvider.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioContentProvider.java deleted file mode 100755 index 5397e9b..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioContentProvider.java +++ /dev/null @@ -1,297 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.ContentProvider; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.content.UriMatcher; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.database.sqlite.SQLiteQueryBuilder; -import android.net.Uri; -import android.text.TextUtils; -import android.util.Log; - -/** - * This class provider interface to operator FM database table StationList - */ -public class FmRadioContentProvider extends ContentProvider { - private static final String TAG = "FmRx/Provider"; - - // database instance use to operate the database - private SQLiteDatabase mSqlDb = null; - // database helper use to get database instance - private DatabaseHelper mDbHelper = null; - // database name - private static final String DATABASE_NAME = "FmRadio.db"; - // database version - private static final int DATABASE_VERSION = 1; - // table name - private static final String TABLE_NAME = "StationList"; - - // URI match code - private static final int STATION_FREQ = 1; - // URI match code - private static final int STATION_FREQ_ID = 2; - // use to match URI - private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH); - - // match URI with station frequency or station frequency id - static { - URI_MATCHER.addURI(FmRadioStation.AUTHORITY, FmRadioStation.STATION, STATION_FREQ); - URI_MATCHER.addURI(FmRadioStation.AUTHORITY, FmRadioStation.STATION + "/#", - STATION_FREQ_ID); - } - - /** - * Helper to operate database - */ - private static class DatabaseHelper extends SQLiteOpenHelper { - - /** - * initial database name and database version - * - * @param context application context - */ - DatabaseHelper(Context context) { - super(context, DATABASE_NAME, null, DATABASE_VERSION); - } - - /** - * Create database table - * - * @param db The database - */ - @Override - public void onCreate(SQLiteDatabase db) { - // Create the table - Log.d(TAG, "DatabaseHelper.onCreate"); - db.execSQL( - "Create table " - + TABLE_NAME - + "(" - + FmRadioStation.Station._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," - + FmRadioStation.Station.COLUMN_STATION_NAME + " TEXT," - + FmRadioStation.Station.COLUMN_STATION_FREQ + " INTEGER," - + FmRadioStation.Station.COLUMN_STATION_TYPE + " INTEGER" - + ");" - ); - } - - /** - * Upgrade database - * - * @param db database - * @param oldVersion The old database version - * @param newVersion The new database version - */ - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - Log.i(TAG, "Upgrading database from version " + oldVersion + " to " - + newVersion + ", which will destroy all old data"); - db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); - onCreate(db); - } - } - - /** - * Delete database table rows with condition - * - * @param uri The uri to delete - * @param selection The where cause to apply, if null will delete all rows - * @param selectionArgs The select value - * - * @return The rows number has be deleted - */ - @Override - public int delete(Uri uri, String selection, String[] selectionArgs) { - Log.d(TAG, "FmRadioContentProvider.delete"); - int rows = 0; - mSqlDb = mDbHelper.getWritableDatabase(); - switch (URI_MATCHER.match(uri)) { - case STATION_FREQ: - rows = mSqlDb.delete(TABLE_NAME, selection, selectionArgs); - getContext().getContentResolver().notifyChange(uri, null); - break; - - case STATION_FREQ_ID: - String stationID = uri.getPathSegments().get(1); - rows = mSqlDb.delete(TABLE_NAME, - FmRadioStation.Station._ID - + "=" - + stationID - + (TextUtils.isEmpty(selection) ? "" : " AND (" + selection + ")"), - selectionArgs); - getContext().getContentResolver().notifyChange(uri, null); - break; - - default: - Log.e(TAG, "Error: Unkown URI to delete: " + uri); - break; - } - return rows; - } - - /** - * Insert values to database with uri - * - * @param uri The insert uri - * @param values The insert values - * - * @return The uri after inserted - */ - @Override - public Uri insert(Uri uri, ContentValues values) { - Log.d(TAG, "FmRadioContentProvider.insert"); - Uri rowUri = null; - mSqlDb = mDbHelper.getWritableDatabase(); - ContentValues v = new ContentValues(values); - // Do not insert invalid values. - if (!v.containsKey(FmRadioStation.Station.COLUMN_STATION_NAME) - || !v.containsKey(FmRadioStation.Station.COLUMN_STATION_FREQ) - || !v.containsKey(FmRadioStation.Station.COLUMN_STATION_TYPE)) { - Log.e(TAG, "Error: Invalid values."); - return rowUri; - } - - long rowId = mSqlDb.insert(TABLE_NAME, null, v); - if (rowId <= 0) { - Log.e(TAG, "Error: Failed to insert row into " + uri); - } - rowUri = ContentUris.appendId(FmRadioStation.Station.CONTENT_URI.buildUpon(), rowId) - .build(); - getContext().getContentResolver().notifyChange(rowUri, null); - return rowUri; - } - - /** - * Create database helper - * - * @return true if create database helper success - */ - @Override - public boolean onCreate() { - mDbHelper = new DatabaseHelper(getContext()); - return (null == mDbHelper) ? false : true; - } - - /** - * Query the database with current settings and add information - * - * @param uri The database uri - * @param projection The columns need to query - * @param selection The where clause - * @param selectionArgs The where value - * @param sortOrder The column to sort - * - * @return The query result cursor - */ - @Override - public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, - String sortOrder) { - SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); - SQLiteDatabase db = mDbHelper.getReadableDatabase(); - qb.setTables(TABLE_NAME); - - int match = URI_MATCHER.match(uri); - - if (STATION_FREQ_ID == match) { - qb.appendWhere("_id = " + uri.getPathSegments().get(1)); - } - - Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder); - if (null != c) { - c.setNotificationUri(getContext().getContentResolver(), uri); - } - return c; - } - - /** - * Update the database content use content values with current settings and - * add information - * - * @param uri The database uri - * @param values The values need to update - * @param selection The where clause - * @param selectionArgs The where value - * - * @return The row numbers have changed - */ - @Override - public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { - Log.d(TAG, "FmRadioContentProvider.update"); - int rows = 0; - mSqlDb = mDbHelper.getWritableDatabase(); - switch (URI_MATCHER.match(uri)) { - case STATION_FREQ: - rows = mSqlDb.update(TABLE_NAME, values, selection, selectionArgs); - getContext().getContentResolver().notifyChange(uri, null); - break; - case STATION_FREQ_ID: - String stationID = uri.getPathSegments().get(1); - rows = mSqlDb.update(TABLE_NAME, - values, - FmRadioStation.Station._ID - + "=" - + stationID - + (TextUtils.isEmpty(selection) ? "" : " AND (" + selection + ")"), - selectionArgs); - getContext().getContentResolver().notifyChange(uri, null); - break; - default: - Log.e(TAG, "Error: Unkown URI to update: " + uri); - break; - } - return rows; - } - - /** - * Get uri type - * - * @param uri The the uri - * - * @return The type - */ - @Override - public String getType(Uri uri) { - return null; - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioEmActivity.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioEmActivity.java deleted file mode 100755 index 51fd3dc..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioEmActivity.java +++ /dev/null @@ -1,1049 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein - * is confidential and proprietary to MediaTek Inc. and/or its licensors. - * Without the prior written permission of MediaTek inc. and/or its licensors, - * any reproduction, modification, use or disclosure of MediaTek Software, - * and information contained herein, in whole or in part, shall be strictly prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON - * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. - * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE - * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR - * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH - * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES - * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES - * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK - * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND - * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, - * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, - * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO - * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek Software") - * have been modified by MediaTek Inc. All revisions are subject to any receiver's - * applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.Activity; -import android.content.BroadcastReceiver; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.ServiceConnection; -import android.media.AudioManager; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.util.Log; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.TextView; -import android.widget.Toast; - -import java.util.Arrays; - -/** - * This class is used to provide engineer mode function for hardware test - * - */ -public class FmRadioEmActivity extends Activity { - public static final String TAG = "FmRx/EM"; - - private static final String TYPE_MSGID = "MSGID"; - private static final String RDS_BLER_STRING = "RDS_BLER_STRING"; - private static final String RDS_RSSI_STRING = "RDS_RSSI_STRING"; - private static final String RDS_STEREMONO_STRING = "RDS_STEREMONO_STRING"; - private static final String RDS_CAPARRAY_STRING = "RDS_CAPARRAY_STRING"; - - private static final int MSGID_OK = 1; - private static final int MSGID_UPDATE_RDS = 2; - private static final int MSGID_UPDATE_CURRENT_STATION = 3; - - private static final int MSGID_TICK_EVENT = 6; - private static final int MSGID_INIT_OK = 7; - private static final int MSGID_POWERUP = 8; - private static final int MSGID_TUNE_FNISHED = 9; - - private boolean mIsServiceStarted = false; - private boolean mIsServiceBinded = false; - private FmRadioService mService = null; - - private boolean mIsPlaying = false; // When start, the radio is not playing. - - // Record whether we are destroying. - private boolean mIsDestroying = false; - private boolean mIsTickEventExit = false; - - // Strings shown in RDS text view. - private String mPSString = ""; - private String mLRTextString = ""; - - private TextView mTextStereoMono = null; - private TextView mTextRssi = null; - private TextView mTextCapArray = null; - private TextView mTextRdsBler = null; - private TextView mTextRdsPS = null; - private TextView mTextRdsRT = null; - private TextView mTextChipID = null; - private TextView mTextECOVersion = null; - private TextView mTextPatchVersion = null; - private TextView mTextDSPVersion = null; - private TextView mTextCMDReturn0 = null; - private TextView mTextCMDReturn1 = null; - private TextView mTextCMDReturn2 = null; - private TextView mTextCMDReturn3 = null; - private TextView mTextCMDReturn4 = null; - private EditText mEditFreq = null; - - private EditText mEditRssiThreshold = null; - private EditText mEditMuteGain = null; - private EditText mEditDesenseRssi = null; - private EditText mEditCMD0 = null; - private EditText mEditCMD1 = null; - private EditText mEditCMD2 = null; - private EditText mEditCMD3 = null; - private EditText mEditCMD4 = null; - private EditText mEditCMD5 = null; - private EditText mEditCMD6 = null; - private EditText mEditCMD7 = null; - private EditText mEditCMD8 = null; - private EditText mEditCMD9 = null; - private EditText mEditCMD10 = null; - private EditText mEditCMD11 = null; - private EditText mEditCMD12 = null; - private EditText mEditCMD13 = null; - private EditText mEditCMD14 = null; - private EditText mEditCMD15 = null; - private EditText mEditCMD16 = null; - private EditText mEditCMD17 = null; - private EditText mEditCMD18 = null; - private EditText mEditCMD19 = null; - private Button mButtonRssiThreshold = null; - private Button mButtonMuteGain = null; - private Button mButtonDesenseRssi = null; - private Button mButtonCMD = null; - private Button mButtonTune = null; - private RadioButton mRdAntennaS = null; - private RadioButton mRdAntennaL = null; - private RadioGroup mRgAntenna = null; - private RadioButton mRdStereo = null; - private RadioButton mRdMono = null; - private Context mContext = null; - private Thread mTickEventThread = null; - - // Can not use float to record the station. Because there will be inaccuracy when increase/decrease 0.1 - private int mCurrentStation = FmRadioUtils.DEFAULT_STATION; - private AudioManager mAudioManager = null; - private HeadsetConnectionReceiver mHeadsetConnectionReceiver = null; - - /** - * use to show update antenna UI - * - */ - private class HeadsetConnectionReceiver extends BroadcastReceiver { - public void onReceive(Context context, Intent intent) { - if (intent.getIntExtra("state", 0) == 0) { // unpluged - if (mIsPlaying) { - mRgAntenna.check(R.id.FMR_Antenna_short); - } - } else if (intent.getIntExtra("state", 0) == 1) { // pluged - if (mIsPlaying) { - mRgAntenna.check(R.id.FMR_Antenna_long); - } - } - - } - }; - - /** - * click listener - */ - private View.OnClickListener mButtonClickListener = new View.OnClickListener() { - /** - * handle click event - * @param v clicked view - */ - public void onClick(View v) { - switch (v.getId()) { - case R.id.FMR_Antenna_short: - switchAntenna(1); - break; - case R.id.FMR_Antenna_long: - switchAntenna(0); - break; - case R.id.FMR_Stereomono_stereo: -// if (!setStereoMono(false)) { -// Toast.makeText(mContext, "Set Stereo Mono failed.", Toast.LENGTH_SHORT).show(); -// } - setStereoMono(false); - break; - case R.id.FMR_Stereomono_mono: -// if (!setStereoMono(true)) { -// Toast.makeText(mContext, "Set Stereo Mono failed.", Toast.LENGTH_SHORT).show(); -// } - setStereoMono(true); - break; - case R.id.FMR_Freq_tune: - String s = mEditFreq.getText().toString(); - float freq = 0; - try { - freq = Float.valueOf(s); - - // If input not between 87.5 to 108.0 - int station = FmRadioUtils.computeStation(freq); - if (!FmRadioUtils.isValidStation(station)) { - Toast.makeText(FmRadioEmActivity.this, "Please input 87.5 ~ 108.0.", Toast.LENGTH_SHORT).show(); - mEditFreq.setText(FmRadioUtils.formatStation(mCurrentStation)); - return; - } - } catch (NumberFormatException e) { - Toast.makeText(FmRadioEmActivity.this, "bad float format.", Toast.LENGTH_SHORT).show(); - mEditFreq.setText(FmRadioUtils.formatStation(mCurrentStation)); - return; - } - - - // disable button before it finished tune. - mButtonTune.setEnabled(false); - tuneToStation(FmRadioUtils.computeStation(freq)); - break; - case R.id.FMR_EM_RSSI_THRESHOLD_OK: - String rssi = mEditRssiThreshold.getText().toString(); - int rssi_edit = 0; - try { - rssi_edit = Integer.valueOf(rssi); - } catch (NumberFormatException e) { - Log.e(TAG, "click rssi threshold button:" + e); - Toast.makeText(FmRadioEmActivity.this, "bad format.", Toast.LENGTH_SHORT).show(); - mEditFreq.setText("0"); - return; - } - mButtonRssiThreshold.setEnabled(false); - boolean isRssiOk = mService.setEmth(0, rssi_edit); - mButtonRssiThreshold.setEnabled(true); - if (isRssiOk) { - Toast.makeText(FmRadioEmActivity.this, "Rssi Threshold set OK.", Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(FmRadioEmActivity.this, "Rssi Threshold set fail.", Toast.LENGTH_SHORT).show(); - } - break; - case R.id.FMR_EM_DESENSE_RSSI_OK: - String deRssi = mEditDesenseRssi.getText().toString(); - int deRssi_edit = 0; - try { - deRssi_edit = Integer.valueOf(deRssi); - } catch (NumberFormatException e) { - Log.e(TAG, "click desense rssi button:" + e); - Toast.makeText(FmRadioEmActivity.this, "bad format.", Toast.LENGTH_SHORT).show(); - mEditDesenseRssi.setText("0"); - return; - } - mButtonDesenseRssi.setEnabled(false); - boolean isDeRssiOk = mService.setEmth(1, deRssi_edit); - mButtonDesenseRssi.setEnabled(true); - if (isDeRssiOk) { - Toast.makeText(FmRadioEmActivity.this, "Desense Rssi Threshold set OK.", Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(FmRadioEmActivity.this, "Desense Rssi Threshold set fail.", Toast.LENGTH_SHORT).show(); - } - break; - case R.id.FMR_EM_MUTE_GAIN_OK: - String mutegain = mEditMuteGain.getText().toString(); - int mutegain_edit = 0; - try { - mutegain_edit = Integer.valueOf(mutegain); - } catch (NumberFormatException e) { - Log.e(TAG, "click mute gain button:" + e); - Toast.makeText(FmRadioEmActivity.this, "bad format.", Toast.LENGTH_SHORT).show(); - mEditMuteGain.setText("0"); - return; - } - mButtonMuteGain.setEnabled(false); - boolean isMuteOk = mService.setEmth(2, mutegain_edit); - mButtonMuteGain.setEnabled(true); - if (isMuteOk) { - Toast.makeText(FmRadioEmActivity.this, "Software mute gain set OK.", Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(FmRadioEmActivity.this, "Software mute gain set fail.", Toast.LENGTH_SHORT).show(); - } - break; - case R.id.FMR_EM_CMD_OK: - String cmd0 = mEditCMD0.getText().toString(); - String cmd1 = mEditCMD1.getText().toString(); - String cmd2 = mEditCMD2.getText().toString(); - String cmd3 = mEditCMD3.getText().toString(); - String cmd4 = mEditCMD4.getText().toString(); - String cmd5 = mEditCMD5.getText().toString(); - String cmd6 = mEditCMD6.getText().toString(); - String cmd7 = mEditCMD7.getText().toString(); - String cmd8 = mEditCMD8.getText().toString(); - String cmd9 = mEditCMD9.getText().toString(); - String cmd10 = mEditCMD10.getText().toString(); - String cmd11 = mEditCMD11.getText().toString(); - String cmd12 = mEditCMD12.getText().toString(); - String cmd13 = mEditCMD13.getText().toString(); - String cmd14 = mEditCMD14.getText().toString(); - String cmd15 = mEditCMD15.getText().toString(); - String cmd16 = mEditCMD16.getText().toString(); - String cmd17 = mEditCMD17.getText().toString(); - String cmd18 = mEditCMD18.getText().toString(); - String cmd19 = mEditCMD19.getText().toString(); - short[] cmdArray = new short[20]; - try { - cmdArray = new short[] { - Short.valueOf(cmd0), - Short.valueOf(cmd1), - Short.valueOf(cmd2), - Short.valueOf(cmd3), - Short.valueOf(cmd4), - Short.valueOf(cmd5), - Short.valueOf(cmd6), - Short.valueOf(cmd7), - Short.valueOf(cmd8), - Short.valueOf(cmd9), - Short.valueOf(cmd10), - Short.valueOf(cmd11), - Short.valueOf(cmd12), - Short.valueOf(cmd13), - Short.valueOf(cmd14), - Short.valueOf(cmd15), - Short.valueOf(cmd16), - Short.valueOf(cmd17), - Short.valueOf(cmd18), - Short.valueOf(cmd19)}; - } catch (Exception e) { - Log.e(TAG, "click cmd button:" + e); - Toast.makeText(FmRadioEmActivity.this, "bad format.", Toast.LENGTH_SHORT).show(); - return; - } - short[] cmds = mService.emcmd(cmdArray); - - if (cmds == null) { - Toast.makeText(FmRadioEmActivity.this, "cmd execute fail.", Toast.LENGTH_SHORT).show(); - Log.d(TAG, "cmd expand execute fail"); - return; - } - int size = cmds.length; - int count = 0; - String[] values = new String[]{"","","","",""}; - int line = -1; - while (count < size) { - if (count%4 == 0) { - line += 1; - } - values[line] += ("0X" + cmds[count]); - ++count; - } - mTextCMDReturn0.setText(values[0]); - mTextCMDReturn1.setText(values[1]); - mTextCMDReturn2.setText(values[2]); - mTextCMDReturn3.setText(values[3]); - mTextCMDReturn4.setText(values[4]); - break; - default : - Log.d(TAG, "invalid view id"); - } - } - }; - - /** - * FM Radio listener - */ - private FmRadioListener mFmRadioListener = new FmRadioListener() { - - /** - * call back method from service - */ - public void onCallBack(Bundle bundle) { - Message msg = mHandler.obtainMessage(bundle.getInt(FmRadioListener.CALLBACK_FLAG)); - msg.setData(bundle); - mHandler.sendMessage(msg); - } - }; - - /** - * Called when the activity is first created. - */ - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Log.d(TAG, "begin FMRadioEMActivity.onCreate"); - // Bind the activity to FM audio stream. - setVolumeControlStream(AudioManager.STREAM_MUSIC); - setContentView(R.layout.fm_rx_em); - // Init FM database - mContext = getApplicationContext(); - FmRadioStation.initFmDatabase(mContext); - - mTextStereoMono = (TextView) findViewById(R.id.FMR_Status_Stereomono); - mTextRssi = (TextView) findViewById(R.id.FMR_Status_RSSI); - mTextCapArray = (TextView) findViewById(R.id.FMR_Status_Caparray); - mTextRdsBler = (TextView) findViewById(R.id.FMR_RDS_Ratio); - mTextRdsPS = (TextView) findViewById(R.id.FMR_RDS_PS); - mTextRdsRT = (TextView) findViewById(R.id.FMR_RDS_RT); - mTextChipID = (TextView) findViewById(R.id.FMR_Chip_ID); - mTextECOVersion = (TextView) findViewById(R.id.FMR_ECO_Version); - mTextPatchVersion = (TextView) findViewById(R.id.FMR_Patch_Version); - mTextDSPVersion = (TextView) findViewById(R.id.FMR_DSP_Version); - mTextCMDReturn0 = (TextView) findViewById(R.id.FMR_EM_CMD_RETURN0); - mTextCMDReturn1 = (TextView) findViewById(R.id.FMR_EM_CMD_RETURN1); - mTextCMDReturn2 = (TextView) findViewById(R.id.FMR_EM_CMD_RETURN2); - mTextCMDReturn3 = (TextView) findViewById(R.id.FMR_EM_CMD_RETURN3); - mTextCMDReturn4 = (TextView) findViewById(R.id.FMR_EM_CMD_RETURN4); - mEditFreq = (EditText) findViewById(R.id.FMR_Freq_edit); - mEditRssiThreshold = (EditText) findViewById(R.id.FMR_EM_RSSI_THRESHOLD_edit); - mEditMuteGain = (EditText) findViewById(R.id.FMR_EM_MUTE_GAIN_edit); - mEditDesenseRssi = (EditText) findViewById(R.id.FMR_EM_DESENSE_RSSI_edit); - mEditCMD0 = (EditText) findViewById(R.id.FMR_EM_CMD_edit0); - mEditCMD1 = (EditText) findViewById(R.id.FMR_EM_CMD_edit1); - mEditCMD2 = (EditText) findViewById(R.id.FMR_EM_CMD_edit2); - mEditCMD3 = (EditText) findViewById(R.id.FMR_EM_CMD_edit3); - mEditCMD4 = (EditText) findViewById(R.id.FMR_EM_CMD_edit4); - mEditCMD5 = (EditText) findViewById(R.id.FMR_EM_CMD_edit5); - mEditCMD6 = (EditText) findViewById(R.id.FMR_EM_CMD_edit6); - mEditCMD7 = (EditText) findViewById(R.id.FMR_EM_CMD_edit7); - mEditCMD8 = (EditText) findViewById(R.id.FMR_EM_CMD_edit8); - mEditCMD9 = (EditText) findViewById(R.id.FMR_EM_CMD_edit9); - mEditCMD10 = (EditText) findViewById(R.id.FMR_EM_CMD_edit10); - mEditCMD11 = (EditText) findViewById(R.id.FMR_EM_CMD_edit11); - mEditCMD12 = (EditText) findViewById(R.id.FMR_EM_CMD_edit12); - mEditCMD13 = (EditText) findViewById(R.id.FMR_EM_CMD_edit13); - mEditCMD14 = (EditText) findViewById(R.id.FMR_EM_CMD_edit14); - mEditCMD15 = (EditText) findViewById(R.id.FMR_EM_CMD_edit15); - mEditCMD16 = (EditText) findViewById(R.id.FMR_EM_CMD_edit16); - mEditCMD17 = (EditText) findViewById(R.id.FMR_EM_CMD_edit17); - mEditCMD18 = (EditText) findViewById(R.id.FMR_EM_CMD_edit18); - mEditCMD19 = (EditText) findViewById(R.id.FMR_EM_CMD_edit19); - - mButtonRssiThreshold = (Button) findViewById(R.id.FMR_EM_RSSI_THRESHOLD_OK); - mButtonMuteGain = (Button) findViewById(R.id.FMR_EM_MUTE_GAIN_OK); - mButtonDesenseRssi = (Button) findViewById(R.id.FMR_EM_DESENSE_RSSI_OK); - mButtonCMD = (Button) findViewById(R.id.FMR_EM_CMD_OK); - - mButtonTune = (Button) findViewById(R.id.FMR_Freq_tune); - mRdAntennaS = (RadioButton) findViewById(R.id.FMR_Antenna_short); - mRdAntennaL = (RadioButton) findViewById(R.id.FMR_Antenna_long); - mRgAntenna = (RadioGroup) findViewById(R.id.FMR_Antenna_type); - mRdStereo = (RadioButton) findViewById(R.id.FMR_Stereomono_stereo); - mRdMono = (RadioButton) findViewById(R.id.FMR_Stereomono_mono); - - mRdAntennaS.setOnClickListener(mButtonClickListener); - mRdAntennaL.setOnClickListener(mButtonClickListener); - mRdStereo.setOnClickListener(mButtonClickListener); - mRdMono.setOnClickListener(mButtonClickListener); - mButtonTune.setOnClickListener(mButtonClickListener); - - mButtonRssiThreshold.setOnClickListener(mButtonClickListener); - mButtonMuteGain.setOnClickListener(mButtonClickListener); - mButtonDesenseRssi.setOnClickListener(mButtonClickListener); - mButtonCMD.setOnClickListener(mButtonClickListener); - - // Should start FM service first. -// ComponentName cn = startService(new Intent(FMRadioEMActivity.this, FmRadioService.class)); -// if (null == cn) { -// Log.e(TAG, "Error: Cannot start FM service"); -// } else { -// Log.d(TAG, "Start FM service successfully."); -// mIsServiceStarted = true; - /*mIsServiceBinded = bindService(new Intent(FMRadioEMActivity.this, FmRadioService.class), mServiceConnection, - Context.BIND_AUTO_CREATE); -// } - if (!mIsServiceBinded) { - Log.e(TAG, "Error: Cannot bind FM service"); - finish(); - return; - } else { - Log.d(TAG, "Bind FM service successfully."); - }*/ - - - IntentFilter filterHeadset = new IntentFilter(); - filterHeadset.addAction(Intent.ACTION_HEADSET_PLUG); - mHeadsetConnectionReceiver = new HeadsetConnectionReceiver(); - Log.d(TAG, "Register HeadsetConnectionReceiver"); - registerReceiver(mHeadsetConnectionReceiver, filterHeadset); - - // Get all the views and set their actions. - mCurrentStation = FmRadioStation.getCurrentStation(mContext); - mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); - refreshTextStatus(mIsPlaying); - Log.d(TAG, "end FMRadioEMActivity.onCreate"); - } - - /** - * called when bind service - */ - private ServiceConnection mServiceConnection = new ServiceConnection() { - - /** - * called when bind service - * @param className service name - * @param service service - */ - public void onServiceConnected(ComponentName className, IBinder service) { - Log.d(TAG, "begin FMRadioEMActivity.onServiceConnected"); - mService = ((FmRadioService.ServiceBinder)service).getService(); - if (null == mService) { - Log.e(TAG, "Error: null interface"); - finish(); - return; - } - - mService.registerFmRadioListener(mFmRadioListener); - if (!isServiceInited()) { - Log.d(TAG, "FM service is not init."); - initService(mCurrentStation); - refreshTextStatus(false); - // InitialThread thread = new InitialThread(); - // thread.start(); - // mService.openDeviceAsync(); - Log.d(TAG, "onService connect.mCurrentStation: " + mCurrentStation); - mService.powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - - } else { - Log.d(TAG, "FM service is already init."); - if (isDeviceOpen()) { - // Get the current frequency in service and save it into - // database. - int iFreq = getFrequency(); - if (FmRadioUtils.isValidStation(iFreq)) { - if (mCurrentStation != iFreq) { - Log.d(TAG, "The frequency in FM service is not same as in database."); - mCurrentStation = iFreq; - // Save the current station frequency into data - // base. - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - } else { - Log.d(TAG, "The frequency in FM service is same as in database."); - } - } else { - Log.e(TAG, "Error: invalid frequency in service."); - } - - mIsPlaying = isPowerUp(); - - if (mIsPlaying) { - Log.d(TAG, "FM is already power up."); - refreshTextStatus(true); - } - - if (mIsPlaying) { - // Update the RDS text view. - mPSString = getPS(); - mLRTextString = getLRText(); - mHandler.sendEmptyMessage(MSGID_UPDATE_RDS); - } - - } else { - // This is theoretically never happen. - Log.e(TAG, "Error: FM device is not open"); - } - mHandler.sendEmptyMessage(MSGID_INIT_OK); - } - Log.d(TAG, "<<< FMRadioEMActivity.onServiceConnected"); - } - - public void onServiceDisconnected(ComponentName className) { - Log.d(TAG, ">>> FMRadioEMActivity.onServiceDisconnected"); - mService = null; - Log.d(TAG, "<<< FMRadioEMActivity.onServiceDisconnected"); - } - }; - private Handler mHandler = new Handler() { - public void handleMessage(Message msg) { - Log.d(TAG, ">>> handleMessage what: " + msg.what); - if (mIsDestroying) { - Log.d(TAG, "Warning: app is being destroyed."); - Log.d(TAG, "<<< handleMessage"); - return; - } - Bundle bundle; - switch (msg.what) { - case MSGID_INIT_OK: - mTextChipID.setText(getChipId()); - mTextECOVersion.setText(getEcoVersion()); - mTextPatchVersion.setText(getPatchVersion()); - mTextDSPVersion.setText(getDspVersion()); - break; - case MSGID_TICK_EVENT: - bundle = msg.getData(); - mTextRdsBler.setText(bundle.getString(RDS_BLER_STRING)); - mTextRssi.setText(bundle.getString(RDS_RSSI_STRING)); - mTextStereoMono.setText(bundle.getString(RDS_STEREMONO_STRING)); - mTextCapArray.setText(bundle.getString(RDS_CAPARRAY_STRING)); - break; - - case FmRadioListener.MSGID_POWERUP_FINISHED: - if (isSpeakerUsed()) { -// switchAntenna(0); - mRgAntenna.check(R.id.FMR_Antenna_short); - } else { -// switchAntenna(1); - mRgAntenna.check(R.id.FMR_Antenna_long); - } - bundle = msg.getData(); - mIsPlaying = bundle.getBoolean(FmRadioListener.KEY_IS_POWER_UP); - mHandler.sendEmptyMessage(MSGID_INIT_OK); - refreshTextStatus(true); - break; - - case FmRadioListener.MSGID_SWITCH_ANNTENNA: - bundle = msg.getData(); - boolean isSwitch = bundle.getBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA); - if (isSwitch) { -// mService.powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - Log.d(TAG, "mHandler. switch anntenna ok"); - } - break; - case FmRadioListener.MSGID_TUNE_FINISHED: - bundle = msg.getData(); - float frequency = bundle.getFloat(FmRadioListener.KEY_TUNE_TO_STATION); - mCurrentStation = FmRadioUtils.computeStation(frequency); - // Save the current station frequency into data base. -// FmRadioStation.setCurrentStation(mContext, mCurrentStation); - refreshTextStatus(true); - break; - - case FmRadioListener.LISTEN_PS_CHANGED: - case FmRadioListener.LISTEN_RT_CHANGED: - bundle = msg.getData(); - mPSString = bundle.getString(FmRadioListener.KEY_PS_INFO); - mLRTextString = bundle.getString(FmRadioListener.KEY_RT_INFO); - showRDS(); - break; - case FmRadioListener.LISTEN_RDSSTATION_CHANGED: - bundle = msg.getData(); - mCurrentStation = bundle.getInt(FmRadioListener.KEY_RDS_STATION); - break; - default: - Log.d(TAG, "invalid view id"); - } - Log.d(TAG, "<<< handleMessage"); - } - - }; - - private String formatCapArray(int raw) { - final float[] pF = { 0.166f, 0.332f, 0.664f, 1.33f, 2.66f, 5.31f, 10.6f, 18.6f }; - - float sum = 0.0f; - for (int i = 0; i < pF.length; i++) { - final int base = 6; - sum += (((raw >> (base + i)) & 0x1) == 1 ? pF[i] : 0.0); - } - return String.format("%.2f", sum); - } - - @Override - protected void onStart() { - super.onStart(); - mIsServiceBinded = bindService(new Intent(FmRadioEmActivity.this, FmRadioService.class), mServiceConnection, - Context.BIND_AUTO_CREATE); -// } - if (!mIsServiceBinded) { - Log.e(TAG, "Error: Cannot bind FM service"); - finish(); - return; - } else { - Log.d(TAG, "Bind FM service successfully."); - } - } - /** - * called when activity resume - */ - public void onResume() { - super.onResume(); - /*final int oneSecond = 1000; - mHandler.sendEmptyMessageDelayed(MSGID_TICK_EVENT, oneSecond);*/ - readTickEvent(); - } - - /** - * called when activity pause - */ - public void onPause() { - mHandler.removeMessages(MSGID_TICK_EVENT); - stopTickEventThread(); - super.onPause(); - } - - @Override - protected void onStop() { - Log.d(TAG, "start FMRadioActivity.onStop"); - if (mIsServiceBinded) { - unbindService(mServiceConnection); - mIsServiceBinded = false; - } - Log.d(TAG, "end FMRadioActivity.onStop"); - super.onStop(); - } - - /** - * called when activity destroy - */ - public void onDestroy() { - Log.d(TAG, ">>> FMRadioEMActivity.onDestroy"); - mIsDestroying = true; - mHandler.removeCallbacks(null); - if (null != mHeadsetConnectionReceiver) { - Log.d(TAG, "Unregister headset broadcast receiver."); - unregisterReceiver(mHeadsetConnectionReceiver); - mHeadsetConnectionReceiver = null; - } - // Should powerdown FM. - if (mIsPlaying) { - Log.d(TAG, "FM is Playing. So stop it."); -// powerDown(); - mService.powerDownAsync(); - mIsPlaying = false; - } - if (null != mService) { - mService.unregisterFmRadioListener(mFmRadioListener); - } - mService = null; - mFmRadioListener = null; - - - Log.d(TAG, "<<< FMRadioEMActivity.onDestroy"); - super.onDestroy(); - } - - private boolean isAntennaAvailable() { - return mAudioManager.isWiredHeadsetOn(); - } - - private void tuneToStation(final int iStation) { - mService.tuneStationAsync(FmRadioUtils.computeFrequency(iStation)); - } - - - private void refreshTextStatus(boolean on) { - if (!on) { - mTextStereoMono.setText("X"); - mTextRssi.setText("X"); - mTextCapArray.setText("X"); - mTextRdsBler.setText("X"); - mTextRdsPS.setText("X"); - mTextRdsRT.setText("X"); - mEditFreq.setText(FmRadioUtils.formatStation(mCurrentStation)); - mRgAntenna.clearCheck(); - mButtonTune.setEnabled(false); - } else { - mButtonTune.setEnabled(true); - } - } - - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - } - - /*private int rdsset(boolean rdson) { - return mIsRDSSupported ? setRDS(rdson) : -1; - }*/ - - private void showRDS() { - Log.v(TAG, "FMRadioEMActivity.showRDS PS : " + mPSString + "RT :" + mLRTextString); - mTextRdsPS.setText(mPSString); - mTextRdsRT.setText(mLRTextString); - } - - /** - * get chip id - * @return chip id - */ - public String getChipId() { - int[] hardwareVersion = getHardwareVersion(); - int chipId = 0; - if (null != hardwareVersion) { - chipId = hardwareVersion[0]; - } - return getStringValue(chipId); - } - - /** - * get ECO version - * @return ECO version - */ - public String getEcoVersion() { - int[] hardwareVersion = getHardwareVersion(); - int ecoVersion = 0; - if (null != hardwareVersion) { - ecoVersion = hardwareVersion[1]; - } - return "E" + getStringValue(ecoVersion); - } - - /** - * get patch version - * @return patch version - */ - public String getPatchVersion() { - int[] hardwareVersion = getHardwareVersion(); - int patchVersion = 0; - if (null != hardwareVersion) { - final int patchVersionPosition = 3; - patchVersion = hardwareVersion[patchVersionPosition]; - } - String patchStr = getStringValue(patchVersion); - float patch = 0; - if (null != patchStr) { - try { - final int hundred = 100; - patch = Float.parseFloat(patchStr) / hundred; - } catch (NumberFormatException e) { - e.printStackTrace(); - } - } - return Float.toString(patch); - } - - /** - * get DSP version - * @return DSP version - */ - public String getDspVersion() { - int[] hardwareVersion = getHardwareVersion(); - int dspVersion = 0; - if (null != hardwareVersion) { - dspVersion = hardwareVersion[2]; - } - return "V" + getStringValue(dspVersion); - } - - private boolean isDeviceOpen() { - if (null != mService) { - return mService.isDeviceOpen(); - } - return false; - } - - private boolean isPowerUp() { - boolean bRet = false; - if (null != mService) { - return mService.isPowerUp(); - } - return false; - } - - private String getPS() { - if (null != mService) { - return mService.getPS(); - } - return null; - } - - private String getLRText() { - if (null != mService) { - return mService.getLRText(); - } - return null; - } - - private boolean isRdsSupported() { - if (null != mService) { - return mService.isRdsSupported(); - } - return false; - } - - private boolean isSpeakerUsed() { - if (null != mService) { - return mService.isSpeakerUsed(); - } - return true; - } - - private void initService(int iCurrentStation) { - if (null != mService) { - mService.initService(iCurrentStation); - } - } - - private boolean isServiceInited() { - if (null != mService) { - return mService.isServiceInited(); - } - return false; - } - - private int getFrequency() { - if (null != mService) { - return mService.getFrequency(); - } - return 0; - } - - /** - * read cap array - * @return cap array - */ - public int readCapArray() { - if (null != mService) { - return mService.getCapArray(); - } - return 0; - } - - /** - * get rssi value - * @return rssi value - */ - public int readRssi() { - if (null != mService) { - return mService.getRssi(); - } - return 0; - } - - /** - * get stereo or mono - * @return true is stereo, false mono - */ - public boolean getStereoMono() { - if (null != mService) { - return mService.getStereoMono(); - } - return false; - } - - /** - * set stereo or mono - * @param isMono mono or not - * @return whether success - */ - public void setStereoMono(boolean isMono) { -// if (null != mService) { -// return mService.setStereoMono(isMono); -// } -// return false; - mService.setStereoMono(isMono); - } - - /** - * switch antenna - * - * @param antenna - * antenna (0, long antenna, 1 short antenna) - * @return (0, success; 1 failed; 2 not support) - */ - public void switchAntenna(int type) { - /*if (null != mService) { - return mService.switchAntenna(type); - } - return 2;*/ - mService.switchAntennaAsync(type); - } - - /** - * read rds bler - * - * @return rds bler value - */ - public int readRdsBler() { - if (null != mService) { - return mService.getRdsBler(); - } - return 0; - } - - /** - * get hardware version - * @return hardware version information array(0, ChipId; 1, EcoVersion; 2, PatchVersion; 3, - * DSPVersion) - */ - public int[] getHardwareVersion() { - int[] hardwareVersion = null; - if (null != mService) { - hardwareVersion = mService.getHardwareVersion(); - } - Log.v(TAG, "getHardwareversion: " + Arrays.toString(hardwareVersion)); - return hardwareVersion; - } - - /** - * get actual version string - * @param convertData version data - * @return actual version string - */ - public String getStringValue(int convertData) { - StringBuilder temp = new StringBuilder(); - int quotient = convertData; - int remainder = 0; - while (quotient > 0) { - final int hexadecimal = 16; - remainder = quotient % hexadecimal; - quotient = quotient / hexadecimal; - temp = temp.append(remainder); - } - return temp.reverse().toString(); - } - - public void readTickEvent() { - final int interval = 1000; - - if (null != mTickEventThread) { - return; - } - mTickEventThread = new Thread() { - public void run() { - Log.d(TAG, ">>> tick envent Thread run()"); - while (true) { - if (mIsTickEventExit) { - break; - } - - if (isDeviceOpen()) { - Bundle bundle = new Bundle(3); - bundle.putString(RDS_BLER_STRING, String.format("%d%%", readRdsBler())); - bundle.putString(RDS_RSSI_STRING, String.format("%d", readRssi())); - bundle.putString(RDS_STEREMONO_STRING, getStereoMono() ? "Stereo" : "Mono"); - String capStr = "N/A"; - if (!mRdAntennaL.isChecked()) { - capStr = formatCapArray(readCapArray()); - } - bundle.putString(RDS_CAPARRAY_STRING, capStr); - Message msg = mHandler.obtainMessage(MSGID_TICK_EVENT); - msg.setData(bundle); - mHandler.sendMessage(msg); - } - // Do not handle other events. - // Sleep 500ms to reduce inquiry frequency - try { - final int hundredMillisecond = 1000; - Thread.sleep(hundredMillisecond); - } catch (InterruptedException e) { - e.printStackTrace(); - } - Log.d(TAG, "get tick information"); - } - Log.d(TAG, "<<< tick envent Thread run()"); - } - }; - Log.d(TAG, "Start tick event Thread."); - mTickEventThread.start(); - } - - private void stopTickEventThread() { - Log.d(TAG, ">>> stopTickEventThread"); - if (null != mTickEventThread) { - mIsTickEventExit = true; - mTickEventThread = null; - } - Log.d(TAG, "<<< stopTickEventThread"); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioFavorite.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioFavorite.java deleted file mode 100755 index 2ad6807..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioFavorite.java +++ /dev/null @@ -1,533 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.ActionBar; -import android.app.Activity; -import android.app.Dialog; -import android.app.LoaderManager.LoaderCallbacks; -import android.content.Context; -import android.content.CursorLoader; -import android.content.Intent; -import android.content.Loader; -import android.database.Cursor; -import android.media.AudioManager; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.util.Log; -import android.view.ContextMenu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.widget.AdapterView; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.SimpleCursorAdapter; -import android.widget.TextView; -import android.widget.Toast; - -import com.mediatek.fmradio.FmRadioService.OnExitListener; -import com.mediatek.fmradio.dialogs.AddFavoriteDialog; -import com.mediatek.fmradio.dialogs.DeleteFavoriteDialog; -import com.mediatek.fmradio.dialogs.EditFavoriteDialog; -import com.mediatek.fmradio.ext.IProjectStringExt; - -/** - * This class interact with user, provider edit channel information, such as add - * to favorite, edit favorite, delete from favorite - */ -public class FmRadioFavorite extends Activity implements LoaderCallbacks<Cursor>, - AddFavoriteDialog.AddFavoriteListener, EditFavoriteDialog.EditFavoriteListener, - DeleteFavoriteDialog.DeleteFavoriteListener { - // Logging - private static final String TAG = "FmRx/Favorite"; - - private static final String ADD_FAVORITE = "AddFavorite"; - private static final String EDIT_FAVORITE = "EditFavorite"; - private static final String DELETE_FAVORITE = "DeleteFavorite"; - - public static final String ACTIVITY_RESULT = "ACTIVITY_RESULT"; - - private static final int CONTMENU_ID_EDIT = 1; // content menu id edit - private static final int CONTMENU_ID_DELETE = 2; // content menu id delete - private static final int CONTMENU_ID_ADD = 3; // content menu id add - - private static final String FAVORITE_NAME = "FAVORITE_NAME"; - private static final String FAVORITE_FREQ = "FAVORITE_FREQ"; - - private ListView mLvFavorites = null; // list view - private ChannelListAdapter mAdapter = null; // adapter use to update UI - private String mDlgStationName = null; // Record the long clicked station name - private int mDlgStationFreq = 0; // Record the long clicked station frequency - private Context mContext = null; // application context - private OnExitListener mExitListener = null; - - // Plugin - private IProjectStringExt mProjectStringExt = null; - - /** - * on create - * - * @param savedInstanceState The save instance state - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Log.d(TAG, "begin FmRadioFavorite.onCreate"); - // Bind the activity to FM audio stream. - setVolumeControlStream(AudioManager.STREAM_MUSIC); - getWindow().requestFeature(Window.FEATURE_ACTION_BAR); - setContentView(R.layout.favorite); - // display action bar and navigation button - ActionBar actionBar = getActionBar(); - actionBar.setTitle(R.string.favorite_manager); - actionBar.setDisplayHomeAsUpEnabled(true); - mContext = getApplicationContext(); - if (savedInstanceState != null) { - mDlgStationName = savedInstanceState.getString(FAVORITE_NAME); - mDlgStationFreq = savedInstanceState.getInt(FAVORITE_FREQ); - } - - mProjectStringExt = ExtensionUtils.getExtension(mContext); - - mAdapter = new ChannelListAdapter( - this, - R.layout.simpleadapter, - null, - new String[] { - FmRadioStation.Station.COLUMN_STATION_TYPE, - FmRadioStation.Station.COLUMN_STATION_FREQ, - FmRadioStation.Station.COLUMN_STATION_NAME - }, - new int[] { - R.id.lv_station_type, R.id.lv_station_freq, R.id.lv_station_name - }); - mLvFavorites = (ListView) findViewById(R.id.station_list); - TextView emptyView = (TextView) findViewById(R.id.empty); - mLvFavorites.setEmptyView(emptyView); - mLvFavorites.setAdapter(mAdapter); // set adapter - getLoaderManager().initLoader(0, null, this); // initial loader - - mLvFavorites.setOnItemClickListener( - new AdapterView.OnItemClickListener() { - /** - * Click list item will finish activity and pass value to - * other activity - * - * @param parent adapter view - * @param view item view - * @param position current position - * @param id current id - */ - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, - long id) { - // Set the selected frequency to main UI and finish the - // favorite manager. - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - float frequency = 0; - try { - frequency = Float.parseFloat(textView.getText().toString()); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - Intent intentResult = new Intent(); - intentResult.putExtra(ACTIVITY_RESULT, FmRadioUtils - .computeStation(frequency)); - setResult(RESULT_OK, intentResult); - finish(); - } - } - ); - - mLvFavorites.setOnCreateContextMenuListener( - /** - * create context menu - * - * @param menu context menu - * @param view context menu view - * @param menuInfo context menu information - */ - new View.OnCreateContextMenuListener() { - @Override - public void onCreateContextMenu(ContextMenu menu, View view, - ContextMenu.ContextMenuInfo menuInfo) { - menu.setHeaderTitle(R.string.contmenu_title); - Cursor cursor = mAdapter.getCursor(); - int pos = ((AdapterView.AdapterContextMenuInfo) menuInfo).position; - cursor.moveToPosition(pos); - int stationType = cursor.getInt( - cursor.getColumnIndex(FmRadioStation.Station.COLUMN_STATION_TYPE)); - if (FmRadioStation.STATION_TYPE_SEARCHED == stationType) { - // Searched station. - menu.add(0, CONTMENU_ID_ADD, 0, mProjectStringExt.getProjectString(mContext, - R.string.add_to_favorite, R.string.add_to_favorite1)); - } else { - // Favorite station. - menu.add(0, CONTMENU_ID_EDIT, 0, R.string.contmenu_item_edit); - menu.add(0, CONTMENU_ID_DELETE, 0, mProjectStringExt.getProjectString(mContext, - R.string.contmenu_item_delete, R.string.contmenu_item_delete1)); - } - } - } - ); - - // Finish favorite when exit FM - mExitListener = new FmRadioService.OnExitListener() { - @Override - public void onExit() { - Log.d(TAG, "onExit()"); - Handler mainHandler = new Handler(Looper.getMainLooper()); - mainHandler.post(new Runnable() { - @Override - public void run() { - FmRadioFavorite.this.finish(); - } - }); - } - }; - FmRadioService.registerExitListener(mExitListener); - Log.d(TAG, "end FmRadioFavorite.onCreate"); - } - - /** - * Handle the event when context menu selected - * - * @param item selected menu item - * - * @return whether need to handle other context item - */ - @Override - public boolean onContextItemSelected(MenuItem item) { - // get list view position - int position = ((AdapterView.AdapterContextMenuInfo) item.getMenuInfo()).position; - // get item view - View itemView = mLvFavorites.getAdapter().getView(position, null, mLvFavorites); - // get station frequency and station name of item view - TextView stationFreqView = (TextView) itemView.findViewById(R.id.lv_station_freq); - TextView stationNameView = (TextView) itemView.findViewById(R.id.lv_station_name); - mDlgStationFreq = FmRadioUtils.computeStation( - Float.parseFloat(stationFreqView.getText().toString())); - mDlgStationName = stationNameView.getText().toString(); - - switch (item.getItemId()) { - case CONTMENU_ID_ADD: - // show add favorite dialog - showAddFavoriteDialog(); - break; - - case CONTMENU_ID_EDIT: - // show edit favorite dialog - showEditFavoriteDialog(); - break; - - case CONTMENU_ID_DELETE: - // show delete favorite dialog - showDeleteFavoriteDialog(); - break; - - default: - Log.d(TAG, "invalid menu item"); - break; - } - return false; - } - - /** - * When menu is selected - * - * @param item The selected menu item - * - * @return true to consume it, false to can handle other - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - super.onBackPressed(); - return true; - } - return super.onOptionsItemSelected(item); - } - - /** - * Create cursor loader to initial list view - * - * @param id The id whose loader will be created - * @param args Any arguments specified by caller - * - * @return cursor The loader according query result - */ - @Override - public Loader<Cursor> onCreateLoader(int id, Bundle args) { - Uri uri = FmRadioStation.Station.CONTENT_URI; - String select = FmRadioStation.Station.COLUMN_STATION_TYPE + " IN (?, ?)"; - String order = FmRadioStation.Station.COLUMN_STATION_TYPE + "," + - FmRadioStation.Station.COLUMN_STATION_FREQ; - CursorLoader cursorLoader = new CursorLoader( - this, - uri, - FmRadioStation.COLUMNS, - select, - new String[] { - String.valueOf(FmRadioStation.STATION_TYPE_FAVORITE), - String.valueOf(FmRadioStation.STATION_TYPE_SEARCHED) - }, - order); - return cursorLoader; - } - - /** - * Swap adapter cursor when load finished - * - * @param loader The cursor loader - * @param data The new cursor - */ - @Override - public void onLoadFinished(Loader<Cursor> loader, Cursor data) { - mAdapter.swapCursor(data); - } - - /** - * Set adapter as null when loader reset - * - * @param loader The cursor loader - */ - @Override - public void onLoaderReset(Loader<Cursor> loader) { - mAdapter.swapCursor(null); - } - - /** - * This class use associate cursor with adapter item view - */ - static class ChannelListAdapter extends SimpleCursorAdapter { - public ChannelListAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { - super(context, layout, c, from, to); - } - - /** - * This class use to manage view - */ - static class ViewHolder { - ImageView mStationTypeView; - TextView mStationFreqView; - TextView mStationNameView; - } - - /** - * Create item view - * - * @param context The context - * @param cursor The cursor - * @param parent The list view group - */ - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - View view = super.newView(context, cursor, parent); - ViewHolder viewHolder = new ViewHolder(); - viewHolder.mStationTypeView = (ImageView) view.findViewById(R.id.lv_station_type); - viewHolder.mStationFreqView = (TextView) view.findViewById(R.id.lv_station_freq); - viewHolder.mStationNameView = (TextView) view.findViewById(R.id.lv_station_name); - view.setTag(viewHolder); - return view; - } - - /** - * Bind cursor data to list view - * - * @param view The item view - * @param context The The context - * @param cursor The cursor - */ - @Override - public void bindView(View view, Context context, Cursor cursor) { - ViewHolder viewHolder = (ViewHolder) view.getTag(); - int stationType = cursor.getInt( - cursor.getColumnIndex(FmRadioStation.Station.COLUMN_STATION_TYPE)); - int stationFreq = cursor.getInt( - cursor.getColumnIndex(FmRadioStation.Station.COLUMN_STATION_FREQ)); - String stationName = cursor.getString( - cursor.getColumnIndex(FmRadioStation.Station.COLUMN_STATION_NAME)); - if (FmRadioStation.STATION_TYPE_FAVORITE == stationType) { - viewHolder.mStationTypeView.setImageResource(R.drawable.btn_fm_favorite_on); - } else { - viewHolder.mStationTypeView.setImageResource(0); - } - viewHolder.mStationFreqView.setText(FmRadioUtils.formatStation(stationFreq)); - viewHolder.mStationNameView.setText(stationName); - } - } - - private void showAddFavoriteDialog() { - AddFavoriteDialog fragment = AddFavoriteDialog.newInstance(mDlgStationName, - mDlgStationFreq); - fragment.show(getFragmentManager(), ADD_FAVORITE); - - } - - private void showEditFavoriteDialog() { - EditFavoriteDialog newFragment = EditFavoriteDialog.newInstance(mDlgStationName, - mDlgStationFreq); - newFragment.show(getFragmentManager(), EDIT_FAVORITE); - } - - private void showDeleteFavoriteDialog() { - DeleteFavoriteDialog newFragment = DeleteFavoriteDialog.newInstance(); - newFragment.show(getFragmentManager(), DELETE_FAVORITE); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - outState.putString(FAVORITE_NAME, mDlgStationName); - outState.putInt(FAVORITE_FREQ, mDlgStationFreq); - super.onSaveInstanceState(outState); - } - - /** - * Add searched station as favorite station - */ - public void addFavorite() { - AddFavoriteDialog dialogFragment = - ((AddFavoriteDialog) getFragmentManager().findFragmentByTag(ADD_FAVORITE)); - if (null == dialogFragment) { - return; - } - - Dialog dialog = dialogFragment.getDialog(); - if (null == dialog) { - return; - } - - EditText editText = (EditText) dialog.findViewById(R.id.dlg_add_station_name_text); - if (null == editText) { - return; - } - - String newName = editText.getText().toString().trim(); - // if user not input String, use previous displayed station name - // if not have previous displayed station name, use default station name - if (0 != newName.length()) { - mDlgStationName = newName; - } - // update the station name and station type in database - // according the frequency - FmRadioStation.updateStationToDb(mContext, mDlgStationName, - FmRadioStation.STATION_TYPE_FAVORITE, mDlgStationFreq); - mAdapter.notifyDataSetChanged(); - } - - /** - * Edit favorite station frequency and station name - */ - public void editFavorite() { - EditFavoriteDialog dialogFragment = - (EditFavoriteDialog) getFragmentManager().findFragmentByTag(EDIT_FAVORITE); - if (null == dialogFragment) { - return; - } - Dialog dialog = dialogFragment.getDialog(); - if (null == dialog) { - return; - } - - EditText nameEditText = (EditText) dialog.findViewById(R.id.dlg_edit_station_name_text); - EditText frequencyEditText = - (EditText) dialog.findViewById(R.id.dlg_edit_station_freq_text); - if ((null == nameEditText) || (null == frequencyEditText)) { - return; - } - String newName = nameEditText.getText().toString().trim(); - String newStationFreqStr = frequencyEditText.getText().toString().trim(); - // if user not input String, use previous displayed station name - // if not have previous displayed station name, use default station name - if (0 != newName.length()) { - mDlgStationName = newName; - } - - float newStationFreq = 0; - try { - newStationFreq = Float.parseFloat(newStationFreqStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - - int newStation = FmRadioUtils.computeStation(newStationFreq); - if (FmRadioUtils.isValidStation(newStation)) { - // if station is exist in channel list delete it - // ignore current station, because current station not display in - // listview - if (FmRadioStation.isStationExist(mContext, newStation, - FmRadioStation.STATION_TYPE_FAVORITE) && (newStation != mDlgStationFreq)) { - FmRadioStation.deleteStationInDb(mContext, newStation, - FmRadioStation.STATION_TYPE_FAVORITE); - } else if (FmRadioStation.isStationExist(mContext, newStation, - FmRadioStation.STATION_TYPE_SEARCHED)) { - FmRadioStation.deleteStationInDb(mContext, newStation, - FmRadioStation.STATION_TYPE_SEARCHED); - } - FmRadioStation.updateStationToDb(mContext, mDlgStationName, mDlgStationFreq, - newStation, - FmRadioStation.STATION_TYPE_FAVORITE); - mAdapter.notifyDataSetChanged(); - } else { - Toast.makeText(getApplicationContext(), R.string.toast_invalid_frequency, - Toast.LENGTH_SHORT).show(); - } - } - - /** - * Delete favorite from favorite channel list, make it as searched station - */ - public void deleteFavorite() { - // update the station type from favorite to searched. - FmRadioStation.updateStationToDb(mContext, mDlgStationName, - FmRadioStation.STATION_TYPE_SEARCHED, mDlgStationFreq); - mAdapter.notifyDataSetChanged(); - } - - @Override - protected void onDestroy() { - Log.d(TAG, "onDestory()"); - FmRadioService.unregisterExitListener(mExitListener); - super.onDestroy(); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioListener.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioListener.java deleted file mode 100755 index 1250fc6..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioListener.java +++ /dev/null @@ -1,140 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.os.Bundle; - -/** - * Activity connect FMRadio service should implements this interface to update - * ui or status - */ -public interface FmRadioListener { - /** - * directly call back from service to activity - */ - // FM RDS station changed - int LISTEN_RDSSTATION_CHANGED = 0x00100010; - - // FM PS information changed - int LISTEN_PS_CHANGED = 0x00100011; - - // FM RT information changed - int LISTEN_RT_CHANGED = 0x00100100; - - // FM Record state changed - int LISTEN_RECORDSTATE_CHANGED = 0x00100101; // 1048833 - - // FM record error occur - int LISTEN_RECORDERROR = 0x00100110; // 1048848 - - // FM record mode change - int LISTEN_RECORDMODE_CHANGED = 0x00100111; // 4018849 - - // FM Record state changed - int LISTEN_SPEAKER_MODE_CHANGED = 0x00101000; // 1052672 - - // Bundle keys - String SWITCH_ANNTENNA_VALUE = "switch_anntenna_value"; - String CALLBACK_FLAG = "callback_flag"; - String KEY_IS_POWER_UP = "key_is_power_up"; - String KEY_IS_POWER_DOWN = "key_is_power_down"; - String KEY_IS_SWITCH_ANNTENNA = "key_is_switch_anntenna"; - String KEY_IS_TUNE = "key_is_tune"; - String KEY_TUNE_TO_STATION = "key_tune_to_station"; - String KEY_IS_SEEK = "key_is_seek"; - String KEY_SEEK_TO_STATION = "key_seek_to_station"; - String KEY_IS_SCAN = "key_is_scan"; - String KEY_RDS_STATION = "key_rds_station"; - String KEY_PS_INFO = "key_ps_info"; - String KEY_RT_INFO = "key_rt_info"; - String KEY_STATION_NUM = "key_station_num"; - - // Audio focus related - String KEY_AUDIOFOCUS_CHANGED = "key_audiofocus_changed"; - - // Recording - String KEY_RECORDING_STATE = "key_is_recording_state"; - String KEY_RECORDING_ERROR_TYPE = "key_recording_error_type"; - String KEY_IS_RECORDING_MODE = "key_is_recording_mode"; - - // For change speaker/earphone mode - String KEY_IS_SPEAKER_MODE = "key_is_speaker_mode"; - - /** - * handle message: call back from service to activity - */ - // Message to handle - int MSGID_UPDATE_RDS = 1; - int MSGID_UPDATE_CURRENT_STATION = 2; - int MSGID_ANTENNA_UNAVAILABE = 3; - int MSGID_SWITCH_ANNTENNA = 4; - int MSGID_SET_RDS_FINISHED = 5; - int MSGID_SET_CHANNEL_FINISHED = 6; - int MSGID_SET_MUTE_FINISHED = 7; - // Fm main - int MSGID_POWERUP_FINISHED = 9; - int MSGID_POWERDOWN_FINISHED = 10; - int MSGID_FM_EXIT = 11; - int MSGID_SCAN_CANCELED = 12; - int MSGID_SCAN_FINISHED = 13; - int MSGID_AUDIOFOCUS_FAILED = 14; - int MSGID_TUNE_FINISHED = 15; - int MSGID_SEEK_FINISHED = 16; - int MSGID_ACTIVE_AF_FINISHED = 18; - // Recording - int MSGID_RECORD_STATE_CHANGED = 19; - int MSGID_RECORD_ERROR = 20; - int MSGID_RECORD_MODE_CHANED = 21; - int MSGID_STARTRECORDING_FINISHED = 22; - int MSGID_STOPRECORDING_FINISHED = 23; - int MSGID_STARTPLAYBACK_FINISHED = 24; - int MSGID_STOPPLAYBACK_FINISHED = 25; - int MSGID_SAVERECORDING_FINISHED = 26; - // Audio focus related - int MSGID_AUDIOFOCUS_CHANGED = 30; - - int NOT_AUDIO_FOCUS = 33; - - // For refresh time - int MSGID_REFRESH = 101; - - /** - * Call back method to activity from service - */ - void onCallBack(Bundle bundle); -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioNative.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioNative.java deleted file mode 100755 index 8f86268..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioNative.java +++ /dev/null @@ -1,253 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -/** - * This class define FM native interface, will description FM native interface - */ -public class FmRadioNative { - static { - System.loadLibrary("fmjni"); - } - - /** - * Open FM device, call before power up - * - * @return (true,success; false, failed) - */ - static native boolean openDev(); - - /** - * Close FM device, call after power down - * - * @return (true, success; false, failed) - */ - static native boolean closeDev(); - - /** - * power up FM with frequency use long antenna - * - * @param frequency frequency(50KHZ, 87.55; 100KHZ, 87.5) - * - * @return (true, success; false, failed) - */ - static native boolean powerUp(float frequency); - - /** - * Power down FM - * - * @param type (0, FMRadio; 1, FMTransimitter) - * - * @return (true, success; false, failed) - */ - static native boolean powerDown(int type); - - /** - * tune to frequency - * - * @param frequency frequency(50KHZ, 87.55; 100KHZ, 87.5) - * - * @return (true, success; false, failed) - */ - static native boolean tune(float frequency); - - /** - * seek with frequency in direction - * - * @param frequency frequency(50KHZ, 87.55; 100KHZ, 87.5) - * @param isUp (true, next channel; false previous channel) - * - * @return frequency(float) - */ - static native float seek(float frequency, boolean isUp); - - /** - * Auto scan(from 87.50-108.00) - * - * @return The scan channel array(short) - */ - static native short[] autoScan(); - - /** - * Stop scan, also can stop seek, other native when scan should call stop - * scan first, else will execute wait auto scan finish - * - * @return (true, can stop scan process; false, can't stop scan process) - */ - static native boolean stopScan(); - - /** - * Open or close rds fuction - * - * @param rdson The rdson (true, open; false, close) - * - * @return rdsset - */ - static native int setRds(boolean rdson); - - /** - * Read rds events - * - * @return rds event type - */ - static native short readRds(); - - /** - * Get program service(program name) - * - * @return The program name - */ - static native byte[] getPs(); - - /** - * Get radio text, RDS standard not support Chinese character - * - * @return The radio text(byte) - */ - static native byte[] getLrText(); - - /** - *Active alternative frequencies - * - * @return The frequency(float) - */ - static native short activeAf(); - - /** - * Mute or unmute FM voice - * - * @param mute (true, mute; false, unmute) - * - * @return (true, success; false, failed) - */ - static native int setMute(boolean mute); - - /** - * Inquiry if RDS is support in driver - * - * @return (1, support; 0, NOT support; -1, error) - */ - static native int isRdsSupport(); - - /** - * Switch antenna - * - * @param antenna antenna (0, long antenna, 1 short antenna) - * - * @return (0, success; 1 failed; 2 not support) - */ - static native int switchAntenna(int antenna); - - /** - * Set Fm status to tell native RX or TX is on - * @param which 0 is RX, 1 is TX - * @param on true is on - * @return - */ - static native boolean setFmStatus(int which, boolean on); - - /** - * Get the native Fm status - * @param which 0 is RX ON, 1 is TX ON, 2 is TX Scaning - * @return true if dothing - */ - static native boolean getFmStatus(int which); - - // FM EM start - /** - * get rssi from hardware(use for engineer mode) - * - * @return rssi value - */ - static native int readRssi(); - - /** - * Inquiry if fm stereo mono(true, stereo; false mono) - * - * @return (true, stereo; false, mono) - */ - static native boolean stereoMono(); - - /** - * Force set to stero/mono mode - * - * @param isMono - * (true, mono; false, stereo) - * @return (true, success; false, failed) - */ - static native boolean setStereoMono(boolean isMono); - - /** - * Read cap array of short antenna - * - * @return cap array value - */ - static native short readCapArray(); - - /** - * read rds bler - * - * @return rds bler value - */ - static native short readRdsBler(); - - /** - * send variables to native, and get some variables return. - * @param val send to native - * @return get value from native - */ - static native short[] emcmd(short[] val); - - /** - * set RSSI, desense RSSI, mute gain soft - * @param index flag which will execute - * (0:rssi threshold,1:desense rssi threshold,2: SGM threshold) - * @param value send to native - * @return execute ok or not - */ - static native boolean emsetth(int index, int value); - - /** - * get hardware version - * - * @return hardware version information array(0, ChipId; 1, EcoVersion; 2, PatchVersion; 3, - * DSPVersion) - */ - static native int[] getHardwareVersion(); - // FM EM end -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java deleted file mode 100755 index 08fb221..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java +++ /dev/null @@ -1,2802 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.ActivityManager; -import android.app.ActivityManager.RunningAppProcessInfo; -import android.app.Notification; -import android.app.PendingIntent; -import android.app.Service; -import android.bluetooth.BluetoothA2dp; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothProfile; -import android.content.BroadcastReceiver; -import android.content.ContentProviderOperation; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.OperationApplicationException; -import android.content.res.Configuration; -import android.media.AudioManager; -import android.media.AudioManager.OnAudioFocusChangeListener; -import android.media.AudioSystem; -import android.media.MediaPlayer; -import android.net.Uri; -import android.os.Binder; -import android.os.Bundle; -import android.os.Handler; -import android.os.HandlerThread; -import android.os.IBinder; -import android.os.Looper; -import android.os.Message; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.os.RemoteException; -import android.util.Log; - -import com.mediatek.fmradio.FmRadioStation.Station; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -/* Vanzo:tanglei on: Sat, 14 Mar 2015 11:51:16 +0800 - */ -//import com.android.featureoption.FeatureOption; -// End of Vanzo:tanglei - -/** - * Background service to control FM or do background tasks. - */ -public class FmRadioService extends Service implements FmRecorder.OnRecorderStateChangedListener { - // Logging - private static final String TAG = "FmRx/Service"; - - // Broadcast messages from clients to FM service. - public static final String ACTION_TOFMSERVICE_POWERDOWN - = "com.mediatek.FMRadio.FMRadioService.ACTION_TOFMSERVICE_POWERDOWN"; - // Broadcast messages to FM Tx service. - public static final String ACTION_TOFMTXSERVICE_POWERDOWN - = "com.mediatek.FMTransmitter.FMTransmitterService.ACTION_TOFMTXSERVICE_POWERDOWN"; - // Broadcast messages to mATV service. - public static final String ACTION_TOATVSERVICE_POWERDOWN - = "com.mediatek.app.mtv.ACTION_REQUEST_SHUTDOWN"; - // Broadcast messages to music service. - public static final String ACTION_TOMUSICSERVICE_POWERDOWN - = "com.android.music.musicservicecommand.pause"; - // Broadcast messages from mATV service. - public static final String ACTION_FROMATVSERVICE_POWERUP = "com.mediatek.app.mtv.POWER_ON"; - - // Broadcast messages from other sounder APP to FM service - private static final String SOUND_POWER_DOWN_MSG = "com.android.music.musicservicecommand"; - private static final String CMDPAUSE = "pause"; - - // HandlerThread Keys - private static final String FM_FREQUENCY = "frequency"; - private static final String OPTION = "option"; - private static final String RECODING_FILE_NAME = "name"; - - // RDS events - // PS - private static final int RDS_EVENT_PROGRAMNAME = 0x0008; - // RT - private static final int RDS_EVENT_LAST_RADIOTEXT = 0x0040; - // AF - private static final int RDS_EVENT_AF = 0x0080; - - // Headset - private static final int HEADSET_PLUG_IN = 1; - // Short antenna support - private static final boolean SHORT_ANNTENNA_SUPPORT = FmRadioUtils.isFmShortAntennaSupport(); - - // Notification id - private static final int NOTIFICATION_ID = 1; - - // Set audio policy for FM - // should check AUDIO_POLICY_FORCE_FOR_MEDIA in audio_policy.h - private static final int FOR_PROPRIETARY = 1; - // Forced Use value - private int mForcedUseForMedia; - - // TX and RX interaction - private static final int CURRENT_RX_ON = 0; - private static final int CURRENT_TX_ON = 1; - private static final int CURRENT_TX_SCAN = 2; - - // FM recorder - FmRecorder mFmRecorder = null; - private BroadcastReceiver mSdcardListener = null; - private int mRecordState = FmRecorder.STATE_INVALID; - private int mRecorderErrorType = -1; - // If eject record sdcard, should set Value false to not record. - // Key is sdcard path(like "/storage/sdcard0"), V is to enable record or - // not. - private HashMap<String, Boolean> mSdcardStateMap = new HashMap<String, Boolean>(); - // The show name in save dialog but saved in service - // If modify the save title it will be not null, otherwise it will be null - private String mModifiedRecordingName = null; - // record the listener list, will notify all listener in list - private ArrayList<Record> mRecords = new ArrayList<Record>(); - // record FM whether in recording mode - private boolean mIsInRecordingMode = false; - // record sd card path when start recording - private static String sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - - // RDS - // PS String - private String mPSString = ""; - // RT String - private String mLRTextString = ""; - // PS RT - private boolean mIsPSRTEnabled = false; - // AF - private boolean mIsAFEnabled = false; - // RDS thread use to receive the information send by station - private Thread mRdsThread = null; - // record whether RDS thread exit - private boolean mIsRdsThreadExit = false; - - // State variables - // Record whether FM is in native scan state - private boolean mIsNativeScanning = false; - // Record whether FM is in scan thread - private boolean mIsScanning = false; - // Record whether FM is in seeking state - private boolean mIsNativeSeeking = false; - // Record whether FM is in native seek - private boolean mIsSeeking = false; - // Record whether searching progress is canceled - private boolean mIsStopScanCalled = false; - // Record whether is speaker used - private boolean mIsSpeakerUsed = false; - // Record whether device is open - private boolean mIsDeviceOpen = false; - // Record whether FM is power up - private boolean mIsPowerUp = false; - // Record whether is power uping, if so, should judge in activity back key. - private boolean mIsPowerUping = false; - // Record whether service is init - private boolean mIsServiceInited = false; - // Fm power down by loss audio focus,should make power down menu item can - // click - private boolean mIsMakePowerDown = false; - - // Instance variables - private Context mContext = null; - private AudioManager mAudioManager = null; - private ActivityManager mActivityManager = null; - private MediaPlayer mFmPlayer = null; - private WakeLock mWakeLock = null; - // Audio focus is held or not - private boolean mIsAudioFocusHeld = false; - // Focus transient lost - private boolean mPausedByTransientLossOfFocus = false; - private int mCurrentStation = FmRadioUtils.DEFAULT_STATION; - // Headset plug state (0:long antenna plug in, 1:long antenna plug out) - private int mValueHeadSetPlug = 1; - // For bind service - private final IBinder mBinder = new ServiceBinder(); - // Broadcast to receive the external event - private FmServiceBroadcastReceiver mBroadcastReceiver = null; - // Async handler - private FmRadioServiceHandler mFmServiceHandler; - // Lock for lose audio focus and receive SOUND_POWER_DOWN_MSG - // at the same time - // while recording call stop recording not finished(status is still - // RECORDING), but - // SOUND_POWER_DOWN_MSG will exitFm(), if it is RECORDING will discard the - // record. - // 1. lose audio focus -> stop recording(lock) -> set to IDLE and show save - // dialog - // 2. exitFm() -> check the record status, discard it if it is recording - // status(lock) - // Add this lock the exitFm() while stopRecording() - private Object mStopRecordingLock = new Object(); - // The listener for exit, should finish favorite when exit FM - private static OnExitListener sExitListener = null; - // Record FmRadioActivity state - private static boolean sActivityIsOnStop = false; - - @Override - public IBinder onBind(Intent intent) { - Log.d(TAG, "FmRadioService.onBind: " + intent); - return mBinder; - } - - /** - * class use to return service instance - */ - public class ServiceBinder extends Binder { - /** - * get FM service instance - * - * @return service instance - */ - FmRadioService getService() { - return FmRadioService.this; - } - } - - /** - * Broadcast monitor external event, Other app want FM stop, Phone shut - * down, screen state, headset state - */ - private class FmServiceBroadcastReceiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - Log.d(TAG, ">>> FmRadioService.onReceive"); - String action = intent.getAction(); - String command = intent.getStringExtra("command"); - Log.d(TAG, "Action/Command: " + action + " / " + command); - // other app want FM stop, stop FM - if (ACTION_TOFMSERVICE_POWERDOWN.equals(action) - || ACTION_FROMATVSERVICE_POWERUP.equals(action) - || (SOUND_POWER_DOWN_MSG.equals(action) && CMDPAUSE.equals(command))) { - // need remove all messages, make power down will be execute - mFmServiceHandler.removeCallbacksAndMessages(null); - - Log.d(TAG, "onReceive.SOUND_POWER_DOWN_MSG. exit FM"); - exitFm(); - stopSelf(); - // phone shut down, so exit FM - } else if (Intent.ACTION_SHUTDOWN.equals(action)) { - /** - * here exitFm, system will send broadcast, system will shut - * down, so fm does not need call back to activity - */ - mFmServiceHandler.removeCallbacksAndMessages(null); - exitFm(); - // screen on, if FM play, open rds - } else if (Intent.ACTION_SCREEN_ON.equals(action)) { - - setRdsAsync(true); - // screen off, if FM play, close rds - } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { - setRdsAsync(false); - // switch antenna when headset plug in or plug out - } else if (Intent.ACTION_HEADSET_PLUG.equals(action)) { - // switch antenna should not impact audio focus status - mValueHeadSetPlug = (intent.getIntExtra("state", -1) == HEADSET_PLUG_IN) ? 0 : 1; - switchAntennaAsync(mValueHeadSetPlug); - - if (SHORT_ANNTENNA_SUPPORT) { - boolean isSwitch = (switchAntenna(mValueHeadSetPlug) == 0) ? true : false; - Log.d(TAG, "onReceive.switch anntenna:isWitch:" + isSwitch); - - // Plug out->Speaker Mode; Plug in->Earphone Mode - boolean plugInEarphone = (0 == mValueHeadSetPlug); - // Need check to switch to earphone mode for audio will - // change to AudioSystem.FORCE_NONE - if (plugInEarphone) { - mForcedUseForMedia = AudioSystem.FORCE_NONE; - mIsSpeakerUsed = false; - } - //setSpeakerPhoneOn(!plugInEarphone); - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, !plugInEarphone); - notifyActivityStateChanged(bundle); - - powerUpAutoIfNeed(); - } else { - // Avoid Service is killed,and receive headset plug in - // broadcast again - if (!mIsServiceInited) { - Log.d(TAG, "onReceive.switch anntenna:service is not init"); - powerUpAutoIfNeed(); - return; - } - /* - * If ear phone insert and activity is - * foreground. power up FM automatic - */ - if ((0 == mValueHeadSetPlug) && isActivityForeground()) { - Log.d(TAG, "onReceive.switch anntenna:need auto power up"); - powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - } else if (1 == mValueHeadSetPlug) { - Log.d(TAG, "plug out earphone, need to stop fm"); - // ALPS01687760 Avoid sound from speaker after plug out earphone when recording - // plug out earphone will power down or exit, need to mute first anyway - setMute(true); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_POWERDOWN_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_POWERUP_FINISHED); - stopFmFocusLoss(AudioManager.AUDIOFOCUS_LOSS); - - // Need check to switch to earphone mode for audio will - // change to AudioSystem.FORCE_NONE - setSpeakerPhoneOn(false); - - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, false); - notifyActivityStateChanged(bundle); - } - } - - } else if (BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { - int connectState = intent.getIntExtra(BluetoothA2dp.EXTRA_STATE, 0); - Log.d(TAG, "ACTION_CONNECTION_STATE_CHANGED: connectState=" + connectState + ", ispowerup=" - + mIsPowerUp); - handleBtConnectState(connectState); -/* Vanzo:tanglei on: Fri, 13 Mar 2015 21:26:14 +0800 - * earphone key action - */ - } //else if (FeatureOption.VANZO_FEATURE_EARPHONE_KEY_ACTION && "com.mediatek.FMRadio.FMRadioService.NEXT_STATION".equals(action)) { - //seekStationAsync(FmRadioUtils.computeFrequency(mCurrentStation), true); -// End of Vanzo:tanglei - //} - else { - Log.w(TAG, "Error: undefined action."); - } - Log.d(TAG, "<<< FmRadioService.onReceive"); - } - } - - /** - * ALPS01756692 No sound after click FM app and power key - * Need to power up auto for two cases: - * case 1: Launcher click FM app, then quickly click Power key to lock phone. - * case 2: Launcher click FM app, then quickly click Home key. - * Because power up action is in FmRadioActivity.onServiceConnected(), these two cases - * will not callback onServiceConnected() cause FmRadioActivity.onStop() has called unbind() - */ - private void powerUpAutoIfNeed() { - if ((0 == mValueHeadSetPlug)) { - if (!mIsPowerUping && !mIsPowerUp && sActivityIsOnStop) { - Log.w(TAG, "Power up for start app then quick click power/home"); - int iCurrentStation = FmRadioStation.getCurrentStation(mContext); - powerUpAsync(FmRadioUtils.computeFrequency(iCurrentStation)); - } - } - } - - /** - * handle FM over BT connect state - * - * @param connectState - * FM over BT connect state - */ - private void handleBtConnectState(int connectState) { - if (!mIsPowerUp) { - return; - } - - switch (connectState) { - case BluetoothA2dp.STATE_CONNECTED: - //case BluetoothA2dp.STATE_PLAYING: - //case BluetoothA2dp.STATE_CONNECTING: - Log.d(TAG, "handleBtConnectState bt connected"); - changeToEarphoneMode(); - break; - case BluetoothA2dp.STATE_DISCONNECTED: - //case BluetoothA2dp.STATE_DISCONNECTING: - Log.d(TAG, "handleBtConnectState bt disconnected"); - changeToEarphoneMode(); - break; - default: - Log.d(TAG, "invalid fm over bt connect state"); - break; - } - - - } - - private void changeToEarphoneMode() { - setSpeakerPhoneOn(false); - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - // Always set to earphone mode when bt is connected or disconnected - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, false); - notifyActivityStateChanged(bundle); - } - - /** - * Check if BT is connected - * @return true if current is playing with BT earphone - */ - public boolean isBtConnected() { - BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); - Log.d(TAG, "isBtConnected headset:" - + btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) - + ", a2dp:" + btAdapter.getProfileConnectionState(BluetoothProfile.A2DP)); - int a2dpState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); - return (BluetoothProfile.STATE_CONNECTED == a2dpState - || BluetoothProfile.STATE_CONNECTING == a2dpState); - } - - /** - * Handle sdcard mount/unmount event. 1. Update the sdcard state map 2. If - * the recording sdcard is unmounted, need to stop and notify - */ - private class SdcardListener extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - // If eject record sdcard, should set this false to not - // record. - updateSdcardStateMap(intent); - - if (mFmRecorder == null) { - Log.w(TAG, "SD receiver: FMRecorder is not present!!"); - return; - } - - String action = intent.getAction(); - if (Intent.ACTION_MEDIA_EJECT.equals(action) || - Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - // If not unmount recording sd card, do nothing; - if (isRecordingCardUnmount(intent)) { - Log.v(TAG, "MEDIA_EJECT"); - if (mFmRecorder.getState() == FmRecorder.STATE_RECORDING) { - Log.d(TAG, "old state is recording"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - mFmRecorder.discardRecording(); - } else { - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_RECORDSTATE_CHANGED); - bundle.putInt(FmRadioListener.KEY_RECORDING_STATE, - FmRecorder.STATE_IDLE); - notifyActivityStateChanged(bundle); - } - } - return; - } - } - } - - /** - * whether antenna available - * - * @return true, antenna available; false, antenna not available - */ - public boolean isAntennaAvailable() { - return mAudioManager.isWiredHeadsetOn(); - } - - /** - * Set FM audio from speaker or not - * - * @param isSpeaker true if set FM audio from speaker - */ - public void setSpeakerPhoneOn(boolean isSpeaker) { - Log.d(TAG, ">>> FmRadioService.useSpeaker: " + isSpeaker); - mForcedUseForMedia = isSpeaker ? AudioSystem.FORCE_SPEAKER : AudioSystem.FORCE_NONE; - AudioSystem.setForceUse(FOR_PROPRIETARY, mForcedUseForMedia); - mIsSpeakerUsed = isSpeaker; - Log.d(TAG, "<<< FmRadioService.useSpeaker"); - } - - private boolean isSpeakerPhoneOn() { - return (mForcedUseForMedia == AudioSystem.FORCE_SPEAKER); - } - - /** - * open FM device, should be call before power up - * - * @return true if FM device open, false FM device not open - */ - private boolean openDevice() { - Log.d(TAG, ">>> FmRadioService.openDevice"); - if (!mIsDeviceOpen) { - mIsDeviceOpen = FmRadioNative.openDev(); - } - Log.d(TAG, "<<< FmRadioService.openDevice: " + mIsDeviceOpen); - return mIsDeviceOpen; - } - - /** - * close FM device - * - * @return true if close FM device success, false close FM device failed - */ - private boolean closeDevice() { - Log.d(TAG, ">>> FmRadioService.closeDevice"); - boolean isDeviceClose = false; - if (mIsDeviceOpen) { - isDeviceClose = FmRadioNative.closeDev(); - mIsDeviceOpen = !isDeviceClose; - } - Log.d(TAG, "<<< FmRadioService.closeDevice: " + isDeviceClose); - - // quit looper - mFmServiceHandler.getLooper().quit(); - return isDeviceClose; - } - - /** - * get FM device opened or not - * - * @return true FM device opened, false FM device closed - */ - public boolean isDeviceOpen() { - Log.d(TAG, "FmRadioService.isDeviceOpen: " + mIsDeviceOpen); - return mIsDeviceOpen; - } - - /** - * power up FM, and make FM voice output from earphone - * - * @param frequency - */ - public void powerUpAsync(float frequency) { - mIsPowerUping = true; - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_POWERUP_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private boolean powerUpFm(float frequency) { - Log.d(TAG, ">>> FmRadioService.powerUp: " + frequency); - if (mIsPowerUp) { - Log.d(TAG, "<<< FmRadioService.powerUp: already power up:" + mIsPowerUp); - return true; - } - - if (!requestAudioFocus()) { - // activity used for update powerdown menu - mIsMakePowerDown = true; - Log.d(TAG, "FM can't get audio focus when power up"); - sendBroadcastToStopOtherAPP(); - return false; - } - - // if device open fail when chip reset, it need open device again before - // power up - if (!mIsDeviceOpen) { - openDevice(); - } - - waitIfTxSearching(); - Log.d(TAG, "set CURRENT_RX_ON true, CURRENT_TX_ON false"); - FmRadioNative.setFmStatus(CURRENT_RX_ON, true); - FmRadioNative.setFmStatus(CURRENT_TX_ON, false); - sendBroadcastToStopOtherAPP(); - - Log.d(TAG, "service native power up start"); - if (!FmRadioNative.powerUp(frequency)) { - Log.e(TAG, "Error: powerup failed."); - return false; - } - Log.d(TAG, "service native power up end"); - mIsPowerUp = true; - // need mute after power up - setMute(true); - - // activity used for update powerdown menu - mIsMakePowerDown = false; - Log.d(TAG, "<<< FmRadioService.powerUp: " + mIsPowerUp); - return mIsPowerUp; - } - - // wait if TX is searching for timing issue - private void waitIfTxSearching() { - Log.d(TAG, ">>> waitIfTxSearching " + FmRadioNative.getFmStatus(CURRENT_TX_SCAN)); - long start = System.currentTimeMillis(); - // true for TX is searching - while (FmRadioNative.getFmStatus(CURRENT_TX_SCAN) == true) { - if (System.currentTimeMillis() - start > 5000) { - Log.e(TAG, "waitIfTxSearching timeout"); - break; - } - try { - Thread.sleep(100); - } catch (Exception e) { - } - } - Log.d(TAG, "<<< waitIfTxSearching"); - } - - private boolean startPlayFm(float frequency) { - Log.d(TAG, ">>> FmRadioService.initDevice: " + frequency); - - mCurrentStation = FmRadioUtils.computeStation(frequency); - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - // Add notification to the title bar. - showNotification(); - - // Start the RDS thread if RDS is supported. - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Start the RDS thread."); - startRdsThread(); - } - - if (!FmRadioUtils.isFmSuspendSupport()) { - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - Log.d(TAG, "acquire wake lock"); - } - } - if (mIsSpeakerUsed != isSpeakerPhoneOn()) { - setSpeakerPhoneOn(mIsSpeakerUsed); - } - if (mRecordState != FmRecorder.STATE_PLAYBACK) { - enableFmAudio(true); - } - - setRds(true); - setMute(false); - - Log.d(TAG, "<<< FmRadioService.initDevice: " + mIsPowerUp); - return mIsPowerUp; - } - - /** - * send broadcast to stop other application, such as music, MATV, - * FMTransmitter - */ - private void sendBroadcastToStopOtherAPP() { - Intent intentToMusic = new Intent(ACTION_TOMUSICSERVICE_POWERDOWN); - sendBroadcast(intentToMusic); - Intent intentToAtv = new Intent(ACTION_TOATVSERVICE_POWERDOWN); - sendBroadcast(intentToAtv); - Intent intentToFMTx = new Intent(ACTION_TOFMTXSERVICE_POWERDOWN); - sendBroadcast(intentToFMTx); - } - - /** - * power down FM - */ - public void powerDownAsync() { - // if power down Fm, should remove message first. - // not remove all messages, because such as recorder message need - // to execute after or before power down - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_POWERDOWN_FINISHED); - } - - /** - * Power down FM - * - * @return true if power down success - */ - private boolean powerDown() { - Log.d(TAG, ">>> FmRadioService.powerDown"); - if (!mIsPowerUp) { - Log.w(TAG, "Error: device is already power down."); - return true; - } - - setMute(true); - setRds(false); - enableFmAudio(false); - - // Only need to power down if RX status in native is ON - // If TX is on, so need power down(TX is using). - boolean isRxOn = FmRadioNative.getFmStatus(CURRENT_RX_ON); - boolean powerDownSuccess = false; - if (isRxOn) { - powerDownSuccess = FmRadioNative.powerDown(0); - } else { - powerDownSuccess = true; - } - - if (!powerDownSuccess) { - Log.e(TAG, "Error: powerdown failed."); - // activity used for update powerdown menu - mIsMakePowerDown = true; - - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - mIsPowerUp = false; - if (mWakeLock.isHeld()) { - mWakeLock.release(); - Log.d(TAG, "release wake lock"); - } - // Remove the notification in the title bar. - removeNotification(); - Log.d(TAG, "powerdown failed.release some resource."); - return false; - } - // activity used for update powerdown menu - mIsMakePowerDown = true; - - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - mIsPowerUp = false; - - if (mWakeLock.isHeld()) { - mWakeLock.release(); - Log.d(TAG, "release wake lock"); - } - - // Remove the notification in the title bar. - removeNotification(); - Log.d(TAG, "<<< FmRadioService.powerDown: true"); - return true; - } - - /** - * Check whether FM is power up - * - * @return true, power up; false, power down. - */ - public boolean isPowerUp() { - Log.d(TAG, "FmRadioService.isPowerUp: " + mIsPowerUp); - return mIsPowerUp; - } - - /** - * Check whether FM is power uping. if power uping, activity should call - * super.onBackPressed, avoid not execute power down method. - * - * @return true, power up; false, power down. - */ - public boolean isPowerUping() { - Log.d(TAG, "FmRadioService.isPowerUping: " + mIsPowerUping); - return mIsPowerUping; - } - - /** - * Check whether FM is power down by other app. - * - * @return true, power down; true. - */ - public boolean isMakePowerDown() { - Log.d(TAG, "FmRadioService.mIsMakePowerDown: " + mIsMakePowerDown); - return mIsMakePowerDown; - } - - /** - * Tune to a station - * - * @param frequency The frequency to tune - * - * @return true, success; false, fail. - */ - public void tuneStationAsync(float frequency) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_TUNE_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private boolean tuneStation(float frequency) { - Log.d(TAG, ">>> FmRadioService.tune: " + frequency); - if (mIsPowerUp) { - setRds(false); - Log.d(TAG, "FmRadioService.native tune start"); - boolean bRet = FmRadioNative.tune(frequency); - Log.d(TAG, "FmRadioService.native tune end"); - if (bRet) { - setRds(true); - mCurrentStation = FmRadioUtils.computeStation(frequency); - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - updateNotification(); - } - setMute(false); - Log.d(TAG, "<<< FmRadioService.tune: " + bRet); - return bRet; - } - - // if not support short Antenna and earphone is not insert, not power up - if (!isAntennaAvailable() && !SHORT_ANNTENNA_SUPPORT) { - Log.d(TAG, "earphone is not insert and short antenna not support"); - return false; - } - - // if not power up yet, should powerup first - Log.w(TAG, "FM is not powered up"); - mIsPowerUping = true; - boolean tune = false; - - if (powerUpFm(frequency)) { - tune = startPlayFm(frequency); - } - mIsPowerUping = false; - Log.d(TAG, "<<< FmRadioService.tune: mIsPowerup:" + tune); - return tune; - } - - /** - * Seek station according frequency and direction - * - * @param frequency start frequency(100KHZ, 87.5) - * @param isUp direction(true, next station; false, previous station) - * - * @return the frequency after seek - */ - public void seekStationAsync(float frequency, boolean isUp) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - final int bundleSize = 2; - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - bundle.putBoolean(OPTION, isUp); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SEEK_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private float seekStation(float frequency, boolean isUp) { - Log.d(TAG, ">>> FmRadioService.seek: " + frequency + " " + isUp); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - - setRds(false); - mIsNativeSeeking = true; - float fRet = FmRadioNative.seek(frequency, isUp); - mIsNativeSeeking = false; - // make mIsStopScanCalled false, avoid stop scan make this true, - // when start scan, it will return null. - mIsStopScanCalled = false; - Log.d(TAG, "<<< FmRadioService.seek: " + fRet); - return fRet; - } - - /** - * Scan stations - */ - public void startScanAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_SCAN_FINISHED); - } - - private int[] startScan() { - Log.d(TAG, ">>> FmRadioService.startScan"); - int[] iChannels = null; - - setRds(false); - setMute(true); - short[] shortChannels = null; - if (!mIsStopScanCalled) { - mIsNativeScanning = true; - Log.d(TAG, "startScan native method:start"); - shortChannels = FmRadioNative.autoScan(); - Log.d(TAG, "startScan native method:end " + Arrays.toString(shortChannels)); - mIsNativeScanning = false; - } - - setRds(true); - if (mIsStopScanCalled) { - // Received a message to power down FM, or interrupted by a phone - // call. Do not return any stations. shortChannels = null; - // if cancel scan, return invalid station -100 - shortChannels = new short[] { - -100 - }; - mIsStopScanCalled = false; - } - - if (null != shortChannels) { - int size = shortChannels.length; - iChannels = new int[size]; - for (int i = 0; i < size; i++) { - iChannels[i] = shortChannels[i]; - } - } - Log.d(TAG, "<<< FmRadioService.startScan: " + Arrays.toString(iChannels)); - return iChannels; - } - - /** - * Check FM Radio is in scan progress or not - * - * @return if in scan progress return true, otherwise return false. - */ - public boolean isScanning() { - return mIsScanning; - } - - /** - * Stop scan progress - * - * @return true if can stop scan, otherwise return false. - */ - public boolean stopScan() { - Log.d(TAG, ">>> FmRadioService.stopScan"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return false; - } - - boolean bRet = false; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - if (mIsNativeScanning || mIsNativeSeeking) { - mIsStopScanCalled = true; - Log.d(TAG, "native stop scan:start"); - bRet = FmRadioNative.stopScan(); - Log.d(TAG, "native stop scan:end --" + bRet); - } - Log.d(TAG, "<<< FmRadioService.stopScan: " + bRet); - return bRet; - } - - /** - * Check FM is in seek progress or not - * - * @return true if in seek progress, otherwise return false. - */ - public boolean isSeeking() { - return mIsNativeSeeking; - } - - /** - * Set RDS - * - * @param on true, enable RDS; false, disable RDS. - */ - public void setRdsAsync(boolean on) { - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SET_RDS_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, on); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SET_RDS_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private int setRds(boolean on) { - if (!mIsPowerUp) { - return -1; - } - Log.d(TAG, ">>> FmRadioService.setRDS: " + on); - int ret = -1; - if (isRdsSupported()) { - ret = FmRadioNative.setRds(on); - } - setPS(""); - setLRText(""); - Log.d(TAG, "<<< FmRadioService.setRDS: " + ret); - return ret; - } - - /** - * Get PS information - * - * @return PS information - */ - public String getPS() { - Log.d(TAG, "FmRadioService.getPS: " + mPSString); - return mPSString; - } - - /** - * Get RT information - * - * @return RT information - */ - public String getLRText() { - Log.d(TAG, "FmRadioService.getLRText: " + mLRTextString); - return mLRTextString; - } - - /** - * Get AF frequency - * - * @return AF frequency - */ - public void activeAFAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_ACTIVE_AF_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_ACTIVE_AF_FINISHED); - } - - private int activeAF() { - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - - int frequency = FmRadioNative.activeAf(); - Log.d(TAG, "FmRadioService.activeAF: " + frequency); - return frequency; - } - - /** - * Mute or unmute FM voice - * - * @param mute true for mute, false for unmute - * - * @return (true, success; false, failed) - */ - public void setMuteAsync(boolean mute) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SET_MUTE_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, mute); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SET_MUTE_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private int setMute(boolean mute) { - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - Log.d(TAG, ">>> FmRadioService.setMute: " + mute); - int iRet = FmRadioNative.setMute(mute); - Log.d(TAG, "<<< FmRadioService.setMute: " + iRet); - return iRet; - } - - /** - * Check whether RDS is support in driver - * - * @return (true, support; false, not support) - */ - public boolean isRdsSupported() { - boolean isRdsSupported = (FmRadioNative.isRdsSupport() == 1); - Log.d(TAG, "FmRadioService.isRdsSupported: " + isRdsSupported); - return isRdsSupported; - } - - /** - * Check whether speaker used or not - * - * @return true if use speaker, otherwise return false - */ - public boolean isSpeakerUsed() { - Log.d(TAG, "FmRadioService.isSpeakerUsed: " + mIsSpeakerUsed); - return mIsSpeakerUsed; - } - - /** - * Initial service and current station - * - * @param iCurrentStation current station frequency - */ - public void initService(int iCurrentStation) { - Log.d(TAG, "FmRadioService.initService: " + iCurrentStation); - mIsServiceInited = true; - mCurrentStation = iCurrentStation; - } - - /** - * Check service is initialed or not - * - * @return true if initialed, otherwise return false - */ - public boolean isServiceInited() { - Log.d(TAG, "FmRadioService.isServiceInit: " + mIsServiceInited); - return mIsServiceInited; - } - - /** - * Get FM service current station frequency - * - * @return Current station frequency - */ - public int getFrequency() { - Log.d(TAG, "FmRadioService.getFrequency: " + mCurrentStation); - return mCurrentStation; - } - - /** - * Set FM service station frequency - * - * @param station Current station - */ - public void setFrequency(int station) { - mCurrentStation = station; - } - - /** - * resume FM audio - */ - private void resumeFmAudio() { - Log.d(TAG, "FmRadioService.resumeFmAudio"); - // If not check mIsAudioFocusHeld && mIsPowerup, when scan canceled, - // this will be resume first, then execute power down. it will cause - // nosise. - if (mIsAudioFocusHeld && mIsPowerUp) { - enableFmAudio(true); - } - } - - /** - * Switch antenna There are two types of antenna(long and short) If long - * antenna(most is this type), must plug in earphone as antenna to receive - * FM. If short antenna, means there is a short antenna if phone already, - * can receive FM without earphone. - * - * @param antenna antenna (0, long antenna, 1 short antenna) - * - * @return (0, success; 1 failed; 2 not support) - */ - public void switchAntennaAsync(int antenna) { - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SWITCH_ANNTENNA); - - Bundle bundle = new Bundle(bundleSize); - bundle.putInt(FmRadioListener.SWITCH_ANNTENNA_VALUE, antenna); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SWITCH_ANNTENNA); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - /** - * Need native support whether antenna support interface. - * - * @param antenna antenna (0, long antenna, 1 short antenna) - * - * @return (0, success; 1 failed; 2 not support) - */ - private int switchAntenna(int antenna) { - Log.d(TAG, ">>> FmRadioService.switchAntenna:" + antenna); - // if fm not powerup, switchAntenna will flag whether has earphone - int ret = FmRadioNative.switchAntenna(antenna); - Log.d(TAG, "<<< FmRadioService.switchAntenna: " + ret); - return ret; - } - - /** - * Start recording - */ - public void startRecordingAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STARTRECORDING_FINISHED); - } - - private void startRecording() { - Log.d(TAG, ">>> startRecording"); - if (!mIsPowerUp) { - Log.d(TAG, "native is not power up: " + mIsPowerUp); - onRecorderError(FmRecorder.ERROR_RECORDER_INVALID_STATE); - return; - } - sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - Log.d(TAG, "default sd card file path: " + sRecordingSdcard); - if (sRecordingSdcard == null || sRecordingSdcard.isEmpty()) { - Log.d(TAG, "startRecording: may be no sdcard"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - return; - } - - if (mFmRecorder == null) { - mFmRecorder = new FmRecorder(); - mFmRecorder.registerRecorderStateListener(FmRadioService.this); - } - - if (isSdcardReady(sRecordingSdcard)) { - mFmRecorder.startRecording(getApplicationContext()); - } else { - Log.d(TAG, "Cannot record because sdcard is not ready!!"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - } - Log.d(TAG, "<<< startRecording"); - } - - private boolean isSdcardReady(String sdcardPath) { - Log.d(TAG, ">>> isSdcardReady: sdcardPath is " + sdcardPath + - ", mSdcardStateMap is " + mSdcardStateMap); - if (!mSdcardStateMap.isEmpty()) { - if (mSdcardStateMap.get(sdcardPath) != null && !mSdcardStateMap.get(sdcardPath)) { - Log.d(TAG, "<<< isSdcardReady: return false"); - return false; - } - } - Log.d(TAG, "<<< isSdcardReady: mSdcardStateMap:" + mSdcardStateMap); - return true; - } - - /** - * stop recording - */ - public void stopRecordingAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STOPRECORDING_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STOPRECORDING_FINISHED); - } - - private boolean stopRecording() { - Log.d(TAG, ">>> stopRecording"); - if (mFmRecorder == null) { - Log.e(TAG, "stopRecording called without a valid recorder!!"); - return false; - } - synchronized (mStopRecordingLock) { - mFmRecorder.stopRecording(); - Log.d(TAG, "<<< stopRecording"); - } - return true; - } - - /** - * Start play recording file - */ - public void startPlaybackAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - } - - private boolean startPlayback() { - Log.d(TAG, ">>> startPlayback"); - if (!requestAudioFocus()) { - Log.d(TAG, "can't get audio focus when play recording file"); - return false; - } - - if (mFmRecorder == null) { - Log.e(TAG, "FMRecorder is null !!"); - return false; - } - - // Set Mute before start playback - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - enableFmAudio(false); - - mFmRecorder.startPlayback(); - Log.d(TAG, "<<< startPlayback"); - return true; - } - - /** - * stop play recording file - */ - public void stopPlaybackAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - } - - private void stopPlayback() { - Log.d(TAG, ">>> stopPlayback"); - if (mFmRecorder != null) { - mFmRecorder.stopPlayback(); - checkAfterPlayback(); - } - Log.d(TAG, "<<< stopPlayback"); - } - - /** - * Save recording file according name or discard recording file if name is - * null - * - * @param newName New recording file name - */ - public void saveRecordingAsync(String newName) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SAVERECORDING_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putString(RECODING_FILE_NAME, newName); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SAVERECORDING_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private void saveRecording(String newName) { - Log.d(TAG, ">>> saveRecording"); - if (mFmRecorder != null) { - if (newName != null) { - mFmRecorder.saveRecording(FmRadioService.this, newName); - Log.d(TAG, "<<< saveRecording"); - return; - } - mFmRecorder.discardRecording(); - } - Log.d(TAG, "<<< saveRecording"); - } - - /** - * Get record time - * - * @return Record time - */ - public long getRecordTime() { - if (mFmRecorder != null) { - return mFmRecorder.recordTime(); - } - Log.e(TAG, "FMRecorder is null !!"); - return 0; - } - - /** - * Set recording mode - * - * @param isRecording true, enter recoding mode; false, exit recording mode - */ - public void setRecordingModeAsync(boolean isRecording) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_RECORD_MODE_CHANED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, isRecording); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_RECORD_MODE_CHANED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private void setRecordingMode(boolean isRecording) { - Log.d(TAG, ">>> setRecordingMode: isRecording=" + isRecording); - mIsInRecordingMode = isRecording; - if (mFmRecorder != null) { - if (!isRecording) { - if (mFmRecorder.getState() != FmRecorder.STATE_IDLE) { - mFmRecorder.stopRecording(); - mFmRecorder.stopPlayback(); - } - resumeFmAudio(); - setMute(false); - Log.d(TAG, "<<< setRecordingMode"); - return; - } - // reset recorder to unused status - mFmRecorder.resetRecorder(); - } - Log.d(TAG, "<<< setRecordingMode"); - } - - /** - * Get current recording mode - * - * @return if in recording mode return true, otherwise return false; - */ - public boolean getRecordingMode() { - return mIsInRecordingMode; - } - - /** - * Get record state - * - * @return record state - */ - public int getRecorderState() { - if (null != mFmRecorder) { - return mFmRecorder.getState(); - } - return FmRecorder.STATE_INVALID; - } - - /** - * Get recording file name - * - * @return recording file name - */ - public String getRecordingName() { - if (null != mFmRecorder) { - return mFmRecorder.getRecordingName(); - } - return null; - } - - /** - * Get current recording file name with full path - * - * @return The current recording file name or null - */ - public String getRecordingNameWithPath() { - if (null != mFmRecorder) { - return mFmRecorder.getRecordingNameWithPath(); - } - return null; - } - - @Override - public void onCreate() { - super.onCreate(); - Log.d(TAG, ">>> FmRadioService.onCreate"); - Log.d(TAG, "short antenna support:" + SHORT_ANNTENNA_SUPPORT); - mContext = getApplicationContext(); - mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); - PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); - mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); - mWakeLock.setReferenceCounted(false); - sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - - if (!initFmPlayer()) { - Log.e(TAG, "init FMPlayer failed"); - return; - } - - registerFmBroadcastReceiver(); - registerSdcardReceiver(); - - HandlerThread handlerThread = new HandlerThread("FmRadioServiceThread"); - handlerThread.start(); - mFmServiceHandler = new FmRadioServiceHandler(handlerThread.getLooper()); - - openDevice(); - // set speaker to default status, avoid setting->clear data. - setSpeakerPhoneOn(mIsSpeakerUsed); - Log.d(TAG, "<<< FmRadioService.onCreate"); - } - - private boolean initFmPlayer() { - mFmPlayer = new MediaPlayer(); - if (!FmRadioUtils.isFmSuspendSupport()) { - mFmPlayer.setWakeMode(FmRadioService.this, PowerManager.PARTIAL_WAKE_LOCK); - } - mFmPlayer.setOnErrorListener(mPlayerErrorListener); - try { - mFmPlayer.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - } catch (IOException ex) { - // notify the user why the file couldn't be opened - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalArgumentException ex) { - // notify the user why the file couldn't be opened - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (SecurityException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } - mFmPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - return true; - } - - private void registerFmBroadcastReceiver() { - IntentFilter filter = new IntentFilter(); - filter.addAction(SOUND_POWER_DOWN_MSG); - filter.addAction(Intent.ACTION_SHUTDOWN); - filter.addAction(Intent.ACTION_SCREEN_ON); - filter.addAction(Intent.ACTION_SCREEN_OFF); - filter.addAction(Intent.ACTION_HEADSET_PLUG); -/* Vanzo:tanglei on: Fri, 13 Mar 2015 21:22:01 +0800 - */ - //if (FeatureOption.VANZO_FEATURE_EARPHONE_KEY_ACTION) { - // filter.addAction("com.mediatek.FMRadio.FMRadioService.NEXT_STATION"); - //} -// End of Vanzo:tanglei - filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED); - filter.addAction(ACTION_TOFMSERVICE_POWERDOWN); - filter.addAction(ACTION_FROMATVSERVICE_POWERUP); - mBroadcastReceiver = new FmServiceBroadcastReceiver(); - Log.i(TAG, "Register broadcast receiver."); - registerReceiver(mBroadcastReceiver, filter); - } - - private void unregisterFmBroadcastReceiver() { - if (null != mBroadcastReceiver) { - Log.i(TAG, "Unregister broadcast receiver."); - unregisterReceiver(mBroadcastReceiver); - mBroadcastReceiver = null; - } - } - - @Override - public void onDestroy() { - Log.d(TAG, ">>> FmRadioService.onDestroy"); - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - // stop rds first, avoid blocking other native method - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - unregisterFmBroadcastReceiver(); - unregisterSdcardListener(); - abandonAudioFocus(); - exitFm(); - if (null != mFmRecorder) { - mFmRecorder = null; - } - super.onDestroy(); - } - - /** - * Exit FMRadio application - */ - private void exitFm() { - Log.d(TAG, "service.exitFm start"); - mIsAudioFocusHeld = false; - // Stop FM recorder if it is working - if (null != mFmRecorder) { - synchronized (mStopRecordingLock) { - int fmState = mFmRecorder.getState(); - if (FmRecorder.STATE_PLAYBACK == fmState) { - mFmRecorder.stopPlayback(); - Log.d(TAG, "Stop playback FMRecorder."); - } else if (FmRecorder.STATE_RECORDING == fmState) { - mFmRecorder.stopRecording(); - Log.d(TAG, "stop Recording."); - } - - // ALPS01789667 Add to DB if exit, there are two cases: - // case 1: FileManager play Music->FM receive short audio focus->Fm stop recording - // -> FM receive SOUND_POWER_DOWN_MSG->Come here but is IDLE status - // case 2: Music play a song->FM receive long audio focus->Come here is RECORDING - mFmRecorder.addCurrentRecordingToDb(mContext); - } - } - - // When exit, we set the audio path back to earphone. - if (mIsNativeScanning || mIsNativeSeeking) { - stopScan(); - } - - mFmServiceHandler.removeCallbacksAndMessages(null); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_FM_EXIT); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_FM_EXIT); - Log.d(TAG, "service.exitFm end"); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - // Change the notification string. - if (mIsPowerUp) { - showNotification(); - } - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - Log.d(TAG, ">>> FmRadioService.onStartCommand intent: " + intent + " startId: " + startId); - int ret = super.onStartCommand(intent, flags, startId); - Log.d(TAG, "<<< FmRadioService.onStartCommand: " + ret); - return START_NOT_STICKY; - } - - /** - * Start RDS thread to update RDS information - */ - private void startRdsThread() { - Log.d(TAG, ">>> FmRadioService.startRdSThread"); - mIsRdsThreadExit = false; - if (null != mRdsThread) { - return; - } - mRdsThread = new Thread() { - public void run() { - Log.d(TAG, ">>> RDS Thread run()"); - while (true) { - if (mIsRdsThreadExit) { - break; - } - - int iRdsEvents = FmRadioNative.readRds(); - if (iRdsEvents != 0) { - Log.d(TAG, "FmRadioNative.readrds events: " + iRdsEvents); - } - - if (RDS_EVENT_PROGRAMNAME == (RDS_EVENT_PROGRAMNAME & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_PROGRAMNAME"); - byte[] bytePS = FmRadioNative.getPs(); - if (null != bytePS) { - setPS(new String(bytePS).trim()); - } - } - - if (RDS_EVENT_LAST_RADIOTEXT == (RDS_EVENT_LAST_RADIOTEXT & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_LAST_RADIOTEXT"); - byte[] byteLRText = FmRadioNative.getLrText(); - if (null != byteLRText) { - setLRText(new String(byteLRText).trim()); - } - } - - if (RDS_EVENT_AF == (RDS_EVENT_AF & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_AF"); - /* - * add for rds AF - */ - if (mIsScanning || mIsSeeking) { - Log.d(TAG, "RDSThread. seek or scan going, no need to tune here"); - } else if (!mIsPowerUp) { - Log.d(TAG, "RDSThread. fm is power down, do nothing."); - } else { - int iFreq = FmRadioNative.activeAf(); - if (FmRadioUtils.isValidStation(iFreq)) { - // if the new frequency is not equal to current - // frequency. - if (mCurrentStation == iFreq) { - Log.w(TAG, "RDSThread. the new freq is the same as current."); - } else { - setPS(""); - setLRText(""); - if (!mIsScanning && !mIsSeeking) { - Log.d(TAG, "RDSThread. seek or scan not going," + - "need to tune here"); - tuneStationAsync(FmRadioUtils.computeFrequency(iFreq)); - } - } - } - } - } - // Do not handle other events. - // Sleep 500ms to reduce inquiry frequency - try { - final int hundredMillisecond = 500; - Thread.sleep(hundredMillisecond); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - Log.d(TAG, "<<< RDS Thread run()"); - } - }; - - Log.d(TAG, "Start RDS Thread."); - mRdsThread.start(); - Log.d(TAG, "<<< FmRadioService.startRdSThread"); - } - - /** - * Stop RDS thread to stop listen station RDS change - */ - private void stopRdsThread() { - Log.d(TAG, ">>> FmRadioService.stopRdSThread"); - if (null != mRdsThread) { - // Must call closedev after stopRDSThread. - mIsRdsThreadExit = true; - mRdsThread = null; - } - Log.d(TAG, "<<< FmRadioService.stopRdSThread"); - } - - /** - * Set PS information - * - * @param ps The ps information - */ - private void setPS(String ps) { - Log.d(TAG, "FmRadioService.setPS: " + ps + " ,current: " + mPSString); - if (0 != mPSString.compareTo(ps)) { - mPSString = ps; - Bundle bundle = new Bundle(3); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_PS_CHANGED); - bundle.putString(FmRadioListener.KEY_PS_INFO, mPSString); - bundle.putString(FmRadioListener.KEY_RT_INFO, mLRTextString); - notifyActivityStateChanged(bundle); - } // else New PS is the same as current - } - - /** - * Set RT information - * - * @param lrtText The RT information - */ - private void setLRText(String lrtText) { - Log.d(TAG, "FmRadioService.setLRText: " + lrtText + " ,current: " + mLRTextString); - if (0 != mLRTextString.compareTo(lrtText)) { - mLRTextString = lrtText; - Bundle bundle = new Bundle(3); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RT_CHANGED); - bundle.putString(FmRadioListener.KEY_PS_INFO, mPSString); - bundle.putString(FmRadioListener.KEY_RT_INFO, mLRTextString); - notifyActivityStateChanged(bundle); - } // else New RT is the same as current - } - - /** - * Open or close FM Radio audio - * - * @param enable true, open FM audio; false, close FM audio; - */ - private void enableFmAudio(boolean enable) { - Log.d(TAG, ">>> FmRadioService.enableFmAudio: " + enable); - if ((mFmPlayer == null) || !mIsPowerUp) { - Log.w(TAG, "mFMPlayer is null in Service.enableFmAudio"); - return; - } - - try { - if (!enable) { - if (!mFmPlayer.isPlaying()) { - Log.d(TAG, "warning: FM audio is already disabled."); - return; - } - - Log.d(TAG, "call MediaPlayer.stop()"); - mFmPlayer.stop(); - Log.d(TAG, "stop FM audio."); - return; - } - - if (mFmPlayer.isPlaying()) { - Log.d(TAG, "warning: FM audio is already enabled."); - return; - } - } catch (IllegalStateException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer isPlaying.", e); - } - - try { - mFmPlayer.prepare(); - //if (FmRadioUtils.isFmSuspendSupport()) { - // Log.d(TAG, "support FM suspend"); - // mFmPlayer.startWithoutWakelock(); - //} else { - mFmPlayer.start(); - //} - } catch (IOException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare.", e); - } catch (IllegalStateException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare.", e); - } - - Log.d(TAG, "Start FM audio."); - Log.d(TAG, "<<< FmRadioService.enableFmAudio"); - } - - /** - * Show notification - */ - private void showNotification() { - Log.d(TAG, "FmRadioService.showNotification"); - Intent notificationIntent = new Intent(); - notificationIntent.setClassName(getPackageName(), FmRadioActivity.class.getName()); - PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), - 0, notificationIntent, 0); - Notification notification = new Notification(R.drawable.fm_title_icon, null, - System.currentTimeMillis()); - notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR; - String fmUnit = mContext.getString(R.string.fm_unit); - String text = FmRadioUtils.formatStation(mCurrentStation) + " " + fmUnit; - notification.setLatestEventInfo(getApplicationContext(), - getResources().getString(R.string.app_name), text, pendingIntent); - Log.d(TAG, "Add notification to the title bar."); - startForeground(NOTIFICATION_ID, notification); - } - - /** - * Remove notification - */ - private void removeNotification() { - Log.d(TAG, "FmRadioService.removeNotification"); - stopForeground(true); - } - - /** - * Update notification - */ - private void updateNotification() { - Log.d(TAG, "FmRadioService.updateNotification"); - if (mIsPowerUp) { - showNotification(); - } - } - - /** - * Register sdcard listener for record - */ - private void registerSdcardReceiver() { - Log.v(TAG, "registerSdcardReceiver >>> "); - if (mSdcardListener == null) { - mSdcardListener = new SdcardListener(); - } - IntentFilter filter = new IntentFilter(); - filter.addDataScheme("file"); - filter.addAction(Intent.ACTION_MEDIA_MOUNTED); - filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); - filter.addAction(Intent.ACTION_MEDIA_EJECT); - registerReceiver(mSdcardListener, filter); - Log.v(TAG, "registerSdcardReceiver <<< "); - } - - private void unregisterSdcardListener() { - if (null != mSdcardListener) { - unregisterReceiver(mSdcardListener); - } - } - - private void updateSdcardStateMap(Intent intent) { - String action = intent.getAction(); - String sdcardPath = null; - Uri mountPointUri = intent.getData(); - if (mountPointUri != null) { - sdcardPath = mountPointUri.getPath(); - if (sdcardPath != null) { - if (Intent.ACTION_MEDIA_EJECT.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: ENJECT " + sdcardPath); - mSdcardStateMap.put(sdcardPath, false); - } else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: UNMOUNTED " + sdcardPath); - mSdcardStateMap.put(sdcardPath, false); - } else if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: MOUNTED " + sdcardPath); - mSdcardStateMap.put(sdcardPath, true); - } - } - } - } - - /** - * Notify FM recorder state - * - * @param state The current FM recorder state - */ - @Override - public void onRecorderStateChanged(int state) { - Log.d(TAG, "onRecorderStateChanged: " + state); - mRecordState = state; - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RECORDSTATE_CHANGED); - bundle.putInt(FmRadioListener.KEY_RECORDING_STATE, state); - notifyActivityStateChanged(bundle); - } - - /** - * Notify FM recorder error message - * - * @param error The recorder error type - */ - @Override - public void onRecorderError(int error) { - Log.d(TAG, "onRecorderError: " + error); - // if media server die, will not enable FM audio, and convert to - // ERROR_PLAYER_INATERNAL, call back to activity showing toast. - mRecorderErrorType = (MediaPlayer.MEDIA_ERROR_SERVER_DIED == error) ? - FmRecorder.ERROR_PLAYER_INTERNAL : error; - - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RECORDERROR); - bundle.putInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE, mRecorderErrorType); - notifyActivityStateChanged(bundle); - - // if media server die, should not enable fm, otherwise je will occur. - if (FmRecorder.ERROR_PLAYER_INTERNAL == error) { - resumeFmAudio(); - } - } - - /** - * Notify play FM record file complete - */ - @Override - public void onPlayRecordFileComplete() { - Log.d(TAG, "service.onPlayRecordFileComplete"); - checkAfterPlayback(); - } - - /** - * Check and go next(play or show tips) after recorder file play - * back finish. - * Two cases: - * 1. With headset or support short antenna -> play FM - * 2. Without headset -> show plug in earphone tips - */ - private void checkAfterPlayback() { - if (isHeadSetIn() || SHORT_ANNTENNA_SUPPORT) { - // with headset - Log.d(TAG, "checkAfterPlayback:eaphone is in,need resume fm"); - if (mIsPowerUp) { - resumeFmAudio(); - setMute(false); - } else { - powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - } - } else { - // without headset need show plug in earphone tips - Log.d(TAG, "checkAfterPlayback:earphone is out, need show plug in earphone tips"); - switchAntennaAsync(mValueHeadSetPlug); - } - } - - /** - * Check the headset is plug in or plug out - * - * @return true for plug in; false for plug out - */ - private boolean isHeadSetIn() { - return (0 == mValueHeadSetPlug); - } - - private void stopFmFocusLoss(int focusState) { - mIsAudioFocusHeld = false; - if (mIsNativeScanning || mIsNativeSeeking) { - // make stop scan from activity call to service. - // notifyActivityStateChanged(FMRadioListener.LISTEN_SCAN_CANCELED); - stopScan(); - Log.d(TAG, "need to stop FM, so stop scan channel."); - } - - // using handler thread to update audio focus state - updateAudioFocusAync(focusState); - Log.d(TAG, "need to stop FM, so powerdown FM."); - - } - - /** - * Handle FM Player error - */ - private final MediaPlayer.OnErrorListener mPlayerErrorListener = - new MediaPlayer.OnErrorListener() { - /** - * handle error message - * - * @param mp occurred error media player - * @param what error message - * @param extra error message extra - * - * @return handle error message or not - */ - public boolean onError(MediaPlayer mp, int what, int extra) { - - if (MediaPlayer.MEDIA_ERROR_SERVER_DIED == what) { - Log.d(TAG, "onError: MEDIA_SERVER_DIED"); - if (null != mFmPlayer) { - mFmPlayer.release(); - mFmPlayer = null; - } - mFmPlayer = new MediaPlayer(); - if (!FmRadioUtils.isFmSuspendSupport()) { - mFmPlayer.setWakeMode(FmRadioService.this, PowerManager.PARTIAL_WAKE_LOCK); - } - mFmPlayer.setOnErrorListener(mPlayerErrorListener); - try { - mFmPlayer.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - mFmPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - if (mIsPowerUp) { - // set speaker mode according to AP - setSpeakerPhoneOn(mIsSpeakerUsed); - mFmPlayer.prepare(); - //if (FmRadioUtils.isFmSuspendSupport()) { - // Log.d(TAG, "support FM suspend"); - // mFmPlayer.startWithoutWakelock(); - //} else { - mFmPlayer.start(); - //} - } - } catch (IOException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalArgumentException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } - } - - return true; - } - }; - - /** - * Request audio focus - * - * @return true, success; false, fail; - */ - public boolean requestAudioFocus() { - if (mIsAudioFocusHeld) { - return true; - } - - int audioFocus = mAudioManager.requestAudioFocus(mAudioFocusChangeListener, - AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); - mIsAudioFocusHeld = (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioFocus); - return mIsAudioFocusHeld; - } - - /** - * Abandon audio focus - */ - public void abandonAudioFocus() { - mAudioManager.abandonAudioFocus(mAudioFocusChangeListener); - mIsAudioFocusHeld = false; - } - - /** - * Use to interact with other voice related app - */ - private final OnAudioFocusChangeListener mAudioFocusChangeListener = - new OnAudioFocusChangeListener() { - /** - * Handle audio focus change ensure message FIFO - * - * @param focusChange audio focus change state - */ - @Override - public void onAudioFocusChange(int focusChange) { - Log.d(TAG, "onAudioFocusChange: " + focusChange); - switch (focusChange) { - case AudioManager.AUDIOFOCUS_LOSS: - synchronized (this) { - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_LOSS"); - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - Log.d(TAG, "onAudioFocusChange.setParameters end"); - exitFm(); - stopSelf(); - } - break; - - case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - synchronized (this) { - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT"); - stopFmFocusLoss(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - } - break; - - case AudioManager.AUDIOFOCUS_GAIN: - synchronized (this) { - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_GAIN"); - updateAudioFocusAync(AudioManager.AUDIOFOCUS_GAIN); - } - break; - - default: - Log.d(TAG, "AudioFocus: Audio focus change, but not need handle"); - break; - } - } - }; - - /** - * Audio focus changed, will send message to handler thread. synchronized to - * ensure one message can go in this method. - * - * @param focusState AudioManager state - */ - private synchronized void updateAudioFocusAync(int focusState) { - Log.d(TAG, "updateAudioFocusAync: focusState = " + focusState); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putInt(FmRadioListener.KEY_AUDIOFOCUS_CHANGED, focusState); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_AUDIOFOCUS_CHANGED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - /** - * Audio focus changed, update FM focus state. - * - * @param focusState AudioManager state - */ - private void updateAudioFocus(int focusState) { - Log.d(TAG, "FmRadioService.updateAudioFocus"); - switch (focusState) { - case AudioManager.AUDIOFOCUS_LOSS: - mPausedByTransientLossOfFocus = false; - // play back audio will output with music audio - // May be affect other recorder app, but the flow can not be - // execute earlier, - // It should ensure execute after start/stop record. - if (mFmRecorder != null) { - int fmState = mFmRecorder.getState(); - Log.d(TAG, "stopFMFocusLoss.recorder state=" + fmState); - // only handle recorder state, not handle playback state - if (fmState == FmRecorder.STATE_RECORDING) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPRECORDING_FINISHED); - stopRecording(); - } - } - handlePowerDown(); - break; - - case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - if (mIsPowerUp) { - mPausedByTransientLossOfFocus = true; - } - Log.d(TAG, "AUDIOFOCUS_LOSS_TRANSIENT: mPausedByTransientLossOfFocus:" + - mPausedByTransientLossOfFocus); - // play back audio will output with music audio - // May be affect other recorder app, but the flow can not be - // execute earlier, - // It should ensure execute after start/stop record. - if (mFmRecorder != null) { - int fmState = mFmRecorder.getState(); - Log.d(TAG, "stopFMFocusLoss.recorder state=" + fmState); - if (fmState == FmRecorder.STATE_RECORDING) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPRECORDING_FINISHED); - stopRecording(); - } - if (fmState == FmRecorder.STATE_PLAYBACK) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - stopPlayback(); - } - } - handlePowerDown(); - break; - - case AudioManager.AUDIOFOCUS_GAIN: - Log.d(TAG, "AUDIOFOCUS_GAIN: mPausedByTransientLossOfFocus:" + - mPausedByTransientLossOfFocus); - if (!mIsPowerUp && mPausedByTransientLossOfFocus) { - mIsPowerUping = true; - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, FmRadioUtils.computeFrequency(mCurrentStation)); - handlePowerUp(bundle); - } - break; - - default: - break; - } - } - - /** - * FM Radio listener record - */ - private static class Record { - int mHashCode; // hash code - FmRadioListener mCallback; // call back - } - - /** - * Register FM Radio listener, activity get service state should call this - * method register FM Radio listener - * - * @param callback FM Radio listener - */ - public void registerFmRadioListener(FmRadioListener callback) { - synchronized (mRecords) { - // register callback in AudioProfileService, if the callback is - // exist, just replace the event. - Record record = null; - int hashCode = callback.hashCode(); - final int n = mRecords.size(); - for (int i = 0; i < n; i++) { - record = mRecords.get(i); - if (hashCode == record.mHashCode) { - return; - } - } - record = new Record(); - record.mHashCode = hashCode; - record.mCallback = callback; - mRecords.add(record); - } - } - - /** - * Call back from service to activity - * - * @param bundle The message to activity - */ - private void notifyActivityStateChanged(Bundle bundle) { - if (!mRecords.isEmpty()) { - Log.d(TAG, "notifyActivityStatusChanged:clients = " + mRecords.size()); - synchronized (mRecords) { - Iterator<Record> iterator = mRecords.iterator(); - while (iterator.hasNext()) { - Record record = (Record) iterator.next(); - - FmRadioListener listener = record.mCallback; - - if (listener == null) { - iterator.remove(); - return; - } - - listener.onCallBack(bundle); - } - } - } - } - - /** - * Unregister FM Radio listener - * - * @param callback FM Radio listener - */ - public void unregisterFmRadioListener(FmRadioListener callback) { - remove(callback.hashCode()); - } - - /** - * Remove call back according hash code - * - * @param hashCode The call back hash code - */ - private void remove(int hashCode) { - synchronized (mRecords) { - Iterator<Record> iterator = mRecords.iterator(); - while (iterator.hasNext()) { - Record record = (Record) iterator.next(); - if (record.mHashCode == hashCode) { - iterator.remove(); - } - } - } - } - - /** - * Check recording sd card is unmount - * - * @param intent The unmount sd card intent - * - * @return true or false indicate whether current recording sd card is - * unmount or not - */ - public boolean isRecordingCardUnmount(Intent intent) { - String unmountSDCard = intent.getData().toString(); - Log.d(TAG, "unmount sd card file path: " + unmountSDCard); - return unmountSDCard.equalsIgnoreCase("file://" + sRecordingSdcard) ? true : false; - } - - private int[] insertSearchedStation(int[] channels) { - Log.d(TAG, "insertSearchedStation.firstValidChannel:" + Arrays.toString(channels)); - int firstValidChannel = mCurrentStation; - int channelNum = 0; - if (null != channels) { - Arrays.sort(channels); - int size = channels.length; - // Save searched stations into database by batch - ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); - String defaultStationName = getString(R.string.default_station_name); - for (int i = 0; i < size; i++) { - if (FmRadioUtils.isValidStation(channels[i])) { - if (0 == channelNum) { - firstValidChannel = channels[i]; - } - - if (!FmRadioStation.isFavoriteStation(mContext, channels[i])) { - ops.add(ContentProviderOperation.newInsert(Station.CONTENT_URI) - .withValue(Station.COLUMN_STATION_NAME, defaultStationName) - .withValue(Station.COLUMN_STATION_FREQ, channels[i]) - .withValue(Station.COLUMN_STATION_TYPE, - FmRadioStation.STATION_TYPE_SEARCHED) - .build()); - } - channelNum++; - } - } - // Save search stations to database by batch - try { - mContext.getContentResolver().applyBatch(FmRadioStation.AUTHORITY, ops); - } catch (RemoteException e) { - Log.d(TAG, "Exception when applyBatch searched stations " + e); - } catch (OperationApplicationException e) { - Log.d(TAG, "Exception when applyBatch searched stations " + e); - } - } - Log.d(TAG, "insertSearchedStation.firstValidChannel:" + firstValidChannel + - ",channelNum:" + channelNum); - return (new int[] { - firstValidChannel, channelNum - }); - } - - /** - * The background handler - */ - class FmRadioServiceHandler extends Handler { - public FmRadioServiceHandler(Looper looper) { - super(looper); - } - - @Override - public void handleMessage(Message msg) { - Bundle bundle; - boolean isPowerup = false; - boolean isSwitch = true; - - switch (msg.what) { - - // power up - case FmRadioListener.MSGID_POWERUP_FINISHED: - bundle = msg.getData(); - handlePowerUp(bundle); - break; - - // power down - case FmRadioListener.MSGID_POWERDOWN_FINISHED: - handlePowerDown(); - break; - - // fm exit - case FmRadioListener.MSGID_FM_EXIT: - if (mIsSpeakerUsed) { - setSpeakerPhoneOn(false); - } - powerDown(); - closeDevice(); - // Release FM player upon exit - if (null != mFmPlayer) { - mFmPlayer.release(); - mFmPlayer = null; - } - - bundle = new Bundle(1); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_FM_EXIT); - notifyActivityStateChanged(bundle); - // Finish favorite when exit FM - if (sExitListener != null) { - sExitListener.onExit(); - } - break; - - // switch antenna - case FmRadioListener.MSGID_SWITCH_ANNTENNA: - bundle = msg.getData(); - int value = bundle.getInt(FmRadioListener.SWITCH_ANNTENNA_VALUE); - - // if not support short antenna, just notify, not need to switch antenna. - if (SHORT_ANNTENNA_SUPPORT) { - isSwitch = (switchAntenna(value) == 0) ? true : false; - Log.d(TAG, "FmServiceHandler.switch anntenna:isSwitch:" + isSwitch); - } else { - // if ear phone insert, need dismiss plugin earphone - // dialog - // if earphone plug out and it is not play recorder - // state, show plug dialog. - if (0 == value) { - Log.d(TAG, "FmServiceHandler.switch anntenna:dismiss dialog"); - // powerUpAsync(FMRadioUtils.computeFrequency(mCurrentStation)); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, true); - notifyActivityStateChanged(bundle); - } else { - // ear phone plug out, and recorder state is not - // play recorder state, - // show dialog. - if (mRecordState != FmRecorder.STATE_PLAYBACK) { - Log.d(TAG, "FmServiceHandler.switch anntenna:show dialog"); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, false); - notifyActivityStateChanged(bundle); - } - } - } - break; - - // tune to station - case FmRadioListener.MSGID_TUNE_FINISHED: - bundle = msg.getData(); - float tuneStation = bundle.getFloat(FM_FREQUENCY); - boolean isTune = tuneStation(tuneStation); - // if tune fail, pass current station to update ui - if (!isTune) { - tuneStation = FmRadioUtils.computeFrequency(mCurrentStation); - } - bundle = new Bundle(4); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_TUNE_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_TUNE, isTune); - bundle.putFloat(FmRadioListener.KEY_TUNE_TO_STATION, tuneStation); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_UP, mIsPowerUp); - notifyActivityStateChanged(bundle); - break; - - // seek to station - case FmRadioListener.MSGID_SEEK_FINISHED: - bundle = msg.getData(); - mIsSeeking = true; - float seekStation = seekStation(bundle.getFloat(FM_FREQUENCY), - bundle.getBoolean(OPTION)); - boolean isSeekTune = false; - int station = FmRadioUtils.computeStation(seekStation); - if (FmRadioUtils.isValidStation(station)) { - isSeekTune = tuneStation(seekStation); - } - // if tune fail, pass current station to update ui - if (!isSeekTune) { - seekStation = FmRadioUtils.computeFrequency(mCurrentStation); - } - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_TUNE_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_TUNE, isSeekTune); - bundle.putFloat(FmRadioListener.KEY_TUNE_TO_STATION, seekStation); - notifyActivityStateChanged(bundle); - mIsSeeking = false; - break; - - // start scan - case FmRadioListener.MSGID_SCAN_FINISHED: - int[] channels = null; - int[] result = null; - int scanTuneStation = 0; - boolean isScan = true; - mIsScanning = true; - if (powerUpFm(FmRadioUtils.DEFAULT_STATION_FLOAT)) { - channels = startScan(); - } - - // check whether cancel scan - if ((null != channels) && channels[0] == -100) { - Log.d(TAG, "user canceled scan:channels[0]=" + channels[0]); - isScan = false; - result = new int[] { - -1, 0 - }; - } else { - result = insertSearchedStation(channels); - scanTuneStation = result[0]; - isTune = tuneStation(FmRadioUtils.computeFrequency(scanTuneStation)); - scanTuneStation = isTune ? scanTuneStation : mCurrentStation; - } - - /* - * if there is stop command when scan, so it needs to mute - * fm avoid fm sound come out. - */ - if (mIsAudioFocusHeld) { - Log.d(TAG, "there is not power down command.set mute false"); - setMute(false); - } - bundle = new Bundle(4); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SCAN_FINISHED); - bundle.putInt(FmRadioListener.KEY_TUNE_TO_STATION, scanTuneStation); - bundle.putInt(FmRadioListener.KEY_STATION_NUM, result[1]); - bundle.putBoolean(FmRadioListener.KEY_IS_SCAN, isScan); - notifyActivityStateChanged(bundle); - mIsScanning = false; - break; - - // audio focus changed - case FmRadioListener.MSGID_AUDIOFOCUS_CHANGED: - bundle = msg.getData(); - int focusState = bundle.getInt(FmRadioListener.KEY_AUDIOFOCUS_CHANGED); - updateAudioFocus(focusState); - break; - - case FmRadioListener.MSGID_SET_RDS_FINISHED: - bundle = msg.getData(); - setRds(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_SET_MUTE_FINISHED: - bundle = msg.getData(); - setMute(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_ACTIVE_AF_FINISHED: - activeAF(); - break; - - /********** recording **********/ - case FmRadioListener.MSGID_STARTRECORDING_FINISHED: - startRecording(); - break; - - case FmRadioListener.MSGID_STOPRECORDING_FINISHED: - stopRecording(); - break; - - case FmRadioListener.MSGID_STARTPLAYBACK_FINISHED: - boolean isStart = startPlayback(); - // Can not start play back, call back to activity. - if (!isStart) { - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_RECORDERROR); - bundle.putInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE, - FmRadioListener.NOT_AUDIO_FOCUS); - notifyActivityStateChanged(bundle); - } - break; - - case FmRadioListener.MSGID_STOPPLAYBACK_FINISHED: - stopPlayback(); - break; - - case FmRadioListener.MSGID_RECORD_MODE_CHANED: - bundle = msg.getData(); - setRecordingMode(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_SAVERECORDING_FINISHED: - bundle = msg.getData(); - saveRecording(bundle.getString(RECODING_FILE_NAME)); - break; - - default: - break; - } - } - - } - - /** - * handle power down, execute power down and call back to activity. - */ - private void handlePowerDown() { - Bundle bundle; - boolean isPowerdown = powerDown(); - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_POWERDOWN_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_DOWN, isPowerdown); - notifyActivityStateChanged(bundle); - } - - /** - * handle power up, execute power up and call back to activity. - * - * @param bundle power up frequency - */ - private void handlePowerUp(Bundle bundle) { - boolean isPowerup = false; - boolean isSwitch = true; - Log.d(TAG, "service handler power up start"); - float curFrequency = bundle.getFloat(FM_FREQUENCY); - - if (!SHORT_ANNTENNA_SUPPORT && !isAntennaAvailable()) { - Log.d(TAG, "call back to activity, earphone is not ready"); - mIsPowerUping = false; - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, false); - notifyActivityStateChanged(bundle); - return; - } - - if (powerUpFm(curFrequency)) { - isPowerup = startPlayFm(curFrequency); - mPausedByTransientLossOfFocus = false; - } - mIsPowerUping = false; - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_POWERUP_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_UP, isPowerup); - notifyActivityStateChanged(bundle); - Log.d(TAG, "service handler power up end"); - } - - /** - * check FM is foreground or background - */ - public boolean isActivityForeground() { - boolean isForeground = true; - List<RunningAppProcessInfo> appProcessInfos = mActivityManager.getRunningAppProcesses(); - for (RunningAppProcessInfo appProcessInfo : appProcessInfos) { - if (appProcessInfo.processName.equals(mContext.getPackageName())) { - int importance = appProcessInfo.importance; - Log.d(TAG, "isActivityForeground importance:" + importance); - if (importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND || - importance == RunningAppProcessInfo.IMPORTANCE_VISIBLE) { - Log.d(TAG, "isActivityForeground is foreground"); - isForeground = true; - } else { - Log.d(TAG, "isActivityForeground is background"); - isForeground = false; - } - break; - } - } - Log.d(TAG, "isActivityForeground return " + isForeground); - return isForeground; - } - - /** - * Check if current is lock task mode. If in this mode, AMS will cannot destory - * FmRadioActivity even call finish() - * Settings->Security->Screen pinning on - * @return true if current screen pinning on FmRadioActivity - */ - public boolean isInLockTaskMode() { - Log.d(TAG, "isInLockTaskMode:" + mActivityManager.isInLockTaskMode()); - return mActivityManager.isInLockTaskMode(); - } - - /** - * Get the recording sdcard path when staring record - * - * @return sdcard path like "/storage/sdcard0" - */ - public static String getRecordingSdcard() { - return sRecordingSdcard; - } - - /** - * The listener interface for exit - */ - public interface OnExitListener { - /** - * When Service finish, should notify FmRadioFavorite to finish - */ - void onExit(); - } - - /** - * Register the listener for exit - * - * @param listener The listener want to know the exit event - */ - public static void registerExitListener(OnExitListener listener) { - sExitListener = listener; - } - - /** - * Unregister the listener for exit - * - * @param listener The listener want to know the exit event - */ - public static void unregisterExitListener(OnExitListener listener) { - sExitListener = null; - } - - /** - * Get the latest recording name the show name in save dialog but saved in - * service - * - * @return The latest recording name or null for not modified - */ - public String getModifiedRecordingName() { - Log.d(TAG, "getRecordingNameInDialog:" + mModifiedRecordingName); - return mModifiedRecordingName; - } - - /** - * Set the latest recording name if modify the default name - * - * @param name The latest recording name or null for not modified - */ - public void setModifiedRecordingName(String name) { - Log.d(TAG, "setRecordingNameInDialog:" + name); - mModifiedRecordingName = name; - } - - /** - * When FmRadioActivity.onStop() set true, FmRadioActivity.onResume() set false; - * @param stop - */ - public static void setActivityIsOnStop(boolean stop) { - sActivityIsOnStop = stop; - } - - /** - * Check current is in call/ringtone or not - * @return true if is not call mode. false mean is in call or ringtone - */ - public boolean isModeNormal() { - int mode = mAudioManager.getMode(); - Log.d(TAG, "isInCall mode:" + mode); - return mode == AudioManager.MODE_NORMAL; - } - - // FM Radio EM start - /** - * Inquiry if fm stereo mono(true, stereo; false mono) - * - * @return (true, stereo; false, mono) - */ - public boolean getStereoMono() { - Log.d(TAG, "FMRadioService.getStereoMono"); - return FmRadioNative.stereoMono(); - } - - /** - * Force set to stero/mono mode - * - * @param isMono - * (true, mono; false, stereo) - * @return (true, success; false, failed) - */ - public boolean setStereoMono(boolean isMono) { - Log.d(TAG, "FMRadioService.setStereoMono: isMono=" + isMono); - return FmRadioNative.setStereoMono(isMono); - } - - /** - * set RSSI, desense RSSI, mute gain soft - * @param index flag which will execute - * (0:rssi threshold,1:desense rssi threshold,2: SGM threshold) - * @param value send to native - * @return execute ok or not - */ - public boolean setEmth(int index, int value) { - Log.d(TAG, ">>> FMRadioService.setEmth: index=" + index + ",value=" + value); - boolean isOk = FmRadioNative.emsetth(index, value); - Log.d(TAG, "<<< FMRadioService.setEmth: isOk=" + isOk); - return isOk; - } - - /** - * send variables to native, and get some variables return. - * @param val send to native - * @return get value from native - */ - public short[] emcmd(short[] val) { - Log.d(TAG, ">>FMRadioService.emcmd: val=" + val); - short[] shortCmds = null; - shortCmds = FmRadioNative.emcmd(val); - Log.d(TAG, "<<FMRadioService.emcmd:" + shortCmds); - return shortCmds; - } - - /** - * Get hardware version not need async - */ - public int[] getHardwareVersion() { - return FmRadioNative.getHardwareVersion(); - } - - /** - * Read cap array method not need async - */ - public int getCapArray() { - Log.d(TAG, "FMRadioService.readCapArray"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readCapArray(); - } - - /** - * Get rssi not need async - */ - public int getRssi() { - Log.d(TAG, "FMRadioService.readRssi"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readRssi(); - } - - /** - * read rds bler not need async - */ - public int getRdsBler() { - Log.d(TAG, "FMRadioService.readRdsBler"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readRdsBler(); - } - // FM Radio EM end - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java~ b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java~ deleted file mode 100755 index 41a794f..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java~ +++ /dev/null @@ -1,2802 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.ActivityManager; -import android.app.ActivityManager.RunningAppProcessInfo; -import android.app.Notification; -import android.app.PendingIntent; -import android.app.Service; -import android.bluetooth.BluetoothA2dp; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothProfile; -import android.content.BroadcastReceiver; -import android.content.ContentProviderOperation; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.OperationApplicationException; -import android.content.res.Configuration; -import android.media.AudioManager; -import android.media.AudioManager.OnAudioFocusChangeListener; -import android.media.AudioSystem; -import android.media.MediaPlayer; -import android.net.Uri; -import android.os.Binder; -import android.os.Bundle; -import android.os.Handler; -import android.os.HandlerThread; -import android.os.IBinder; -import android.os.Looper; -import android.os.Message; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.os.RemoteException; -import android.util.Log; - -import com.mediatek.fmradio.FmRadioStation.Station; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -/* Vanzo:tanglei on: Sat, 14 Mar 2015 11:51:16 +0800 - */ -//import com.android.featureoption.FeatureOption; -// End of Vanzo:tanglei - -/** - * Background service to control FM or do background tasks. - */ -public class FmRadioService extends Service implements FmRecorder.OnRecorderStateChangedListener { - // Logging - private static final String TAG = "FmRx/Service"; - - // Broadcast messages from clients to FM service. - public static final String ACTION_TOFMSERVICE_POWERDOWN - = "com.mediatek.FMRadio.FMRadioService.ACTION_TOFMSERVICE_POWERDOWN"; - // Broadcast messages to FM Tx service. - public static final String ACTION_TOFMTXSERVICE_POWERDOWN - = "com.mediatek.FMTransmitter.FMTransmitterService.ACTION_TOFMTXSERVICE_POWERDOWN"; - // Broadcast messages to mATV service. - public static final String ACTION_TOATVSERVICE_POWERDOWN - = "com.mediatek.app.mtv.ACTION_REQUEST_SHUTDOWN"; - // Broadcast messages to music service. - public static final String ACTION_TOMUSICSERVICE_POWERDOWN - = "com.android.music.musicservicecommand.pause"; - // Broadcast messages from mATV service. - public static final String ACTION_FROMATVSERVICE_POWERUP = "com.mediatek.app.mtv.POWER_ON"; - - // Broadcast messages from other sounder APP to FM service - private static final String SOUND_POWER_DOWN_MSG = "com.android.music.musicservicecommand"; - private static final String CMDPAUSE = "pause"; - - // HandlerThread Keys - private static final String FM_FREQUENCY = "frequency"; - private static final String OPTION = "option"; - private static final String RECODING_FILE_NAME = "name"; - - // RDS events - // PS - private static final int RDS_EVENT_PROGRAMNAME = 0x0008; - // RT - private static final int RDS_EVENT_LAST_RADIOTEXT = 0x0040; - // AF - private static final int RDS_EVENT_AF = 0x0080; - - // Headset - private static final int HEADSET_PLUG_IN = 1; - // Short antenna support - private static final boolean SHORT_ANNTENNA_SUPPORT = FmRadioUtils.isFmShortAntennaSupport(); - - // Notification id - private static final int NOTIFICATION_ID = 1; - - // Set audio policy for FM - // should check AUDIO_POLICY_FORCE_FOR_MEDIA in audio_policy.h - private static final int FOR_PROPRIETARY = 1; - // Forced Use value - private int mForcedUseForMedia; - - // TX and RX interaction - private static final int CURRENT_RX_ON = 0; - private static final int CURRENT_TX_ON = 1; - private static final int CURRENT_TX_SCAN = 2; - - // FM recorder - FmRecorder mFmRecorder = null; - private BroadcastReceiver mSdcardListener = null; - private int mRecordState = FmRecorder.STATE_INVALID; - private int mRecorderErrorType = -1; - // If eject record sdcard, should set Value false to not record. - // Key is sdcard path(like "/storage/sdcard0"), V is to enable record or - // not. - private HashMap<String, Boolean> mSdcardStateMap = new HashMap<String, Boolean>(); - // The show name in save dialog but saved in service - // If modify the save title it will be not null, otherwise it will be null - private String mModifiedRecordingName = null; - // record the listener list, will notify all listener in list - private ArrayList<Record> mRecords = new ArrayList<Record>(); - // record FM whether in recording mode - private boolean mIsInRecordingMode = false; - // record sd card path when start recording - private static String sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - - // RDS - // PS String - private String mPSString = ""; - // RT String - private String mLRTextString = ""; - // PS RT - private boolean mIsPSRTEnabled = false; - // AF - private boolean mIsAFEnabled = false; - // RDS thread use to receive the information send by station - private Thread mRdsThread = null; - // record whether RDS thread exit - private boolean mIsRdsThreadExit = false; - - // State variables - // Record whether FM is in native scan state - private boolean mIsNativeScanning = false; - // Record whether FM is in scan thread - private boolean mIsScanning = false; - // Record whether FM is in seeking state - private boolean mIsNativeSeeking = false; - // Record whether FM is in native seek - private boolean mIsSeeking = false; - // Record whether searching progress is canceled - private boolean mIsStopScanCalled = false; - // Record whether is speaker used - private boolean mIsSpeakerUsed = false; - // Record whether device is open - private boolean mIsDeviceOpen = false; - // Record whether FM is power up - private boolean mIsPowerUp = false; - // Record whether is power uping, if so, should judge in activity back key. - private boolean mIsPowerUping = false; - // Record whether service is init - private boolean mIsServiceInited = false; - // Fm power down by loss audio focus,should make power down menu item can - // click - private boolean mIsMakePowerDown = false; - - // Instance variables - private Context mContext = null; - private AudioManager mAudioManager = null; - private ActivityManager mActivityManager = null; - private MediaPlayer mFmPlayer = null; - private WakeLock mWakeLock = null; - // Audio focus is held or not - private boolean mIsAudioFocusHeld = false; - // Focus transient lost - private boolean mPausedByTransientLossOfFocus = false; - private int mCurrentStation = FmRadioUtils.DEFAULT_STATION; - // Headset plug state (0:long antenna plug in, 1:long antenna plug out) - private int mValueHeadSetPlug = 1; - // For bind service - private final IBinder mBinder = new ServiceBinder(); - // Broadcast to receive the external event - private FmServiceBroadcastReceiver mBroadcastReceiver = null; - // Async handler - private FmRadioServiceHandler mFmServiceHandler; - // Lock for lose audio focus and receive SOUND_POWER_DOWN_MSG - // at the same time - // while recording call stop recording not finished(status is still - // RECORDING), but - // SOUND_POWER_DOWN_MSG will exitFm(), if it is RECORDING will discard the - // record. - // 1. lose audio focus -> stop recording(lock) -> set to IDLE and show save - // dialog - // 2. exitFm() -> check the record status, discard it if it is recording - // status(lock) - // Add this lock the exitFm() while stopRecording() - private Object mStopRecordingLock = new Object(); - // The listener for exit, should finish favorite when exit FM - private static OnExitListener sExitListener = null; - // Record FmRadioActivity state - private static boolean sActivityIsOnStop = false; - - @Override - public IBinder onBind(Intent intent) { - Log.d(TAG, "FmRadioService.onBind: " + intent); - return mBinder; - } - - /** - * class use to return service instance - */ - public class ServiceBinder extends Binder { - /** - * get FM service instance - * - * @return service instance - */ - FmRadioService getService() { - return FmRadioService.this; - } - } - - /** - * Broadcast monitor external event, Other app want FM stop, Phone shut - * down, screen state, headset state - */ - private class FmServiceBroadcastReceiver extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - Log.d(TAG, ">>> FmRadioService.onReceive"); - String action = intent.getAction(); - String command = intent.getStringExtra("command"); - Log.d(TAG, "Action/Command: " + action + " / " + command); - // other app want FM stop, stop FM - if (ACTION_TOFMSERVICE_POWERDOWN.equals(action) - || ACTION_FROMATVSERVICE_POWERUP.equals(action) - || (SOUND_POWER_DOWN_MSG.equals(action) && CMDPAUSE.equals(command))) { - // need remove all messages, make power down will be execute - mFmServiceHandler.removeCallbacksAndMessages(null); - - Log.d(TAG, "onReceive.SOUND_POWER_DOWN_MSG. exit FM"); - exitFm(); - stopSelf(); - // phone shut down, so exit FM - } else if (Intent.ACTION_SHUTDOWN.equals(action)) { - /** - * here exitFm, system will send broadcast, system will shut - * down, so fm does not need call back to activity - */ - mFmServiceHandler.removeCallbacksAndMessages(null); - exitFm(); - // screen on, if FM play, open rds - } else if (Intent.ACTION_SCREEN_ON.equals(action)) { - - setRdsAsync(true); - // screen off, if FM play, close rds - } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { - setRdsAsync(false); - // switch antenna when headset plug in or plug out - } else if (Intent.ACTION_HEADSET_PLUG.equals(action)) { - // switch antenna should not impact audio focus status - mValueHeadSetPlug = (intent.getIntExtra("state", -1) == HEADSET_PLUG_IN) ? 0 : 1; - switchAntennaAsync(mValueHeadSetPlug); - - if (SHORT_ANNTENNA_SUPPORT) { - boolean isSwitch = (switchAntenna(mValueHeadSetPlug) == 0) ? true : false; - Log.d(TAG, "onReceive.switch anntenna:isWitch:" + isSwitch); - - // Plug out->Speaker Mode; Plug in->Earphone Mode - boolean plugInEarphone = (0 == mValueHeadSetPlug); - // Need check to switch to earphone mode for audio will - // change to AudioSystem.FORCE_NONE - if (plugInEarphone) { - mForcedUseForMedia = AudioSystem.FORCE_NONE; - mIsSpeakerUsed = false; - } - //setSpeakerPhoneOn(!plugInEarphone); - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, !plugInEarphone); - notifyActivityStateChanged(bundle); - - powerUpAutoIfNeed(); - } else { - // Avoid Service is killed,and receive headset plug in - // broadcast again - if (!mIsServiceInited) { - Log.d(TAG, "onReceive.switch anntenna:service is not init"); - powerUpAutoIfNeed(); - return; - } - /* - * If ear phone insert and activity is - * foreground. power up FM automatic - */ - if ((0 == mValueHeadSetPlug) && isActivityForeground()) { - Log.d(TAG, "onReceive.switch anntenna:need auto power up"); - powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - } else if (1 == mValueHeadSetPlug) { - Log.d(TAG, "plug out earphone, need to stop fm"); - // ALPS01687760 Avoid sound from speaker after plug out earphone when recording - // plug out earphone will power down or exit, need to mute first anyway - setMute(true); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_POWERDOWN_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_POWERUP_FINISHED); - stopFmFocusLoss(AudioManager.AUDIOFOCUS_LOSS); - - // Need check to switch to earphone mode for audio will - // change to AudioSystem.FORCE_NONE - setSpeakerPhoneOn(false); - - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, false); - notifyActivityStateChanged(bundle); - } - } - - } else if (BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { - int connectState = intent.getIntExtra(BluetoothA2dp.EXTRA_STATE, 0); - Log.d(TAG, "ACTION_CONNECTION_STATE_CHANGED: connectState=" + connectState + ", ispowerup=" - + mIsPowerUp); - handleBtConnectState(connectState); -/* Vanzo:tanglei on: Fri, 13 Mar 2015 21:26:14 +0800 - * earphone key action - */ - } //else if (FeatureOption.VANZO_FEATURE_EARPHONE_KEY_ACTION && "com.mediatek.FMRadio.FMRadioService.NEXT_STATION".equals(action)) { - //seekStationAsync(FmRadioUtils.computeFrequency(mCurrentStation), true); -// End of Vanzo:tanglei - //} - else { - Log.w(TAG, "Error: undefined action."); - } - Log.d(TAG, "<<< FmRadioService.onReceive"); - } - } - - /** - * ALPS01756692 No sound after click FM app and power key - * Need to power up auto for two cases: - * case 1: Launcher click FM app, then quickly click Power key to lock phone. - * case 2: Launcher click FM app, then quickly click Home key. - * Because power up action is in FmRadioActivity.onServiceConnected(), these two cases - * will not callback onServiceConnected() cause FmRadioActivity.onStop() has called unbind() - */ - private void powerUpAutoIfNeed() { - if ((0 == mValueHeadSetPlug)) { - if (!mIsPowerUping && !mIsPowerUp && sActivityIsOnStop) { - Log.w(TAG, "Power up for start app then quick click power/home"); - int iCurrentStation = FmRadioStation.getCurrentStation(mContext); - powerUpAsync(FmRadioUtils.computeFrequency(iCurrentStation)); - } - } - } - - /** - * handle FM over BT connect state - * - * @param connectState - * FM over BT connect state - */ - private void handleBtConnectState(int connectState) { - if (!mIsPowerUp) { - return; - } - - switch (connectState) { - case BluetoothA2dp.STATE_CONNECTED: - //case BluetoothA2dp.STATE_PLAYING: - //case BluetoothA2dp.STATE_CONNECTING: - Log.d(TAG, "handleBtConnectState bt connected"); - changeToEarphoneMode(); - break; - case BluetoothA2dp.STATE_DISCONNECTED: - //case BluetoothA2dp.STATE_DISCONNECTING: - Log.d(TAG, "handleBtConnectState bt disconnected"); - changeToEarphoneMode(); - break; - default: - Log.d(TAG, "invalid fm over bt connect state"); - break; - } - - - } - - private void changeToEarphoneMode() { - setSpeakerPhoneOn(false); - // Notify UI change to earphone mode, false means not speaker mode - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_SPEAKER_MODE_CHANGED); - // Always set to earphone mode when bt is connected or disconnected - bundle.putBoolean(FmRadioListener.KEY_IS_SPEAKER_MODE, false); - notifyActivityStateChanged(bundle); - } - - /** - * Check if BT is connected - * @return true if current is playing with BT earphone - */ - public boolean isBtConnected() { - BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); - Log.d(TAG, "isBtConnected headset:" - + btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET) - + ", a2dp:" + btAdapter.getProfileConnectionState(BluetoothProfile.A2DP)); - int a2dpState = btAdapter.getProfileConnectionState(BluetoothProfile.HEADSET); - return (BluetoothProfile.STATE_CONNECTED == a2dpState - || BluetoothProfile.STATE_CONNECTING == a2dpState); - } - - /** - * Handle sdcard mount/unmount event. 1. Update the sdcard state map 2. If - * the recording sdcard is unmounted, need to stop and notify - */ - private class SdcardListener extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - // If eject record sdcard, should set this false to not - // record. - updateSdcardStateMap(intent); - - if (mFmRecorder == null) { - Log.w(TAG, "SD receiver: FMRecorder is not present!!"); - return; - } - - String action = intent.getAction(); - if (Intent.ACTION_MEDIA_EJECT.equals(action) || - Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - // If not unmount recording sd card, do nothing; - if (isRecordingCardUnmount(intent)) { - Log.v(TAG, "MEDIA_EJECT"); - if (mFmRecorder.getState() == FmRecorder.STATE_RECORDING) { - Log.d(TAG, "old state is recording"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - mFmRecorder.discardRecording(); - } else { - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_RECORDSTATE_CHANGED); - bundle.putInt(FmRadioListener.KEY_RECORDING_STATE, - FmRecorder.STATE_IDLE); - notifyActivityStateChanged(bundle); - } - } - return; - } - } - } - - /** - * whether antenna available - * - * @return true, antenna available; false, antenna not available - */ - public boolean isAntennaAvailable() { - return mAudioManager.isWiredHeadsetOn(); - } - - /** - * Set FM audio from speaker or not - * - * @param isSpeaker true if set FM audio from speaker - */ - public void setSpeakerPhoneOn(boolean isSpeaker) { - Log.d(TAG, ">>> FmRadioService.useSpeaker: " + isSpeaker); - mForcedUseForMedia = isSpeaker ? AudioSystem.FORCE_SPEAKER : AudioSystem.FORCE_NONE; - AudioSystem.setForceUse(FOR_PROPRIETARY, mForcedUseForMedia); - mIsSpeakerUsed = isSpeaker; - Log.d(TAG, "<<< FmRadioService.useSpeaker"); - } - - private boolean isSpeakerPhoneOn() { - return (mForcedUseForMedia == AudioSystem.FORCE_SPEAKER); - } - - /** - * open FM device, should be call before power up - * - * @return true if FM device open, false FM device not open - */ - private boolean openDevice() { - Log.d(TAG, ">>> FmRadioService.openDevice"); - if (!mIsDeviceOpen) { - mIsDeviceOpen = FmRadioNative.openDev(); - } - Log.d(TAG, "<<< FmRadioService.openDevice: " + mIsDeviceOpen); - return mIsDeviceOpen; - } - - /** - * close FM device - * - * @return true if close FM device success, false close FM device failed - */ - private boolean closeDevice() { - Log.d(TAG, ">>> FmRadioService.closeDevice"); - boolean isDeviceClose = false; - if (mIsDeviceOpen) { - isDeviceClose = FmRadioNative.closeDev(); - mIsDeviceOpen = !isDeviceClose; - } - Log.d(TAG, "<<< FmRadioService.closeDevice: " + isDeviceClose); - - // quit looper - mFmServiceHandler.getLooper().quit(); - return isDeviceClose; - } - - /** - * get FM device opened or not - * - * @return true FM device opened, false FM device closed - */ - public boolean isDeviceOpen() { - Log.d(TAG, "FmRadioService.isDeviceOpen: " + mIsDeviceOpen); - return mIsDeviceOpen; - } - - /** - * power up FM, and make FM voice output from earphone - * - * @param frequency - */ - public void powerUpAsync(float frequency) { - mIsPowerUping = true; - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_POWERUP_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private boolean powerUpFm(float frequency) { - Log.d(TAG, ">>> FmRadioService.powerUp: " + frequency); - if (mIsPowerUp) { - Log.d(TAG, "<<< FmRadioService.powerUp: already power up:" + mIsPowerUp); - return true; - } - - if (!requestAudioFocus()) { - // activity used for update powerdown menu - mIsMakePowerDown = true; - Log.d(TAG, "FM can't get audio focus when power up"); - sendBroadcastToStopOtherAPP(); - return false; - } - - // if device open fail when chip reset, it need open device again before - // power up - if (!mIsDeviceOpen) { - openDevice(); - } - - waitIfTxSearching(); - Log.d(TAG, "set CURRENT_RX_ON true, CURRENT_TX_ON false"); - FmRadioNative.setFmStatus(CURRENT_RX_ON, true); - FmRadioNative.setFmStatus(CURRENT_TX_ON, false); - sendBroadcastToStopOtherAPP(); - - Log.d(TAG, "service native power up start"); - if (!FmRadioNative.powerUp(frequency)) { - Log.e(TAG, "Error: powerup failed."); - return false; - } - Log.d(TAG, "service native power up end"); - mIsPowerUp = true; - // need mute after power up - setMute(true); - - // activity used for update powerdown menu - mIsMakePowerDown = false; - Log.d(TAG, "<<< FmRadioService.powerUp: " + mIsPowerUp); - return mIsPowerUp; - } - - // wait if TX is searching for timing issue - private void waitIfTxSearching() { - Log.d(TAG, ">>> waitIfTxSearching " + FmRadioNative.getFmStatus(CURRENT_TX_SCAN)); - long start = System.currentTimeMillis(); - // true for TX is searching - while (FmRadioNative.getFmStatus(CURRENT_TX_SCAN) == true) { - if (System.currentTimeMillis() - start > 5000) { - Log.e(TAG, "waitIfTxSearching timeout"); - break; - } - try { - Thread.sleep(100); - } catch (Exception e) { - } - } - Log.d(TAG, "<<< waitIfTxSearching"); - } - - private boolean startPlayFm(float frequency) { - Log.d(TAG, ">>> FmRadioService.initDevice: " + frequency); - - mCurrentStation = FmRadioUtils.computeStation(frequency); - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - // Add notification to the title bar. - showNotification(); - - // Start the RDS thread if RDS is supported. - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Start the RDS thread."); - startRdsThread(); - } - - if (!FmRadioUtils.isFmSuspendSupport()) { - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - Log.d(TAG, "acquire wake lock"); - } - } - if (mIsSpeakerUsed != isSpeakerPhoneOn()) { - setSpeakerPhoneOn(mIsSpeakerUsed); - } - if (mRecordState != FmRecorder.STATE_PLAYBACK) { - enableFmAudio(true); - } - - setRds(true); - setMute(false); - - Log.d(TAG, "<<< FmRadioService.initDevice: " + mIsPowerUp); - return mIsPowerUp; - } - - /** - * send broadcast to stop other application, such as music, MATV, - * FMTransmitter - */ - private void sendBroadcastToStopOtherAPP() { - Intent intentToMusic = new Intent(ACTION_TOMUSICSERVICE_POWERDOWN); - sendBroadcast(intentToMusic); - Intent intentToAtv = new Intent(ACTION_TOATVSERVICE_POWERDOWN); - sendBroadcast(intentToAtv); - Intent intentToFMTx = new Intent(ACTION_TOFMTXSERVICE_POWERDOWN); - sendBroadcast(intentToFMTx); - } - - /** - * power down FM - */ - public void powerDownAsync() { - // if power down Fm, should remove message first. - // not remove all messages, because such as recorder message need - // to execute after or before power down - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_POWERDOWN_FINISHED); - } - - /** - * Power down FM - * - * @return true if power down success - */ - private boolean powerDown() { - Log.d(TAG, ">>> FmRadioService.powerDown"); - if (!mIsPowerUp) { - Log.w(TAG, "Error: device is already power down."); - return true; - } - - setMute(true); - setRds(false); - enableFmAudio(false); - - // Only need to power down if RX status in native is ON - // If TX is on, so need power down(TX is using). - boolean isRxOn = FmRadioNative.getFmStatus(CURRENT_RX_ON); - boolean powerDownSuccess = false; - if (isRxOn) { - powerDownSuccess = FmRadioNative.powerDown(0); - } else { - powerDownSuccess = true; - } - - if (!powerDownSuccess) { - Log.e(TAG, "Error: powerdown failed."); - // activity used for update powerdown menu - mIsMakePowerDown = true; - - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - mIsPowerUp = false; - if (mWakeLock.isHeld()) { - mWakeLock.release(); - Log.d(TAG, "release wake lock"); - } - // Remove the notification in the title bar. - removeNotification(); - Log.d(TAG, "powerdown failed.release some resource."); - return false; - } - // activity used for update powerdown menu - mIsMakePowerDown = true; - - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - mIsPowerUp = false; - - if (mWakeLock.isHeld()) { - mWakeLock.release(); - Log.d(TAG, "release wake lock"); - } - - // Remove the notification in the title bar. - removeNotification(); - Log.d(TAG, "<<< FmRadioService.powerDown: true"); - return true; - } - - /** - * Check whether FM is power up - * - * @return true, power up; false, power down. - */ - public boolean isPowerUp() { - Log.d(TAG, "FmRadioService.isPowerUp: " + mIsPowerUp); - return mIsPowerUp; - } - - /** - * Check whether FM is power uping. if power uping, activity should call - * super.onBackPressed, avoid not execute power down method. - * - * @return true, power up; false, power down. - */ - public boolean isPowerUping() { - Log.d(TAG, "FmRadioService.isPowerUping: " + mIsPowerUping); - return mIsPowerUping; - } - - /** - * Check whether FM is power down by other app. - * - * @return true, power down; true. - */ - public boolean isMakePowerDown() { - Log.d(TAG, "FmRadioService.mIsMakePowerDown: " + mIsMakePowerDown); - return mIsMakePowerDown; - } - - /** - * Tune to a station - * - * @param frequency The frequency to tune - * - * @return true, success; false, fail. - */ - public void tuneStationAsync(float frequency) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_TUNE_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_TUNE_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private boolean tuneStation(float frequency) { - Log.d(TAG, ">>> FmRadioService.tune: " + frequency); - if (mIsPowerUp) { - setRds(false); - Log.d(TAG, "FmRadioService.native tune start"); - boolean bRet = FmRadioNative.tune(frequency); - Log.d(TAG, "FmRadioService.native tune end"); - if (bRet) { - setRds(true); - mCurrentStation = FmRadioUtils.computeStation(frequency); - FmRadioStation.setCurrentStation(mContext, mCurrentStation); - updateNotification(); - } - setMute(false); - Log.d(TAG, "<<< FmRadioService.tune: " + bRet); - return bRet; - } - - // if not support short Antenna and earphone is not insert, not power up - if (!isAntennaAvailable() && !SHORT_ANNTENNA_SUPPORT) { - Log.d(TAG, "earphone is not insert and short antenna not support"); - return false; - } - - // if not power up yet, should powerup first - Log.w(TAG, "FM is not powered up"); - mIsPowerUping = true; - boolean tune = false; - - if (powerUpFm(frequency)) { - tune = startPlayFm(frequency); - } - mIsPowerUping = false; - Log.d(TAG, "<<< FmRadioService.tune: mIsPowerup:" + tune); - return tune; - } - - /** - * Seek station according frequency and direction - * - * @param frequency start frequency(100KHZ, 87.5) - * @param isUp direction(true, next station; false, previous station) - * - * @return the frequency after seek - */ - public void seekStationAsync(float frequency, boolean isUp) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - final int bundleSize = 2; - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, frequency); - bundle.putBoolean(OPTION, isUp); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SEEK_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private float seekStation(float frequency, boolean isUp) { - Log.d(TAG, ">>> FmRadioService.seek: " + frequency + " " + isUp); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - - setRds(false); - mIsNativeSeeking = true; - float fRet = FmRadioNative.seek(frequency, isUp); - mIsNativeSeeking = false; - // make mIsStopScanCalled false, avoid stop scan make this true, - // when start scan, it will return null. - mIsStopScanCalled = false; - Log.d(TAG, "<<< FmRadioService.seek: " + fRet); - return fRet; - } - - /** - * Scan stations - */ - public void startScanAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_SCAN_FINISHED); - } - - private int[] startScan() { - Log.d(TAG, ">>> FmRadioService.startScan"); - int[] iChannels = null; - - setRds(false); - setMute(true); - short[] shortChannels = null; - if (!mIsStopScanCalled) { - mIsNativeScanning = true; - Log.d(TAG, "startScan native method:start"); - shortChannels = FmRadioNative.autoScan(); - Log.d(TAG, "startScan native method:end " + Arrays.toString(shortChannels)); - mIsNativeScanning = false; - } - - setRds(true); - if (mIsStopScanCalled) { - // Received a message to power down FM, or interrupted by a phone - // call. Do not return any stations. shortChannels = null; - // if cancel scan, return invalid station -100 - shortChannels = new short[] { - -100 - }; - mIsStopScanCalled = false; - } - - if (null != shortChannels) { - int size = shortChannels.length; - iChannels = new int[size]; - for (int i = 0; i < size; i++) { - iChannels[i] = shortChannels[i]; - } - } - Log.d(TAG, "<<< FmRadioService.startScan: " + Arrays.toString(iChannels)); - return iChannels; - } - - /** - * Check FM Radio is in scan progress or not - * - * @return if in scan progress return true, otherwise return false. - */ - public boolean isScanning() { - return mIsScanning; - } - - /** - * Stop scan progress - * - * @return true if can stop scan, otherwise return false. - */ - public boolean stopScan() { - Log.d(TAG, ">>> FmRadioService.stopScan"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return false; - } - - boolean bRet = false; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SCAN_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SEEK_FINISHED); - if (mIsNativeScanning || mIsNativeSeeking) { - mIsStopScanCalled = true; - Log.d(TAG, "native stop scan:start"); - bRet = FmRadioNative.stopScan(); - Log.d(TAG, "native stop scan:end --" + bRet); - } - Log.d(TAG, "<<< FmRadioService.stopScan: " + bRet); - return bRet; - } - - /** - * Check FM is in seek progress or not - * - * @return true if in seek progress, otherwise return false. - */ - public boolean isSeeking() { - return mIsNativeSeeking; - } - - /** - * Set RDS - * - * @param on true, enable RDS; false, disable RDS. - */ - public void setRdsAsync(boolean on) { - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SET_RDS_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, on); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SET_RDS_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private int setRds(boolean on) { - if (!mIsPowerUp) { - return -1; - } - Log.d(TAG, ">>> FmRadioService.setRDS: " + on); - int ret = -1; - if (isRdsSupported()) { - ret = FmRadioNative.setRds(on); - } - setPS(""); - setLRText(""); - Log.d(TAG, "<<< FmRadioService.setRDS: " + ret); - return ret; - } - - /** - * Get PS information - * - * @return PS information - */ - public String getPS() { - Log.d(TAG, "FmRadioService.getPS: " + mPSString); - return mPSString; - } - - /** - * Get RT information - * - * @return RT information - */ - public String getLRText() { - Log.d(TAG, "FmRadioService.getLRText: " + mLRTextString); - return mLRTextString; - } - - /** - * Get AF frequency - * - * @return AF frequency - */ - public void activeAFAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_ACTIVE_AF_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_ACTIVE_AF_FINISHED); - } - - private int activeAF() { - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - - int frequency = FmRadioNative.activeAf(); - Log.d(TAG, "FmRadioService.activeAF: " + frequency); - return frequency; - } - - /** - * Mute or unmute FM voice - * - * @param mute true for mute, false for unmute - * - * @return (true, success; false, failed) - */ - public void setMuteAsync(boolean mute) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SET_MUTE_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, mute); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SET_MUTE_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private int setMute(boolean mute) { - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - Log.d(TAG, ">>> FmRadioService.setMute: " + mute); - int iRet = FmRadioNative.setMute(mute); - Log.d(TAG, "<<< FmRadioService.setMute: " + iRet); - return iRet; - } - - /** - * Check whether RDS is support in driver - * - * @return (true, support; false, not support) - */ - public boolean isRdsSupported() { - boolean isRdsSupported = (FmRadioNative.isRdsSupport() == 1); - Log.d(TAG, "FmRadioService.isRdsSupported: " + isRdsSupported); - return isRdsSupported; - } - - /** - * Check whether speaker used or not - * - * @return true if use speaker, otherwise return false - */ - public boolean isSpeakerUsed() { - Log.d(TAG, "FmRadioService.isSpeakerUsed: " + mIsSpeakerUsed); - return mIsSpeakerUsed; - } - - /** - * Initial service and current station - * - * @param iCurrentStation current station frequency - */ - public void initService(int iCurrentStation) { - Log.d(TAG, "FmRadioService.initService: " + iCurrentStation); - mIsServiceInited = true; - mCurrentStation = iCurrentStation; - } - - /** - * Check service is initialed or not - * - * @return true if initialed, otherwise return false - */ - public boolean isServiceInited() { - Log.d(TAG, "FmRadioService.isServiceInit: " + mIsServiceInited); - return mIsServiceInited; - } - - /** - * Get FM service current station frequency - * - * @return Current station frequency - */ - public int getFrequency() { - Log.d(TAG, "FmRadioService.getFrequency: " + mCurrentStation); - return mCurrentStation; - } - - /** - * Set FM service station frequency - * - * @param station Current station - */ - public void setFrequency(int station) { - mCurrentStation = station; - } - - /** - * resume FM audio - */ - private void resumeFmAudio() { - Log.d(TAG, "FmRadioService.resumeFmAudio"); - // If not check mIsAudioFocusHeld && mIsPowerup, when scan canceled, - // this will be resume first, then execute power down. it will cause - // nosise. - if (mIsAudioFocusHeld && mIsPowerUp) { - enableFmAudio(true); - } - } - - /** - * Switch antenna There are two types of antenna(long and short) If long - * antenna(most is this type), must plug in earphone as antenna to receive - * FM. If short antenna, means there is a short antenna if phone already, - * can receive FM without earphone. - * - * @param antenna antenna (0, long antenna, 1 short antenna) - * - * @return (0, success; 1 failed; 2 not support) - */ - public void switchAntennaAsync(int antenna) { - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SWITCH_ANNTENNA); - - Bundle bundle = new Bundle(bundleSize); - bundle.putInt(FmRadioListener.SWITCH_ANNTENNA_VALUE, antenna); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SWITCH_ANNTENNA); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - /** - * Need native support whether antenna support interface. - * - * @param antenna antenna (0, long antenna, 1 short antenna) - * - * @return (0, success; 1 failed; 2 not support) - */ - private int switchAntenna(int antenna) { - Log.d(TAG, ">>> FmRadioService.switchAntenna:" + antenna); - // if fm not powerup, switchAntenna will flag whether has earphone - int ret = FmRadioNative.switchAntenna(antenna); - Log.d(TAG, "<<< FmRadioService.switchAntenna: " + ret); - return ret; - } - - /** - * Start recording - */ - public void startRecordingAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STARTRECORDING_FINISHED); - } - - private void startRecording() { - Log.d(TAG, ">>> startRecording"); - if (!mIsPowerUp) { - Log.d(TAG, "native is not power up: " + mIsPowerUp); - onRecorderError(FmRecorder.ERROR_RECORDER_INVALID_STATE); - return; - } - sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - Log.d(TAG, "default sd card file path: " + sRecordingSdcard); - if (sRecordingSdcard == null || sRecordingSdcard.isEmpty()) { - Log.d(TAG, "startRecording: may be no sdcard"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - return; - } - - if (mFmRecorder == null) { - mFmRecorder = new FmRecorder(); - mFmRecorder.registerRecorderStateListener(FmRadioService.this); - } - - if (isSdcardReady(sRecordingSdcard)) { - mFmRecorder.startRecording(getApplicationContext()); - } else { - Log.d(TAG, "Cannot record because sdcard is not ready!!"); - onRecorderError(FmRecorder.ERROR_SDCARD_NOT_PRESENT); - } - Log.d(TAG, "<<< startRecording"); - } - - private boolean isSdcardReady(String sdcardPath) { - Log.d(TAG, ">>> isSdcardReady: sdcardPath is " + sdcardPath + - ", mSdcardStateMap is " + mSdcardStateMap); - if (!mSdcardStateMap.isEmpty()) { - if (mSdcardStateMap.get(sdcardPath) != null && !mSdcardStateMap.get(sdcardPath)) { - Log.d(TAG, "<<< isSdcardReady: return false"); - return false; - } - } - Log.d(TAG, "<<< isSdcardReady: mSdcardStateMap:" + mSdcardStateMap); - return true; - } - - /** - * stop recording - */ - public void stopRecordingAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STOPRECORDING_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STOPRECORDING_FINISHED); - } - - private boolean stopRecording() { - Log.d(TAG, ">>> stopRecording"); - if (mFmRecorder == null) { - Log.e(TAG, "stopRecording called without a valid recorder!!"); - return false; - } - synchronized (mStopRecordingLock) { - mFmRecorder.stopRecording(); - Log.d(TAG, "<<< stopRecording"); - } - return true; - } - - /** - * Start play recording file - */ - public void startPlaybackAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - } - - private boolean startPlayback() { - Log.d(TAG, ">>> startPlayback"); - if (!requestAudioFocus()) { - Log.d(TAG, "can't get audio focus when play recording file"); - return false; - } - - if (mFmRecorder == null) { - Log.e(TAG, "FMRecorder is null !!"); - return false; - } - - // Set Mute before start playback - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - enableFmAudio(false); - - mFmRecorder.startPlayback(); - Log.d(TAG, "<<< startPlayback"); - return true; - } - - /** - * stop play recording file - */ - public void stopPlaybackAsync() { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - } - - private void stopPlayback() { - Log.d(TAG, ">>> stopPlayback"); - if (mFmRecorder != null) { - mFmRecorder.stopPlayback(); - checkAfterPlayback(); - } - Log.d(TAG, "<<< stopPlayback"); - } - - /** - * Save recording file according name or discard recording file if name is - * null - * - * @param newName New recording file name - */ - public void saveRecordingAsync(String newName) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_SAVERECORDING_FINISHED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putString(RECODING_FILE_NAME, newName); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_SAVERECORDING_FINISHED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private void saveRecording(String newName) { - Log.d(TAG, ">>> saveRecording"); - if (mFmRecorder != null) { - if (newName != null) { - mFmRecorder.saveRecording(FmRadioService.this, newName); - Log.d(TAG, "<<< saveRecording"); - return; - } - mFmRecorder.discardRecording(); - } - Log.d(TAG, "<<< saveRecording"); - } - - /** - * Get record time - * - * @return Record time - */ - public long getRecordTime() { - if (mFmRecorder != null) { - return mFmRecorder.recordTime(); - } - Log.e(TAG, "FMRecorder is null !!"); - return 0; - } - - /** - * Set recording mode - * - * @param isRecording true, enter recoding mode; false, exit recording mode - */ - public void setRecordingModeAsync(boolean isRecording) { - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_RECORD_MODE_CHANED); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putBoolean(OPTION, isRecording); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_RECORD_MODE_CHANED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - private void setRecordingMode(boolean isRecording) { - Log.d(TAG, ">>> setRecordingMode: isRecording=" + isRecording); - mIsInRecordingMode = isRecording; - if (mFmRecorder != null) { - if (!isRecording) { - if (mFmRecorder.getState() != FmRecorder.STATE_IDLE) { - mFmRecorder.stopRecording(); - mFmRecorder.stopPlayback(); - } - resumeFmAudio(); - setMute(false); - Log.d(TAG, "<<< setRecordingMode"); - return; - } - // reset recorder to unused status - mFmRecorder.resetRecorder(); - } - Log.d(TAG, "<<< setRecordingMode"); - } - - /** - * Get current recording mode - * - * @return if in recording mode return true, otherwise return false; - */ - public boolean getRecordingMode() { - return mIsInRecordingMode; - } - - /** - * Get record state - * - * @return record state - */ - public int getRecorderState() { - if (null != mFmRecorder) { - return mFmRecorder.getState(); - } - return FmRecorder.STATE_INVALID; - } - - /** - * Get recording file name - * - * @return recording file name - */ - public String getRecordingName() { - if (null != mFmRecorder) { - return mFmRecorder.getRecordingName(); - } - return null; - } - - /** - * Get current recording file name with full path - * - * @return The current recording file name or null - */ - public String getRecordingNameWithPath() { - if (null != mFmRecorder) { - return mFmRecorder.getRecordingNameWithPath(); - } - return null; - } - - @Override - public void onCreate() { - super.onCreate(); - Log.d(TAG, ">>> FmRadioService.onCreate"); - Log.d(TAG, "short antenna support:" + SHORT_ANNTENNA_SUPPORT); - mContext = getApplicationContext(); - mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); - PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); - mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); - mWakeLock.setReferenceCounted(false); - sRecordingSdcard = FmRadioUtils.getDefaultStoragePath(); - - if (!initFmPlayer()) { - Log.e(TAG, "init FMPlayer failed"); - return; - } - - registerFmBroadcastReceiver(); - registerSdcardReceiver(); - - HandlerThread handlerThread = new HandlerThread("FmRadioServiceThread"); - handlerThread.start(); - mFmServiceHandler = new FmRadioServiceHandler(handlerThread.getLooper()); - - openDevice(); - // set speaker to default status, avoid setting->clear data. - setSpeakerPhoneOn(mIsSpeakerUsed); - Log.d(TAG, "<<< FmRadioService.onCreate"); - } - - private boolean initFmPlayer() { - mFmPlayer = new MediaPlayer(); - if (!FmRadioUtils.isFmSuspendSupport()) { - mFmPlayer.setWakeMode(FmRadioService.this, PowerManager.PARTIAL_WAKE_LOCK); - } - mFmPlayer.setOnErrorListener(mPlayerErrorListener); - try { - mFmPlayer.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - } catch (IOException ex) { - // notify the user why the file couldn't be opened - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalArgumentException ex) { - // notify the user why the file couldn't be opened - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (SecurityException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } - mFmPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - return true; - } - - private void registerFmBroadcastReceiver() { - IntentFilter filter = new IntentFilter(); - filter.addAction(SOUND_POWER_DOWN_MSG); - filter.addAction(Intent.ACTION_SHUTDOWN); - filter.addAction(Intent.ACTION_SCREEN_ON); - filter.addAction(Intent.ACTION_SCREEN_OFF); - filter.addAction(Intent.ACTION_HEADSET_PLUG); -/* Vanzo:tanglei on: Fri, 13 Mar 2015 21:22:01 +0800 - */ - //if (FeatureOption.VANZO_FEATURE_EARPHONE_KEY_ACTION) { - // filter.addAction("com.mediatek.FMRadio.FMRadioService.NEXT_STATION"); - //} -// End of Vanzo:tanglei - filter.addAction(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED); - filter.addAction(ACTION_TOFMSERVICE_POWERDOWN); - filter.addAction(ACTION_FROMATVSERVICE_POWERUP); - mBroadcastReceiver = new FmServiceBroadcastReceiver(); - Log.i(TAG, "Register broadcast receiver."); - registerReceiver(mBroadcastReceiver, filter); - } - - private void unregisterFmBroadcastReceiver() { - if (null != mBroadcastReceiver) { - Log.i(TAG, "Unregister broadcast receiver."); - unregisterReceiver(mBroadcastReceiver); - mBroadcastReceiver = null; - } - } - - @Override - public void onDestroy() { - Log.d(TAG, ">>> FmRadioService.onDestroy"); - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - // stop rds first, avoid blocking other native method - if (isRdsSupported()) { - Log.d(TAG, "RDS is supported. Stop the RDS thread."); - stopRdsThread(); - } - unregisterFmBroadcastReceiver(); - unregisterSdcardListener(); - abandonAudioFocus(); - exitFm(); - if (null != mFmRecorder) { - mFmRecorder = null; - } - super.onDestroy(); - } - - /** - * Exit FMRadio application - */ - private void exitFm() { - Log.d(TAG, "service.exitFm start"); - mIsAudioFocusHeld = false; - // Stop FM recorder if it is working - if (null != mFmRecorder) { - synchronized (mStopRecordingLock) { - int fmState = mFmRecorder.getState(); - if (FmRecorder.STATE_PLAYBACK == fmState) { - mFmRecorder.stopPlayback(); - Log.d(TAG, "Stop playback FMRecorder."); - } else if (FmRecorder.STATE_RECORDING == fmState) { - mFmRecorder.stopRecording(); - Log.d(TAG, "stop Recording."); - } - - // ALPS01789667 Add to DB if exit, there are two cases: - // case 1: FileManager play Music->FM receive short audio focus->Fm stop recording - // -> FM receive SOUND_POWER_DOWN_MSG->Come here but is IDLE status - // case 2: Music play a song->FM receive long audio focus->Come here is RECORDING - mFmRecorder.addCurrentRecordingToDb(mContext); - } - } - - // When exit, we set the audio path back to earphone. - if (mIsNativeScanning || mIsNativeSeeking) { - stopScan(); - } - - mFmServiceHandler.removeCallbacksAndMessages(null); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_FM_EXIT); - mFmServiceHandler.sendEmptyMessage(FmRadioListener.MSGID_FM_EXIT); - Log.d(TAG, "service.exitFm end"); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - // Change the notification string. - if (mIsPowerUp) { - showNotification(); - } - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - Log.d(TAG, ">>> FmRadioService.onStartCommand intent: " + intent + " startId: " + startId); - int ret = super.onStartCommand(intent, flags, startId); - Log.d(TAG, "<<< FmRadioService.onStartCommand: " + ret); - return START_NOT_STICKY; - } - - /** - * Start RDS thread to update RDS information - */ - private void startRdsThread() { - Log.d(TAG, ">>> FmRadioService.startRdSThread"); - mIsRdsThreadExit = false; - if (null != mRdsThread) { - return; - } - mRdsThread = new Thread() { - public void run() { - Log.d(TAG, ">>> RDS Thread run()"); - while (true) { - if (mIsRdsThreadExit) { - break; - } - - int iRdsEvents = FmRadioNative.readRds(); - if (iRdsEvents != 0) { - Log.d(TAG, "FmRadioNative.readrds events: " + iRdsEvents); - } - - if (RDS_EVENT_PROGRAMNAME == (RDS_EVENT_PROGRAMNAME & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_PROGRAMNAME"); - byte[] bytePS = FmRadioNative.getPs(); - if (null != bytePS) { - setPS(new String(bytePS).trim()); - } - } - - if (RDS_EVENT_LAST_RADIOTEXT == (RDS_EVENT_LAST_RADIOTEXT & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_LAST_RADIOTEXT"); - byte[] byteLRText = FmRadioNative.getLrText(); - if (null != byteLRText) { - setLRText(new String(byteLRText).trim()); - } - } - - if (RDS_EVENT_AF == (RDS_EVENT_AF & iRdsEvents)) { - Log.d(TAG, "RDS_EVENT_AF"); - /* - * add for rds AF - */ - if (mIsScanning || mIsSeeking) { - Log.d(TAG, "RDSThread. seek or scan going, no need to tune here"); - } else if (!mIsPowerUp) { - Log.d(TAG, "RDSThread. fm is power down, do nothing."); - } else { - int iFreq = FmRadioNative.activeAf(); - if (FmRadioUtils.isValidStation(iFreq)) { - // if the new frequency is not equal to current - // frequency. - if (mCurrentStation == iFreq) { - Log.w(TAG, "RDSThread. the new freq is the same as current."); - } else { - setPS(""); - setLRText(""); - if (!mIsScanning && !mIsSeeking) { - Log.d(TAG, "RDSThread. seek or scan not going," + - "need to tune here"); - tuneStationAsync(FmRadioUtils.computeFrequency(iFreq)); - } - } - } - } - } - // Do not handle other events. - // Sleep 500ms to reduce inquiry frequency - try { - final int hundredMillisecond = 500; - Thread.sleep(hundredMillisecond); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - Log.d(TAG, "<<< RDS Thread run()"); - } - }; - - Log.d(TAG, "Start RDS Thread."); - mRdsThread.start(); - Log.d(TAG, "<<< FmRadioService.startRdSThread"); - } - - /** - * Stop RDS thread to stop listen station RDS change - */ - private void stopRdsThread() { - Log.d(TAG, ">>> FmRadioService.stopRdSThread"); - if (null != mRdsThread) { - // Must call closedev after stopRDSThread. - mIsRdsThreadExit = true; - mRdsThread = null; - } - Log.d(TAG, "<<< FmRadioService.stopRdSThread"); - } - - /** - * Set PS information - * - * @param ps The ps information - */ - private void setPS(String ps) { - Log.d(TAG, "FmRadioService.setPS: " + ps + " ,current: " + mPSString); - if (0 != mPSString.compareTo(ps)) { - mPSString = ps; - Bundle bundle = new Bundle(3); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_PS_CHANGED); - bundle.putString(FmRadioListener.KEY_PS_INFO, mPSString); - bundle.putString(FmRadioListener.KEY_RT_INFO, mLRTextString); - notifyActivityStateChanged(bundle); - } // else New PS is the same as current - } - - /** - * Set RT information - * - * @param lrtText The RT information - */ - private void setLRText(String lrtText) { - Log.d(TAG, "FmRadioService.setLRText: " + lrtText + " ,current: " + mLRTextString); - if (0 != mLRTextString.compareTo(lrtText)) { - mLRTextString = lrtText; - Bundle bundle = new Bundle(3); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RT_CHANGED); - bundle.putString(FmRadioListener.KEY_PS_INFO, mPSString); - bundle.putString(FmRadioListener.KEY_RT_INFO, mLRTextString); - notifyActivityStateChanged(bundle); - } // else New RT is the same as current - } - - /** - * Open or close FM Radio audio - * - * @param enable true, open FM audio; false, close FM audio; - */ - private void enableFmAudio(boolean enable) { - Log.d(TAG, ">>> FmRadioService.enableFmAudio: " + enable); - if ((mFmPlayer == null) || !mIsPowerUp) { - Log.w(TAG, "mFMPlayer is null in Service.enableFmAudio"); - return; - } - - try { - if (!enable) { - if (!mFmPlayer.isPlaying()) { - Log.d(TAG, "warning: FM audio is already disabled."); - return; - } - - Log.d(TAG, "call MediaPlayer.stop()"); - mFmPlayer.stop(); - Log.d(TAG, "stop FM audio."); - return; - } - - if (mFmPlayer.isPlaying()) { - Log.d(TAG, "warning: FM audio is already enabled."); - return; - } - } catch (IllegalStateException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer isPlaying.", e); - } - - try { - mFmPlayer.prepare(); - //if (FmRadioUtils.isFmSuspendSupport()) { - // Log.d(TAG, "support FM suspend"); - // mFmPlayer.startWithoutWakelock(); - //} else { - mFmPlayer.start(); - //} - } catch (IOException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare.", e); - } catch (IllegalStateException e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare.", e); - } - - Log.d(TAG, "Start FM audio."); - Log.d(TAG, "<<< FmRadioService.enableFmAudio"); - } - - /** - * Show notification - */ - private void showNotification() { - Log.d(TAG, "FmRadioService.showNotification"); - Intent notificationIntent = new Intent(); - notificationIntent.setClassName(getPackageName(), FmRadioActivity.class.getName()); - PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), - 0, notificationIntent, 0); - Notification notification = new Notification(R.drawable.fm_title_icon, null, - System.currentTimeMillis()); - notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR; - String fmUnit = mContext.getString(R.string.fm_unit); - String text = FmRadioUtils.formatStation(mCurrentStation) + " " + fmUnit; - notification.setLatestEventInfo(getApplicationContext(), - getResources().getString(R.string.app_name), text, pendingIntent); - Log.d(TAG, "Add notification to the title bar."); - startForeground(NOTIFICATION_ID, notification); - } - - /** - * Remove notification - */ - private void removeNotification() { - Log.d(TAG, "FmRadioService.removeNotification"); - stopForeground(true); - } - - /** - * Update notification - */ - private void updateNotification() { - Log.d(TAG, "FmRadioService.updateNotification"); - if (mIsPowerUp) { - showNotification(); - } - } - - /** - * Register sdcard listener for record - */ - private void registerSdcardReceiver() { - Log.v(TAG, "registerSdcardReceiver >>> "); - if (mSdcardListener == null) { - mSdcardListener = new SdcardListener(); - } - IntentFilter filter = new IntentFilter(); - filter.addDataScheme("file"); - filter.addAction(Intent.ACTION_MEDIA_MOUNTED); - filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); - filter.addAction(Intent.ACTION_MEDIA_EJECT); - registerReceiver(mSdcardListener, filter); - Log.v(TAG, "registerSdcardReceiver <<< "); - } - - private void unregisterSdcardListener() { - if (null != mSdcardListener) { - unregisterReceiver(mSdcardListener); - } - } - - private void updateSdcardStateMap(Intent intent) { - String action = intent.getAction(); - String sdcardPath = null; - Uri mountPointUri = intent.getData(); - if (mountPointUri != null) { - sdcardPath = mountPointUri.getPath(); - if (sdcardPath != null) { - if (Intent.ACTION_MEDIA_EJECT.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: ENJECT " + sdcardPath); - mSdcardStateMap.put(sdcardPath, false); - } else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: UNMOUNTED " + sdcardPath); - mSdcardStateMap.put(sdcardPath, false); - } else if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) { - Log.d(TAG, "updateSdcardStateMap: MOUNTED " + sdcardPath); - mSdcardStateMap.put(sdcardPath, true); - } - } - } - } - - /** - * Notify FM recorder state - * - * @param state The current FM recorder state - */ - @Override - public void onRecorderStateChanged(int state) { - Log.d(TAG, "onRecorderStateChanged: " + state); - mRecordState = state; - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RECORDSTATE_CHANGED); - bundle.putInt(FmRadioListener.KEY_RECORDING_STATE, state); - notifyActivityStateChanged(bundle); - } - - /** - * Notify FM recorder error message - * - * @param error The recorder error type - */ - @Override - public void onRecorderError(int error) { - Log.d(TAG, "onRecorderError: " + error); - // if media server die, will not enable FM audio, and convert to - // ERROR_PLAYER_INATERNAL, call back to activity showing toast. - mRecorderErrorType = (MediaPlayer.MEDIA_ERROR_SERVER_DIED == error) ? - FmRecorder.ERROR_PLAYER_INTERNAL : error; - - Bundle bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.LISTEN_RECORDERROR); - bundle.putInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE, mRecorderErrorType); - notifyActivityStateChanged(bundle); - - // if media server die, should not enable fm, otherwise je will occur. - if (FmRecorder.ERROR_PLAYER_INTERNAL == error) { - resumeFmAudio(); - } - } - - /** - * Notify play FM record file complete - */ - @Override - public void onPlayRecordFileComplete() { - Log.d(TAG, "service.onPlayRecordFileComplete"); - checkAfterPlayback(); - } - - /** - * Check and go next(play or show tips) after recorder file play - * back finish. - * Two cases: - * 1. With headset or support short antenna -> play FM - * 2. Without headset -> show plug in earphone tips - */ - private void checkAfterPlayback() { - if (isHeadSetIn() || SHORT_ANNTENNA_SUPPORT) { - // with headset - Log.d(TAG, "checkAfterPlayback:eaphone is in,need resume fm"); - if (mIsPowerUp) { - resumeFmAudio(); - setMute(false); - } else { - powerUpAsync(FmRadioUtils.computeFrequency(mCurrentStation)); - } - } else { - // without headset need show plug in earphone tips - Log.d(TAG, "checkAfterPlayback:earphone is out, need show plug in earphone tips"); - switchAntennaAsync(mValueHeadSetPlug); - } - } - - /** - * Check the headset is plug in or plug out - * - * @return true for plug in; false for plug out - */ - private boolean isHeadSetIn() { - return (0 == mValueHeadSetPlug); - } - - private void stopFmFocusLoss(int focusState) { - mIsAudioFocusHeld = false; - if (mIsNativeScanning || mIsNativeSeeking) { - // make stop scan from activity call to service. - // notifyActivityStateChanged(FMRadioListener.LISTEN_SCAN_CANCELED); - stopScan(); - Log.d(TAG, "need to stop FM, so stop scan channel."); - } - - // using handler thread to update audio focus state - updateAudioFocusAync(focusState); - Log.d(TAG, "need to stop FM, so powerdown FM."); - - } - - /** - * Handle FM Player error - */ - private final MediaPlayer.OnErrorListener mPlayerErrorListener = - new MediaPlayer.OnErrorListener() { - /** - * handle error message - * - * @param mp occurred error media player - * @param what error message - * @param extra error message extra - * - * @return handle error message or not - */ - public boolean onError(MediaPlayer mp, int what, int extra) { - - if (MediaPlayer.MEDIA_ERROR_SERVER_DIED == what) { - Log.d(TAG, "onError: MEDIA_SERVER_DIED"); - if (null != mFmPlayer) { - mFmPlayer.release(); - mFmPlayer = null; - } - mFmPlayer = new MediaPlayer(); - if (!FmRadioUtils.isFmSuspendSupport()) { - mFmPlayer.setWakeMode(FmRadioService.this, PowerManager.PARTIAL_WAKE_LOCK); - } - mFmPlayer.setOnErrorListener(mPlayerErrorListener); - try { - mFmPlayer.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - mFmPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - if (mIsPowerUp) { - // set speaker mode according to AP - setSpeakerPhoneOn(mIsSpeakerUsed); - mFmPlayer.prepare(); - if (FmRadioUtils.isFmSuspendSupport()) { - Log.d(TAG, "support FM suspend"); - mFmPlayer.startWithoutWakelock(); - } else { - mFmPlayer.start(); - } - } - } catch (IOException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalArgumentException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return false; - } - } - - return true; - } - }; - - /** - * Request audio focus - * - * @return true, success; false, fail; - */ - public boolean requestAudioFocus() { - if (mIsAudioFocusHeld) { - return true; - } - - int audioFocus = mAudioManager.requestAudioFocus(mAudioFocusChangeListener, - AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); - mIsAudioFocusHeld = (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioFocus); - return mIsAudioFocusHeld; - } - - /** - * Abandon audio focus - */ - public void abandonAudioFocus() { - mAudioManager.abandonAudioFocus(mAudioFocusChangeListener); - mIsAudioFocusHeld = false; - } - - /** - * Use to interact with other voice related app - */ - private final OnAudioFocusChangeListener mAudioFocusChangeListener = - new OnAudioFocusChangeListener() { - /** - * Handle audio focus change ensure message FIFO - * - * @param focusChange audio focus change state - */ - @Override - public void onAudioFocusChange(int focusChange) { - Log.d(TAG, "onAudioFocusChange: " + focusChange); - switch (focusChange) { - case AudioManager.AUDIOFOCUS_LOSS: - synchronized (this) { - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_LOSS"); - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - Log.d(TAG, "onAudioFocusChange.setParameters end"); - exitFm(); - stopSelf(); - } - break; - - case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - synchronized (this) { - mAudioManager.setParameters("AudioFmPreStop=1"); - setMute(true); - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_LOSS_TRANSIENT"); - stopFmFocusLoss(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - } - break; - - case AudioManager.AUDIOFOCUS_GAIN: - synchronized (this) { - Log.d(TAG, "AudioFocus: received AUDIOFOCUS_GAIN"); - updateAudioFocusAync(AudioManager.AUDIOFOCUS_GAIN); - } - break; - - default: - Log.d(TAG, "AudioFocus: Audio focus change, but not need handle"); - break; - } - } - }; - - /** - * Audio focus changed, will send message to handler thread. synchronized to - * ensure one message can go in this method. - * - * @param focusState AudioManager state - */ - private synchronized void updateAudioFocusAync(int focusState) { - Log.d(TAG, "updateAudioFocusAync: focusState = " + focusState); - final int bundleSize = 1; - Bundle bundle = new Bundle(bundleSize); - bundle.putInt(FmRadioListener.KEY_AUDIOFOCUS_CHANGED, focusState); - Message msg = mFmServiceHandler.obtainMessage(FmRadioListener.MSGID_AUDIOFOCUS_CHANGED); - msg.setData(bundle); - mFmServiceHandler.sendMessage(msg); - } - - /** - * Audio focus changed, update FM focus state. - * - * @param focusState AudioManager state - */ - private void updateAudioFocus(int focusState) { - Log.d(TAG, "FmRadioService.updateAudioFocus"); - switch (focusState) { - case AudioManager.AUDIOFOCUS_LOSS: - mPausedByTransientLossOfFocus = false; - // play back audio will output with music audio - // May be affect other recorder app, but the flow can not be - // execute earlier, - // It should ensure execute after start/stop record. - if (mFmRecorder != null) { - int fmState = mFmRecorder.getState(); - Log.d(TAG, "stopFMFocusLoss.recorder state=" + fmState); - // only handle recorder state, not handle playback state - if (fmState == FmRecorder.STATE_RECORDING) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPRECORDING_FINISHED); - stopRecording(); - } - } - handlePowerDown(); - break; - - case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - if (mIsPowerUp) { - mPausedByTransientLossOfFocus = true; - } - Log.d(TAG, "AUDIOFOCUS_LOSS_TRANSIENT: mPausedByTransientLossOfFocus:" + - mPausedByTransientLossOfFocus); - // play back audio will output with music audio - // May be affect other recorder app, but the flow can not be - // execute earlier, - // It should ensure execute after start/stop record. - if (mFmRecorder != null) { - int fmState = mFmRecorder.getState(); - Log.d(TAG, "stopFMFocusLoss.recorder state=" + fmState); - if (fmState == FmRecorder.STATE_RECORDING) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTRECORDING_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPRECORDING_FINISHED); - stopRecording(); - } - if (fmState == FmRecorder.STATE_PLAYBACK) { - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STARTPLAYBACK_FINISHED); - mFmServiceHandler.removeMessages( - FmRadioListener.MSGID_STOPPLAYBACK_FINISHED); - stopPlayback(); - } - } - handlePowerDown(); - break; - - case AudioManager.AUDIOFOCUS_GAIN: - Log.d(TAG, "AUDIOFOCUS_GAIN: mPausedByTransientLossOfFocus:" + - mPausedByTransientLossOfFocus); - if (!mIsPowerUp && mPausedByTransientLossOfFocus) { - mIsPowerUping = true; - final int bundleSize = 1; - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERUP_FINISHED); - mFmServiceHandler.removeMessages(FmRadioListener.MSGID_POWERDOWN_FINISHED); - Bundle bundle = new Bundle(bundleSize); - bundle.putFloat(FM_FREQUENCY, FmRadioUtils.computeFrequency(mCurrentStation)); - handlePowerUp(bundle); - } - break; - - default: - break; - } - } - - /** - * FM Radio listener record - */ - private static class Record { - int mHashCode; // hash code - FmRadioListener mCallback; // call back - } - - /** - * Register FM Radio listener, activity get service state should call this - * method register FM Radio listener - * - * @param callback FM Radio listener - */ - public void registerFmRadioListener(FmRadioListener callback) { - synchronized (mRecords) { - // register callback in AudioProfileService, if the callback is - // exist, just replace the event. - Record record = null; - int hashCode = callback.hashCode(); - final int n = mRecords.size(); - for (int i = 0; i < n; i++) { - record = mRecords.get(i); - if (hashCode == record.mHashCode) { - return; - } - } - record = new Record(); - record.mHashCode = hashCode; - record.mCallback = callback; - mRecords.add(record); - } - } - - /** - * Call back from service to activity - * - * @param bundle The message to activity - */ - private void notifyActivityStateChanged(Bundle bundle) { - if (!mRecords.isEmpty()) { - Log.d(TAG, "notifyActivityStatusChanged:clients = " + mRecords.size()); - synchronized (mRecords) { - Iterator<Record> iterator = mRecords.iterator(); - while (iterator.hasNext()) { - Record record = (Record) iterator.next(); - - FmRadioListener listener = record.mCallback; - - if (listener == null) { - iterator.remove(); - return; - } - - listener.onCallBack(bundle); - } - } - } - } - - /** - * Unregister FM Radio listener - * - * @param callback FM Radio listener - */ - public void unregisterFmRadioListener(FmRadioListener callback) { - remove(callback.hashCode()); - } - - /** - * Remove call back according hash code - * - * @param hashCode The call back hash code - */ - private void remove(int hashCode) { - synchronized (mRecords) { - Iterator<Record> iterator = mRecords.iterator(); - while (iterator.hasNext()) { - Record record = (Record) iterator.next(); - if (record.mHashCode == hashCode) { - iterator.remove(); - } - } - } - } - - /** - * Check recording sd card is unmount - * - * @param intent The unmount sd card intent - * - * @return true or false indicate whether current recording sd card is - * unmount or not - */ - public boolean isRecordingCardUnmount(Intent intent) { - String unmountSDCard = intent.getData().toString(); - Log.d(TAG, "unmount sd card file path: " + unmountSDCard); - return unmountSDCard.equalsIgnoreCase("file://" + sRecordingSdcard) ? true : false; - } - - private int[] insertSearchedStation(int[] channels) { - Log.d(TAG, "insertSearchedStation.firstValidChannel:" + Arrays.toString(channels)); - int firstValidChannel = mCurrentStation; - int channelNum = 0; - if (null != channels) { - Arrays.sort(channels); - int size = channels.length; - // Save searched stations into database by batch - ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); - String defaultStationName = getString(R.string.default_station_name); - for (int i = 0; i < size; i++) { - if (FmRadioUtils.isValidStation(channels[i])) { - if (0 == channelNum) { - firstValidChannel = channels[i]; - } - - if (!FmRadioStation.isFavoriteStation(mContext, channels[i])) { - ops.add(ContentProviderOperation.newInsert(Station.CONTENT_URI) - .withValue(Station.COLUMN_STATION_NAME, defaultStationName) - .withValue(Station.COLUMN_STATION_FREQ, channels[i]) - .withValue(Station.COLUMN_STATION_TYPE, - FmRadioStation.STATION_TYPE_SEARCHED) - .build()); - } - channelNum++; - } - } - // Save search stations to database by batch - try { - mContext.getContentResolver().applyBatch(FmRadioStation.AUTHORITY, ops); - } catch (RemoteException e) { - Log.d(TAG, "Exception when applyBatch searched stations " + e); - } catch (OperationApplicationException e) { - Log.d(TAG, "Exception when applyBatch searched stations " + e); - } - } - Log.d(TAG, "insertSearchedStation.firstValidChannel:" + firstValidChannel + - ",channelNum:" + channelNum); - return (new int[] { - firstValidChannel, channelNum - }); - } - - /** - * The background handler - */ - class FmRadioServiceHandler extends Handler { - public FmRadioServiceHandler(Looper looper) { - super(looper); - } - - @Override - public void handleMessage(Message msg) { - Bundle bundle; - boolean isPowerup = false; - boolean isSwitch = true; - - switch (msg.what) { - - // power up - case FmRadioListener.MSGID_POWERUP_FINISHED: - bundle = msg.getData(); - handlePowerUp(bundle); - break; - - // power down - case FmRadioListener.MSGID_POWERDOWN_FINISHED: - handlePowerDown(); - break; - - // fm exit - case FmRadioListener.MSGID_FM_EXIT: - if (mIsSpeakerUsed) { - setSpeakerPhoneOn(false); - } - powerDown(); - closeDevice(); - // Release FM player upon exit - if (null != mFmPlayer) { - mFmPlayer.release(); - mFmPlayer = null; - } - - bundle = new Bundle(1); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_FM_EXIT); - notifyActivityStateChanged(bundle); - // Finish favorite when exit FM - if (sExitListener != null) { - sExitListener.onExit(); - } - break; - - // switch antenna - case FmRadioListener.MSGID_SWITCH_ANNTENNA: - bundle = msg.getData(); - int value = bundle.getInt(FmRadioListener.SWITCH_ANNTENNA_VALUE); - - // if not support short antenna, just notify, not need to switch antenna. - if (SHORT_ANNTENNA_SUPPORT) { - isSwitch = (switchAntenna(value) == 0) ? true : false; - Log.d(TAG, "FmServiceHandler.switch anntenna:isSwitch:" + isSwitch); - } else { - // if ear phone insert, need dismiss plugin earphone - // dialog - // if earphone plug out and it is not play recorder - // state, show plug dialog. - if (0 == value) { - Log.d(TAG, "FmServiceHandler.switch anntenna:dismiss dialog"); - // powerUpAsync(FMRadioUtils.computeFrequency(mCurrentStation)); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, true); - notifyActivityStateChanged(bundle); - } else { - // ear phone plug out, and recorder state is not - // play recorder state, - // show dialog. - if (mRecordState != FmRecorder.STATE_PLAYBACK) { - Log.d(TAG, "FmServiceHandler.switch anntenna:show dialog"); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, false); - notifyActivityStateChanged(bundle); - } - } - } - break; - - // tune to station - case FmRadioListener.MSGID_TUNE_FINISHED: - bundle = msg.getData(); - float tuneStation = bundle.getFloat(FM_FREQUENCY); - boolean isTune = tuneStation(tuneStation); - // if tune fail, pass current station to update ui - if (!isTune) { - tuneStation = FmRadioUtils.computeFrequency(mCurrentStation); - } - bundle = new Bundle(4); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_TUNE_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_TUNE, isTune); - bundle.putFloat(FmRadioListener.KEY_TUNE_TO_STATION, tuneStation); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_UP, mIsPowerUp); - notifyActivityStateChanged(bundle); - break; - - // seek to station - case FmRadioListener.MSGID_SEEK_FINISHED: - bundle = msg.getData(); - mIsSeeking = true; - float seekStation = seekStation(bundle.getFloat(FM_FREQUENCY), - bundle.getBoolean(OPTION)); - boolean isSeekTune = false; - int station = FmRadioUtils.computeStation(seekStation); - if (FmRadioUtils.isValidStation(station)) { - isSeekTune = tuneStation(seekStation); - } - // if tune fail, pass current station to update ui - if (!isSeekTune) { - seekStation = FmRadioUtils.computeFrequency(mCurrentStation); - } - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_TUNE_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_TUNE, isSeekTune); - bundle.putFloat(FmRadioListener.KEY_TUNE_TO_STATION, seekStation); - notifyActivityStateChanged(bundle); - mIsSeeking = false; - break; - - // start scan - case FmRadioListener.MSGID_SCAN_FINISHED: - int[] channels = null; - int[] result = null; - int scanTuneStation = 0; - boolean isScan = true; - mIsScanning = true; - if (powerUpFm(FmRadioUtils.DEFAULT_STATION_FLOAT)) { - channels = startScan(); - } - - // check whether cancel scan - if ((null != channels) && channels[0] == -100) { - Log.d(TAG, "user canceled scan:channels[0]=" + channels[0]); - isScan = false; - result = new int[] { - -1, 0 - }; - } else { - result = insertSearchedStation(channels); - scanTuneStation = result[0]; - isTune = tuneStation(FmRadioUtils.computeFrequency(scanTuneStation)); - scanTuneStation = isTune ? scanTuneStation : mCurrentStation; - } - - /* - * if there is stop command when scan, so it needs to mute - * fm avoid fm sound come out. - */ - if (mIsAudioFocusHeld) { - Log.d(TAG, "there is not power down command.set mute false"); - setMute(false); - } - bundle = new Bundle(4); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.MSGID_SCAN_FINISHED); - bundle.putInt(FmRadioListener.KEY_TUNE_TO_STATION, scanTuneStation); - bundle.putInt(FmRadioListener.KEY_STATION_NUM, result[1]); - bundle.putBoolean(FmRadioListener.KEY_IS_SCAN, isScan); - notifyActivityStateChanged(bundle); - mIsScanning = false; - break; - - // audio focus changed - case FmRadioListener.MSGID_AUDIOFOCUS_CHANGED: - bundle = msg.getData(); - int focusState = bundle.getInt(FmRadioListener.KEY_AUDIOFOCUS_CHANGED); - updateAudioFocus(focusState); - break; - - case FmRadioListener.MSGID_SET_RDS_FINISHED: - bundle = msg.getData(); - setRds(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_SET_MUTE_FINISHED: - bundle = msg.getData(); - setMute(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_ACTIVE_AF_FINISHED: - activeAF(); - break; - - /********** recording **********/ - case FmRadioListener.MSGID_STARTRECORDING_FINISHED: - startRecording(); - break; - - case FmRadioListener.MSGID_STOPRECORDING_FINISHED: - stopRecording(); - break; - - case FmRadioListener.MSGID_STARTPLAYBACK_FINISHED: - boolean isStart = startPlayback(); - // Can not start play back, call back to activity. - if (!isStart) { - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, - FmRadioListener.LISTEN_RECORDERROR); - bundle.putInt(FmRadioListener.KEY_RECORDING_ERROR_TYPE, - FmRadioListener.NOT_AUDIO_FOCUS); - notifyActivityStateChanged(bundle); - } - break; - - case FmRadioListener.MSGID_STOPPLAYBACK_FINISHED: - stopPlayback(); - break; - - case FmRadioListener.MSGID_RECORD_MODE_CHANED: - bundle = msg.getData(); - setRecordingMode(bundle.getBoolean(OPTION)); - break; - - case FmRadioListener.MSGID_SAVERECORDING_FINISHED: - bundle = msg.getData(); - saveRecording(bundle.getString(RECODING_FILE_NAME)); - break; - - default: - break; - } - } - - } - - /** - * handle power down, execute power down and call back to activity. - */ - private void handlePowerDown() { - Bundle bundle; - boolean isPowerdown = powerDown(); - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_POWERDOWN_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_DOWN, isPowerdown); - notifyActivityStateChanged(bundle); - } - - /** - * handle power up, execute power up and call back to activity. - * - * @param bundle power up frequency - */ - private void handlePowerUp(Bundle bundle) { - boolean isPowerup = false; - boolean isSwitch = true; - Log.d(TAG, "service handler power up start"); - float curFrequency = bundle.getFloat(FM_FREQUENCY); - - if (!SHORT_ANNTENNA_SUPPORT && !isAntennaAvailable()) { - Log.d(TAG, "call back to activity, earphone is not ready"); - mIsPowerUping = false; - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_SWITCH_ANNTENNA); - bundle.putBoolean(FmRadioListener.KEY_IS_SWITCH_ANNTENNA, false); - notifyActivityStateChanged(bundle); - return; - } - - if (powerUpFm(curFrequency)) { - isPowerup = startPlayFm(curFrequency); - mPausedByTransientLossOfFocus = false; - } - mIsPowerUping = false; - bundle = new Bundle(2); - bundle.putInt(FmRadioListener.CALLBACK_FLAG, FmRadioListener.MSGID_POWERUP_FINISHED); - bundle.putBoolean(FmRadioListener.KEY_IS_POWER_UP, isPowerup); - notifyActivityStateChanged(bundle); - Log.d(TAG, "service handler power up end"); - } - - /** - * check FM is foreground or background - */ - public boolean isActivityForeground() { - boolean isForeground = true; - List<RunningAppProcessInfo> appProcessInfos = mActivityManager.getRunningAppProcesses(); - for (RunningAppProcessInfo appProcessInfo : appProcessInfos) { - if (appProcessInfo.processName.equals(mContext.getPackageName())) { - int importance = appProcessInfo.importance; - Log.d(TAG, "isActivityForeground importance:" + importance); - if (importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND || - importance == RunningAppProcessInfo.IMPORTANCE_VISIBLE) { - Log.d(TAG, "isActivityForeground is foreground"); - isForeground = true; - } else { - Log.d(TAG, "isActivityForeground is background"); - isForeground = false; - } - break; - } - } - Log.d(TAG, "isActivityForeground return " + isForeground); - return isForeground; - } - - /** - * Check if current is lock task mode. If in this mode, AMS will cannot destory - * FmRadioActivity even call finish() - * Settings->Security->Screen pinning on - * @return true if current screen pinning on FmRadioActivity - */ - public boolean isInLockTaskMode() { - Log.d(TAG, "isInLockTaskMode:" + mActivityManager.isInLockTaskMode()); - return mActivityManager.isInLockTaskMode(); - } - - /** - * Get the recording sdcard path when staring record - * - * @return sdcard path like "/storage/sdcard0" - */ - public static String getRecordingSdcard() { - return sRecordingSdcard; - } - - /** - * The listener interface for exit - */ - public interface OnExitListener { - /** - * When Service finish, should notify FmRadioFavorite to finish - */ - void onExit(); - } - - /** - * Register the listener for exit - * - * @param listener The listener want to know the exit event - */ - public static void registerExitListener(OnExitListener listener) { - sExitListener = listener; - } - - /** - * Unregister the listener for exit - * - * @param listener The listener want to know the exit event - */ - public static void unregisterExitListener(OnExitListener listener) { - sExitListener = null; - } - - /** - * Get the latest recording name the show name in save dialog but saved in - * service - * - * @return The latest recording name or null for not modified - */ - public String getModifiedRecordingName() { - Log.d(TAG, "getRecordingNameInDialog:" + mModifiedRecordingName); - return mModifiedRecordingName; - } - - /** - * Set the latest recording name if modify the default name - * - * @param name The latest recording name or null for not modified - */ - public void setModifiedRecordingName(String name) { - Log.d(TAG, "setRecordingNameInDialog:" + name); - mModifiedRecordingName = name; - } - - /** - * When FmRadioActivity.onStop() set true, FmRadioActivity.onResume() set false; - * @param stop - */ - public static void setActivityIsOnStop(boolean stop) { - sActivityIsOnStop = stop; - } - - /** - * Check current is in call/ringtone or not - * @return true if is not call mode. false mean is in call or ringtone - */ - public boolean isModeNormal() { - int mode = mAudioManager.getMode(); - Log.d(TAG, "isInCall mode:" + mode); - return mode == AudioManager.MODE_NORMAL; - } - - // FM Radio EM start - /** - * Inquiry if fm stereo mono(true, stereo; false mono) - * - * @return (true, stereo; false, mono) - */ - public boolean getStereoMono() { - Log.d(TAG, "FMRadioService.getStereoMono"); - return FmRadioNative.stereoMono(); - } - - /** - * Force set to stero/mono mode - * - * @param isMono - * (true, mono; false, stereo) - * @return (true, success; false, failed) - */ - public boolean setStereoMono(boolean isMono) { - Log.d(TAG, "FMRadioService.setStereoMono: isMono=" + isMono); - return FmRadioNative.setStereoMono(isMono); - } - - /** - * set RSSI, desense RSSI, mute gain soft - * @param index flag which will execute - * (0:rssi threshold,1:desense rssi threshold,2: SGM threshold) - * @param value send to native - * @return execute ok or not - */ - public boolean setEmth(int index, int value) { - Log.d(TAG, ">>> FMRadioService.setEmth: index=" + index + ",value=" + value); - boolean isOk = FmRadioNative.emsetth(index, value); - Log.d(TAG, "<<< FMRadioService.setEmth: isOk=" + isOk); - return isOk; - } - - /** - * send variables to native, and get some variables return. - * @param val send to native - * @return get value from native - */ - public short[] emcmd(short[] val) { - Log.d(TAG, ">>FMRadioService.emcmd: val=" + val); - short[] shortCmds = null; - shortCmds = FmRadioNative.emcmd(val); - Log.d(TAG, "<<FMRadioService.emcmd:" + shortCmds); - return shortCmds; - } - - /** - * Get hardware version not need async - */ - public int[] getHardwareVersion() { - return FmRadioNative.getHardwareVersion(); - } - - /** - * Read cap array method not need async - */ - public int getCapArray() { - Log.d(TAG, "FMRadioService.readCapArray"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readCapArray(); - } - - /** - * Get rssi not need async - */ - public int getRssi() { - Log.d(TAG, "FMRadioService.readRssi"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readRssi(); - } - - /** - * read rds bler not need async - */ - public int getRdsBler() { - Log.d(TAG, "FMRadioService.readRdsBler"); - if (!mIsPowerUp) { - Log.w(TAG, "FM is not powered up"); - return -1; - } - return FmRadioNative.readRdsBler(); - } - // FM Radio EM end - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioStation.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioStation.java deleted file mode 100755 index 7e24db2..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioStation.java +++ /dev/null @@ -1,524 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.provider.BaseColumns; -import android.util.Log; - -/** - * This class provider interface to operator databases, use by activity and - * service - */ -public class FmRadioStation { - private static final String TAG = "FmRx/Station"; - // authority use composite content provider uri - public static final String AUTHORITY = "com.mediatek.fmradio.FmRadioContentProvider"; - // use to composite content provider uri - public static final String STATION = "station"; - // default current station name - private static final String CURRENT_STATION_NAME = "FmDfltSttnNm"; - - // Default RDS settings - // PS RT whether open - private static final boolean DEFAULT_PSRT_ENABLED = false; - // AF whether open - private static final boolean DEFAULT_AF_ENABLED = false; - // TA whether open - private static final boolean DEFAULT_TA_ENABLED = false; - - // Station types. - public static final int STATION_TYPE_CURRENT = 1; - public static final int STATION_TYPE_FAVORITE = 2; - public static final int STATION_TYPE_SEARCHED = 3; - // just use to save rds, not really station type - private static final int STATION_TYPE_RDS_SETTING = 4; - - // RDS setting items - // save PSRT set - public static final int RDS_SETTING_FREQ_PSRT = 1; - // save AF set - public static final int RDS_SETTING_FREQ_AF = 2; - // save TA set - public static final int RDS_SETTING_FREQ_TA = 3; - // RDS setting values for every item - public static final String RDS_SETTING_VALUE_ENABLED = "ENABLED"; - public static final String RDS_SETTING_VALUE_DISABLED = "DISABLED"; - - // stationList table in database columns - static final String COLUMNS[] = new String[] { - Station._ID, - Station.COLUMN_STATION_NAME, - Station.COLUMN_STATION_FREQ, - // Use this type to identify different stations. - Station.COLUMN_STATION_TYPE - }; - - /** - * This class provider the columns of StationList table - */ - public static final class Station implements BaseColumns { - public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + STATION); - // Extra columns of the table: COLUMN_STATION_NAME COLUMN_STATION_FREQ - // COLUMN_STATION_TYPE - public static final String COLUMN_STATION_NAME = "COLUMN_STATION_NAME"; - public static final String COLUMN_STATION_FREQ = "COLUMN_STATION_FREQ"; - public static final String COLUMN_STATION_TYPE = "COLUMN_STATION_TYPE"; - } - - /** - * Init FM database for current station and RDS setting - * - * @param context The context - */ - public static void initFmDatabase(Context context) { - // Init current station, if no current station in database, set to be - // FIXED_STATION_FREQ - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_FREQ - }, - Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(STATION_TYPE_CURRENT) - }, - null); - if (null != cur) { - try { - if (!cur.moveToFirst()) { - // Can't find current station, insert FIXED_STATION_FREQ to db - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, CURRENT_STATION_NAME); - values.put(Station.COLUMN_STATION_FREQ, FmRadioUtils.DEFAULT_STATION); - values.put(Station.COLUMN_STATION_TYPE, STATION_TYPE_CURRENT); - context.getContentResolver().insert(Station.CONTENT_URI, values); - } - } finally { - cur.close(); - } - } - - // Init PSRT, AF and TA - int[] types = new int[] { - RDS_SETTING_FREQ_PSRT, RDS_SETTING_FREQ_AF, RDS_SETTING_FREQ_TA - }; - boolean[] enables = new boolean[] { - DEFAULT_PSRT_ENABLED, - DEFAULT_AF_ENABLED, DEFAULT_TA_ENABLED - }; - for (int i = 0; i < types.length; i++) { - cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_NAME - }, - Station.COLUMN_STATION_FREQ + "=" + String.valueOf(types[i]), - null, - null); - if (null != cur) { - try { - if (!cur.moveToFirst()) { - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, enables[i] ? - RDS_SETTING_VALUE_ENABLED : RDS_SETTING_VALUE_DISABLED); - values.put(Station.COLUMN_STATION_FREQ, types[i]); - values.put(Station.COLUMN_STATION_TYPE, STATION_TYPE_RDS_SETTING); - context.getContentResolver().insert(Station.CONTENT_URI, values); - } - } finally { - cur.close(); - } - } - } - Log.d(TAG, "FmRadioStation.initFmDatabase"); - } - - /** - * Insert station information to database - * - * @param context The context - * @param stationName The station name - * @param stationFreq The station frequency - * @param stationType The station type - */ - public static void insertStationToDb(Context context, String stationName, - int stationFreq, int stationType) { - Log.d(TAG, "FmRadioStation.insertStationToDb start"); - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, stationName); - values.put(Station.COLUMN_STATION_FREQ, stationFreq); - values.put(Station.COLUMN_STATION_TYPE, stationType); - context.getContentResolver().insert(Station.CONTENT_URI, values); - Log.d(TAG, "FmRadioStation.insertStationToDb end"); - } - - /** - * Update station name, station frequency according original station - * frequency, station type - * - * @param context The context - * @param stationName The new station's name - * @param oldStationFreq The old station frequency - * @param newStationFreq The new station frequency - * @param stationType The old station type - */ - public static void updateStationToDb(Context context, String stationName, int oldStationFreq, - int newStationFreq, int stationType) { - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, stationName); - values.put(Station.COLUMN_STATION_FREQ, newStationFreq); - values.put(Station.COLUMN_STATION_TYPE, stationType); - context.getContentResolver().update( - Station.CONTENT_URI, - values, - Station.COLUMN_STATION_FREQ + "=? AND " + Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(oldStationFreq), String.valueOf(stationType) - }); - Log.d(TAG, "FmRadioStation.updateStationToDb: name = " + stationName + - ", new freq = " + newStationFreq); - } - - /** - * Update station name and station type according station frequency - * - * @param context The context - * @param newStationName The station new name - * @param newStationType The station new type - * @param stationFreq The original station frequency - */ - public static void updateStationToDb(Context context, String newStationName, - int newStationType, int stationFreq) { - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, newStationName); - values.put(Station.COLUMN_STATION_FREQ, stationFreq); - values.put(Station.COLUMN_STATION_TYPE, newStationType); - context.getContentResolver().update( - Station.CONTENT_URI, - values, - Station.COLUMN_STATION_FREQ + "=? AND " + - Station.COLUMN_STATION_TYPE + "<>" + STATION_TYPE_CURRENT, - new String[] { - String.valueOf(stationFreq) - }); - Log.d(TAG, "FmRadioStation.updateStationToDb: new name = " + newStationName - + ", new freq type = " + newStationType); - } - - /** - * Delete station according station frequency and station type - * - * @param context The context - * @param stationFreq The station frequency - * @param stationType The station type - */ - public static void deleteStationInDb(Context context, int stationFreq, int stationType) { - context.getContentResolver().delete( - Station.CONTENT_URI, - Station.COLUMN_STATION_FREQ + "=? AND " + Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(stationFreq), String.valueOf(stationType) - }); - Log.d(TAG, "FmRadioStation.deleteStationInDb: freq = " + stationFreq + - ", type = " + stationType); - } - - /** - * Judge a station whether exist according station frequency and station - * type - * - * @param context The context - * @param stationFreq The station frequency - * @param stationType The station type - * - * @return true or false indicate whether station is exist - */ - public static boolean isStationExist(Context context, int stationFreq, int stationType) { - Log.d(TAG, ">>> isStationExist: stationFreq=" + stationFreq + - ",stationType=" + stationType); - boolean isExist = false; - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_NAME - }, - Station.COLUMN_STATION_FREQ + "=? AND " + Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(stationFreq), String.valueOf(stationType) - }, - null); - if (null != cur) { - try { - if (cur.moveToFirst()) { - // This station is exist - isExist = true; - } - } finally { - cur.close(); - } - } - Log.d(TAG, "<<< isStationExist: " + isExist); - return isExist; - } - - /** - * Judge a station whether exist according station frequency - * - * @param context The context - * @param stationFreq The station frequency - * @param stationType The station type - * - * @return true or false indicate whether station is exist - */ - public static boolean isStationExistInChList(Context context, int stationFreq) { - Log.d(TAG, ">>> isStationExist: stationFreq=" + stationFreq); - boolean isExist = false; - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_NAME - }, - Station.COLUMN_STATION_FREQ + "=? AND " + Station.COLUMN_STATION_TYPE + "<>1", - new String[] { - String.valueOf(stationFreq) - }, - null); - if (null != cur) { - try { - if (cur.moveToFirst()) { - // This station is exist - isExist = true; - } - } finally { - cur.close(); - } - } - Log.d(TAG, "<<< isStationExist: " + isExist); - return isExist; - } - - /** - * Get current station from database - * - * @param context The context - * - * @return the station which station type is current - */ - public static int getCurrentStation(Context context) { - int currentStation = FmRadioUtils.DEFAULT_STATION; - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_FREQ - }, - Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(STATION_TYPE_CURRENT) - }, - null); - if (null != cur) { - try { - if (cur.moveToFirst()) { - currentStation = cur.getInt(0); - if (!FmRadioUtils.isValidStation(currentStation)) { - // If current station is invalid, use default and update - // the database - currentStation = FmRadioUtils.DEFAULT_STATION; - setCurrentStation(context, currentStation); - Log.w(TAG, "current station is invalid, use default!"); - } - } - } finally { - cur.close(); - } - } - Log.d(TAG, "FmRadioStation.getCurrentStation: " + currentStation); - return currentStation; - } - - /** - * Set current station - * - * @param context The context - * @param station The station frequency - */ - public static void setCurrentStation(Context context, int station) { - Log.d(TAG, "FmRadioStation.setCurrentStation start"); - // Update current station to database. - final int size = 3; - ContentValues values = new ContentValues(size); - values.put(Station.COLUMN_STATION_NAME, CURRENT_STATION_NAME); - values.put(Station.COLUMN_STATION_FREQ, station); - values.put(Station.COLUMN_STATION_TYPE, STATION_TYPE_CURRENT); - context.getContentResolver().update( - Station.CONTENT_URI, - values, - Station.COLUMN_STATION_NAME + "=? AND " + Station.COLUMN_STATION_TYPE + "=?", - new String[] { - CURRENT_STATION_NAME, String.valueOf(STATION_TYPE_CURRENT) - }); - Log.d(TAG, "FmRadioStation.setCurrentStation end"); - } - - /** - * Clean all stations which station type is searched - * - * @param context The context - */ - public static void cleanSearchedStations(Context context) { - Log.d(TAG, "FmRadioStation.cleanSearchedStations start"); - context.getContentResolver().delete( - Station.CONTENT_URI, - Station.COLUMN_STATION_TYPE + "=" + String.valueOf(STATION_TYPE_SEARCHED), - null); - Log.d(TAG, "FmRadioStation.cleanSearchedStations end"); - } - - /** - * Get station name according station frequency and station type - * - * @param context The context - * @param stationFreq The station frequency - * @param stationType The station type - * - * @return The station name - */ - public static String getStationName(Context context, int stationFreq, int stationType) { - Log.d(TAG, "FmRadioStation.getStationName: type = " - + stationType + ", freq = " + stationFreq); - // If can't find this station id database, return default station name - String stationName = context.getString(R.string.default_station_name); - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - new String[] { - Station.COLUMN_STATION_NAME - }, - Station.COLUMN_STATION_FREQ + "=? AND " + Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(stationFreq), String.valueOf(stationType) - }, - null); - if (null != cur) { - try { - if (cur.moveToFirst()) { - stationName = cur.getString(0); - } - } finally { - cur.close(); - } - } - Log.d(TAG, "FmRadioStation.getStationName: stationName = " + stationName); - return stationName; - } - - /** - * Judge whether station is a favorite station - * - * @param context The context - * @param iStation The station frequency - * - * @return true or false indicate whether station type is favorite - */ - public static boolean isFavoriteStation(Context context, int iStation) { - return isStationExist(context, iStation, STATION_TYPE_FAVORITE); - } - - /** - * Get station count according station type - * - * @param context The context - * @param stationType The station type - * - * @return The numbers of station according station type - */ - public static int getStationCount(Context context, int stationType) { - Log.d(TAG, "FmRadioStation.getStationCount Type: " + stationType); - int stationNus = 0; - Cursor cur = context.getContentResolver().query( - Station.CONTENT_URI, - COLUMNS, - Station.COLUMN_STATION_TYPE + "=?", - new String[] { - String.valueOf(stationType) - }, - null); - if (null != cur) { - try { - stationNus = cur.getCount(); - } finally { - cur.close(); - } - } - Log.d(TAG, "FmRadioStation.getStationCount: " + stationNus); - return stationNus; - } - - /** - * Clear all station of FMRadio database - * - * @param context The application context - */ - public static void cleanAllStations(Context context) { - Uri uri = Station.CONTENT_URI; - Cursor cur = context.getContentResolver().query(uri, COLUMNS, null, null, null); - if (null != cur) { - try { - cur.moveToFirst(); - while (!cur.isAfterLast()) { - // Have find one station. - uri = ContentUris.appendId(Station.CONTENT_URI.buildUpon(), - cur.getInt(cur.getColumnIndex(Station._ID))).build(); - context.getContentResolver().delete(uri, null, null); - cur.moveToNext(); - } - } finally { - cur.close(); - } - } - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioUtils.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioUtils.java deleted file mode 100755 index 71bf6a0..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioUtils.java +++ /dev/null @@ -1,262 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.Context; -import android.os.Environment; -import android.os.StatFs; -import android.os.SystemProperties; -import android.os.storage.StorageManager; -import android.util.Log; - -import java.util.Locale; - -/** - * This class provider interface to compute station and frequency, get project - * string - */ -public class FmRadioUtils { - private static final String TAG = "FmRx/Utils"; - - // FM station variables - public static final int DEFAULT_STATION = 1000; - public static final float DEFAULT_STATION_FLOAT = computeFrequency(DEFAULT_STATION); - // maximum station frequency - private static final int HIGHEST_STATION = 1080; - // minimum station frequency - private static final int LOWEST_STATION = 875; - // station step - private static final int STEP = 1; - // convert rate - private static final int CONVERT_RATE = 10; - -/* Vanzo:yujianpeng on: Fri, 30 Jan 2015 14:44:52 +0800 - * add FM FactoryMode - */ - private static final String HEADSET_STATE_PATH = "/sys/class/switch/h2w/state"; -// End of Vanzo:yujianpeng - // minimum storage space for record - public static final long LOW_SPACE_THRESHOLD = 512 * 1024; - // StorageManager For FM record - private static StorageManager sStorageManager = null; - // short antenna - private static final boolean IS_FM_SHORT_ANTENNA_SUPPORT = SystemProperties.getBoolean( - "ro.mtk_fm_short_antenna_support", false); - // FM suspend feature - private static final boolean IS_FM_SUSPEND_SUPPORT = SystemProperties.getBoolean( - "ro.mtk_tc1_fm_at_suspend", false); - - /** - * Whether the frequency is valid. - * - * @param station The FM station - * - * @return true if the frequency is in the valid scale, otherwise return - * false - */ - public static boolean isValidStation(int station) { - boolean isValid = (station >= LOWEST_STATION && station <= HIGHEST_STATION); - Log.v(TAG, "isValidStation: freq = " + station + ", valid = " + isValid); - return isValid; - } - - /** - * Compute increase station frequency - * - * @param station The station frequency - * - * @return station The frequency after increased - */ - public static int computeIncreaseStation(int station) { - int result = station + STEP; - if (result > HIGHEST_STATION) { - result = LOWEST_STATION; - } - return result; - } - - /** - * Compute decrease station frequency - * - * @param station The station frequency - * - * @return station The frequency after decreased - */ - public static int computeDecreaseStation(int station) { - int result = station - STEP; - if (result < LOWEST_STATION) { - result = HIGHEST_STATION; - } - return result; - } - - /** - * Compute station value with given frequency - * - * @param frequency The station frequency - * - * @return station The result value - */ - public static int computeStation(float frequency) { - return (int) (frequency * CONVERT_RATE); - } - - /** - * Compute frequency value with given station - * - * @param station The station value - * - * @return station The frequency - */ - public static float computeFrequency(int station) { - return (float) station / CONVERT_RATE; - } - - /** - * According station to get frequency string - * - * @param station for 100KZ, range 875-1080 - * - * @return string like 87.5 - */ - public static String formatStation(int station) { - float frequency = (float) station / CONVERT_RATE; - String result = String.format(Locale.ENGLISH, "%.1f", - Float.valueOf(frequency)); - return result; - } - - /** - * Get the phone storage path - * - * @return The phone storage path - */ - public static String getDefaultStoragePath() { - return Environment.getExternalStorageDirectory().getPath(); - } - - /** - * Get the default storage state - * - * @return The default storage state - */ - public static String getDefaultStorageState(Context context) { - ensureStorageManager(context); - String state = sStorageManager.getVolumeState(getDefaultStoragePath()); - Log.d(TAG, "getDefaultStorageState() return state:" + state); - return state; - } - - private static void ensureStorageManager(Context context) { - if (sStorageManager == null) { - sStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); - } - } - - /** - * Get the FM play list path - * - * @param context The context - * - * @return The FM play list path - */ - public static String getPlaylistPath(Context context) { - ensureStorageManager(context); - String[] externalStoragePaths = sStorageManager.getVolumePaths(); - String path = externalStoragePaths[0] + "/Playlists/"; - return path; - } - -/* Vanzo:yujianpeng on: Fri, 30 Jan 2015 14:46:21 +0800 - * add FM FactoryMode - */ - static boolean isWiredHeadsetReallyOn() { - try { - char[] buffer = new char[8]; - java.io.FileReader file = new java.io.FileReader(HEADSET_STATE_PATH); - int len = file.read(buffer, 0, 8); - int state = Integer.valueOf((new String(buffer, 0, len)).trim()); - file.close(); - return (state == 1 || state == 2); - } catch (java.io.FileNotFoundException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - return false; - } -// End of Vanzo:yujianpeng - /** - * Check if has enough space for record - * - * @param recordingSdcard The recording sdcard path - * - * @return true if has enough space for record - */ - public static boolean hasEnoughSpace(String recordingSdcard) { - boolean ret = false; - try { - StatFs fs = new StatFs(recordingSdcard); - long blocks = fs.getAvailableBlocks(); - long blockSize = fs.getBlockSize(); - long spaceLeft = blocks * blockSize; - Log.d(TAG, "hasEnoughSpace: available space=" + spaceLeft); - ret = spaceLeft > LOW_SPACE_THRESHOLD ? true : false; - } catch (IllegalArgumentException e) { - Log.e(TAG, "sdcard may be unmounted:" + recordingSdcard); - } - return ret; - } - - /** - * Check if support short antenna. If true, can play FM without headset - * @return true if support - */ - public static boolean isFmShortAntennaSupport() { - return IS_FM_SHORT_ANTENNA_SUPPORT; - } - - /** - * Check if support FM suspend feature. If true, will not aquire wakelock. - * @return true if support - */ - public static boolean isFmSuspendSupport() { - return IS_FM_SUSPEND_SUPPORT; - } - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecordDialogFragment.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecordDialogFragment.java deleted file mode 100755 index a44c15e..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecordDialogFragment.java +++ /dev/null @@ -1,333 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.app.Activity; -import android.app.DialogFragment; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.TextView; -import android.widget.Toast; - -import java.io.File; - -/** - * The dialog fragment for save recording file - */ -public class FmRecordDialogFragment extends DialogFragment { - private static final String TAG = "FmRx/RecordDlg"; - - // save recording file button - private Button mButtonSave = null; - // discard recording file button - private Button mButtonDiscard = null; - // rename recording file edit text - private EditText mRecordingNameEditText = null; - // recording file default name - private String mDefaultRecordingName = null; - // recording file to save name - private String mRecordingNameToSave = null; - // text view which show storage warning - private TextView mStorageWarningTextView = null; - private OnRecordingDialogClickListener mListener = null; - - // The default filename need't to check whether exist - private boolean mIsNeedCheckFilenameExist = false; - // record sd card path when start recording - private String mRecordingSdcard = null; - - /** - * FM record dialog fragment, because fragment manager need empty - * constructor to instantiated this dialog fragment when configuration - * change - */ - public FmRecordDialogFragment() { - } - - /** - * FM record dialog fragment according name, should pass value recording - * file name - * - * @param defaultName The default file name in FileSystem - * @param recordingName The name in the dialog for show and save - */ - public FmRecordDialogFragment(String sdcard, String defaultName, String recordingName) { - mRecordingSdcard = sdcard; - mDefaultRecordingName = defaultName; - mRecordingNameToSave = recordingName; - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (OnRecordingDialogClickListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - /** - * When onCreate Set dialog style - * - * @param savedInstanceState The save instance state - */ - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Log.d(TAG, ">>onCreate() savedInstanceState:" + savedInstanceState); - setStyle(DialogFragment.STYLE_NO_TITLE, 0); - Log.d(TAG, "<<onCreate()"); - } - - /** - * Inflate view and get the operation button - * - * @param inflater The layout inflater - * @param container The view group container - * @param savedInstanceState The save instance state - * - * @return The inflater view - */ - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fm_recorder_dialog, container, false); - mButtonSave = (Button) view.findViewById(R.id.fm_recording_btn_save); - mButtonSave.setOnClickListener(mButtonOnClickListener); - - mButtonDiscard = (Button) view.findViewById(R.id.fm_recording_btn_discard); - mButtonDiscard.setOnClickListener(mButtonOnClickListener); - - mStorageWarningTextView = (TextView) view - .findViewById(R.id.save_recording_storage_warning); - - // Set the recording edit text - mRecordingNameEditText = (EditText) view.findViewById(R.id.fm_recording_text); - return view; - } - - /** - * Set the dialog edit text and other attribute - */ - @Override - public void onResume() { - super.onResume(); - Log.d(TAG, ">>onResume()"); - - // check if storage is OK, if not enough storage, make view visible - if (!FmRadioUtils.hasEnoughSpace(mRecordingSdcard)) { - mStorageWarningTextView.setVisibility(View.VISIBLE); - } - - // have define in fm_recorder_dialog.xml length at most - // 250(maxFileLength - suffixLength) - mRecordingNameEditText.setSingleLine(true); - - if (mDefaultRecordingName != null) { - if (null != mRecordingNameToSave) { - // this case just for,fragment recreate - mRecordingNameEditText.setText(mRecordingNameToSave); - if ("".equals(mRecordingNameToSave)) { - mButtonSave.setEnabled(false); - } - } else { - mRecordingNameEditText.setText(mDefaultRecordingName); - } - - mRecordingNameEditText.selectAll(); - } - mRecordingNameEditText.setHint(getActivity().getResources().getString( - R.string.edit_recording_name_hint)); - mRecordingNameEditText.requestFocus(); - setTextChangedCallback(); - getDialog().setCanceledOnTouchOutside(false); - getDialog().getWindow().setSoftInputMode( - WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE - | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); - Log.d(TAG, "<<onResume()"); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - Log.d(TAG, ">>onSaveInstanceState()"); - super.onSaveInstanceState(outState); - } - - @Override - public void onDestroy() { - Log.d(TAG, ">>onDestroy()"); - mDefaultRecordingName = null; - mRecordingNameToSave = null; - mListener = null; - Log.d(TAG, "<<onDestroy()"); - super.onDestroy(); - } - - /** - * This method register callback and set filter to Edit, in order to make - * sure that user input is legal. The input can't be illegal filename and - * can't be too long. - */ - private void setTextChangedCallback() { - mRecordingNameEditText.addTextChangedListener(new TextWatcher() { - // not use, so don't need to implement it - @Override - public void afterTextChanged(Editable arg0) { - } - - // not use, so don't need to implement it - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - /** - * check user input whether include invalid character - */ - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - Log.d(TAG, "onTextChanged() s:" + s + ", start:" + start + - ", before:" + before + ", count:" + count); - // Filename changed, so we should check the new filename is - // whether exist. - mIsNeedCheckFilenameExist = true; - String recordName = s.toString().trim(); - // Characters not allowed by file system - if (recordName.length() <= 0 - || recordName.startsWith(".") - || recordName.matches(".*[/\\\\:*?\"<>|\t].*")) { - mButtonSave.setEnabled(false); - } else { - mButtonSave.setEnabled(true); - } - - mRecordingNameToSave = mRecordingNameEditText.getText().toString().trim(); - Log.d(TAG, "onTextChanged mRecordingNameToSave:" + mRecordingNameToSave); - } - }); - } - - private OnClickListener mButtonOnClickListener = new OnClickListener() { - /** - * Define the button operation - */ - @Override - public void onClick(View v) { - - switch (v.getId()) { - case R.id.fm_recording_btn_save: - String msg = null; - // Check the recording name whether exist - mRecordingNameToSave = mRecordingNameEditText.getText().toString().trim(); - File recordingFolderPath = new File(mRecordingSdcard, "FM Recording"); - File recordingFileToSave = - new File(recordingFolderPath, mRecordingNameToSave - + FmRecorder.RECORDING_FILE_EXTENSION); - - // If the new name is same as default name ,need't to check! - if (mDefaultRecordingName == null) { - Log.e(TAG, "Error:recording file is not exist!"); - return; - } - if (mDefaultRecordingName.equals(mRecordingNameToSave)) { - mIsNeedCheckFilenameExist = false; - } else { - mIsNeedCheckFilenameExist = true; - } - - Log.d(TAG, "save:" + mDefaultRecordingName + "->" + mRecordingNameToSave + - ", " + mIsNeedCheckFilenameExist); - if (recordingFileToSave.exists() && mIsNeedCheckFilenameExist) { - // show a toast notification if can't renaming a file/folder - // to the same name - msg = mRecordingNameEditText.getText().toString() + " " - + getActivity().getResources().getString(R.string.already_exists); - Log.d(TAG, "file " + mRecordingNameToSave + ".ogg is already exists!"); - Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show(); - } else { - if (null != mListener) { - mListener.onRecordingDialogClick(mRecordingNameToSave); - } - dismissAllowingStateLoss(); - } - break; - - case R.id.fm_recording_btn_discard: - if (null != mListener) { - mListener.onRecordingDialogClick(null); - } - dismissAllowingStateLoss(); - Log.d(TAG, "Discard FM recording file. "); - break; - - default: - break; - } - } - }; - - /** - * The listener for click Save or Discard - */ - public interface OnRecordingDialogClickListener { - /** - * Record dialog click callback - * - * @param recordingName The user input recording name - */ - void onRecordingDialogClick(String recordingName); - } - - /** - * Get the latest modified recording name - * - * @return The latest modified recording name - */ - public String getRecordingNameToSave() { - return mRecordingNameToSave; - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecorder.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecorder.java deleted file mode 100755 index be7452c..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/FmRecorder.java +++ /dev/null @@ -1,807 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.media.MediaPlayer; -import android.media.MediaRecorder; -import android.media.MediaScannerConnection; -import android.net.Uri; -import android.os.Environment; -import android.os.SystemClock; -import android.provider.MediaStore; -import android.text.format.DateFormat; -import android.util.Log; - -import java.io.File; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - -/** - * This class provider interface to recording, stop recording, save recording - * file, play recording file - */ -public class FmRecorder implements MediaPlayer.OnCompletionListener, - MediaPlayer.OnErrorListener, MediaRecorder.OnErrorListener { - private static final String TAG = "FmRx/Recorder"; - // file prefix - private static final String RECORDING_FILE_PREFIX = "FM"; - // file extensition - public static final String RECORDING_FILE_EXTENSION = ".3gpp"; - // recording file folder - private static final String FM_RECORD_FOLDER = "FM Recording"; - private static final String RECORDING_FILE_TYPE = "audio/3gpp"; - private static final String RECORDING_FILE_SOURCE = "FM Recordings"; - // error type no sdcard - public static final int ERROR_SDCARD_NOT_PRESENT = 0; - // error type sdcard not have enough space - public static final int ERROR_SDCARD_INSUFFICIENT_SPACE = 1; - // error type can't write sdcard - public static final int ERROR_SDCARD_WRITE_FAILED = 2; - // error type recorder internal error occur - public static final int ERROR_RECORDER_INTERNAL = 3; - // error type player internal error occur - public static final int ERROR_PLAYER_INTERNAL = 4; - // error type recorder state is invalid - public static final int ERROR_RECORDER_INVALID_STATE = 5; - // FM Recorder state not recording and not playing - public static final int STATE_IDLE = 5; - // FM Recorder state recording - public static final int STATE_RECORDING = 6; - // FM Recorder state playing - public static final int STATE_PLAYBACK = 7; - // FM Recorder state invalid, need to check - public static final int STATE_INVALID = -1; - - // use to record current FM recorder state - public int mInternalState = STATE_IDLE; - // the recording time after start recording - private long mRecordTime = 0; - // record start time - private long mRecordStartTime = 0; - // current record file - private File mRecordFile = null; - // record current record file is saved by user - private boolean mIsRecordingFileSaved = false; - // listener use for notify service the record state or error state - private OnRecorderStateChangedListener mStateListener = null; - // player use for play recording file - private MediaPlayer mPlayer = null; - // recorder use for record file - private MediaRecorder mRecorder = null; - - /** - * Start recording the voice of FM, also check the pre-conditions, if not - * meet, will return an error message to the caller. if can start recording - * success, will set FM record state to recording and notify to the caller - */ - public void startRecording(Context context) { - Log.d(TAG, ">> startRecording"); - mRecordTime = 0; - - // Check external storage - if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - Log.e(TAG, "No external storage available"); - setError(ERROR_SDCARD_NOT_PRESENT); - return; - } - - String recordingSdcard = FmRadioUtils.getDefaultStoragePath(); - // check whether have sufficient storage space, if not will notify - // caller error message - if (!FmRadioUtils.hasEnoughSpace(recordingSdcard)) { - setError(ERROR_SDCARD_INSUFFICIENT_SPACE); - Log.e(TAG, "SD card does not have sufficient space!!"); - return; - } - - // get external storage directory - File sdDir = new File(recordingSdcard); - Log.d(TAG, "external storage dir = " + sdDir.getAbsolutePath()); - File recordingDir = new File(sdDir, FM_RECORD_FOLDER); - // exist a file named FM Recording, so can't create FM recording folder - if (recordingDir.exists() && !recordingDir.isDirectory()) { - Log.e(TAG, "A FILE with name \"FM Recording\" already exists!!"); - setError(ERROR_SDCARD_WRITE_FAILED); - return; - } else if (!recordingDir.exists()) { // try to create recording folder - boolean mkdirResult = recordingDir.mkdir(); - if (!mkdirResult) { // create recording file failed - setError(ERROR_RECORDER_INTERNAL); - return; - } - } - // create recording temporary file - long curTime = System.currentTimeMillis(); - Date date = new Date(curTime); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH); - String time = simpleDateFormat.format(date); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(RECORDING_FILE_PREFIX).append( - "_").append(time).append(RECORDING_FILE_EXTENSION); - String name = stringBuilder.toString(); - mRecordFile = new File(recordingDir, name); - try { - if (mRecordFile.createNewFile()) { - Log.e(TAG, "createNewFile success"); - } - } catch (IOException ioex) { - Log.e(TAG, "IOException while createTempFile: " + ioex); - ioex.printStackTrace(); - setError(ERROR_SDCARD_WRITE_FAILED); - return; - } - // set record parameter and start recording - try { - Log.d(TAG, "new record file is:" + mRecordFile.getName()); - - mRecorder = new MediaRecorder(); - Log.d(TAG, "startRecording: create new media record instance"); - mRecorder.setOnErrorListener(this); - mRecorder.setAudioSource(MediaRecorder.AudioSource.FM_TUNER); - mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); - mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); - final int samplingRate = 44100; - mRecorder.setAudioSamplingRate(samplingRate); - final int bitRate = 128000; - mRecorder.setAudioEncodingBitRate(bitRate); - final int channels = 2; - mRecorder.setAudioChannels(channels); - mRecorder.setOutputFile(mRecordFile.getAbsolutePath()); - mRecorder.prepare(); - mRecordStartTime = SystemClock.elapsedRealtime(); - mRecorder.start(); - mIsRecordingFileSaved = false; - Log.d(TAG, "startRecording: start"); - } catch (IllegalStateException e) { - Log.e(TAG, "IllegalStateException while starting recording!", e); - setError(ERROR_RECORDER_INTERNAL); - return; - } catch (IOException e) { - Log.e(TAG, "IOException while starting recording!", e); - setError(ERROR_RECORDER_INTERNAL); - return; - } catch (RuntimeException e) { - Log.e(TAG, "RuntimeException while start recording", e); - setError(ERROR_RECORDER_INTERNAL); - return; - } - setState(STATE_RECORDING); - Log.d(TAG, "<< startRecording"); - } - - /** - * Stop recording, compute recording time and update FM recorder state - */ - public void stopRecording() { - Log.d(TAG, ">> stopRecording"); - if (STATE_RECORDING != mInternalState) { - Log.w(TAG, "stopRecording() called in wrong state!!"); - return; - } - - mRecordTime = SystemClock.elapsedRealtime() - mRecordStartTime; - stopRecorder(); - setState(STATE_IDLE); - Log.d(TAG, "<< stopRecording"); - } - - /** - * Play current recorded file, if failed notify error message to caller, if - * success update FM recorder state - */ - public void startPlayback() { - Log.d(TAG, ">> startPlayback"); - if (null == mRecordFile) { - Log.e(TAG, "no file to playback!"); - return; - } - - mPlayer = new MediaPlayer(); - try { - mPlayer.setDataSource(mRecordFile.getAbsolutePath()); - Log.d(TAG, "MediaPlayer.setDataSource(" + mRecordFile.getAbsolutePath() + ")"); - mPlayer.setOnCompletionListener(this); - mPlayer.setOnErrorListener(this); - mPlayer.prepare(); - Log.d(TAG, "MediaPlayer.prepare()"); - mPlayer.start(); - } catch (IOException e) { - Log.e(TAG, "Exception while trying to playback recording file: " + e); - setError(ERROR_PLAYER_INTERNAL); - return; - } catch (IllegalArgumentException e) { - Log.e(TAG, "Exception while trying to playback recording file: " + e); - setError(ERROR_PLAYER_INTERNAL); - return; - } catch (SecurityException e) { - Log.e(TAG, "Exception while trying to playback recording file: " + e); - setError(ERROR_PLAYER_INTERNAL); - return; - } catch (IllegalStateException e) { - Log.e(TAG, "Exception while trying to playback recording file: " + e); - setError(ERROR_PLAYER_INTERNAL); - return; - } - setState(STATE_PLAYBACK); - Log.d(TAG, "<< startPlayback"); - } - - /** - * Stop playing the current recording file, and update FM recorder state - */ - public void stopPlayback() { - Log.d(TAG, ">> stopPlayback"); - if (null == mPlayer || STATE_PLAYBACK != mInternalState || - (null != mPlayer && !mPlayer.isPlaying())) { - Log.w(TAG, "stopPlayback called in wrong state!!"); - // need call back to update button status - setState(STATE_IDLE); - return; - } - stopPlayer(); - setState(STATE_IDLE); - Log.d(TAG, "<< stopPlayback"); - } - - /** - * Compute the current record time - * - * @return The current record time - */ - public long recordTime() { - if (STATE_RECORDING == mInternalState) { - mRecordTime = SystemClock.elapsedRealtime() - mRecordStartTime; - } - return mRecordTime; - } - - /** - * Get FM recorder current state - * - * @return FM recorder current state - */ - public int getState() { - return mInternalState; - } - - /** - * Get current recording file name - * - * @return The current recording file name - */ - public String getRecordingName() { - if (null != mRecordFile) { - String fileName = mRecordFile.getName(); - if (fileName.toLowerCase().endsWith(RECORDING_FILE_EXTENSION) - && fileName.length() > RECORDING_FILE_EXTENSION.length()) { - // remove the extension sub string first - fileName = fileName.substring(0, fileName.length() - - RECORDING_FILE_EXTENSION.length()); - } - return fileName; - } - return null; - } - - /** - * Get current recording file name with full path - * - * @return The current recording file name with path - */ - public String getRecordingNameWithPath() { - if (null != mRecordFile) { - String fileName = mRecordFile.getAbsolutePath(); - if (fileName.toLowerCase().endsWith(RECORDING_FILE_EXTENSION) - && fileName.length() > RECORDING_FILE_EXTENSION.length()) { - // remove the extension sub string first - fileName = fileName.substring(0, fileName.length() - - RECORDING_FILE_EXTENSION.length()); - } - Log.d(TAG, "getRecordingNameWithPath: fileName is " + fileName); - return fileName; - } - return null; - } - - /** - * Save recording with the given name, and save recording file info to - * database - * - * @param context The context - * @param newName The name to override default recording name - */ - public void saveRecording(Context context, String newName) { - Log.d(TAG, ">> saveRecording(" + newName + ")"); - if (null == mRecordFile) { - Log.e(TAG, "<< saveRecording: recording file is null!"); - return; - } - - File parentFile = mRecordFile.getParentFile(); - if (null == parentFile) { - Log.e(TAG, "<< saveRecording: parent recording file is null!"); - return; - } - - // rename the recording file with given name - if (null != newName && !newName.equals(getRecordingName())) { - File sdFile = new File(parentFile.getPath(), - newName + RECORDING_FILE_EXTENSION); - if (sdFile.exists()) { - Log.w(TAG, "A file with the same new name will be deleted: " + - sdFile.getAbsolutePath()); - if (!sdFile.delete()) { - Log.e(TAG, "can't delete the file already exits"); - } - } - if (null != parentFile) { - if (!mRecordFile.renameTo(new File(parentFile.getPath(), - newName + RECORDING_FILE_EXTENSION))) { - Log.e(TAG, "can't rename file, use default name to save"); - newName = getRecordingName(); - } - mRecordFile = new File(parentFile.getPath(), - newName + RECORDING_FILE_EXTENSION); - } - } - mIsRecordingFileSaved = true; - // save recording file info to database - addCurrentRecordingToDb(context); - Log.d(TAG, "<< saveRecording(" + newName + ")"); - } - - /** - * Discard current recording file, release recorder and player - */ - public void discardRecording() { - Log.d(TAG, ">> discardRecording"); - // release recorder - if ((STATE_RECORDING == mInternalState) && (null != mRecorder)) { - stopRecorder(); - // release player - } else if ((STATE_PLAYBACK == mInternalState) && (null != mPlayer)) { - stopPlayer(); - } - - if (null != mRecordFile && !mIsRecordingFileSaved) { - if (!mRecordFile.delete()) { - // deletion failed, possibly due to hot plug out SD card - Log.d(TAG, "discardRecording: deletion failed!"); - } - mRecordFile = null; - mRecordStartTime = 0; - mRecordTime = 0; - } - setState(STATE_IDLE); - Log.d(TAG, "<< discardRecording"); - } - - /** - * Set the callback use to notify FM recorder state and error message - * - * @param listener the callback - */ - public void registerRecorderStateListener(OnRecorderStateChangedListener listener) { - mStateListener = listener; - } - - /** - * Interface to notify FM recorder state and error message - */ - public interface OnRecorderStateChangedListener { - /** - * notify FM recorder state - * - * @param state current FM recorder state - */ - void onRecorderStateChanged(int state); - - /** - * notify FM recorder error message - * - * @param error error type - */ - void onRecorderError(int error); - - /** - * notify play FM record file complete - */ - void onPlayRecordFileComplete(); - } - - /** - * When complete current recording file, release player and update FM - * recorder state to idle - * - * @param mp The current player - */ - @Override - public void onCompletion(MediaPlayer mp) { - Log.d(TAG, ">> MediaPlayer.onCompletion"); - synchronized (this) { - if (null != mPlayer) { - mPlayer.stop(); - mPlayer.release(); - mPlayer = null; - } - } - setState(STATE_IDLE); - if (null != mStateListener) { - mStateListener.onPlayRecordFileComplete(); - } - Log.d(TAG, "<< MediaPlayer.onCompletion"); - } - - /** - * If player occur error, release player, notify error message, update FM - * recorder state to idle - * - * @param mp The current player - * @param what The error message type - * @param extra The error message extra - * @return true or false indicate handle this error or not - */ - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - Log.e(TAG, "MediaPlayer.onError: what=" + what + ", extra=" + extra); - int error = (MediaPlayer.MEDIA_ERROR_SERVER_DIED == what) ? what : ERROR_PLAYER_INTERNAL; - setError(error); - synchronized (this) { - if (null != mPlayer) { - mPlayer.release(); - mPlayer = null; - } - } - if (STATE_PLAYBACK == mInternalState) { - setState(STATE_IDLE); - } - return true; - } - - /** - * When recorder occur error, release player, notify error message, and - * update FM recorder state to idle - * - * @param mr The current recorder - * @param what The error message type - * @param extra The error message extra - */ - @Override - public void onError(MediaRecorder mr, int what, int extra) { - Log.e(TAG, "MediaRecorder.onError: what=" + what + ", extra=" + extra); - stopRecorder(); - setError(ERROR_RECORDER_INTERNAL); - if (STATE_RECORDING == mInternalState) { - setState(STATE_IDLE); - } - } - - /** - * Reset FM recorder - */ - public void resetRecorder() { - if (mRecorder != null) { - mRecorder.release(); - mRecorder = null; - } - if (mPlayer != null) { - mPlayer.release(); - mPlayer = null; - } - mRecordFile = null; - mRecordStartTime = 0; - mRecordTime = 0; - mInternalState = STATE_IDLE; - } - - /** - * Notify error message to the callback - * - * @param error FM recorder error type - */ - private void setError(int error) { - Log.e(TAG, "setError: " + error); - if (null != mStateListener) { - mStateListener.onRecorderError(error); - } - } - - /** - * Notify FM recorder state message to the callback - * - * @param state FM recorder current state - */ - private void setState(int state) { - mInternalState = state; - if (null != mStateListener) { - mStateListener.onRecorderStateChanged(state); - } - } - - /** - * Save recording file info to database - * - * @param context application context - */ - public void addCurrentRecordingToDb(final Context context) { - Log.v(TAG, ">> addCurrentRecordingToDb"); - if (null == mRecordFile || !mRecordFile.exists()) { - Log.e(TAG, "<< addCurrentRecordingToDb: file does not exists"); - return; - } - long curTime = System.currentTimeMillis(); - long modDate = mRecordFile.lastModified(); - Date date = new Date(curTime); - -// java.text.DateFormat dateFormatter = DateFormat.getDateFormat(context); -// java.text.DateFormat timeFormatter = DateFormat.getTimeFormat(context); - String title = getRecordingName(); -// StringBuilder stringBuilder = new StringBuilder(); -// stringBuilder.append(FM_RECORD_FOLDER).append(" ").append( -// dateFormatter.format(date)).append(" ").append( -// timeFormatter.format(date)); -// String artist = stringBuilder.toString(); - - final int size = 8; - ContentValues cv = new ContentValues(size); - cv.put(MediaStore.Audio.Media.IS_MUSIC, 1); - cv.put(MediaStore.Audio.Media.TITLE, title); - cv.put(MediaStore.Audio.Media.DATA, mRecordFile.getAbsolutePath()); - final int oneSecond = 1000; - cv.put(MediaStore.Audio.Media.DATE_ADDED, (int) (curTime / oneSecond)); - cv.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / oneSecond)); - cv.put(MediaStore.Audio.Media.MIME_TYPE, RECORDING_FILE_TYPE); -// cv.put(MediaStore.Audio.Media.ARTIST, artist); - cv.put(MediaStore.Audio.Media.ALBUM, RECORDING_FILE_SOURCE); - cv.put(MediaStore.Audio.Media.DURATION, mRecordTime); - - int recordingId = addToMediaDB(context, cv); - if (-1 == recordingId) { - // insert failed - return; - } - int playlistId = getPlaylistId(context); - if (-1 == playlistId) { - // play list not exist, create FM Recording play list - playlistId = createPlaylist(context); - } - if (-1 == playlistId) { - // insert playlist failed - return; - } - // insert item to FM recording play list - addToPlaylist(context, playlistId, recordingId); - // Notify applications listening to the scanner events that - // a recorded audio file just created. - // Connect to mediascanner to update duration - MediaScannerConnection.scanFile(context, - new String[] { - mRecordFile.getAbsolutePath() - }, null, null); - } - - private int getPlaylistId(final Context context) { - Cursor playlistCursor = context.getContentResolver().query( - MediaStore.Audio.Playlists.getContentUri("external"), - new String[] { - MediaStore.Audio.Playlists._ID - }, - MediaStore.Audio.Playlists.DATA + "=?", - new String[] { - FmRadioUtils.getPlaylistPath(context) + RECORDING_FILE_SOURCE - }, - null); - int playlistId = -1; - if (null != playlistCursor) { - try { - if (playlistCursor.moveToFirst()) { - playlistId = playlistCursor.getInt(0); - } - } finally { - playlistCursor.close(); - } - } - return playlistId; - } - - private int createPlaylist(final Context context) { - final int size = 1; - ContentValues cv = new ContentValues(size); - cv.put(MediaStore.Audio.Playlists.NAME, RECORDING_FILE_SOURCE); - Log.d(TAG, "addToPlaylist: insert playlist"); - Uri newPlaylistUri = context.getContentResolver().insert( - MediaStore.Audio.Playlists.getContentUri("external"), cv); - if (newPlaylistUri == null) { - Log.d(TAG, "createPlaylist: insert failed"); - return -1; - } - return Integer.valueOf(newPlaylistUri.getLastPathSegment()); - } - - private int addToMediaDB(final Context context, final ContentValues cv) { - Uri insertResult = null; - int recordingId = -1; - - Cursor existItems = context.getContentResolver().query( - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, - new String[] { - "_id" - }, - MediaStore.Audio.Media.DATA + "=?", - new String[] { - mRecordFile.getAbsolutePath() - }, - null); - - if (null != existItems) { - try { - - if (existItems.moveToFirst()) { - // there's already a file with the same name in DB, update - // the item. - recordingId = existItems.getInt(0); - Log.d(TAG, "existing items update recording id" + recordingId); - int rowCnt = context.getContentResolver().update( - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, - cv, - MediaStore.Audio.Media.DATA + "=?", - new String[] { - mRecordFile.getAbsolutePath() - }); - - } else { - // not exist file has a same name in DB, insert the item. - Log.d(TAG, "addToMediaDB: insert data"); - insertResult = context.getContentResolver().insert( - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, cv); - if (null != insertResult) { - recordingId = Integer.valueOf(insertResult.getLastPathSegment()); - } - } - } finally { - existItems.close(); - existItems = null; - } - } - return recordingId; - } - - private void addToPlaylist(final Context context, final int playlistId, final int recordingId) { - if (-1 == playlistId) { - return; - } - Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId); - Cursor itemInMembers = context.getContentResolver().query(membersUri, - new String[] { - MediaStore.Audio.Playlists.Members.AUDIO_ID - }, - MediaStore.Audio.Playlists.Members.AUDIO_ID + "=?", - new String[] { - String.valueOf(recordingId) - }, null); - if (null != itemInMembers) { - try { - if (itemInMembers.moveToFirst()) { - // Item already in playlist member, - // no further actions (modify play_order is difficult, - // since a same audio_id can appear multiple times in one - // playlist - // with different play_order) - Log.d(TAG, "addToPlaylist new item already in playlists.members table"); - return; - } - } finally { - itemInMembers.close(); - itemInMembers = null; - } - } - Log.d(TAG, "addToPlaylist: query members"); - Cursor membersCursor = context.getContentResolver().query( - membersUri, - new String[] { - "count(*)" - }, - null, - null, - null); - - if (null != membersCursor) { - try { - if (membersCursor.moveToFirst()) { - // insert item to playlist - int base = membersCursor.getInt(0); - final int size = 2; - ContentValues cv = new ContentValues(size); - cv.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, Integer.valueOf(base)); - cv.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, recordingId); - Log.d(TAG, "addToPlaylist: insert to members"); - context.getContentResolver().insert(membersUri, cv); - } - } finally { - membersCursor.close(); - membersCursor = null; - } - } - } - - private void stopRecorder() { - synchronized (this) { - if (null != mRecorder) { - try { - mRecorder.stop(); - Log.d(TAG, "stopRecorder: stop"); - } catch (IllegalStateException ex) { - Log.e(TAG, "IllegalStateException ocurr" + ex); - setError(ERROR_RECORDER_INTERNAL); - } catch (RuntimeException exception) { - // modified for stop recording failed. - // native recorder will throw runtime exception such as - // in case of start recording and stop it immediately - Log.e(TAG, "RuntimeException ocurr" + exception); - setError(ERROR_RECORDER_INTERNAL); - } finally { - mRecorder.release(); - Log.d(TAG, "stopRecorder: release"); - mRecorder = null; - } - } - } - } - - private void stopPlayer() { - synchronized (this) { - if (null != mPlayer) { - try { - mPlayer.stop(); - } catch (IllegalStateException e) { - Log.e(TAG, "IllegalStateException while discard recording!"); - setError(ERROR_PLAYER_INTERNAL); - return; - } finally { - mPlayer.release(); - mPlayer = null; - } - } - } - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java deleted file mode 100755 index accd31d..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.mediatek.fmradio; - -import android.app.Activity; -import android.content.Intent; -import android.media.AudioManager; -import android.media.AudioSystem; -import android.media.MediaPlayer; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.util.Log; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; - -import java.io.IOException; -/* Vanzo:fenghaitao on: Tue, 30 Jun 2015 15:04:11 +0800 - * force use speaker - */ -//import com.android.featureoption.FeatureOption; -// End of Vanzo:fenghaitao -public class TestFM extends Activity implements OnClickListener { - - public static final String TAG = "FM radio service"; - /* Vanzo:zhuhandong on: Fri, 27 Apr 2015 15:57:27 +0800 - * here to user speaker - * private static final int FOR_PROPRIETARY = 5; - */ - private static final int FOR_PROPRIETARY = 1; - // End of Vanzo: zhuhandong - - private Button mSuccess = null; - - private Button mFail = null; - - private Button mSearch = null; - - private float mFrequency = 97.1f; - - private MediaPlayer mMP = null; - - private boolean mIsSearch = false; - - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (msg.what == 1) { - mSearch.setEnabled(true); - } - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.test_view); - - mSuccess = (Button) findViewById(R.id.success); - mFail = (Button) findViewById(R.id.fail); - mSearch = (Button) findViewById(R.id.search); - mSuccess.setOnClickListener(this); - mSuccess.setEnabled(false); - mFail.setOnClickListener(this); - mSearch.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (!mIsSearch) { - mSuccess.setEnabled(true); - mIsSearch = true; - new Thread() { - public void run() { - mFrequency = autoSearch(mFrequency, true); - FmRadioNative.tune(mFrequency); - FmRadioNative.setMute(false); - mIsSearch = false; - } - }.start(); - } - } - }); - - mSearch.setEnabled(false); - new Thread() { - public void run() { - FmRadioNative.openDev(); - mMP = new MediaPlayer(); - try { - mMP.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - } catch (IOException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } catch (IllegalArgumentException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } - mMP.setAudioStreamType(AudioManager.STREAM_MUSIC); - enableFMAudio(true); -/* Vanzo:fenghaitao on: Tue, 30 Jun 2015 15:05:06 +0800 - * force use speaker - if (isHeadset()) { - */ - //if (isHeadset() && !FeatureOption.VANZO_FEATURE_FM_ONLY_USE_EARPHONE) { -// End of Vanzo:fenghaitao - //setForceUseSpeaker(true); - //} - FmRadioNative.powerUp(mFrequency); - FmRadioNative.setMute(false); - mHandler.sendEmptyMessage(1); - } - }.start(); - } - - @Override - public void onClick(View v) { - Intent data = new Intent(); - data.putExtra("result", v == mSuccess); - setResult(RESULT_OK, data); - finish(); - } - - private void enableFMAudio(boolean bEnable) { - if (bEnable) { - if (mMP.isPlaying()) { - Log.e(TAG, "Error: FM audio is already enabled."); - } else { - try { - mMP.prepare(); - } catch (Exception e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare."); - } - mMP.start(); - } - } else { - if (mMP.isPlaying()) { - mMP.stop(); - mMP.reset(); - mMP.release(); - } else { - Log.e(TAG, "Error: FM audio is already disabled."); - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - enableFMAudio(false); - FmRadioNative.closeDev(); - setForceUseSpeaker(false); - FmRadioNative.stopScan(); - } - - private float autoSearch(float action, boolean isUp) { - return FmRadioNative.seek(action, isUp); - } - - private void setForceUseSpeaker(boolean isOn) { - int forcedUseForMedia = isOn ? AudioSystem.FORCE_SPEAKER : AudioSystem.FORCE_NONE; - AudioSystem.setForceUse(FOR_PROPRIETARY, forcedUseForMedia); - } - - private boolean isHeadset() { - return FmRadioUtils.isWiredHeadsetReallyOn(); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java~ b/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java~ deleted file mode 100755 index 27e9be0..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java~ +++ /dev/null @@ -1,168 +0,0 @@ -package com.mediatek.fmradio; - -import android.app.Activity; -import android.content.Intent; -import android.media.AudioManager; -import android.media.AudioSystem; -import android.media.MediaPlayer; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.util.Log; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; - -import java.io.IOException; -/* Vanzo:fenghaitao on: Tue, 30 Jun 2015 15:04:11 +0800 - * force use speaker - */ -//import com.android.featureoption.FeatureOption; -// End of Vanzo:fenghaitao -public class TestFM extends Activity implements OnClickListener { - - public static final String TAG = "FM radio service"; - /* Vanzo:zhuhandong on: Fri, 27 Apr 2015 15:57:27 +0800 - * here to user speaker - * private static final int FOR_PROPRIETARY = 5; - */ - private static final int FOR_PROPRIETARY = 1; - // End of Vanzo: zhuhandong - - private Button mSuccess = null; - - private Button mFail = null; - - private Button mSearch = null; - - private float mFrequency = 97.1f; - - private MediaPlayer mMP = null; - - private boolean mIsSearch = false; - - private Handler mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - if (msg.what == 1) { - mSearch.setEnabled(true); - } - } - }; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.test_view); - - mSuccess = (Button) findViewById(R.id.success); - mFail = (Button) findViewById(R.id.fail); - mSearch = (Button) findViewById(R.id.search); - mSuccess.setOnClickListener(this); - mSuccess.setEnabled(false); - mFail.setOnClickListener(this); - mSearch.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - if (!mIsSearch) { - mSuccess.setEnabled(true); - mIsSearch = true; - new Thread() { - public void run() { - mFrequency = autoSearch(mFrequency, true); - FmRadioNative.tune(mFrequency); - FmRadioNative.setMute(false); - mIsSearch = false; - } - }.start(); - } - } - }); - - mSearch.setEnabled(false); - new Thread() { - public void run() { - FmRadioNative.openDev(); - mMP = new MediaPlayer(); - try { - mMP.setDataSource("THIRDPARTY://MEDIAPLAYER_PLAYERTYPE_FM"); - } catch (IOException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } catch (IllegalArgumentException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } catch (IllegalStateException ex) { - Log.e(TAG, "setDataSource: " + ex); - return; - } - mMP.setAudioStreamType(AudioManager.STREAM_MUSIC); - enableFMAudio(true); -/* Vanzo:fenghaitao on: Tue, 30 Jun 2015 15:05:06 +0800 - * force use speaker - if (isHeadset()) { - */ - if (isHeadset() && !FeatureOption.VANZO_FEATURE_FM_ONLY_USE_EARPHONE) { -// End of Vanzo:fenghaitao - setForceUseSpeaker(true); - } - FmRadioNative.powerUp(mFrequency); - FmRadioNative.setMute(false); - mHandler.sendEmptyMessage(1); - } - }.start(); - } - - @Override - public void onClick(View v) { - Intent data = new Intent(); - data.putExtra("result", v == mSuccess); - setResult(RESULT_OK, data); - finish(); - } - - private void enableFMAudio(boolean bEnable) { - if (bEnable) { - if (mMP.isPlaying()) { - Log.e(TAG, "Error: FM audio is already enabled."); - } else { - try { - mMP.prepare(); - } catch (Exception e) { - Log.e(TAG, "Exception: Cannot call MediaPlayer prepare."); - } - mMP.start(); - } - } else { - if (mMP.isPlaying()) { - mMP.stop(); - mMP.reset(); - mMP.release(); - } else { - Log.e(TAG, "Error: FM audio is already disabled."); - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - enableFMAudio(false); - FmRadioNative.closeDev(); - setForceUseSpeaker(false); - FmRadioNative.stopScan(); - } - - private float autoSearch(float action, boolean isUp) { - return FmRadioNative.seek(action, isUp); - } - - private void setForceUseSpeaker(boolean isOn) { - int forcedUseForMedia = isOn ? AudioSystem.FORCE_SPEAKER : AudioSystem.FORCE_NONE; - AudioSystem.setForceUse(FOR_PROPRIETARY, forcedUseForMedia); - } - - private boolean isHeadset() { - return FmRadioUtils.isWiredHeadsetReallyOn(); - } -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/AddFavoriteDialog.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/AddFavoriteDialog.java deleted file mode 100755 index 3c65f4c..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/AddFavoriteDialog.java +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.dialogs; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import com.mediatek.fmradio.ExtensionUtils; -import com.mediatek.fmradio.FmRadioUtils; -import com.mediatek.fmradio.R; -import com.mediatek.fmradio.ext.IProjectStringExt; - -/** - * Add a station as favorite caller should implement AddFavoriteListener - */ -public class AddFavoriteDialog extends DialogFragment { - private static final String STATION_NAME = "station_name"; - private static final String STATION_FREQ = "station_freq"; - private AddFavoriteListener mListener = null; - - /** - * Create add favorite dialog instance according station name and station - * frequency - * - * @param stationName The station name - * @param stationFreq The station frequency - * @return add favorite dialog instance - */ - public static AddFavoriteDialog newInstance(String stationName, int stationFreq) { - AddFavoriteDialog fragment = new AddFavoriteDialog(); - Bundle args = new Bundle(2); - args.putString(STATION_NAME, stationName); - args.putInt(STATION_FREQ, stationFreq); - fragment.setArguments(args); - return fragment; - } - - /** - * Add favorite listener, caller should implement - */ - public interface AddFavoriteListener { - /** - * Add a station as favorite - */ - void addFavorite(); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (AddFavoriteListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - String stationName = getArguments().getString(STATION_NAME); - int stationFreq = getArguments().getInt(STATION_FREQ); - Context context = getActivity().getApplicationContext(); - IProjectStringExt projectStringExt = ExtensionUtils.getExtension(context); - View v = View.inflate(getActivity(), R.layout.addstation, null); - EditText editTextStationName = (EditText) v.findViewById(R.id.dlg_add_station_name_text); - ((TextView) v.findViewById(R.id.dlg_add_station_freq_text)) - .setText(FmRadioUtils.formatStation(stationFreq)); - // if not have current station name, hint with default station name - // else hint current station name - if (null == stationName || "".equals(stationName)) { - editTextStationName.setHint(R.string.default_station_name); - } else { - editTextStationName.setHint(stationName); - } - editTextStationName.requestFocus(); - editTextStationName.requestFocusFromTouch(); - editTextStationName.setText(""); - return new AlertDialog.Builder(getActivity()) - // Must call setTitle here or the title will not be displayed. - .setTitle(projectStringExt.getProjectString(context, - R.string.add_to_favorite, R.string.add_to_favorite1)) - .setView(v) - .setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - mListener.addFavorite(); - } - }).setNegativeButton(R.string.btn_cancel, null) // cancel button - // not need to - // handle - // any thing - .create(); - } - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/DeleteFavoriteDialog.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/DeleteFavoriteDialog.java deleted file mode 100755 index f0f3fb7..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/DeleteFavoriteDialog.java +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.dialogs; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; - -import com.mediatek.fmradio.ExtensionUtils; -import com.mediatek.fmradio.R; -import com.mediatek.fmradio.ext.IProjectStringExt; - -/** - * Delete favorite from favorite channel list, caller should implement - * DeleteFavoriteListener - */ -public class DeleteFavoriteDialog extends DialogFragment { - private DeleteFavoriteListener mListener = null; - - /** - * Create delete favorite dialog instance, caller should implement - * DeleFavoriteListener - * - * @return delete favorite dialog - */ - public static DeleteFavoriteDialog newInstance() { - return new DeleteFavoriteDialog(); - } - - /** - * Delete favorite listener - */ - public interface DeleteFavoriteListener { - /** - * Delete favorite from favorite channel list - */ - void deleteFavorite(); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (DeleteFavoriteListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - Context context = getActivity().getApplicationContext(); - IProjectStringExt projectStringExt = ExtensionUtils.getExtension(context); - return new AlertDialog.Builder(getActivity()) - .setTitle(projectStringExt.getProjectString(context, - R.string.dlg_delete_confirm_title, R.string.dlg_delete_confirm_title1)) - .setMessage(projectStringExt.getProjectString(context, - R.string.dlg_delete_confirm_text, R.string.dlg_delete_confirm_text1)) - .setPositiveButton(R.string.btn_ok, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - mListener.deleteFavorite(); - } - }) - .setNegativeButton(R.string.btn_cancel, null) - .create(); - } - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/EditFavoriteDialog.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/EditFavoriteDialog.java deleted file mode 100755 index 3e360ce..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/EditFavoriteDialog.java +++ /dev/null @@ -1,225 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.dialogs; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.content.DialogInterface; -import android.os.Bundle; -import android.text.Editable; -import android.text.InputFilter; -import android.text.Selection; -import android.text.Spanned; -import android.text.TextWatcher; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; - -import com.mediatek.fmradio.FmRadioStation; -import com.mediatek.fmradio.FmRadioUtils; -import com.mediatek.fmradio.R; - -/** - * Edit favorite station name and frequency, caller should implement - * EditFavoriteListener - */ -public class EditFavoriteDialog extends DialogFragment { - private static final String STATION_NAME = "station_name"; - private static final String STATION_FREQ = "station_freq"; - private EditFavoriteListener mListener = null; - private EditText mEditTextFrequency = null; - - /** - * Create edit favorite dialog instance, caller should implement edit - * favorite listener - * - * @param stationName The station name - * @param stationFreq The station frequency - * @return edit favorite dialog - */ - public static EditFavoriteDialog newInstance(String stationName, int stationFreq) { - EditFavoriteDialog fragment = new EditFavoriteDialog(); - Bundle args = new Bundle(2); - args.putString(STATION_NAME, stationName); - args.putInt(STATION_FREQ, stationFreq); - fragment.setArguments(args); - return fragment; - } - - /** - * Edit favorite listener - */ - public interface EditFavoriteListener { - /** - * Edit favorite station name and station frequency - */ - void editFavorite(); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (EditFavoriteListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - String stationName = getArguments().getString(STATION_NAME); - int stationFreq = getArguments().getInt(STATION_FREQ); - View v = View.inflate(getActivity(), R.layout.editstation, null); - EditText editTextStationName = (EditText) v.findViewById(R.id.dlg_edit_station_name_text); - mEditTextFrequency = (EditText) v.findViewById(R.id.dlg_edit_station_freq_text); - - final int lengthOf100Khz = 5; - final int maxFrequencyLength = lengthOf100Khz; - mEditTextFrequency.setFilters(new InputFilter[] { - mFilter, - new InputFilter.LengthFilter(maxFrequencyLength) - }); - - mEditTextFrequency.addTextChangedListener(mWatcher100KHZ); - - mEditTextFrequency.setText(FmRadioUtils.formatStation(stationFreq)); - if (null == stationName || "".equals(stationName)) { - editTextStationName.setHint(R.string.default_station_name); - } else { - editTextStationName.setHint(stationName); - } - editTextStationName.requestFocus(); - editTextStationName.requestFocusFromTouch(); - // Edit - editTextStationName.setText(stationName); - Editable text = editTextStationName.getText(); - Selection.setSelection(text, text.length()); - return new AlertDialog.Builder(getActivity()) - // Must call setTitle here or the title will not be displayed. - .setTitle(getString(R.string.dlg_addedit_title_edit)).setView(v) - .setPositiveButton(R.string.edit_frequency_overwrite_text, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - mListener.editFavorite(); - } - }) - .setNegativeButton(R.string.btn_cancel, null) - .create(); - } - - InputFilter mFilter = new InputFilter() { - - public CharSequence filter(CharSequence source, int start, int end, Spanned dest, - int dstart, int dend) { - final int accuracy = 1; - - if ("".equals(source.toString())) { - return null; - } - - // according the point divide string - String[] splitArray = dest.toString().split("\\."); - // input have point, should delete the redundant - if (splitArray.length > 1) { - String fraction = splitArray[1]; - int deleteIndex = fraction.length() + 1 - accuracy; - if (deleteIndex > 0) { - int dotIndex = dest.toString().indexOf(".") + 1; - if (dstart >= dotIndex) { - if ((end - deleteIndex) >= start) { - return source.subSequence(start, end - deleteIndex); - } - } else { - return dest.subSequence(dstart, dend) + source.toString(); - } - } - } - return null; - } - }; - - // Add for 100khz - // add for overwrite frequency feature - private TextWatcher mWatcher100KHZ = new TextWatcher() { - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - if (null == getDialog()) { - return; - } - CharSequence cs = mEditTextFrequency.getText(); - float frequency = 0; - try { - frequency = Float.parseFloat(cs.toString()); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - final int convertData = 10; - int station = Math.round(frequency * convertData); - Button positiveButton = ((AlertDialog) getDialog()) - .getButton(DialogInterface.BUTTON_POSITIVE); - - if (null != positiveButton) { - if (FmRadioStation.isStationExistInChList( - getActivity().getApplicationContext(), station)) { - positiveButton.setText(R.string.edit_frequency_overwrite_text); - } else { - positiveButton.setText(R.string.btn_ok); - } - } - } - - /** - * No need to implement - */ - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } - - /** - * No need to implement - */ - @Override - public void afterTextChanged(Editable s) { - } - }; - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/NoAntennaDialog.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/NoAntennaDialog.java deleted file mode 100755 index 2d702f0..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/NoAntennaDialog.java +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.dialogs; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.content.DialogInterface; -import android.content.DialogInterface.OnKeyListener; -import android.os.Bundle; -import android.util.Log; -import android.view.KeyEvent; - -import com.mediatek.fmradio.R; - -/** - * No antenna dialog, caller should implement NoAntennaListener - */ -public class NoAntennaDialog extends DialogFragment { - private static final String TAG = "FmRx/NoAntennaDialog"; - private NoAntennaListener mListener = null; - - /** - * Create no antenna dialog instance, caller should implement - * NoAntennaListener - */ - public static NoAntennaDialog newInstance() { - return new NoAntennaDialog(); - } - - /** - * No antenna listener - */ - public interface NoAntennaListener { - /** - * Continue to operate when no antenna - */ - void noAntennaContinue(); - - /** - * Cancel operate when no antenna - */ - void noAntennaCancel(); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (NoAntennaListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setMessage(R.string.no_antenna_info) - .setTitle(R.string.dlg_noantenna_title) - .setPositiveButton(R.string.btn_yes, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - mListener.noAntennaContinue(); - } - }) - .setNegativeButton(R.string.btn_no, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - mListener.noAntennaCancel(); - } - }); - AlertDialog d = builder.create(); - d.setCanceledOnTouchOutside(false); - d.setOnKeyListener(new OnKeyListener() { - @Override - public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { - Log.d(TAG, "click back key, need to exit fm"); - mListener.noAntennaCancel(); - } - return false; - } - }); - return d; - } - -} diff --git a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/SearchChannelsDialog.java b/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/SearchChannelsDialog.java deleted file mode 100755 index 3e049a0..0000000 --- a/MediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/SearchChannelsDialog.java +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2011-2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.dialogs; - -import android.app.Activity; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.ProgressDialog; -import android.content.DialogInterface; -import android.os.Bundle; - -import com.mediatek.fmradio.R; - -/** - * This class provider search dialog and cancel search function, caller should - * implement CancelSearchListener - */ -public class SearchChannelsDialog extends DialogFragment { - private CancelSearchListener mListener = null; - - /** - * Create search channels dialog instance, caller should implement - * CancelSearchListener - * - * @return The dialog instance - */ - public static SearchChannelsDialog newInstance() { - return new SearchChannelsDialog(); - } - - /** - * Cancel search listener - */ - public interface CancelSearchListener { - /** - * Cancel search - */ - void cancelSearch(); - } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mListener = (CancelSearchListener) activity; - } catch (ClassCastException e) { - e.printStackTrace(); - } - } - - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - String message = getActivity().getString(R.string.dlg_progress_text); - ProgressDialog searchDialog = new ProgressDialog(getActivity()); - searchDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - searchDialog.setMessage(message); - searchDialog.setTitle(R.string.dlg_progress_title); - searchDialog.setCancelable(true); - // if not set, user touch outside of FMRadio will cancel search - searchDialog.setCanceledOnTouchOutside(false); - searchDialog.setButton(getString(R.string.btn_cancel), - new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - mListener.cancelSearch(); - } - }); - return searchDialog; - } - - @Override - public void onCancel(DialogInterface dialog) { - mListener.cancelSearch(); - } - -} diff --git a/MediaTek/FmRadio/tests/Android.mk b/MediaTek/FmRadio/tests/Android.mk deleted file mode 100755 index 0e3521a..0000000 --- a/MediaTek/FmRadio/tests/Android.mk +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright Statement: -# -# This software/firmware and related documentation ("MediaTek Software") are -# protected under relevant copyright laws. The information contained herein -# is confidential and proprietary to MediaTek Inc. and/or its licensors. -# Without the prior written permission of MediaTek inc. and/or its licensors, -# any reproduction, modification, use or disclosure of MediaTek Software, -# and information contained herein, in whole or in part, shall be strictly prohibited. -# -# MediaTek Inc. (C) 2010. All rights reserved. -# -# BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES -# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") -# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON -# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. -# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE -# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR -# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH -# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES -# THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES -# CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK -# SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR -# STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND -# CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, -# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, -# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO -# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. -# -# The following software/firmware and/or related documentation ("MediaTek Software") -# have been modified by MediaTek Inc. All revisions are subject to any receiver's -# applicable license agreements with MediaTek Inc. - -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - - - -# We only want this apk build for tests. -LOCAL_MODULE_TAGS := tests -LOCAL_CERTIFICATE := platform - -LOCAL_JAVA_LIBRARIES := android.test.runner -LOCAL_STATIC_JAVA_LIBRARIES := librobotium4 - -# Include all test java files. -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_PACKAGE_NAME := FmRadioTests - -LOCAL_INSTRUMENTATION_FOR := FmRadio - -include $(BUILD_PACKAGE) - -# Use the folloing include to make our test apk. -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/MediaTek/FmRadio/tests/AndroidManifest.xml b/MediaTek/FmRadio/tests/AndroidManifest.xml deleted file mode 100755 index 1f8d990..0000000 --- a/MediaTek/FmRadio/tests/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.mediatek.fmradio.tests" - android:versionCode="1" - android:versionName="1.0"> - <uses-permission android:name="android.permission.ACCESS_FM" /> - - <application> - <uses-library android:name="android.test.runner" /> - <!-- uses-library android:name="com.jayway.android.robotium" /> --> - </application> - - <instrumentation - android:name=".FmRadioFunctionRunner" - android:label="FM Radio function auto-tests" - android:targetPackage="com.mediatek.fmradio" /> - <instrumentation - android:name=".FmRadioPerformanceRunner" - android:label="FM Radio performance auto-tests" - android:targetPackage="com.mediatek.fmradio" /> - <instrumentation - android:name="com.mediatek.fmradio.tests.FmRadioLaunchPerformance" - android:label="FmRadio Launch Performance" - android:targetPackage="com.mediatek.fmradio" /> - - <uses-permission android:name="android.permission.RUN_INSTRUMETATION" /> -</manifest> diff --git a/MediaTek/FmRadio/tests/NOTICE b/MediaTek/FmRadio/tests/NOTICE deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/FmRadio/tests/NOTICE +++ /dev/null diff --git a/MediaTek/FmRadio/tests/README b/MediaTek/FmRadio/tests/README deleted file mode 100755 index 6a66800..0000000 --- a/MediaTek/FmRadio/tests/README +++ /dev/null @@ -1,25 +0,0 @@ -FmRadioTests.apk is the unit test of FmRadio.apk. - -This library is pre-built by MediaTek internal. - -WHAT IT DOES? -============= -It is designed to unit text for FM radio application. - -HOW IT WAS BUILT? -================== -It needs the following library from AOSP: -1. framework.jar - -and the following libs from MediaTek: -1. FmRadio.apk -2. librobotium4.jar - -All source/dependency modules of this module are already put in -'vendor/mediatek/libs' folder. - -HOW TO USE IT? -============== -1. Install FmRadioTests.apk in mediatek platform. -2. Use adb command to run test: -adb shell am instrument -w com.mediatek.fmradio.tests/.FmRadioFunctionRunner diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioActivityTest.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioActivityTest.java deleted file mode 100755 index f7039c7..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioActivityTest.java +++ /dev/null @@ -1,1054 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import java.io.File; -import com.jayway.android.robotium.solo.Solo; - -import android.app.ActionBar; -import android.app.AlertDialog; -import android.app.Instrumentation; -import android.app.Instrumentation.ActivityMonitor; -import android.content.Context; -import android.database.Cursor; -import android.media.AudioManager; -import android.media.AudioManager.OnAudioFocusChangeListener; -import android.net.Uri; -import android.test.ActivityInstrumentationTestCase2; -import android.util.Log; -import android.view.KeyEvent; -import android.view.MenuInflater; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.TextView; - -import com.mediatek.fmradio.FmRadioActivity; -import com.mediatek.fmradio.FmRadioFavorite; -import com.mediatek.fmradio.FmRadioUtils; -import com.mediatek.fmradio.FmRadioStation; -import com.mediatek.fmradio.R; - -public class FmRadioActivityTest extends ActivityInstrumentationTestCase2<FmRadioActivity> { - private Instrumentation mInstrumentation = null; - private Solo mSolo = null; - private Context mContext = null; - private ActivityMonitor mActivityMonitor = null; - - private ActionBar mActionBar = null; - private FmRadioActivity mFmRadioActivity = null; - private FmRadioFavorite mFmRadioFavorite = null; - private AudioManager mAudioManager = null; - private OnAudioFocusChangeListener mFMAudioFocusChangeListener = null; - - // bottom bar - private ImageButton mButtonDecrease = null; - private ImageButton mButtonPrevStation = null; - private ImageButton mButtonNextStation = null; - private ImageButton mButtonIncrease = null; -// private ImageButton mButtonPlayStop = null; - private MenuInflater mMenuInflater = null; - // the star - private ImageButton mButtonAddToFavorite = null; - // record bar - private ImageButton mButtonRecord = null; - private ImageButton mButtonStop = null; - private ImageButton mButtonPlayback = null; - private AlertDialog mDialogRDSSetting = null; - - private Button mButtonRecordSave = null; - private EditText mEditTextRecordName = null; - - private static final String CONTENTURI = "content://com.mediatek.fmradio.FmRadioContentProvider/station"; - - private TextView mTextViewFrequency = null; - private static final int CHECK_TIME = 100; - private static final int SHORT_TIME = 2000; - private static final int ONE_SECOND = 1000; - private static final int EXECUTE_TIME = 500; - private static final int TIMEOUT = 5000; - private static final int WAIT_TEAR_DOWN = 3000; - private static final int WAIT_MOUNT_UNMOUNT = 7000; - private static final int RECORDING_FILE_TIME = 10000; - - private static final long SEARCH_TIME = 20000; - private static final int CONVERT_RATE = 10; - private static final int TUNE_STEP = 1; - private static final String TAG = "FmRadioFunctionTest"; - - public FmRadioActivityTest() { - super("com.mediatek.fmradio", FmRadioActivity.class); - } - - public FmRadioActivityTest(String pkg, Class<FmRadioActivity> activityClass) { - super("com.mediatek.fmradio", FmRadioActivity.class); - } - - @Override - protected void setUp() { - try { - super.setUp(); - } catch (Exception e) { - e.printStackTrace(); - } - setActivityInitialTouchMode(false); - mInstrumentation = this.getInstrumentation(); - assertNotNull(mInstrumentation); - mFmRadioActivity = getActivity(); - assertNotNull(mFmRadioActivity); - mSolo = new Solo(getInstrumentation(), mFmRadioActivity); - mContext = mFmRadioActivity.getApplicationContext(); - mAudioManager = - (AudioManager) mFmRadioActivity.getSystemService(mContext.AUDIO_SERVICE); - waitForPowerupWithTimeout(TIMEOUT); - //waitForInitedWithTimeout(TIMEOUT); - - mButtonDecrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_decrease); - mButtonPrevStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_prevstation); - mButtonNextStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_nextstation); - mButtonIncrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_increase); - - mButtonAddToFavorite = (ImageButton) mFmRadioActivity - .findViewById(R.id.button_add_to_favorite); - - mButtonRecord = (ImageButton) mFmRadioActivity.findViewById(R.id.btn_record); - mButtonStop = (ImageButton) mFmRadioActivity.findViewById(R.id.btn_stop); - mButtonPlayback = (ImageButton) mFmRadioActivity.findViewById(R.id.btn_playback); - - mTextViewFrequency = (TextView) mFmRadioActivity - .findViewById(R.id.station_value); - } - - // click play/stop button. - public void testCase01_PowerUpAndPowerDown() { - boolean isPlaying = false; - // test FM power down - makeFMPowerUp(); - mInstrumentation.waitForIdleSync(); - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - mSolo.sleep(SHORT_TIME); - checkFMStopState(); - - // test FM power up - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkFMPlayingState(); - } - - // click speaker/earphone menu item. - public void testCase02_SwitchSpeakerAndEarphone() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - String earphone = mFmRadioActivity.getString(R.string.optmenu_earphone); - String speaker = mFmRadioActivity.getString(R.string.optmenu_speaker); - // test FM switch to speaker - switchSpeaker(); - mSolo.sleep(EXECUTE_TIME); - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - assertTrue(mSolo.searchText(earphone)); - mSolo.goBack(); - // test FM switch to earphone - switchEarphone(); - mSolo.sleep(EXECUTE_TIME); - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - assertTrue(mSolo.searchText(speaker)); - mSolo.goBack(); - } - - // click favorite star. - public void testCase03_AddDeleteFavoriteChannels() { - int station = 0; - // test add channel as favorite - station = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - deleteChannelFromFavorite(station); - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - assertTrue(FmRadioStation.isFavoriteStation(mFmRadioActivity, station)); - - // test delete channel from favorite - station = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - addChannelAsFavorite(station); - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - assertFalse(FmRadioStation.isFavoriteStation(mFmRadioActivity, station)); - } - - // click tune frequency. - public void testCase04_TuneFrequency() { - int tuneStation = 0, currentStation = 0; - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - // test decrease 0.1 MHZ - tuneStation = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - clickView(mButtonDecrease); - mInstrumentation.waitForIdleSync(); - tuneStation -= TUNE_STEP; - if (tuneStation < FmRadioTestCaseUtil.LOWEST_STATION) { - tuneStation = FmRadioTestCaseUtil.HIGHEST_STATION; - } - // add sleep time, because instrumentation waitForIdleSync just wait for - // UI thread end, must wait for all hardware and database operation end - mSolo.sleep(SHORT_TIME); - currentStation = FmRadioStation.getCurrentStation(mFmRadioActivity); - assertEquals(tuneStation, currentStation); - - // add to favorite - testCase03_AddDeleteFavoriteChannels(); - - // test increase 0.1 MHZ - tuneStation = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - clickView(mButtonIncrease); - mInstrumentation.waitForIdleSync(); - tuneStation += TUNE_STEP; - if (tuneStation > FmRadioTestCaseUtil.HIGHEST_STATION) { - tuneStation = FmRadioTestCaseUtil.LOWEST_STATION; - } - mSolo.sleep(SHORT_TIME); - currentStation = FmRadioStation.getCurrentStation(mFmRadioActivity); - assertEquals(tuneStation, currentStation); - } - - // click tune station - public void testCase05_SwitchChannel() { - int oldStation = 0, stationFromUI = 0, stationFromDB = 0; - if (!mButtonPrevStation.isEnabled()) { - makeFMPowerUp(); - } - - // test seek previous station - oldStation = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - clickView(mButtonPrevStation); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(TIMEOUT); - stationFromUI = FmRadioTestCaseUtil - .getStationFromUI(mTextViewFrequency); - // check station change - assertTrue(oldStation != stationFromUI); - - // test seek next station - oldStation = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - clickView(mButtonNextStation); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(TIMEOUT); - stationFromUI = FmRadioTestCaseUtil - .getStationFromUI(mTextViewFrequency); - // check station change - assertTrue(oldStation != stationFromUI); - } - - // click cancel when search channel. click back key when search channel. - public void testCase06_CancelChannelSearch() { - // check cancel scan when power up - startScanWhenPowerUp(); - checkCancelScan(); - checkFMPlayingState(); - - } - - // search channel and tune to one station. - public void testCase07_SearchChannels() { - // check scan when power up - startScanWhenPowerUp(); - checkFinishScan(); - } - - // enter channel list activity - public void testCase08_EnterChannelList() { - Log.d(TAG, ">>> testCase08_EnterChannelList"); - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mActivityMonitor = new ActivityMonitor( - "com.mediatek.fmradio.FmRadioFavorite", null, false); - mInstrumentation.addMonitor(mActivityMonitor); - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, - R.id.fm_channel_list, 0); - mFmRadioFavorite = (FmRadioFavorite) mActivityMonitor - .waitForActivityWithTimeout(TIMEOUT); - assertNotNull(mFmRadioFavorite); - mSolo.sleep(SHORT_TIME); - Uri uri = Uri.parse(CONTENTURI); - Cursor c = mFmRadioFavorite.getContentResolver().query( - uri, - new String[] { FmRadioStation.Station._ID, - FmRadioStation.Station.COLUMN_STATION_FREQ, - FmRadioStation.Station.COLUMN_STATION_TYPE }, null, - null, null); - assertTrue(c != null && c.getCount() > 0); - Log.d(TAG, "testCase08_EnterChannelList count:" + c.getCount()); - try { - if (c != null) { - c.moveToFirst(); - while (!c.isAfterLast()) { - int stationFreq = c.getInt(1); - int stationType = c.getInt(2); - if ((FmRadioStation.STATION_TYPE_FAVORITE == stationType) - || (FmRadioStation.STATION_TYPE_SEARCHED == stationType)) { - Log.d(TAG, "testCase08_EnterChannelList stationFreq:" + stationFreq - + ", stationType:" + stationType); - assertTrue(FmRadioTestCaseUtil.isExistInChannelList( - mFmRadioFavorite, stationFreq)); - } - c.moveToNext(); - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (c != null) { - c.close(); - } - } - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - Log.d(TAG, "<<< testCase08_EnterChannelList"); - } - - // when play fm, audio focus loss, and stop fm - public void testCase09_CheckFocusLoss() { - mInstrumentation.waitForIdleSync(); - makeFMPowerDown(); - - // check when power up, music get focus, fm power down - //mInstrumentation - // .invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - //mInstrumentation.waitForIdleSync(); - mSolo.sleep(EXECUTE_TIME); - //FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - //mInstrumentation.waitForIdleSync(); - checkFMStopState(); - //mSolo.sleep(SHORT_TIME); - - mSolo.sleep(SHORT_TIME); - // fm is power up, check when fm is searching, focus is loss, fm power down - startScanWhenPowerUp(); - mSolo.sleep(SHORT_TIME); - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(TIMEOUT); - // check music is active, fm is power down - checkFMStopState(); - } - - public void testCase10_EnterRecordingMode() { - enterRecordingMode(); - mSolo.sleep(SHORT_TIME); - checkRecordNotSaveIdle(); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - mInstrumentation.waitForIdleSync(); - checkFMPlayingState(); - } - - // recording, discard, save. - public void testCase11_RecordingAndSave() { - enterRecordingMode(); - mSolo.sleep(SHORT_TIME); - // judge whether enter recording mode - checkRecordNotSaveIdle(); - - // test recording - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingState(); - // make recording time have 3 seconds - mSolo.sleep(SHORT_TIME); - // test stop reocording and save recording file - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingStopState(); - - // enter some illegal characters - mEditTextRecordName = (EditText) mSolo.getView(R.id.fm_recording_text); - String fileName = mEditTextRecordName.getText().toString(); - mSolo.clearEditText(mEditTextRecordName); - mSolo.enterText(mEditTextRecordName, "test:"); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - mButtonRecordSave = (Button) mSolo.getView(R.id.fm_recording_btn_save); - assertFalse(mButtonRecordSave.isEnabled()); - // enter some legal characters - mSolo.clearEditText(mEditTextRecordName); - mSolo.enterText(mEditTextRecordName, fileName); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - assertTrue(mButtonRecordSave.isEnabled()); - - // click discard not save file - mSolo.clickOnButton(mContext.getString(R.string.btn_discard_recording)); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordNotSaveIdle(); - - // recording and make focus at OK button of save recording dialog - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingState(); - // make recording time have 3 seconds - mSolo.sleep(SHORT_TIME); - // test stop reocording and save recording file - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingStopState(); - - // click OK button of save recording dialog - mSolo.clickOnButton(mContext.getString(R.string.btn_save_recording)); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordHasSavedIdle(); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - mInstrumentation.waitForIdleSync(); - } - - // recording and playback. - public void testCase12_RecordingAndPlayBack() { - enterRecordingMode(); - mSolo.sleep(TIMEOUT); - // judge whether enter recording mode - checkRecordNotSaveIdle(); - - // test recording - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingState(); - // make recording time have 3 seconds - mSolo.sleep(SHORT_TIME); - // test stop reocording and save recording file - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordingStopState(); - - // click OK button of save recording dialog - mSolo.clickOnButton(mContext.getString(R.string.btn_save_recording)); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkRecordHasSavedIdle(); - - // test playback recording file - clickView(mButtonPlayback); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(EXECUTE_TIME); - checkPlayingBackState(); - mSolo.sleep(TIMEOUT); - checkPlayingBackFinished(); - mSolo.sleep(SHORT_TIME); - - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - mInstrumentation.waitForIdleSync(); - } - - // test fm recreate when scan, and fm is powerup state. - public void testCase14_relaunchFmWhenCancelScan() { - Log.d(TAG, ">>> testCase14_relaunchFmWhenCancelScan"); - int oldStation = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - String cancel = mFmRadioActivity.getString(R.string.btn_cancel); - // test cancel scan - checkRelaunchWhenScan(); - // mInstrumentation.waitForIdleSync(); - mSolo.clickOnButton(cancel); - //mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - checkFMPlayingState(); - - int stationFromUI = FmRadioTestCaseUtil - .getStationFromUI(mTextViewFrequency); - // check station not change - assertTrue(oldStation == stationFromUI); - - checkRelaunchWhenScan(); - checkFinishScan(); - - } - - // mount, unmount sd card when recording - /*public void testCase15_mountUnmountWhenRecording() { - FmRadioTestCaseUtil.mountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - mSolo.sleep(SHORT_TIME); - enterRecordingMode(); - mSolo.sleep(SHORT_TIME); - checkRecordNotSaveIdle(); - String toastStartRecord = mContext.getString(R.string.toast_start_recording); - String toastSdCardMiss = mContext.getString(R.string.toast_sdcard_missing); - String save = mFmRadioActivity.getString(R.string.btn_save_recording); - String discard = mFmRadioActivity.getString(R.string.btn_discard_recording); - // unmount sd card when recording - - clickView(mButtonRecord); - assertTrue(mSolo.waitForText(toastStartRecord, 0, SHORT_TIME)); - mSolo.sleep(SHORT_TIME); - FmRadioTestCaseUtil.unmountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - assertFalse(mSolo.searchButton(save, true)); - checkRecordNotSaveIdle(); - - // click record after unmount - clickView(mButtonRecord); - assertTrue(mSolo.waitForText(toastSdCardMiss)); - checkRecordNotSaveIdle(); - - // check mount sd card and stop recording, popup save dialog, then unmount sd card - FmRadioTestCaseUtil.mountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - clickView(mButtonRecord); - assertTrue(mSolo.waitForText(toastStartRecord, 0, SHORT_TIME)); - mSolo.sleep(SHORT_TIME); - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - assertTrue(mSolo.searchButton(save, true)); - FmRadioTestCaseUtil.unmountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - assertFalse(mSolo.searchButton(save, true)); - - // mount sdcard finally - FmRadioTestCaseUtil.mountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - mInstrumentation.waitForIdleSync(); - } - - // mount, unmount sd card when recording - public void testCase16_mountUnmountWhenPlayback() { - // mount sdcard first - FmRadioTestCaseUtil.mountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - - // record some and playback - String save = mContext.getString(R.string.btn_save_recording); - String error = mContext.getString(R.string.toast_player_internal_error); - mSolo.sleep(SHORT_TIME); - enterRecordingMode(); - mSolo.sleep(SHORT_TIME); - - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(RECORDING_FILE_TIME); - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - assertTrue(mSolo.searchButton(save, true)); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - mSolo.clickOnButton(save); - mSolo.sleep(SHORT_TIME); - clickView(mButtonPlayback); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - - // unmount sd card - FmRadioTestCaseUtil.unmountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - assertTrue(mSolo.waitForText(error, 0, WAIT_MOUNT_UNMOUNT)); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - checkRecordNotSaveIdle(); - mSolo.sleep(SHORT_TIME); - - // mount sdcard finally - FmRadioTestCaseUtil.mountSDCard(mContext); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(WAIT_MOUNT_UNMOUNT); - }*/ - - // check fm exit when power up state - public void testCase17_FmExit() { - boolean isPlaying = false; - // test FM power down - makeFMPowerUp(); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - - // test FM power up - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - mSolo.sleep(SHORT_TIME); - } - - // check fm back key when power down state - public void testCase18_FmBackKeyExit() { - boolean isPlaying = false; - makeFMPowerUp(); - mInstrumentation.waitForIdleSync(); - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - mSolo.sleep(SHORT_TIME); - checkFMStopState(); - mSolo.goBack(); - mSolo.sleep(SHORT_TIME); - } - - // check fm tune from channel list - public void testCase19_relaunchFmTuneToStation() { - boolean isPlaying = false; - makeFMPowerUp(); - // add to favorite - int station = 0; - // test add channel as favorite - station = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - deleteChannelFromFavorite(station); - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - assertTrue(FmRadioStation.isFavoriteStation(mFmRadioActivity, station)); - - // test FM power up - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_channel_list, 0); - mSolo.sleep(SHORT_TIME); - mInstrumentation.waitForIdleSync(); - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - mSolo.sleep(SHORT_TIME); - - relaunchFm(); - mFmRadioFavorite = (FmRadioFavorite) mSolo.getCurrentActivity(); - mSolo = new Solo(mInstrumentation, mFmRadioFavorite); - mContext = mFmRadioFavorite.getApplicationContext(); - station = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - String pStation = String.valueOf((float) station / CONVERT_RATE); - mSolo.clickOnText(pStation); - mInstrumentation.waitForIdleSync(); - // delete favorite - deleteChannelFromFavorite(station); - mSolo.sleep(SHORT_TIME); - checkFMPlayingState(); - } - - // recorder. save same name recorder file - public void testCase20_saveRecorderWithSameName() { - enterRecordingMode(); - File sdDir = new File(FmRadioUtils.getDefaultStoragePath()); - File recordingFile = new File(sdDir.getPath() + "/FM Recording", "recorder_file.ogg"); - if (recordingFile.exists()) { - recordingFile.delete(); - } - mSolo.sleep(SHORT_TIME); - - // record some and playback - String save = mContext.getString(R.string.btn_save_recording); - String error = mContext.getString(R.string.toast_player_internal_error); - - // save recorder file - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - assertTrue(mSolo.searchButton(save, true)); - mInstrumentation.waitForIdleSync(); - EditText editText = (EditText) mSolo.getView(R.id.fm_recording_text); - mSolo.clearEditText(editText); - mSolo.enterText(editText, "recorder_file"); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.toggleSoftInput(0, 0); - mSolo.clickOnButton(save); - mSolo.sleep(SHORT_TIME); - - // save recorder file with same name - clickView(mButtonRecord); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - clickView(mButtonStop); - mInstrumentation.waitForIdleSync(); - assertTrue(mSolo.searchButton(save, true)); - mInstrumentation.waitForIdleSync(); - editText = (EditText) mSolo.getView(R.id.fm_recording_text); - mSolo.clearEditText(editText); - mSolo.enterText(editText, "recorder_file"); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager2 = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager2.toggleSoftInput(0, 0); - mSolo.clickOnButton(save); - - // check file has exist - String hasFile = mContext.getString(R.string.already_exists); - assertTrue(mSolo.waitForText(hasFile, 0, SHORT_TIME)); - - // discard save record file - String discard = mFmRadioActivity.getString(R.string.btn_discard_recording); - mSolo.clickOnButton(discard); - mInstrumentation.waitForIdleSync(); -// File sdDir = new File(FmRadioUtils.getInternalStoragePath()); -// File recordingFile = new File(sdDir.getPath() + "/FM Recording", "recorder_file"); - if (recordingFile.exists()) { - recordingFile.delete(); - } - - checkRecordNotSaveIdle(); - } - - // check scan dialog, and fm is powerup sate when recreate - private void checkRelaunchWhenScan() { - Log.d(TAG, ">>> checkRelaunchWhenScan"); - startScanWhenPowerUp(); - //mSolo.sleep(ONE_SECOND); - String cancel = mFmRadioActivity.getString(R.string.btn_cancel); - boolean isVisible = mSolo.searchButton(cancel, true); - assertTrue(isVisible); - - //relaunch after start scan - relaunchFm(); - //mInstrumentation.waitForIdleSync(); - mSolo.sleep(ONE_SECOND); - Log.d(TAG, "current activity:" + mSolo.getCurrentActivity().getComponentName()); - initialRel(); - mSolo.sleep(ONE_SECOND); - //check dialog is shown after relaunch - isVisible = mSolo.searchButton(cancel, true); - assertTrue(isVisible); - Log.d(TAG, "<<< checkRelaunchWhenScan"); - } - - private void relaunchFm() { - mSolo.getCurrentActivity().runOnUiThread(new Runnable() { - - @Override - public void run() { - Log.d(TAG, "sub thread relaunchFm start"); - mSolo.getCurrentActivity().recreate(); - Log.d(TAG, "sub thread relaunchFm end"); - } - }); - } - - private void enterRecordingMode() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - mSolo.sleep(EXECUTE_TIME); - String record = mFmRadioActivity.getString(R.string.optmenu_record); - mSolo.clickOnText(record); - mInstrumentation.waitForIdleSync(); - } - - // check ui and state when no recording file saved. - public void checkRecordNotSaveIdle() { - assertTrue(mButtonRecord.isEnabled()); - assertFalse(mButtonPlayback.isEnabled()); - assertFalse(mButtonStop.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check ui and state while recording. - public void checkRecordingState() { - assertFalse(mButtonRecord.isEnabled()); - assertFalse(mButtonPlayback.isEnabled()); - assertTrue(mButtonStop.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check ui and state when recording stop - public void checkRecordingStopState() { - mButtonRecordSave = (Button) mSolo.getView(R.id.fm_recording_btn_save); - assertTrue(mButtonRecordSave.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check ui and state when save an recording file. - public void checkRecordHasSavedIdle() { - assertTrue(mButtonRecord.isEnabled()); - assertTrue(mButtonPlayback.isEnabled()); - assertFalse(mButtonStop.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check ui and state while playing back an recordfing file. - public void checkPlayingBackState() { - assertFalse(mButtonRecord.isEnabled()); - assertFalse(mButtonPlayback.isEnabled()); - assertTrue(mButtonStop.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check ui and state when play back an recording file finish. - public void checkPlayingBackFinished() { - assertTrue(mButtonRecord.isEnabled()); - assertTrue(mButtonPlayback.isEnabled()); - assertFalse(mButtonStop.isEnabled()); - assertTrue(mButtonAddToFavorite.getVisibility() == View.GONE); - } - - // check state, if cancel scan - public void checkCancelScan() { - mSolo.sleep(SHORT_TIME); - String cancel = mFmRadioActivity.getString(R.string.btn_cancel); - mSolo.clickOnText(cancel); - mInstrumentation.waitForIdleSync(); - int currentStation = (Integer) FmRadioTestCaseUtil - .getVariableFromActivity(mFmRadioActivity, "mCurrentStation"); - assertEquals(currentStation, - FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency)); - mSolo.sleep(SHORT_TIME); - } - - // check state, if finish scan - public void checkFinishScan() { - Log.d(TAG, ">>> checkFinishScan"); - //mInstrumentation.waitForIdleSync(); - mActivityMonitor = mInstrumentation.addMonitor( - FmRadioFavorite.class.getName(), null, false); - Log.d(TAG, "current activity:" + mSolo.getCurrentActivity().getComponentName()); - mFmRadioFavorite = (FmRadioFavorite) mInstrumentation - .waitForMonitorWithTimeout(mActivityMonitor, SEARCH_TIME); - mSolo.sleep(SHORT_TIME); - Log.d(TAG, "mFmRadioFavorite is " + mFmRadioFavorite); - assertNotNull(mFmRadioFavorite); - - // test data in database. - Uri uri = Uri.parse(CONTENTURI); - Cursor c = mFmRadioFavorite.getContentResolver().query( - uri, - new String[] { FmRadioStation.Station._ID, - FmRadioStation.Station.COLUMN_STATION_FREQ, - FmRadioStation.Station.COLUMN_STATION_TYPE }, null, - null, null); - assertTrue(c != null && c.getCount() > 0); - int stationFreq = 0; - int stationType = 0; - if (c != null) { - c.moveToFirst(); - while (!c.isAfterLast()) { - stationFreq = c.getInt(1); - stationType = c.getInt(2); - Log.d(TAG, "station =" + stationFreq); - if (FmRadioStation.STATION_TYPE_SEARCHED == stationType) { - assertTrue(FmRadioTestCaseUtil.isExistInChannelList( - mFmRadioFavorite, stationFreq)); - } - c.moveToNext(); - } - } - if (c != null) { - c.close(); - } - - // click the last station in listview to play. - String pStation = String.valueOf((float) stationFreq / CONVERT_RATE); - mSolo.clickOnText(pStation); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - assertEquals(stationFreq, - FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency)); - - checkFMPlayingState(); - } - - private void switchEarphone() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - String earphone = mFmRadioActivity.getString(R.string.optmenu_earphone); - mSolo.clickOnText(earphone); - mInstrumentation.waitForIdleSync(); - } - - private void switchSpeaker() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - String speaker = mFmRadioActivity.getString(R.string.optmenu_speaker); - mSolo.clickOnText(speaker); - mInstrumentation.waitForIdleSync(); - } - - private void deleteChannelFromFavorite(int station) { - if (FmRadioStation.isFavoriteStation(mFmRadioActivity, station)) { - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - } - } - - private void addChannelAsFavorite(int station) { - if (!FmRadioStation.isFavoriteStation(mFmRadioActivity, station)) { - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - } - - } - - private void makeFMPowerUp() { - boolean isPlaying = false; - isPlaying = (Boolean) FmRadioTestCaseUtil.getVariableFromActivity( - mFmRadioActivity, "mIsPlaying"); - if (!isPlaying) { - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - } - //mInstrumentation.waitForIdleSync(); - mSolo.sleep(TIMEOUT); - } - - private void makeFMPowerDown() { - boolean isPlaying = true; - isPlaying = (Boolean) FmRadioTestCaseUtil.getVariableFromActivity( - mFmRadioActivity, "mIsPlaying"); - if (isPlaying) { - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - } - mInstrumentation.waitForIdleSync(); - mSolo.sleep(SHORT_TIME); - } - - private void clickView(final View view) { - try { - runTestOnUiThread(new Runnable() { - @Override - public void run() { - view.performClick(); - } - }); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - private void waitForInitedWithTimeout(long timeOut) { - long startTime = System.currentTimeMillis(); - boolean isInited = (Boolean) FmRadioTestCaseUtil - .getVariableFromMethod(mFmRadioActivity, "isServiceInited"); - while (!isInited) { - if (System.currentTimeMillis() - startTime > timeOut) { - break; - } - mSolo.sleep(CHECK_TIME); - } - } - - private void waitForPowerupWithTimeout(long timeOut) { - - long startTime = System.currentTimeMillis(); - boolean isPlaying = (Boolean) FmRadioTestCaseUtil - .getVariableFromActivity(mFmRadioActivity, "mIsPlaying"); - while (!isPlaying) { - if (System.currentTimeMillis() - startTime > timeOut) { - break; - } - mSolo.sleep(CHECK_TIME); - } - } - - // start scan when power up state - private void startScanWhenPowerUp() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - mInstrumentation.waitForIdleSync(); - mSolo.sleep(ONE_SECOND); - String search = mFmRadioActivity.getString(R.string.optmenu_search); - mSolo.clickOnText(search); - } - - // check play FM layout button enable - public void checkFMPlayingState() { - assertTrue(mButtonDecrease.isEnabled()); - assertTrue(mButtonIncrease.isEnabled()); - assertTrue(mButtonNextStation.isEnabled()); - assertTrue(mButtonPrevStation.isEnabled()); - - } - - // check play FM layout button enable - public void checkFMStopState() { - assertFalse(mButtonDecrease.isEnabled()); - assertFalse(mButtonPrevStation.isEnabled()); - assertFalse(mButtonNextStation.isEnabled()); - assertFalse(mButtonIncrease.isEnabled()); - } - - public void initialRel() { - mFmRadioActivity = (FmRadioActivity) mSolo.getCurrentActivity(); - mSolo = new Solo(mInstrumentation, mFmRadioActivity); - mContext = mFmRadioActivity.getApplicationContext(); - assertNotNull(mFmRadioActivity); - mButtonPrevStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_prevstation); - mButtonNextStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_nextstation); - mButtonDecrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_decrease); - mButtonIncrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_increase); - - mButtonAddToFavorite = (ImageButton) mFmRadioActivity - .findViewById(R.id.button_add_to_favorite); - - mTextViewFrequency = (TextView) mFmRadioActivity - .findViewById(R.id.station_value); - } - - @Override - protected void tearDown() { - mSolo.finishOpenedActivities(); - mInstrumentation.waitForIdleSync(); - FmRadioTestCaseUtil.sleep(WAIT_TEAR_DOWN); - try { - mSolo.finalize(); - } catch (Throwable t) { - t.printStackTrace(); - } - try { - super.tearDown(); - } catch (Exception e) { - e.printStackTrace(); - } - } - -} diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFavoriteTest.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFavoriteTest.java deleted file mode 100755 index 841a727..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFavoriteTest.java +++ /dev/null @@ -1,261 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; -import android.app.Instrumentation; -import android.test.ActivityInstrumentationTestCase2; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.TextView; -import android.content.Context; - -import com.jayway.android.robotium.solo.Solo; -import com.mediatek.fmradio.FmRadioActivity; -import com.mediatek.fmradio.FmRadioFavorite; -import com.mediatek.fmradio.FmRadioStation; -import com.mediatek.fmradio.R; - - -public class FmRadioFavoriteTest extends - ActivityInstrumentationTestCase2<FmRadioFavorite> { - private Solo mSolo = null; - private TextView mTextViewFrequency = null; - private FmRadioFavorite mFmRadioFavorite = null; - private FmRadioActivity mFmRadioActivity = null; - private Context mContext = null; - private Instrumentation mInstrumentation = null; - private static final int CONVERT_RATE = 10; - private static final long SLEEP_TIME = 2000; - - public FmRadioFavoriteTest() { - super("com.mediatek.fmradio", FmRadioFavorite.class); - } - @Override - protected void setUp() throws Exception { - super.setUp(); - mSolo = new Solo(getInstrumentation(), getActivity()); - mInstrumentation = getInstrumentation(); - mFmRadioFavorite = (FmRadioFavorite) getActivity(); - mContext = mFmRadioFavorite.getApplicationContext(); - } - public void testCase01_AddToFavorite() { - boolean find = false; - float frequency = 0; - int stationInList = 0; - ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - for (int i = 0; i < listView.getCount(); i++) { - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - if (!FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(FmRadioTestCaseUtil.getProjectString(mContext, R.string.add_to_favorite1, R.string.add_to_favorite)); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.toggleSoftInput(0, 0); - mSolo.clickOnButton(mContext.getString(R.string.btn_ok)); - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); - assertTrue(FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)); - return ; - } - } - - } - public void testCase02_EditFavoriteChannel() { - boolean find = false; - float frequency = 0; - int stationInList = 0; - ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - for (int i = 0; i < listView.getCount(); i++) { - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - if (FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(mContext.getString(R.string.contmenu_item_edit)); - EditText editText = (EditText) mSolo.getView(R.id.dlg_edit_station_name_text); - mSolo.clearEditText(editText); - mSolo.enterText(editText, "aaa"); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.toggleSoftInput(0, 0); - mSolo.clickOnButton(mContext.getString(R.string.edit_frequency_overwrite_text)); - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); - assertEquals("aaa", FmRadioStation.getStationName(mFmRadioFavorite, stationInList, FmRadioStation.STATION_TYPE_FAVORITE)); - return ; - } - } - } - public void testCase03_DeleteFromFavorite() throws Throwable { - boolean find = false; - float frequency = 0; - int stationInList = 0; - final ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - for (int i = 0; i < listView.getCount(); i++) { - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - if (FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - runTestOnUiThread(new Runnable() { - @Override - public void run() { - listView.setSelection(0); - } - }); - mSolo.sleep(3000); - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(FmRadioTestCaseUtil.getProjectString(mContext, R.string.contmenu_item_delete1, R.string.contmenu_item_delete)); - mInstrumentation.waitForIdleSync(); - mSolo.clickOnButton(mContext.getString(R.string.btn_ok)); - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); - assertFalse(FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)); - return ; - } - } - } - - // edit a favorite to a favorite frequency - public void testCase04_EditFavoriteToFavorite() throws Throwable { - boolean find = false; - float frequency = 0; - int stationInList = 0; - String preFavoritaFreq = ""; - ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - int count = listView.getCount(); - for (int i = 0; i < count; i++) { - int favoriateCount = 0; - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - if (FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - favoriateCount += 1; - preFavoritaFreq = frequencyStr; - } - // add to favoriate - if (!FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(FmRadioTestCaseUtil.getProjectString(mContext, R.string.add_to_favorite1, R.string.add_to_favorite)); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.toggleSoftInput(0, 0); - mSolo.clickOnButton(mContext.getString(R.string.btn_ok)); - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); - assertTrue(FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)); - // edit favoriate to exist favorite - if (favoriateCount > 0) { - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(mContext.getString(R.string.contmenu_item_edit)); - EditText editText = (EditText) mSolo.getView(R.id.dlg_edit_station_name_text); - mSolo.clearEditText(editText); - mSolo.enterText(editText, preFavoritaFreq); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager2 = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager2.toggleSoftInput(0, 0); - mSolo.clickOnButton(mContext.getString(R.string.btn_ok)); - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); - assertEquals(preFavoritaFreq, FmRadioStation.getStationName(mFmRadioFavorite, stationInList, FmRadioStation.STATION_TYPE_FAVORITE)); - break; - } - } - } - testCase03_DeleteFromFavorite(); - } - - private void sleep(long milliseconds) { - try { - Thread.sleep(milliseconds); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - @Override - protected void tearDown() throws Exception { - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - try { - mSolo.finalize(); - } catch (Throwable t) { - t.printStackTrace(); - } - super.tearDown(); - } - -} diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFunctionRunner.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFunctionRunner.java deleted file mode 100755 index 7658b2f..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFunctionRunner.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import junit.framework.TestSuite; - -import android.test.InstrumentationTestRunner; -import android.test.InstrumentationTestSuite; - -public class FmRadioFunctionRunner extends InstrumentationTestRunner { - @Override - public TestSuite getAllTests() { - InstrumentationTestSuite suite = new InstrumentationTestSuite(this); - suite.addTestSuite(FmRadioActivityTest.class); - suite.addTestSuite(FmRadioFavoriteTest.class); - return suite; - } - - @Override - public ClassLoader getLoader() { - return FmRadioFunctionRunner.class.getClassLoader(); - } - -} diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioLaunchPerformance.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioLaunchPerformance.java deleted file mode 100755 index 828690c..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioLaunchPerformance.java +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import android.app.Activity; -import android.os.Bundle; -import android.test.LaunchPerformanceBase; - -public class FmRadioLaunchPerformance extends LaunchPerformanceBase { - @Override - public void onCreate(Bundle arguments) { - super.onCreate(arguments); - mIntent.setClassName(getTargetContext(), - "com.mediatek.fmradio.FmRadioActivity"); - start(); - } - - @Override - public void onStart() { - super.onStart(); - LaunchApp(); - finish(Activity.RESULT_OK, mResults); - } -}
\ No newline at end of file diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceRunner.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceRunner.java deleted file mode 100755 index ad25cd4..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceRunner.java +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import junit.framework.TestSuite; -import android.test.InstrumentationTestRunner; -import android.test.InstrumentationTestSuite; - -public class FmRadioPerformanceRunner extends InstrumentationTestRunner { - @Override - public TestSuite getAllTests() { - InstrumentationTestSuite suite = new InstrumentationTestSuite(this); - suite.addTestSuite(FmRadioPerformanceTest.class); - return suite; - } - - @Override - public ClassLoader getLoader() { - return FmRadioPerformanceRunner.class.getClassLoader(); - } - -} diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceTest.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceTest.java deleted file mode 100755 index 7bc3bf0..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceTest.java +++ /dev/null @@ -1,554 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import android.app.Activity; -import android.app.Instrumentation; -import android.content.Context; -import android.media.AudioManager; -import android.test.ActivityInstrumentationTestCase2; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.ImageButton; -import android.widget.ListAdapter; -import android.widget.TextView; -import android.widget.ListView; -import android.app.Instrumentation.ActivityMonitor; -import com.jayway.android.robotium.solo.Solo; - -import com.mediatek.fmradio.FmRadioActivity; -import com.mediatek.fmradio.FmRadioFavorite; -import com.mediatek.fmradio.FmRadioStation; -import com.mediatek.fmradio.R; - -public class FmRadioPerformanceTest extends ActivityInstrumentationTestCase2<FmRadioActivity> { - - public FmRadioPerformanceTest(Class<FmRadioActivity> activityClass) { - super(activityClass); - } - - public FmRadioPerformanceTest() { - super(FmRadioActivity.class); - } - - private AudioManager mAudioManager = null; - - // bottom bar - private ImageButton mButtonDecrease = null; - private ImageButton mButtonPrevStation = null; - private ImageButton mButtonNextStation = null; - private ImageButton mButtonIncrease = null; -// private ImageButton mButtonPlayStop = null; - - private ImageButton mButtonAddToFavorite = null; - - private TextView mTextViewFrequency = null; - - private static final long TIMEOUT = 5000; - private static final long CHECK_TIME = 100; - private static final long SHORT_TIME = 3000; - private static final long WAIT_UI_STATE_CHANGE = 10000; - private static final long WAIT_SCAN_FINISH = 20000; - private static final long WAIT_TEAR_DOWN = 3000; - private static final long SLEEP_TIME = 2000; - private static final long RDS_TIME_OUT = 10 * 60 * 1000; - private static final int CONVERT_RATE = 10; - private static final int EXECUTE_TIME = 500; - private static final String TAG = "FmRadioPerformanceTest"; - - private FmRadioActivity mFmRadioActivity = null; - private Instrumentation mInstrumentation = null; - private ActivityMonitor mActivityMonitor = null; - private FmRadioFavorite mFmRadioFavorite = null; - private Solo mSolo = null; - - @Override - public void setUp() throws Exception { - super.setUp(); - Log.i(TAG, "setUp"); - setActivityInitialTouchMode(false); - mFmRadioActivity = getActivity(); - assertNotNull(mFmRadioActivity); - mInstrumentation = getInstrumentation(); - assertNotNull(mInstrumentation); - mSolo = new Solo(getInstrumentation(), mFmRadioActivity); - Context mContext = mFmRadioActivity.getApplicationContext(); - mAudioManager = (AudioManager) mFmRadioActivity.getSystemService(mContext.AUDIO_SERVICE); - // Makesure FmRadio is playing and initialed - waitForPowerupWithTimeout(TIMEOUT); - boolean isPlaying = getBooleanFromVariable(mFmRadioActivity, "mIsPlaying"); - assertTrue(isPlaying); - waitForInitedWithTimeout(TIMEOUT); - boolean isInited = getBooleanFromVariable(mFmRadioActivity, "mIsServiceBinded"); - assertTrue(isInited); - mButtonDecrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_decrease); - mButtonPrevStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_prevstation); - mButtonNextStation = (ImageButton) mFmRadioActivity.findViewById(R.id.button_nextstation); - mButtonIncrease = (ImageButton) mFmRadioActivity.findViewById(R.id.button_increase); -// mButtonPlayStop = (ImageButton) mFmRadioActivity.findViewById(R.id.button_play_stop); - - mButtonAddToFavorite = (ImageButton) mFmRadioActivity.findViewById(R.id.button_add_to_favorite); - mTextViewFrequency = (TextView) mFmRadioActivity.findViewById(R.id.station_value); - } - - - private void waitForInitedWithTimeout(long timeOut) { - Log.i(TAG, ">>>waitForInitedWithTimeout"); - - long startTime = System.currentTimeMillis(); - while (!getBooleanFromVariable(mFmRadioActivity, "mIsServiceBinded")) { - if (System.currentTimeMillis() - startTime > timeOut) { - break; - } - sleep(CHECK_TIME); - } - Log.i(TAG, "<<<waitForInitedWithTimeout"); - - } - - private void waitForPowerupWithTimeout(long timeOut) { - Log.i(TAG, ">>>waitForPowerupWithTimeout"); - - long startTime = System.currentTimeMillis(); - while (!getBooleanFromVariable(mFmRadioActivity, "mIsPlaying")) { - if (System.currentTimeMillis() - startTime > timeOut) { - break; - } - sleep(CHECK_TIME); - } - Log.i(TAG, "<<<waitForPowerupWithTimeout"); - } - - /** - * Test scan channel performance. - */ - public void testCase00_ScanChannelPerformance() throws Exception { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - mInstrumentation.waitForIdleSync(); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_UP); - mInstrumentation.waitForIdleSync(); - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] scan channel start [" + startTime + "]"); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); - sleep(WAIT_SCAN_FINISH); - mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK); - sleep(SHORT_TIME); - } - - /** - * Test open channel performance. - */ - /*public void testCase01_ChannelOpenPerformance() throws Exception { - int station = getStationFromUI(); - addChannelAsFavorite(station); - clickView(mButtonIncrease); - sleep(SHORT_TIME); - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_channel_list, 0); - mActivityMonitor = new ActivityMonitor("com.mediatek.fmradio.FmRadioFavorite", null, false); - mInstrumentation.addMonitor(mActivityMonitor); - mFmRadioFavorite = (FmRadioFavorite) mActivityMonitor.waitForActivityWithTimeout(TIMEOUT); - assertNotNull(mFmRadioFavorite); - ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - mSolo.clickOnView(listView.getChildAt(0)); - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] open channel start [" + startTime + "]"); - sleep(WAIT_UI_STATE_CHANGE); - - }*/ - - /** - * Test increase and decrease 0.1 MHz / 0.05 MHZ performance. - */ - public void testCase02_FrequencyChangePerformance() throws Exception { - - // test decrease frequency performance - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] decrease frequency start [" + startTime + "]"); - clickView(mButtonDecrease); - sleep(WAIT_UI_STATE_CHANGE); - - // test increase frequency performance - startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] increase frequency start [" + startTime + "]"); - clickView(mButtonIncrease); - sleep(WAIT_UI_STATE_CHANGE); - - } - - /** - * Test seek channel performance. - */ - public void testCase03_SeekChannelPerformance() throws Exception { - // test seek previous station performance - int stationGap = 0; - int currentStation = FmRadioStation.getCurrentStation(mFmRadioActivity); - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] seek previous channel start [" + startTime + "]"); - clickView(mButtonPrevStation); - sleep(WAIT_UI_STATE_CHANGE); - int searchStation = FmRadioStation.getCurrentStation(mFmRadioActivity); - if (searchStation > currentStation) { - stationGap = searchStation - currentStation; - Log.i(TAG, "[Performance test][FmRadio] Test FmRadio seek time stationStep [" + (float) stationGap / CONVERT_RATE + "]"); - } else if (searchStation < currentStation) { - stationGap = FmRadioTestCaseUtil.HIGHEST_STATION - currentStation + searchStation - FmRadioTestCaseUtil.LOWEST_STATION; - Log.i(TAG, "[Performance test][FmRadio] Test FmRadio seek time stationStep [" + (float) stationGap / CONVERT_RATE + "]"); - } else { - Log.e(TAG, "SearchStation Unchanged"); - } - // test seek next station frequency performance - currentStation = FmRadioStation.getCurrentStation(mFmRadioActivity); - startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] seek next channel start [" + startTime + "]"); - clickView(mButtonNextStation); - sleep(WAIT_UI_STATE_CHANGE); - if (searchStation > currentStation) { - stationGap = searchStation - currentStation; - Log.i(TAG, "[Performance test][FmRadio] Test FmRadio seek time stationStep [" + (float) stationGap / CONVERT_RATE + "]"); - } else if (searchStation < currentStation) { - stationGap = FmRadioTestCaseUtil.HIGHEST_STATION - currentStation + searchStation - FmRadioTestCaseUtil.LOWEST_STATION; - Log.i(TAG, "[Performance test][FmRadio] Test FmRadio seek time stationStep [" + (float) stationGap / CONVERT_RATE + "]"); - } else { - Log.e(TAG, "SearchStation Unchanged"); - } - } - - /** - * Test switch earphone and speaker performance. - */ - public void testCase04_SwitchSpeakerEarphone() throws Exception { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - String earphone = mFmRadioActivity.getString(R.string.optmenu_earphone); - String speaker = mFmRadioActivity.getString(R.string.optmenu_speaker); - - sleep(SHORT_TIME); - // test switch speaker performance - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - mSolo.clickOnText(speaker); - sleep(SHORT_TIME); - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - assertTrue(mSolo.searchText(earphone)); - mInstrumentation.waitForIdleSync(); - - // test switch earphone performance - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - mSolo.clickOnText(earphone); - sleep(SHORT_TIME); - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - assertTrue(mSolo.searchText(speaker)); - } - - /** - * Test power up performance. - */ - public void testCase05_PowerUpPerformance() throws Exception { - if (mButtonDecrease.isEnabled()) { - makeFMPowerDown(); - } - // test power up performance - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] power up start [" + startTime + "]"); -// clickView(mButtonPlayStop); - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - sleep(WAIT_UI_STATE_CHANGE); - } - - /** - * Test get rds performance - * start time: tune to 91.4 finished - * end time: rds information show - */ - public void testCase06_RDSPerformance() { - int station = 0; - // test add channel as favorite - station = FmRadioTestCaseUtil.getStationFromUI(mTextViewFrequency); - if (!FmRadioStation.isFavoriteStation(mFmRadioActivity, station)) { - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - FmRadioTestCaseUtil.sleep(SHORT_TIME); - } - - // enter channel list - mInstrumentation.invokeMenuActionSync(mFmRadioActivity, - R.id.fm_channel_list, 0); - mActivityMonitor = new ActivityMonitor( - "com.mediatek.fmradio.FmRadioFavorite", null, false); - mInstrumentation.addMonitor(mActivityMonitor); - mFmRadioFavorite = (FmRadioFavorite) mActivityMonitor - .waitForActivityWithTimeout(TIMEOUT); - assertNotNull(mFmRadioFavorite); - // edit this station to rds station91.4 - float frequency = 0; - int stationInList = 0; - ListView listView = (ListView) mFmRadioFavorite.findViewById(R.id.station_list); - FmRadioTestCaseUtil.sleep(SLEEP_TIME); - assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - for (int i = 0; i < listView.getCount(); i++) { - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - if (FmRadioStation.isFavoriteStation(mFmRadioFavorite, stationInList)) { - mSolo.clickLongOnText(frequencyStr); - mSolo.clickOnText(mFmRadioFavorite.getString(R.string.contmenu_item_edit)); - EditText editText = (EditText) mSolo.getView(R.id.dlg_edit_station_freq_text); - mSolo.clearEditText(editText); - mSolo.enterText(editText, "91.4"); - mInstrumentation.waitForIdleSync(); - InputMethodManager inputMethodManager = (InputMethodManager) mSolo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE); - inputMethodManager.toggleSoftInput(0, 0); - if (FmRadioStation.isStationExistInChList(mFmRadioFavorite, 914)) { - mSolo.clickOnText(mFmRadioFavorite.getString(R.string.edit_frequency_overwrite_text)); - } else { - mSolo.clickOnText(mFmRadioFavorite.getString(R.string.btn_ok)); - } - mInstrumentation.waitForIdleSync(); - sleep(SLEEP_TIME); -// assertEquals("aaa", FmRadioStation.getStationName(mFmRadioFavorite, stationInList, FmRadioStation.STATION_TYPE_FAVORITE)); - break; - } - } - - // tune to RDS station 91.4 - mSolo.clickOnText("91.4"); - long startTuneTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] open channel start [" + startTuneTime + "]"); - mInstrumentation.waitForIdleSync(); - // test increase frequency performance - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] receive RDS start [" + startTime + "]"); - - // check RDS info is change - final TextView rdsTextView = (TextView) FmRadioTestCaseUtil.getVariableFromActivity(mFmRadioActivity, "mTextRDS"); - long scapeTime = 0; - while (true) { - String rdsInfo = rdsTextView.getText().toString(); - if (!"".equals(rdsInfo)) { - long endTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] receive RDS end [" + endTime + "]"); - break; - } - try { - scapeTime = System.currentTimeMillis() - startTime; - sleep(CHECK_TIME); - } catch (Exception e) { - } - // if time > 10min, end time will be 10min - if (scapeTime > RDS_TIME_OUT) { - long endTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] receive RDS end [" + endTime + "]"); - break; - } - } - } - - public void testCase07_PowerDownPerformance() throws Exception { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - // test power down performance - long startTime = System.currentTimeMillis(); - Log.i(TAG, "[Performance test][FmRadio] power down start [" + startTime + "]"); - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - sleep(WAIT_UI_STATE_CHANGE); - } - - private void makeFMPowerUp() { - boolean isPlaying = false; - isPlaying = getBooleanFromVariable(mFmRadioActivity, "mIsPlaying"); - if (!isPlaying) { - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_power, 0); - } - sleep(WAIT_UI_STATE_CHANGE); - - } - - private void makeFMPowerDown() { - boolean isPlaying = true; - isPlaying = getBooleanFromVariable(mFmRadioActivity, "mIsPlaying"); - if (isPlaying) { - FmRadioTestCaseUtil.requestFocusGain(mAudioManager); - } - sleep(WAIT_UI_STATE_CHANGE); - - } - - private void switchEarphone() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - String earphone = mFmRadioActivity.getString(R.string.optmenu_earphone); - mSolo.clickOnText(earphone); - mInstrumentation.waitForIdleSync(); - } - - private void switchSpeaker() { - if (!mButtonDecrease.isEnabled()) { - makeFMPowerUp(); - } - mInstrumentation - .invokeMenuActionSync(mFmRadioActivity, R.id.fm_menu, 0); - String speaker = mFmRadioActivity.getString(R.string.optmenu_speaker); - mSolo.clickOnText(speaker); - mInstrumentation.waitForIdleSync(); - - } - - private boolean getBooleanFromVariable(Activity activity, String variable) { - Field field = null; - boolean value = false; - try { - field = FmRadioActivity.class.getDeclaredField(variable); - field.setAccessible(true); - value = ((Boolean) field.get(activity)).booleanValue(); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - return value; - } - - private boolean getBooleanFromMethod(Activity activity, String method) { - - boolean value = false; - Class c = mFmRadioActivity.getClass(); - try { - Method m = (Method) c.getDeclaredMethod(method, new Class[] {}); - m.setAccessible(true); - value = (Boolean) m.invoke(activity, new Object[] {}); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - return value; - } - - private void clickView(final View view) { - try { - runTestOnUiThread(new Runnable() { - public void run() { - view.performClick(); - - } - }); - } catch (Throwable t) { - t.printStackTrace(); - } - } - - private void sleep(long milliseconds) { - try { - Thread.sleep(milliseconds); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - private void addChannelAsFavorite(int station) { - if (!FmRadioStation.isFavoriteStation(mFmRadioActivity, station)) { - clickView(mButtonAddToFavorite); - mInstrumentation.waitForIdleSync(); - sleep(SHORT_TIME); - } - - } - - private int getStationFromUI() { - int station = 0; - float frequency = 0; - mTextViewFrequency = (TextView) mFmRadioActivity.findViewById(R.id.station_value); - String frequencyStr = mTextViewFrequency.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - station = (int) (frequency * CONVERT_RATE); - return station; - - } - - @Override - public void tearDown() throws Exception { - Log.i(TAG, "tearDown"); - try { - mSolo.finalize(); - } catch (Throwable t) { - t.printStackTrace(); - } - mSolo.finishOpenedActivities(); - sleep(WAIT_TEAR_DOWN); - super.tearDown(); - } - - -} diff --git a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioTestCaseUtil.java b/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioTestCaseUtil.java deleted file mode 100755 index f34a8c1..0000000 --- a/MediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioTestCaseUtil.java +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio.tests; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import android.app.Activity; -import android.content.Context; -import android.media.AudioManager; -import android.media.AudioManager.OnAudioFocusChangeListener; -import android.util.Log; -import android.view.View; -import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.TextView; -import junit.framework.Assert; -//import com.mediatek.storage.StorageManagerEx; -import com.mediatek.fmradio.FmRadioActivity; -import com.mediatek.fmradio.R; - -public class FmRadioTestCaseUtil { - // FM station variables - public static final int DEFAULT_STATION = 1000; - // maximum station frequency - public static final int HIGHEST_STATION = 1080; - // minimum station frequency - public static final int LOWEST_STATION = 875; - - // minimum storage space for record - public static final long LOW_SPACE_THRESHOLD = 512 * 1024; - - public static final int CONVERT_RATE = 10; - public static final long CHECK_TIME = 200; - public static final String OP = android.os.SystemProperties.get("ro.operator.optr"); - public static final boolean IS_CMCC = ("OP01").equals(OP); // whether is CMCC project - private static final String TAG = "FmRadioTestCaseUtil"; - - // check station is in channel list. - public static boolean isExistInChannelList(Activity activity, int station) { - - boolean find = false; - float frequency = 0; - int stationInList = 0; - ListView listView = (ListView) activity.findViewById(R.id.station_list); - sleep(CHECK_TIME); - Assert.assertTrue((listView != null) && (listView.getCount() > 0)); - ListAdapter listAdapter = listView.getAdapter(); - int stationCount = listView.getCount(); - Log.d(TAG, "isExistInChannelList stationCount:" + stationCount); - for (int i = 0; i < stationCount; i++) { - View view = listAdapter.getView(i, null, listView); - TextView textView = (TextView) view.findViewById(R.id.lv_station_freq); - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - stationInList = (int) (frequency * CONVERT_RATE); - Log.d(TAG, "isExistInChannelList i:" + i + ", frequencyStr:" + frequencyStr + - ", stationInList:" + stationInList); - if (station == stationInList) { - return true; - } - } - return false; - } - - // get station fraom UI. - public static int getStationFromUI(TextView textView) { - int station = 0; - float frequency = 0; - String frequencyStr = textView.getText().toString(); - try { - frequency = Float.parseFloat(frequencyStr); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - station = (int) (frequency * CONVERT_RATE); - return station; - } - - // sleep - public static void sleep(long milliseconds) { - try { - Thread.sleep(milliseconds); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - // get variable from method. - public static Object getVariableFromMethod(Activity activity, String method) { - Object value = false; - Class c = activity.getClass(); - try { - Method m = (Method) c.getDeclaredMethod(method, new Class[] {}); - m.setAccessible(true); - value = m.invoke(activity, new Object[] {}); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - return value; - } - - // get variable from activity. - public static Object getVariableFromActivity(Activity activity, String variable) { - Field field = null; - Object value = null; - try { - field = FmRadioActivity.class.getDeclaredField(variable); - field.setAccessible(true); - value = field.get(activity); - } catch (SecurityException e) { - e.printStackTrace(); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - return value; - } - - public static String getProjectString(Context context, int cmccResId, int normalResId) { - return IS_CMCC ? context.getString(cmccResId) : context.getString(normalResId); - } - -// public static void mountSDCard(Context context) { -// try { -// getMountService().mountVolume(StorageManagerEx.getDefaultPath()); -// } catch (RemoteException e) { -// } -// } - -// public static void unmountSDCard(Context context) { -// try { -// getMountService().unmountVolume(StorageManagerEx.getDefaultPath(), -// true, false); -// } catch (RemoteException e) { -// } -// } -// -// private static IMountService getMountService() { -// IMountService mountService = null; -// IBinder service = ServiceManager.getService("mount"); -// Assert.assertNotNull(service); -// mountService = IMountService.Stub.asInterface(service); -// return mountService; -// } - - private static OnAudioFocusChangeListener mAudioFocusListener = new OnAudioFocusChangeListener() { - public void onAudioFocusChange(int focusChange) { - switch (focusChange) { - case AudioManager.AUDIOFOCUS_LOSS: - Log.d(TAG, "request audio focus loss"); - break; - case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: - Log.d(TAG, "request audio focus loss transient"); - break; - case AudioManager.AUDIOFOCUS_GAIN: - Log.d(TAG, "request audio focus gain"); - break; - default : - break; - } - } - }; - public static void requestFocusGain(AudioManager audioManager) { - audioManager.requestAudioFocus(mAudioFocusListener, - AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); - } -} diff --git a/MediaTek/FmRadio/turnkey/com/mediatek/fmradio/ExtensionUtils.java b/MediaTek/FmRadio/turnkey/com/mediatek/fmradio/ExtensionUtils.java deleted file mode 100755 index d560f17..0000000 --- a/MediaTek/FmRadio/turnkey/com/mediatek/fmradio/ExtensionUtils.java +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -package com.mediatek.fmradio; - -import android.content.Context; - -import com.mediatek.common.MPlugin; -import com.mediatek.fmradio.ext.IProjectStringExt; -import com.mediatek.fmradio.ext.DefaultProjectStringExt; - -/** - * get plugin instance. - */ -public class ExtensionUtils { - /** - * get IProjectStringExt instance. - */ - public static IProjectStringExt getExtension( - Context context) { - IProjectStringExt ext = null; - try { - ext = (IProjectStringExt) MPlugin.createInstance(IProjectStringExt.class.getName(), - context); - } finally { - if (ext == null) { - ext = new DefaultProjectStringExt(); - } - } - - return ext; - } -} diff --git a/MediaTek/fmaudioplayer/Android.mk b/MediaTek/fmaudioplayer/Android.mk deleted file mode 100644 index 3d72db2..0000000 --- a/MediaTek/fmaudioplayer/Android.mk +++ /dev/null @@ -1,44 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -# -# libmtkplayer -# - -#ifneq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true) - -#ifneq ($(strip $(HAVE_MATV_FEATURE))_$(strip $(MTK_FM_SUPPORT)), no_no) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= \ - FMAudioPlayer.cpp - -#This is for customization -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libmedia - -#LOCAL_CFLAGS += -DMTK_MATV_SUPPORT -#LOCAL_CFLAGS += -DMTK_FM_SUPPORT - - -LOCAL_C_INCLUDES := \ - $(JNI_H_INCLUDE) \ - $(TOP)/frameworks/av/include \ - $(TOP)/frameworks/av/include/media \ - $(TOP)/external \ - $(TOP)/frameworks/av/services/audioflinger - -LOCAL_C_INCLUDES += \ - $(call include-path-for, audio-utils) \ - $(call include-path-for, audio-effects) - -LOCAL_MODULE:= libmtkplayer - -LOCAL_PRELINK_MODULE := no - -include $(BUILD_SHARED_LIBRARY) - -#endif -#endif diff --git a/MediaTek/fmaudioplayer/FMAudioPlayer.cpp b/MediaTek/fmaudioplayer/FMAudioPlayer.cpp deleted file mode 100644 index 59bda9d..0000000 --- a/MediaTek/fmaudioplayer/FMAudioPlayer.cpp +++ /dev/null @@ -1,1086 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein - * is confidential and proprietary to MediaTek Inc. and/or its licensors. - * Without the prior written permission of MediaTek inc. and/or its licensors, - * any reproduction, modification, use or disclosure of MediaTek Software, - * and information contained herein, in whole or in part, shall be strictly prohibited. - */ -/* MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON - * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. - * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE - * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR - * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH - * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES - * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES - * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK - * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND - * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, - * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, - * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO - * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek Software") - * have been modified by MediaTek Inc. All revisions are subject to any receiver's - * applicable license agreements with MediaTek Inc. - */ - -//#define LOG_NDEBUG 0 -#define LOG_TAG "FMPlayer" -#include "utils/Log.h" -#include "cutils/xlog.h" - -#include <stdio.h> -#include <assert.h> -#include <limits.h> -#include <unistd.h> -#include <fcntl.h> -#include <sched.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <system/audio.h> - -#include <binder/IServiceManager.h> -//#include <hardware/audio.h> -#include <AudioSystem.h> -#include "FMAudioPlayer.h" -#include "rtpm_prio.h" - -#ifndef CHANGE_AUDIO_PRIORITY -#include <sys/time.h> -#include <sys/resource.h> -#endif - - -#ifndef FAKE_FM -// Query output device -//#include "AudioResourceManager.h" -//#include "AudioMTKHardware.h" -//#include "AudioType.h" -#endif - -//#define FM_AUDIO_FILELOG -//#define FM_DIRECT_HW_CONNECT -// Do not use render thread, rely on direct HW connect to output FM - -static pid_t myTid() -{ - return gettid(); -} - -static long long getTimeMs() -{ - struct timeval t1; - long long ms; - - gettimeofday(&t1, NULL); - ms = t1.tv_sec * 1000LL + t1.tv_usec / 1000; - - return ms; -} - -// ---------------------------------------------------------------------------- - -extern const int fm_use_analog_input;//from libaudiosetting.so -extern const int fm_chip_519x;//from libaudiosetting.so - -namespace android -{ - -// workaround to avoid linking against libaudiosetting -const int matv_use_analog_input = 0; -const int fm_use_analog_input = 0; -const int fm_chip_519x = 0; -const int using_class_ab_amp = 0; - -typedef struct _AUDIO_DEVICE_CHANGE_CALLBACK_STRUCT { - void (*callback)(void *data); -} AUDIO_DEVICE_CHANGE_CALLBACK_STRUCT; - -enum AudioCommand { - HOOK_FM_DEVICE_CALLBACK = 0x71, - UNHOOK_FM_DEVICE_CALLBACK = 0x72 -}; - -// ---------------------------------------------------------------------------- - -#define sineTable48KSIZE 480 -#define sineTable32KSIZE 320 -//sine table for simulation only -#ifdef FAKE_FM - -static const uint16_t sineTable48K[480] = -{ - 0x1 , 0x0, 0xbd4 , 0xbd4, 0x1773 , 0x1774, 0x22ae , 0x22ad, - 0x2d4e , 0x2d50, 0x372a , 0x372a, 0x4013 , 0x4013, 0x47e3 , 0x47e3, - 0x4e79 , 0x4e79, 0x53b8 , 0x53b8, 0x5787 , 0x5787, 0x59d6 , 0x59d7, - 0x5a9d , 0x5a9d, 0x59d6 , 0x59d7, 0x5786 , 0x5787, 0x53b7 , 0x53b7, - 0x4e79 , 0x4e7a, 0x47e4 , 0x47e3, 0x4012 , 0x4013, 0x372a , 0x372a, - 0x2d4f , 0x2d50, 0x22ac , 0x22ad, 0x1773 , 0x1774, 0xbd4 , 0xbd3, - 0x0 , 0x0, 0xf42c , 0xf42c, 0xe88c , 0xe88c, 0xdd53 , 0xdd52, - 0xd2b1 , 0xd2b1, 0xc8d6 , 0xc8d6, 0xbfed , 0xbfed, 0xb81d , 0xb81c, - 0xb187 , 0xb186, 0xac49 , 0xac49, 0xa87a , 0xa879, 0xa629 , 0xa62a, - 0xa563 , 0xa563, 0xa629 , 0xa629, 0xa879 , 0xa879, 0xac49 , 0xac49, - 0xb186 , 0xb187, 0xb81c , 0xb81c, 0xbfed , 0xbfed, 0xc8d6 , 0xc8d6, - 0xd2b2 , 0xd2b2, 0xdd53 , 0xdd52, 0xe88d , 0xe88c, 0xf42c , 0xf42c, - 0xffff , 0xffff, 0xbd4 , 0xbd3, 0x1774 , 0x1774, 0x22ad , 0x22ad, - 0x2d4e , 0x2d4f, 0x372a , 0x3729, 0x4013 , 0x4013, 0x47e3 , 0x47e3, - 0x4e7a , 0x4e79, 0x53b7 , 0x53b8, 0x5787 , 0x5786, 0x59d7 , 0x59d7, - 0x5a9e , 0x5a9d, 0x59d7 , 0x59d7, 0x5787 , 0x5786, 0x53b8 , 0x53b7, - 0x4e79 , 0x4e7a, 0x47e3 , 0x47e4, 0x4013 , 0x4013, 0x3729 , 0x372a, - 0x2d4f , 0x2d4f, 0x22ad , 0x22ad, 0x1774 , 0x1774, 0xbd4 , 0xbd4, - 0x0 , 0x1, 0xf42d , 0xf42c, 0xe88c , 0xe88b, 0xdd53 , 0xdd53, - 0xd2b1 , 0xd2b2, 0xc8d7 , 0xc8d6, 0xbfed , 0xbfed, 0xb81c , 0xb81c, - 0xb187 , 0xb186, 0xac48 , 0xac48, 0xa879 , 0xa879, 0xa629 , 0xa629, - 0xa563 , 0xa563, 0xa629 , 0xa62a, 0xa879 , 0xa879, 0xac49 , 0xac49, - 0xb186 , 0xb187, 0xb81d , 0xb81c, 0xbfed , 0xbfed, 0xc8d7 , 0xc8d6, - 0xd2b1 , 0xd2b1, 0xdd53 , 0xdd54, 0xe88c , 0xe88c, 0xf42c , 0xf42c, - 0x0 , 0xffff, 0xbd4 , 0xbd4, 0x1773 , 0x1773, 0x22ad , 0x22ae, - 0x2d4f , 0x2d4f, 0x3729 , 0x372a, 0x4013 , 0x4013, 0x47e4 , 0x47e4, - 0x4e7a , 0x4e79, 0x53b7 , 0x53b7, 0x5787 , 0x5788, 0x59d6 , 0x59d6, - 0x5a9e , 0x5a9d, 0x59d7 , 0x59d7, 0x5787 , 0x5786, 0x53b8 , 0x53b7, - 0x4e7a , 0x4e79, 0x47e4 , 0x47e4, 0x4013 , 0x4013, 0x3729 , 0x372a, - 0x2d4f , 0x2d4f, 0x22ad , 0x22ad, 0x1774 , 0x1774, 0xbd4 , 0xbd4, - 0x0 , 0xffff, 0xf42c , 0xf42c, 0xe88c , 0xe88d, 0xdd52 , 0xdd53, - 0xd2b1 , 0xd2b1, 0xc8d7 , 0xc8d6, 0xbfed , 0xbfed, 0xb81c , 0xb81d, - 0xb186 , 0xb186, 0xac48 , 0xac49, 0xa879 , 0xa879, 0xa628 , 0xa629, - 0xa563 , 0xa563, 0xa629 , 0xa62a, 0xa879 , 0xa879, 0xac48 , 0xac49, - 0xb186 , 0xb187, 0xb81c , 0xb81d, 0xbfed , 0xbfed, 0xc8d6 , 0xc8d6, - 0xd2b1 , 0xd2b2, 0xdd53 , 0xdd53, 0xe88b , 0xe88c, 0xf42c , 0xf42c, - 0xffff , 0xffff, 0xbd3 , 0xbd4, 0x1774 , 0x1774, 0x22ad , 0x22ad, - 0x2d4f , 0x2d4f, 0x3729 , 0x372a, 0x4012 , 0x4013, 0x47e3 , 0x47e4, - 0x4e7a , 0x4e7a, 0x53b8 , 0x53b7, 0x5787 , 0x5787, 0x59d7 , 0x59d7, - 0x5a9d , 0x5a9d, 0x59d6 , 0x59d7, 0x5787 , 0x5786, 0x53b7 , 0x53b7, - 0x4e7a , 0x4e79, 0x47e4 , 0x47e4, 0x4013 , 0x4013, 0x372a , 0x372a, - 0x2d4f , 0x2d4f, 0x22ad , 0x22ad, 0x1774 , 0x1774, 0xbd4 , 0xbd3, - 0x0 , 0xffff, 0xf42c , 0xf42c, 0xe88c , 0xe88c, 0xdd53 , 0xdd53, - 0xd2b2 , 0xd2b1, 0xc8d7 , 0xc8d6, 0xbfed , 0xbfed, 0xb81d , 0xb81d, - 0xb187 , 0xb187, 0xac48 , 0xac48, 0xa87a , 0xa879, 0xa62a , 0xa62a, - 0xa562 , 0xa563, 0xa629 , 0xa629, 0xa879 , 0xa879, 0xac49 , 0xac48, - 0xb186 , 0xb186, 0xb81d , 0xb81c, 0xbfee , 0xbfee, 0xc8d6 , 0xc8d7, - 0xd2b1 , 0xd2b1, 0xdd53 , 0xdd53, 0xe88c , 0xe88c, 0xf42c , 0xf42c, - 0x1 , 0x0, 0xbd4 , 0xbd4, 0x1774 , 0x1774, 0x22ac , 0x22ae, - 0x2d4e , 0x2d4f, 0x372a , 0x372a, 0x4013 , 0x4013, 0x47e4 , 0x47e4, - 0x4e79 , 0x4e79, 0x53b8 , 0x53b7, 0x5787 , 0x5787, 0x59d7 , 0x59d7, - 0x5a9d , 0x5a9c, 0x59d6 , 0x59d7, 0x5787 , 0x5787, 0x53b8 , 0x53b7, - 0x4e78 , 0x4e7a, 0x47e3 , 0x47e4, 0x4013 , 0x4013, 0x3729 , 0x3729, - 0x2d4f , 0x2d4f, 0x22ae , 0x22ad, 0x1774 , 0x1774, 0xbd4 , 0xbd4, - 0x0 , 0x0, 0xf42c , 0xf42c, 0xe88c , 0xe88d, 0xdd53 , 0xdd53, - 0xd2b1 , 0xd2b1, 0xc8d7 , 0xc8d6, 0xbfee , 0xbfed, 0xb81c , 0xb81c, - 0xb187 , 0xb187, 0xac49 , 0xac49, 0xa879 , 0xa879, 0xa629 , 0xa629, - 0xa563 , 0xa563, 0xa628 , 0xa629, 0xa879 , 0xa87a, 0xac49 , 0xac48, - 0xb186 , 0xb186, 0xb81d , 0xb81d, 0xbfec , 0xbfed, 0xc8d6 , 0xc8d6, - 0xd2b1 , 0xd2b1, 0xdd54 , 0xdd53, 0xe88d , 0xe88b, 0xf42b , 0xf42c -}; - -static const uint16_t sineTable[320] = -{ - 0x0000, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0xFFFF, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, - 0xFFFF, 0x0A03, 0x13C7, 0x1D0E, 0x259E, 0x2D41, 0x33C7, 0x3906, - 0x3CDE, 0x3F36, 0x4000, 0x3F36, 0x3CDE, 0x3906, 0x33C7, 0x2D41, - 0x259E, 0x1D0E, 0x13C7, 0x0A03, 0x0000, 0xF5FD, 0xEC39, 0xE2F2, - 0xDA62, 0xD2BF, 0xCC39, 0xC6FA, 0xC322, 0xC0CA, 0xC000, 0xC0CA, - 0xC322, 0xC6FA, 0xCC39, 0xD2BF, 0xDA62, 0xE2F2, 0xEC39, 0xF5FD, -}; - -static int ReadFakeBuffer(void *buffer) -{ - usleep(1000); - int sineTableSize = sineTable48KSIZE*sizeof(uint16_t); - char * ptr = (char*)buffer; - memcpy(ptr, sineTable48K, sineTableSize); - ptr += sineTableSize; - memcpy(ptr, sineTable48K, sineTableSize); - ptr += sineTableSize; - - return sineTableSize * 2; -} -#endif - -static bool getValue(String8 str) -{ - bool ret = false; - char string[str.size() + 1]; - memcpy(string, str.string(), str.size()); - string[str.size()] = 0; - ALOGD("string is %s", string); - - if(strlen(string) != 0) - { - size_t eqIdx = strcspn(string, "="); - String8 key = String8(string, eqIdx); - ALOGD("Key is %s", key.string()); - String8 value; - - if(eqIdx == strlen(string)) - { - SXLOGE("Invailed value"); - } - else - { - value = String8(string + eqIdx + 1); - ALOGD("Value is %s", value.string()); - if(!strcasecmp(value.string(), "true")) - { - ret = true; - } - else if(!strcasecmp(value.string(), "false")) - { - ret = false; - } - else - SXLOGE("Invailed value"); - } - } - return ret; -} -static int GetReadBufferSize() -{ - return 384 * sizeof(uint16_t) * 2; // 2 x sine table size -} - -// TODO: Determine appropriate return codes -static status_t ERROR_NOT_OPEN = -1; -static status_t ERROR_OPEN_FAILED = -2; -static status_t ERROR_ALLOCATE_FAILED = -4; -static status_t ERROR_NOT_SUPPORTED = -8; -static status_t ERROR_NOT_READY = -16; -static status_t ERROR_START_FAILED = -32; -static status_t ERROR_STOP_FAILED = -64; -static status_t STATE_INIT = 0; -static status_t STATE_ERROR = 1; -static status_t STATE_OPEN = 2; -static status_t STATE_PLAY = 3; -static status_t STATE_STOP = 4; - - -String8 ANALOG_FM_ENABLE = (String8)("AudioSetFmEnable=1"); -String8 ANALOG_FM_DISABLE = (String8)("AudioSetFmEnable=0"); - -String8 DIGITAL_FM_ENABLE = (String8)("AudioSetFmDigitalEnable=1"); -String8 DIGITAL_FM_DISABLE = (String8)("AudioSetFmDigitalEnable=0"); - -String8 IS_WIRED_HEADSET_ON = (String8)("AudioFmIsWiredHeadsetOn"); - -#ifndef FAKE_FM -FMAudioPlayer *FmAudioPlayerInstance = NULL; - -void FMAudioPlayerCallback(void *data) -{ - SXLOGD("FMAudioPlayer callback 0x%x\n", FmAudioPlayerInstance); - - if (FmAudioPlayerInstance != NULL) - { - FmAudioPlayerInstance->setRender((bool)data); - } -} -#endif - -FMAudioPlayer::FMAudioPlayer() : - mAudioBuffer(NULL), mPlayTime(-1), mDuration(-1), mState(STATE_ERROR), - mStreamType(AUDIO_STREAM_MUSIC),mAudioRecord(NULL),flagRecordError(false), - mExit(false), mPaused(false), mRender(false), mRenderTid(-1) -{ - SXLOGD("[%d]FMAudioPlayer constructor\n"); - - if (fm_use_analog_input == 1) - { - SXLOGD("FM use analog input"); - } - - else if (fm_use_analog_input == 0) - { - SXLOGD("I2S driver doesn't exists\n"); - } - -#ifndef FAKE_FM - FmAudioPlayerInstance = this; -#endif - mMutePause = 0; - mSetRender = false; -} - -void FMAudioPlayer::onFirstRef() -{ - SXLOGD("onFirstRef"); - - // create playback thread - Mutex::Autolock l(mMutex); - - if (fm_chip_519x == 0) - { - mFmAudioSamplingRate = 44100; - } - else - { - mFmAudioSamplingRate = 32000; - } - -#ifndef FAKE_FM - setHwCallback(true); -#endif - - if (fm_use_analog_input == 1) - { - SXLOGD("FMAudioPlayer use analog input - onFirstRef"); - } - else if (fm_use_analog_input == 0) - { - SXLOGD("FMAudioPlayer use digital input - onFirstRef"); - } - - createThreadEtc(renderThread, this, "FM audio player", ANDROID_PRIORITY_AUDIO); - mCondition.waitRelative(mMutex, seconds(3)); - - if (mRenderTid > 0) - { - SXLOGD("render thread(%d) started", mRenderTid); - mState = STATE_INIT; - } -} - -status_t FMAudioPlayer::initCheck() -{ - if (mState != STATE_ERROR) - { - return NO_ERROR; - } - - return ERROR_NOT_READY; -} - -FMAudioPlayer::~FMAudioPlayer() -{ - SXLOGD("FMAudioPlayer destructor"); -#ifndef FAKE_FM - FmAudioPlayerInstance = NULL; -#endif - release(); - - if (fm_use_analog_input == 1) - { - SXLOGD("FMAudioPlayer use analog input - destructor end\n"); - } - - else if (fm_use_analog_input == 0) - { - SXLOGD("FMAudioPlayer destructor end\n"); - } -} - -status_t FMAudioPlayer::setDataSource(const sp<IMediaHTTPService> &httpService, const char *url, const KeyedVector<String8, String8> *headers) -{ - SXLOGD("FMAudioPlayer setDataSource path=%s \n", path); - return setdatasource(url, -1, 0, 0x7ffffffffffffffLL); // intentionally less than LONG_MAX -} - -status_t FMAudioPlayer::setDataSource(int fd, int64_t offset, int64_t length) -{ - SXLOGD("FMAudioPlayer setDataSource offset=%d, length=%d \n", ((int)offset), ((int)length)); - return setdatasource(NULL, fd, offset, length); -} - - -status_t FMAudioPlayer::setdatasource(const char *path, int fd, int64_t offset, int64_t length) -{ - SXLOGD("setdatasource"); - - // file still open? - Mutex::Autolock l(mMutex); - - if (mState == STATE_OPEN) - { - reset_nosync(); - } - - mState = STATE_OPEN; - return NO_ERROR; -} - -status_t FMAudioPlayer::prepare() -{ - SXLOGD("prepare\n"); - - if (mState != STATE_OPEN) - { - SXLOGE("prepare ERROR_NOT_OPEN \n"); - return ERROR_NOT_OPEN; - } - - return NO_ERROR; -} - -status_t FMAudioPlayer::prepareAsync() -{ - SXLOGD("prepareAsync\n"); - - // can't hold the lock here because of the callback - // it's safe because we don't change state - if (mState != STATE_OPEN && mState != STATE_PLAY && mState != STATE_STOP) - { - sendEvent(MEDIA_ERROR); - SXLOGD("prepareAsync sendEvent(MEDIA_ERROR) \n"); - return NO_ERROR; - } - - sendEvent(MEDIA_PREPARED); - return NO_ERROR; -} - -status_t FMAudioPlayer::start() -{ - SXLOGD("start\n"); - Mutex::Autolock l(mMutex); - - if (mState != STATE_OPEN && mState != STATE_PLAY && mState != STATE_STOP) - { - SXLOGE("start ERROR_NOT_OPEN \n"); - return ERROR_NOT_OPEN; - } - - if (fm_use_analog_input == 1) - { - status_t result; - AudioSystem::setParameters(0, ANALOG_FM_ENABLE); - mPaused = false; - } - else if (fm_use_analog_input == 0) - { - status_t result; - - if (mMutePause == true) - { - mMutePause = false; - mPaused = false; - //if(mAudioSink != NULL) - //mAudioSink->setVolume(1.0, 1.0); - } - - AudioSystem::setParameters(0, DIGITAL_FM_ENABLE); - } - - mPaused = false; -#ifndef FAKE_FM -#if !defined(FM_DIRECT_HW_CONNECT) - String8 str = AudioSystem::getParameters(0, IS_WIRED_HEADSET_ON); - SXLOGD("mSetRender is %d", mSetRender); -// if(!getValue(str)) - if(mSetRender) - { - // wake up render thread - SXLOGD("start wakeup render thread---\n"); - mCondition.signal(); - } -#endif -#else - mRender = true; - // wake up render thread - SXLOGD("start wakeup render thread\n"); - mCondition.signal(); - -#endif - mState = STATE_PLAY; - return NO_ERROR; -} - -status_t FMAudioPlayer::stop() -{ - SXLOGD("stop\n"); - Mutex::Autolock l(mMutex); - - if (mState != STATE_OPEN && mState != STATE_PLAY && mState != STATE_STOP) - { - SXLOGE("stop ERROR_NOT_OPEN \n"); - return ERROR_NOT_OPEN; - } - - if(mAudioRecord.get()) - { - mAudioRecord->stop(); - deleteAudioRecord(); //delete for other APP related AudioRecord - } - if(mAudioSink != NULL) -// mAudioSink->stop(); - - if (fm_use_analog_input == 1) - { - AudioSystem::setParameters(0, ANALOG_FM_DISABLE); - } - else - { - AudioSystem::setParameters(0, DIGITAL_FM_DISABLE); - } - - mPaused = true; - mRender = false; - mState = STATE_STOP; - return NO_ERROR; -} - -status_t FMAudioPlayer::seekTo(int position) -{ - SXLOGD("seekTo %d\n", position); - return NO_ERROR; -} - -status_t FMAudioPlayer::pause() -{ - SXLOGD("pause\n"); - Mutex::Autolock l(mMutex); - - if (mState != STATE_OPEN && mState != STATE_PLAY && mState != STATE_STOP) - { - SXLOGD("pause ERROR_NOT_OPEN \n"); - return ERROR_NOT_OPEN; - } - - SXLOGD("pause got lock\n"); - - if (fm_use_analog_input == 1) - { - AudioSystem::setParameters(0, ANALOG_FM_DISABLE); - } - else if (fm_use_analog_input == 0) - { - AudioSystem::setParameters(0, DIGITAL_FM_DISABLE); - } - - mState = STATE_STOP; - mPaused = true; - return NO_ERROR; -} - -bool FMAudioPlayer::isPlaying() -{ - SXLOGD("isPlaying\n"); - - if (mState == STATE_PLAY) - { - return true; - } - - return false; -} - -status_t FMAudioPlayer::getCurrentPosition(int *position) -{ - SXLOGD("getCurrentPosition always return 0\n"); - *position = 0; - return NO_ERROR; -} - -status_t FMAudioPlayer::getDuration(int *duration) -{ - *duration = 1000; - SXLOGD("getDuration duration, always return 1000 \n"); - return NO_ERROR; -} - -status_t FMAudioPlayer::release() -{ - SXLOGD("release\n"); - - int ret = 0; - int count = 100; - SXLOGD("release mMutex.tryLock ()"); - -#ifndef CHANGE_AUDIO_PRIORITY - int priority = getpriority(PRIO_PROCESS, 0); - SXLOGD("FM Render Thread priority is %d", priority); -#endif - -#ifndef FAKE_FM - setHwCallback(false); -#endif - - do - { - ret = mMutex.tryLock(); - - if (ret) - { - SXLOGW("FMAudioPlayer::release() mMutex return ret = %d", ret); - usleep(20 * 1000); - count --; - } - } - while (ret && count); // only cannot lock - - reset_nosync(); - - // TODO: timeout when thread won't exit, wait for render thread to exit - if (mRenderTid > 0) - { - mExit = true; - SXLOGD("release signal \n"); - mCondition.signal(); - SXLOGD("release wait \n"); - mCondition.waitRelative(mMutex, seconds(3)); - } - - mMutex.unlock(); - return NO_ERROR; -} - -status_t FMAudioPlayer::reset() -{ - SXLOGD("reset\n"); - Mutex::Autolock l(mMutex); - return reset_nosync(); -} - -// always call with lock held -status_t FMAudioPlayer::reset_nosync() -{ - SXLOGD("reset_nosync start\n"); - - if (fm_use_analog_input == 1) - { - AudioSystem::setParameters(0, ANALOG_FM_DISABLE);//Add by Changqing - } - else if (fm_use_analog_input == 0) - { - AudioSystem::setParameters(0, DIGITAL_FM_DISABLE);//Add by Changqing - } - - mState = STATE_ERROR; - mPlayTime = -1; - mDuration = -1; - mPaused = false; - mRender = false; - SXLOGD("reset_nosync end\n"); - return NO_ERROR; -} - -status_t FMAudioPlayer::setLooping(int loop) -{ - SXLOGD("setLooping, do nothing \n"); - return NO_ERROR; -} - -#ifndef FAKE_FM -void FMAudioPlayer::setHwCallback(bool enable) -{ - AUDIO_DEVICE_CHANGE_CALLBACK_STRUCT callback_data; - callback_data.callback = FMAudioPlayerCallback; -} - -status_t FMAudioPlayer::setRender(bool enable) -{ - SXLOGD("setRender %d when mRender %d\n", enable, mRender); - if (enable) - { - mSetRender = true; - if(mState != STATE_PLAY) - return NO_ERROR; - if(mRender == false){ -// Mutex::Autolock l(mMutex); - mCondition.signal(); - } - } - else - { - mSetRender = false; - } - - return NO_ERROR; -} -#endif - -#define FM_AUDIO_CHANNEL_NUM 2 - -status_t FMAudioPlayer::createOutputTrack() -{ - // base on configuration define samplerate . - int FM_AUDIO_SAMPLING_RATE; - - if (fm_chip_519x == 0) - { - FM_AUDIO_SAMPLING_RATE = 44100; - } - else - { - FM_AUDIO_SAMPLING_RATE = 32000; - } - - SXLOGD("Create AudioTrack object: rate=%d, channels=%d\n", FM_AUDIO_SAMPLING_RATE, FM_AUDIO_CHANNEL_NUM); - - // open audio track - if (mAudioSink->open(FM_AUDIO_SAMPLING_RATE, FM_AUDIO_CHANNEL_NUM, AUDIO_CHANNEL_OUT_STEREO, AUDIO_FORMAT_PCM_16_BIT, 6) != NO_ERROR) - { - SXLOGE("mAudioSink open failed"); - return ERROR_OPEN_FAILED; - } - - return NO_ERROR; -} - -int FMAudioPlayer::renderThread(void *p) -{ - return ((FMAudioPlayer *)p)->render(); -} - -//#define AUDIOBUFFER_SIZE 4096 -int FMAudioPlayer::render() -{ - int result = -1; - int temp; - int current_section = 0; - bool audioStarted = false; - bool firstOutput = false; - int t_result = -1; - int bufSize = 0; - int lastTime = 0; - int thisTime = 0; - int dataCount = 0; - int frameCount = 0; - - -#ifdef FM_AUDIO_FILELOG - FILE *fp; - fp = fopen("sdcard/test.pcm", "wb"); - SXLOGD("fp:%d", fp); -#endif - - bufSize = GetReadBufferSize(); - SXLOGD("got buffer size = %d", bufSize); - mAudioBuffer = new char[bufSize * 2]; - mDummyBuffer = new char[bufSize * 2]; - memset(mDummyBuffer, 0, bufSize); - - SXLOGD("mAudioBuffer: %p \n", mAudioBuffer); - - if (!mAudioBuffer) - { - SXLOGD("mAudioBuffer allocate failed\n"); - goto threadExit; - } - -#ifdef CHANGE_AUDIO_PRIORITY - // if set prority false , force to set priority - if (t_result == -1) - { - struct sched_param sched_p; - sched_getparam(0, &sched_p); - sched_p.sched_priority = RTPM_PRIO_FM_AUDIOPLAYER ; - - if (0 != sched_setscheduler(0, SCHED_RR, &sched_p)) - { - SXLOGE("[%s] failed, errno: %d", __func__, errno); - } - else - { - sched_p.sched_priority = RTPM_PRIO_FM_AUDIOPLAYER; - sched_getparam(0, &sched_p); - SXLOGD("sched_setscheduler ok, priority: %d", sched_p.sched_priority); - } - } -#endif - - // let main thread know we're ready - { - int ret = 0; - int count = 100; - SXLOGD("render mMutex.tryLock ()"); - - do - { - ret = mMutex.tryLock(); - - if (ret) - { - SXLOGW("FMAudioPlayer::render() mMutex return ret = %d", ret); - usleep(20 * 1000); - count --; - } - }while (ret && count); // only cannot lock - - mRenderTid = myTid(); - SXLOGD("render start mRenderTid=%d\n",mRenderTid); - mCondition.signal(); - mMutex.unlock(); - } - - while (1) - { - long numread = 0; - bool flagOfRecord = false; - { - Mutex::Autolock l(mMutex); - - // pausing? - if (mPaused || (!mSetRender && audioStarted) || flagRecordError) - { - SXLOGD("render - pause\n"); - - if (mAudioSink->ready()) - { - mAudioSink->pause(); - usleep(300*1000); //For ALPS00821792 - mAudioSink->flush(); - } - - if(mAudioRecord.get()) - { - mAudioRecord->stop(); - deleteAudioRecord(); - } - mRender = false; - audioStarted = false; - } - - // nothing to render, wait for client thread to wake us up - if( mSetRender && !mPaused && !flagRecordError) - mRender = true; - if (!mExit && !mRender) - { - SXLOGD("render - signal wait\n"); - mCondition.wait(mMutex); - frameCount = 0; - flagRecordError = false; - SXLOGD("render - signal rx'd\n"); - } - - if(!mPaused && !mExit) - { - //flagOfRecord = createAudioRecord(); - if(false == flagOfRecord) - { - SXLOGE("Create AudioRecord Failed !!!"); - break; - } - } - - if (mExit) - { - break; - } - - // We could end up here if start() is called, and before we get a - // chance to run, the app calls stop() or reset(). Re-check render - // flag so we don't try to render in stop or reset state. - if (!mRender) - { - continue; - } - - if (!mAudioSink->ready()) - { - SXLOGD("render - create output track\n"); - - if (createOutputTrack() != NO_ERROR) - { - break; - } - } - } - - { - Mutex::Autolock l(mMutex); - // codec returns negative number on error - if (numread < 0) - { - SXLOGE("Error in FMPlayer numread=%ld", numread); - sendEvent(MEDIA_ERROR); - break; - } - - // start audio output if necessary - if (!audioStarted && !mPaused && !mExit) - { - SXLOGD("render - starting audio\n"); - mAudioSink->start(); - if(!mAudioRecord.get()) - { - SXLOGD("stop mAudioRecord Before mAudioRecord Start"); - continue; - } - else - { - mAudioRecord->start(); - } - // setparameter to hardware after staring, for cr ALPS00073272 - //AudioSystem::setParameters (0,DIGITAL_FM_ENABLE); - audioStarted = true; - firstOutput = true; - - - //firstly push some amount of buffer to make the mixer alive - if ((temp = mAudioSink->write(mDummyBuffer, bufSize)) < 0) - { - SXLOGE("Error in writing:%d", temp); - result = temp; - break; - } - - if ((temp = mAudioSink->write(mDummyBuffer, bufSize)) < 0) - { - SXLOGE("Error in writing:%d", temp); - result = temp; - break; - } - - if ((temp = mAudioSink->write(mDummyBuffer, bufSize)) < 0) - { - SXLOGE("Error in writing:%d", temp); - result = temp; - break; - } - } - } - - { - Mutex::Autolock l(mMutex); - int brt = 0, art = 0; - - //SXLOGD("[%lld] before read %d",brt=getTimeMs()); - if (firstOutput) - { - firstOutput = false; - } - -#ifdef FAKE_FM - numread = ReadFakeBuffer(mAudioBuffer); -#else - if(!mAudioRecord.get()) - { - SXLOGE("mAudioRecord is deleted by FMAudioPlayer stop !!!"); - continue; - } - else - { - numread = mAudioRecord->read(mAudioBuffer, bufSize); - } -#endif - - //SXLOGD("[%lld] after read %d",art=getTimeMs()); - if (art - brt > 90) - { - SXLOGW("read time abnormal"); - } - - frameCount++; - } - - lastTime = thisTime; - thisTime = getTimeMs(); - - if (thisTime - lastTime > 160) - { - SXLOGW(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!time diff = %d", thisTime - lastTime); - } - - // Write data to the audio hardware - dataCount += numread; - if ( mPaused || !mSetRender ) //When try to pause, skip write - continue; - if(numread < 0) - { - flagRecordError = true; - SXLOGE("Error in Record:%d", numread); - continue; - } - else if ((temp = mAudioSink->write(mAudioBuffer, numread)) < 0) - { - Mutex::Autolock l(mMutex); - - SXLOGE("Error in writing:%d", temp); - result = temp; - if(mAudioRecord.get()) - mAudioRecord->stop(); - break; - } - - //SXLOGD("[%lld] after write writecount = %d" ,getTimeMs(),temp); - //sleep to allow command to get mutex - usleep(1000); - } - -threadExit: - if (mAudioBuffer) - { - delete [] mAudioBuffer; - mAudioBuffer = NULL; - } - - if (mDummyBuffer) - { - delete [] mDummyBuffer; - mDummyBuffer = NULL; - } - - Mutex::Autolock l(mMutex); - deleteAudioRecord(); - if(mAudioSink != NULL) - mAudioSink.clear(); - - SXLOGD("render end mRenderTid=%d\n",mRenderTid); - - // tell main thread goodbye - mRenderTid = -1; - mCondition.signal(); - -#ifdef FM_AUDIO_FILELOG - fclose(fp); -#endif - return result; -} - - -bool FMAudioPlayer::deleteAudioRecord() -{ - SXLOGD("deleteAudioRecord !!!"); - - if(mAudioRecord.get()) - { - mAudioRecord.clear(); - } - return true; -} - -} // end namespace android - - diff --git a/MediaTek/fmaudioplayer/FMAudioPlayer.h b/MediaTek/fmaudioplayer/FMAudioPlayer.h deleted file mode 100644 index 66394f5..0000000 --- a/MediaTek/fmaudioplayer/FMAudioPlayer.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein - * is confidential and proprietary to MediaTek Inc. and/or its licensors. - * Without the prior written permission of MediaTek inc. and/or its licensors, - * any reproduction, modification, use or disclosure of MediaTek Software, - * and information contained herein, in whole or in part, shall be strictly prohibited. - */ -/* MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON - * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. - * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE - * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR - * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH - * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES - * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES - * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK - * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND - * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, - * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, - * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO - * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek Software") - * have been modified by MediaTek Inc. All revisions are subject to any receiver's - * applicable license agreements with MediaTek Inc. - */ - -#ifndef ANDROID_FM_AUDIOPLAYER_H -#define ANDROID_FM_AUDIOPLAYER_H - - -#include <utils/threads.h> - -#include <media/MediaPlayerInterface.h> -#include <media/AudioTrack.h> -#include <media/AudioRecord.h> -//#ifdef MTK_5192_FM_LINEIN -//#include "media/IATVCtrlService.h" -//#endif - -namespace android -{ - -class FMAudioPlayer : public MediaPlayerInterface -{ -public: - FMAudioPlayer(); - ~FMAudioPlayer(); - - virtual void onFirstRef(); - virtual status_t initCheck(); - //virtual status_t setDataSource(const char *path, const KeyedVector<String8, String8> *headers); - virtual status_t setDataSource(const sp<IMediaHTTPService> &httpService, const char *url, const KeyedVector<String8, String8> *headers); - virtual status_t setDataSource(int fd, int64_t offset, int64_t length); - virtual status_t setVideoSurface(const sp<Surface>&) - { - return UNKNOWN_ERROR; - } - virtual status_t setVideoSurfaceTexture( - const sp<IGraphicBufferProducer>&) - { - return UNKNOWN_ERROR; - } - virtual status_t prepare(); - virtual status_t prepareAsync(); - virtual status_t start(); - virtual status_t stop(); - virtual status_t seekTo(int msec); - virtual status_t pause(); - virtual bool isPlaying(); - virtual status_t getCurrentPosition(int *msec); - virtual status_t getDuration(int *msec); - virtual status_t release(); - virtual status_t reset(); - virtual status_t setLooping(int loop); -#ifndef FAKE_FM - virtual status_t setRender(bool enable); -#endif - virtual player_type playerType() - { - return FM_AUDIO_PLAYER; - } - virtual status_t invoke(const Parcel &, Parcel *) - { - return INVALID_OPERATION; - } - virtual status_t setParameter(int, const Parcel &) - { - return INVALID_OPERATION; - } - virtual status_t getParameter(int, Parcel *) - { - return INVALID_OPERATION; - } - -private: - status_t setdatasource(const char *path, int fd, int64_t offset, int64_t length); - status_t reset_nosync(); - status_t createOutputTrack(); - static int renderThread(void *); - int render(); - bool createAudioRecord(); - bool deleteAudioRecord(); - -#ifndef FAKE_FM - void setHwCallback(bool enable); -#endif - - sp<AudioRecord> mAudioRecord; - Mutex mMutex; - Condition mCondition; - FILE *mFile; - int64_t mOffset; - int64_t mLength; - char *mAudioBuffer; - char *mDummyBuffer; - int mPlayTime; - int mDuration; - uint32_t mFmAudioSamplingRate; - - status_t mState; - int mStreamType; - bool mAndroidLoop; - volatile bool mExit; - bool mPaused; - - bool mSetRender; - volatile bool mRender; - pid_t mRenderTid; - bool flagRecordError; - bool flagOfFMEnabled; - - int mMutePause; - - //#ifdef MTK_5192_FM_LINEIN - // Keeping pointer to ATVCtrlService - //sp<IATVCtrlService> spATVCtrlService; - //#endif - -}; - -}; // namespace android - -#endif - - diff --git a/MediaTek/fmaudioplayer/rtpm_prio.h b/MediaTek/fmaudioplayer/rtpm_prio.h deleted file mode 100644 index b553254..0000000 --- a/MediaTek/fmaudioplayer/rtpm_prio.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef __KERNEL_RTPM_PRIO__ -#define __KERNEL_RTPM_PRIO__ - -#define CONFIG_MT_RT_MONITOR -#ifdef CONFIG_MT_RT_MONITOR -#define MT_ALLOW_RT_PRIO_BIT 0x10000000 -#else -#define MT_ALLOW_RT_PRIO_BIT 0x0 -#endif - -#define REG_RT_PRIO(x) ((x) | MT_ALLOW_RT_PRIO_BIT) - -/*********************************************************************** - * Processes scheduled under one of the real-time policies (SCHED_FIFO, SCHED_RR) - * have a sched_priority value in the range: - * 1 (low) to 99 (high). -************************************************************************/ -//////////////////////////////////////////////////////////////////////// -//DEFINE MM GROUP PRIORITY -#define RTPM_PRIO_MM_GROUP_BASE (10) -#define RTPM_PRIO_MM_GROUP_A (RTPM_PRIO_MM_GROUP_BASE+0) -#define RTPM_PRIO_MM_GROUP_B (RTPM_PRIO_MM_GROUP_BASE+10) -#define RTPM_PRIO_MM_GROUP_C (RTPM_PRIO_MM_GROUP_BASE+20) -#define RTPM_PRIO_MM_GROUP_D (RTPM_PRIO_MM_GROUP_BASE+30) -#define RTPM_PRIO_MM_GROUP_E (RTPM_PRIO_MM_GROUP_BASE+40) -#define RTPM_PRIO_MM_GROUP_F (RTPM_PRIO_MM_GROUP_BASE+50) -#define RTPM_PRIO_MM_GROUP_G (RTPM_PRIO_MM_GROUP_BASE+60) -#define RTPM_PRIO_MM_GROUP_H (RTPM_PRIO_MM_GROUP_BASE+70) -#define RTPM_PRIO_MM_GROUP_I (RTPM_PRIO_MM_GROUP_BASE+80) - -//////////////////////////////////////////////////////////////////////// -// DEFIN MTK RT PRIORITY - -#define RTPM_PRIO_CPU_CALLBACK REG_RT_PRIO(98) -#define RTPM_PRIO_SWLOCKUP REG_RT_PRIO(98) -#define RTPM_PRIO_AED REG_RT_PRIO(28) -#define RTPM_PRIO_WDT REG_RT_PRIO(99) - -#define RTPM_PRIO_TPD REG_RT_PRIO(4) -#define RTPM_PRIO_KSDIOIRQ REG_RT_PRIO(1) -#define RTPM_PRIO_MTLTE_SYS_SDIO_THREAD REG_RT_PRIO(1) - -#define RTPM_PRIO_AUDIO_PLAYBACK REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+5) -#define RTPM_PRIO_VIDEO_PLAYBACK_THREAD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+5) //TimeEventQueue -#define RTPM_PRIO_SCRN_UPDATE REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+4) -#define RTPM_PRIO_AUDIO_COMMAND REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+2) -#define RTPM_PRIO_AUDIO_CCCI_THREAD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+2) - -#define RTPM_PRIO_CAMERA_TOPBASE REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+1) -#define RTPM_PRIO_CAMERA_PREVIEW REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+1) -#define RTPM_PRIO_CAMERA_COMPRESS REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+0) - -#define RTPM_PRIO_MATV_AUDIOPLAYER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+0) -#define RTPM_PRIO_FM_AUDIOPLAYER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+0) -#define RTPM_PRIO_AUDIO_I2S REG_RT_PRIO(RTPM_PRIO_MM_GROUP_I+0) - -#define RTPM_PRIO_CAMERA_DISPLAY REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+9) -#define RTPM_PRIO_CAMERA_SHUTTER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+9) -#define RTPM_PRIO_CAMERA_RECORD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+9) -#define RTPM_PRIO_FB_THREAD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+7) -#define RTPM_PRIO_AUDIO_RECORD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+6) -#define RTPM_PRIO_VSYNC_THREAD REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+5) -#define RTPM_PRIO_SURFACEFLINGER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_H+4) - -#define RTPM_PRIO_VIDEO_YUV_BUFFER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+8) -#define RTPM_PRIO_OMX_AUDIO REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+6) -#define RTPM_PRIO_OMX_CMD_AUDIO REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+6) -#define RTPM_PRIO_OMX_VIDEO_ENCODE REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+5) -#define RTPM_PRIO_OMX_VIDEO REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+5) -#define RTPM_PRIO_OMX_VIDEO_DECODE REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+4) - -#define RTPM_PRIO_VIDEO_BS_BUFFER REG_RT_PRIO(RTPM_PRIO_MM_GROUP_G+3) -#define RTPM_PRIO_MIDI_FILE REG_RT_PRIO(RTPM_PRIO_MM_GROUP_C+0) - -#define RTPM_PRIO_AUDIOTRACK_THREAD REG_RT_PRIO(1) -#define RTPM_PRIO_GPS_DRIVER REG_RT_PRIO(1) -// Total -#define RTPM_PRIO_NUM 30 -//////////////////////////////////////////////////////////////////////////////// -//Removed -//#define RTPM_PRIO_FB_THREAD REG_RT_PRIO(87) -//#define RTPM_PRIO_SURFACE_OUT REG_RT_PRIO(80) - -#endif diff --git a/MediaTek/fmradiolibs/Android.mk b/MediaTek/fmradiolibs/Android.mk deleted file mode 100755 index f23f49b..0000000 --- a/MediaTek/fmradiolibs/Android.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# 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. -# - -# WARNING: Everything listed here will be built on ALL platforms, -# including x86, the emulator, and the SDK. Modules must be uniquely -# named (liblights.panda), and must build everywhere, or limit themselves -# to only building on ARM if they include assembly. Individual makefiles -# are responsible for having their own logic, for fine-grained control. - -LOCAL_PATH := $(call my-dir) - -# if some modules are built directly from this directory (not subdirectories), -# their rules should be written here. - -include $(call all-subdir-makefiles) diff --git a/MediaTek/fmradiolibs/autofm/Android.mk b/MediaTek/fmradiolibs/autofm/Android.mk deleted file mode 100755 index 4e9186d..0000000 --- a/MediaTek/fmradiolibs/autofm/Android.mk +++ /dev/null @@ -1,34 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -BUILD_FMTEST := true -FM_TOOL_BUILD_DEAMON := false - -LOCAL_PATH := $(call my-dir) - -ifeq ($(BUILD_FMTEST), true) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - autofm.c - -LOCAL_STATIC_LIBRARIES := - -#LOCAL_SHARED_LIBRARIES := libfm - -LOCAL_C_INCLUDES := - -LOCAL_PRELINK_MODULE := yes - -LOCAL_MODULE_TAGS := eng - -ifeq ($(FM_TOOL_BUILD_DEAMON), true) -LOCAL_CFLAGS := \ - -DFM_TOOL_BUILD_DEAMON -LOCAL_MODULE := autofmd -else -LOCAL_MODULE := autofm -endif - -include $(BUILD_EXECUTABLE) -endif -endif diff --git a/MediaTek/fmradiolibs/autofm/NOTICE b/MediaTek/fmradiolibs/autofm/NOTICE deleted file mode 100755 index 0519ecb..0000000 --- a/MediaTek/fmradiolibs/autofm/NOTICE +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/autofm/README b/MediaTek/fmradiolibs/autofm/README deleted file mode 100644 index ec6fc8d..0000000 --- a/MediaTek/fmradiolibs/autofm/README +++ /dev/null @@ -1,17 +0,0 @@ -Debug tool autofm, including FM power on/off, -seek, scan, tune ...and some other basic functions. - -WHAT IT DOES? -============= -Provide basic functions for debugging FM - -HOW IT WAS BUILT? -================== -'autofm' is a excutable bin file - -HOW TO USE IT? -============== -Run 'autofm' in adb shell - -All the source code of this library were written by MediaTek co.. - diff --git a/MediaTek/fmradiolibs/autofm/autofm.c b/MediaTek/fmradiolibs/autofm/autofm.c deleted file mode 100644 index a8c3198..0000000 --- a/MediaTek/fmradiolibs/autofm/autofm.c +++ /dev/null @@ -1,1955 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -/* - * - * (C) Copyright 2011 - * MediaTek <www.MediaTek.com> - * Hongcheng Xia <Hongcheng.Xia@MediaTek.com> - * - */ - -//for fm auto test and debug - -#include <stdio.h> -#include <stdlib.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <sys/select.h> -#include <unistd.h> -#include <sys/resource.h> - -#include "fm_main.h" -#include "fm_rds.h" -#include "fm_ioctl.h" -#include "fm_cust_cfg.h" -#include "autofm.h" - -static int autofm_run = 1; - -static int fm_open_dev(struct fm_cmd *cmd); -static int fm_close_dev(struct fm_cmd *cmd); -static int fm_power_up(struct fm_cmd *cmd); -static int fm_power_up_tx(struct fm_cmd *cmd); -static int fm_power_down(struct fm_cmd *cmd); -static int fm_tune(struct fm_cmd *cmd); -static int fm_tune_tx(struct fm_cmd *cmd); -static int fm_seek(struct fm_cmd *cmd); -static int fm_scan(struct fm_cmd *cmd); -static int fm_jammer_scan(struct fm_cmd *cmd); -static int fm_getcqi(struct fm_cmd *cmd); -static int fm_getrssi(struct fm_cmd *cmd); -static int fm_mute(struct fm_cmd *cmd); -static int fm_unmute(struct fm_cmd *cmd); -static int fm_scan_force_stop(struct fm_cmd *cmd); -static int fm_setvol(struct fm_cmd *cmd); -static int fm_getvol(struct fm_cmd *cmd); -static int fm_over_bt(struct fm_cmd *cmd); -static int fm_32kppm_compensation(struct fm_cmd *cmd); -static int fm_i2s_set(struct fm_cmd *cmd); -static int fm_rds_on_off(struct fm_cmd *cmd); -static int fm_rds_tx(struct fm_cmd *cmd); -static int fm_read_reg(struct fm_cmd *cmd); -static int fm_write_reg(struct fm_cmd *cmd); -static int fm_top_read_reg(struct fm_cmd *cmd); -static int fm_top_write_reg(struct fm_cmd *cmd); -static int fm_host_read_reg(struct fm_cmd *cmd); -static int fm_host_write_reg(struct fm_cmd *cmd); -static int fm_mod_reg(struct fm_cmd *cmd); -static int fm_print_reg(struct fm_cmd *cmd); -static int fm_help(struct fm_cmd *cmd); -static int fm_bye(struct fm_cmd *cmd); -static int fm_delay(struct fm_cmd *cmd); -static int fm_stdsrc_set(struct fm_cmd *cmd); - -static struct fm_cmd g_cmd[] = { - {"open", 0, fm_open_dev, {NULL, NULL, NULL}, "eg: open, desc: open dev/fm"}, - {"close", 0, fm_close_dev, {NULL, NULL, NULL}, "eg: close, desc: close dev/fm"}, - {"pwron", 0, fm_power_up, {NULL, NULL, NULL}, "eg: pwron, desc: power on fm rx subsystem"}, - {"txpwron", 0, fm_power_up_tx, {NULL, NULL, NULL}, "eg: txpwron, desc: power on fm tx subsystem"}, - {"pwroff", 0, fm_power_down, {NULL, NULL, NULL}, "eg: pwroff, desc: power off fm subsystem"}, - {"tune", 1, fm_tune, {NULL, NULL, NULL}, "eg: tune 876, desc: tune to a channel"}, - {"txtune", 1, fm_tune_tx, {NULL, NULL, NULL}, "eg: txtune 876, desc: tune tx to a channel"}, - {"seek", 1, fm_seek, {NULL, NULL, NULL}, "eg: seek up, desc: seek to another channel"}, - {"scan", 0, fm_scan, {NULL, NULL, NULL}, "eg: scan, desc: auto scan"}, - {"jamscan", 0, fm_jammer_scan, {NULL, NULL, NULL}, "eg: jamscan, desc: auto jammer scan"}, - {"cqi", 1, fm_getcqi, {NULL, NULL, NULL}, "eg: cqi, desc: get channel CQI"}, - {"rssi", 0, fm_getrssi, {NULL, NULL, NULL}, "eg: rssi, desc: get current channel RSSI"}, - {"mute", 0, fm_mute, {NULL, NULL, NULL}, "eg: mute, desc: mute audio"}, - {"unmute", 0, fm_unmute, {NULL, NULL, NULL}, "eg: unmute, desc: unmute audio"}, - {"sstop", 0, fm_scan_force_stop, {NULL, NULL, NULL}, "eg: sstop, desc: stop scan flow"}, - {"setvol", 1, fm_setvol, {NULL, NULL, NULL}, "eg: setvol 14, desc: set audio volume(rang:0~14)"}, - {"getvol", 0, fm_getvol, {NULL, NULL, NULL}, "eg: getvol, desc: get audio volume"}, - {"viabt", 1, fm_over_bt, {NULL, NULL, NULL}, "eg: viabt on, desc: set fm over bt on/off"}, - {"gpsrtc", 2, fm_32kppm_compensation, {NULL, NULL, NULL}, "eg: gpsrtc 10 20, desc: gps rtc setting"}, - {"seti2s", 3, fm_i2s_set, {NULL, NULL, NULL}, "eg: seti2s on slave 32k , desc: i2s setting"}, - {"rds", 1, fm_rds_on_off, {NULL, NULL, NULL}, "eg: rds on, desc: rds rx on/off"}, - {"txrds", 3, fm_rds_tx, {NULL, NULL, NULL}, "eg: txrds 0x1234 0 0 , desc: rds tx"}, - {"delay", 2, fm_delay, {NULL, NULL, NULL}, "eg: delay 100 ms, desc: delay n s/ms/us"}, - {"rd", 1, fm_read_reg, {NULL, NULL, NULL}, "eg: rd 0x62, desc: read a register"}, - //{"read", 1, fm_read_reg, {NULL, NULL, NULL}, "eg: read 0x62, desc: read a register"}, - {"wr", 2, fm_write_reg, {NULL, NULL, NULL}, "eg: wr 0x62 0xFF15, desc: write a register"}, - //{"write", 2, fm_write_reg, {NULL, NULL, NULL}, "eg: write 0x62 0xFF15, desc: write a register"}, - {"toprd", 1, fm_top_read_reg, {NULL, NULL, NULL}, "eg: toprd 0x0050, desc: read a top register"}, - {"topwr", 2, fm_top_write_reg, {NULL, NULL, NULL}, "eg: topwr 0x0050 0x00000007, desc: write top register"}, - {"hostrd", 1, fm_host_read_reg, {NULL, NULL, NULL}, "eg: hostrd 0x80103000, desc: read mcu host register"}, - {"hostwr", 2, fm_host_write_reg, {NULL, NULL, NULL}, "eg: hostwr 0x80103000 0x00000001, desc: write host register"}, - {"mod", 3, fm_mod_reg, {NULL, NULL, NULL}, "eg: mod 0x62 0xFFFE 0x0001, desc: modify a register"}, - {"modify", 3, fm_mod_reg, {NULL, NULL, NULL}, "eg: modify 0x62 0xFFFE 0x0001, desc: modify a register"}, - {"showreg", 1, fm_print_reg, {NULL, NULL, NULL}, "eg: showreg, desc: print all register"}, - {"setsrc", 2, fm_stdsrc_set, {NULL, NULL, NULL}, "eg: setsrc in /system/bin/abc.txt, desc: set stdinput"}, - {"help", 0, fm_help, {NULL, NULL, NULL}, "eg: help, desc: show help info"}, - {"bye", 0, fm_bye, {NULL, NULL, NULL}, "eg: bye, desc: exit autofm"} -}; - -static int g_fm_fd = -1; -static uint16_t g_freq = 967; -static int type = -1; - -static int to_upper(char *str) -{ - int i = 0; - - for(i=0; i < (int)strlen(str); i++){ - if(('a' <= str[i]) && (str[i] <= 'z')){ - str[i] = str[i] - ('a' - 'A'); - } - } - return 0; -} - -static int to_upper_n(char *str, int len) -{ - int i = 0; - - for(i=0; i < len; i++){ - if(('a' <= str[i]) && (str[i] <= 'z')){ - str[i] = str[i] - ('a' - 'A'); - } - } - return 0; -} - -#if 0 -static int check_hex_str(char *str, int len) -{ - int i = 0; - - for(i=0; i < len; i++){ - if((('a' <= str[i]) && (str[i] <= 'z')) || (('A' <= str[i]) && (str[i] <= 'Z')) || (('0' <= str[i]) && (str[i] <= '9'))){ - ; - }else{ - return -1; - } - } - return 0; -} -#else -static int check_hex_str(char *str, int len) -{ - int i = 0; - - for(i=0; i < len; i++){ - if((('!' <= str[i]) && (str[i] <= '~'))){ - ; - }else{ - return -1; - } - } - return 0; -} -#endif - -static int check_dec_str(char *str, int len) -{ - int i = 0; - - for(i=0; i < len; i++){ - if(('0' <= str[i]) && (str[i] <= '9')){ - ; - }else{ - return -1; - } - } - return 0; -} - -static int ascii_to_hex_u32(char *in_ascii, uint32_t *out_hex) -{ - int len = (int)strlen(in_ascii); - int i = 0; - uint32_t tmp; - - len = (len > 8)? 8 : len; - if (check_hex_str(in_ascii, len)) - { - return -1; - } - to_upper_n(in_ascii, len); - *out_hex = 0; - for (i=0; i < len; i++) - { - if (in_ascii[len-i-1] < 'A') - { - tmp = in_ascii[len-i-1]; - *out_hex |= ((tmp - '0') << (4*i)); - } - else - { - tmp = in_ascii[len-i-1]; - *out_hex |= ((tmp - 'A' + 10) << (4*i)); - } - } - return 0; -} - -static int ascii_to_hex(char *in_ascii, uint16_t *out_hex) -{ - int len = (int)strlen(in_ascii); - int i = 0; - uint16_t tmp; - - len = (len > 4)? 4 : len; - if(check_hex_str(in_ascii, len)){ - return -1; - } - to_upper_n(in_ascii, len); - *out_hex = 0; - for(i=0; i < len; i++){ - if(in_ascii[len-i-1] < 'A'){ - tmp = in_ascii[len-i-1]; - *out_hex |= ((tmp - '0') << (4*i)); - }else{ - tmp = in_ascii[len-i-1]; - *out_hex |= ((tmp - 'A' + 10) << (4*i)); - } - } - return 0; -} - -static int ascii_to_dec_u32(char *in_ascii, uint32_t *out_dec) -{ - int len = (int)strlen(in_ascii); - int i = 0; - int flag; - int multi = 1; - - len = (len > 10)? 10 : len; - /*if (in_ascii[0] == '-') - { - flag = -1; - in_ascii += 1; - len -= 1; - } - else*/ - { - flag = 1; - } - if (check_dec_str(in_ascii, len)) - { - return -1; - } - *out_dec = 0; - multi = 1; - for (i=0; i < len; i++) - { - *out_dec += ((in_ascii[len-i-1] - '0') * multi); - multi *= 10; - } - //*out_dec *= flag; - return 0; -} - -static int ascii_to_dec(char *in_ascii, int *out_dec) -{ - int len = (int)strlen(in_ascii); - int i = 0; - int flag; - int multi = 1; - - len = (len > 10)? 10 : len; - if(in_ascii[0] == '-'){ - flag = -1; - in_ascii += 1; - len -= 1; - }else{ - flag = 1; - } - if(check_dec_str(in_ascii, len)){ - return -1; - } - *out_dec = 0; - multi = 1; - for(i=0; i < len; i++){ - *out_dec += ((in_ascii[len-i-1] - '0') * multi); - multi *= 10; - } - *out_dec *= flag; - return 0; -} - -static int trim_string(char **start) -{ - char *end = *start; - - /* Advance to non-space character */ - while(*(*start) == ' '){ - (*start)++; - } - - /* Move to end of string */ - while(*end != '\0'){ - (end)++; - } - - /* Backup to non-space character */ - do{ - end--; - }while((end >= *start) && (*end == ' ')); - - /* Terminate string after last non-space character */ - *(++end) = '\0'; - return (end - *start); -} - -static int trim_path(char **start) -{ - char *end = *start; - - while(*(*start) == ' '){ - (*start)++; - } - - while(*end != '\0'){ - (end)++; - } - - do{ - end--; - }while((end >= *start) && ((*end == ' ') || (*end == '\n') || (*end == '\r'))); - - *(++end) = '\0'; - return (end - *start); -} - -static int cmd_parser(char *src, char **new_pos, char **word) -{ - char *p = src; - char *word_start = NULL; - - enum fm_cmd_parser_state state = FM_CMD_STAT_NONE; - - for(p = src; *p != '\0'; p++){ - switch(state){ - case FM_CMD_STAT_NONE:{ - if(!check_hex_str(p, 1)){ - //if we get show char in none state, it means a new word start - state = FM_CMD_STAT_WORD; - word_start = p; - } - break; - } - - case FM_CMD_STAT_WORD:{ - if(check_hex_str(p, 1)){ - //if we get non show char in word state, it means a word complete - *p = '\0'; - //FIX_ME - //record word - state = FM_CMD_STAT_NONE; - trim_string(&word_start); - *word = word_start; - *new_pos = p + 1; - //printf("%s\n", word_start); - return 0; - } - break; - } - default: - break; - } - } - return -1; -} - -static int get_cmd(char *buf, int buf_size) -{ -#if 0 - char tmp = 0; - - do{ - tmp = getchar(); - *buf = tmp; - buf++; - buf_size--; - }while((tmp != '\r') && (tmp != '\n') && (buf_size > 0)); -#else - int ret; - struct timeval tval; - tval.tv_sec = 0; - tval.tv_usec = 100*1000; - - ret = read(0, buf, buf_size); - //sleep(1); //sleep 1s - select(0, NULL, NULL, NULL, &tval); - -#endif - return 0; -} - -//fm funtion APIs -static int fm_open_dev(struct fm_cmd *cmd) -{ - int fd = open(FM_DEVICE_NAME, O_RDWR); - if(fd == -1){ - printf("FAIL open %s failed\n", FM_DEVICE_NAME); - return -1; - } - printf("OK\n"); - g_fm_fd = fd; - - return 0; -} - -static int fm_close_dev(struct fm_cmd *cmd) -{ - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - if(0 != close(g_fm_fd)){ - return -1; - } - - printf("OK\n"); - g_fm_fd = -1; - return 0; -} - -static int fm_power_up(struct fm_cmd *cmd) -{ - int ret; - struct fm_tune_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = FM_BAND_UE; - parm.freq = 975; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - - ret = ioctl(g_fm_fd, FM_IOCTL_POWERUP, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK\n"); - - type = FM_RX; - return 0; -} - -static int fm_power_up_tx(struct fm_cmd *cmd) -{ - int ret; - struct fm_tune_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = FM_BAND_UE; - parm.freq = 975; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - - ret = ioctl(g_fm_fd, FM_IOCTL_POWERUP_TX, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK\n"); - - type = FM_TX; - return 0; -} - -static int fm_power_down(struct fm_cmd *cmd) -{ - int ret; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_POWERDOWN, &type); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - return 0; -} - -static int fm_rds_on_off(struct fm_cmd *cmd) -{ - int ret; - uint16_t on_off; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - if(strcmp(cmd->para[0], "on") == 0){ - on_off = 1; - }else if(strcmp(cmd->para[0], "off") == 0){ - on_off = 0; - }else{ - return -1; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_RDS_ONOFF, &on_off); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - - printf("OK\n"); - return 0; -} - -static int get_int_val(char *src_val, int *dst_val) -{ - int ret = 0; - uint32_t tmp_hex; - int tmp_dec; - - //printf("%s\n", src_val); - if(memcmp(src_val, "0x", strlen("0x")) == 0){ - src_val += strlen("0x"); - ret = ascii_to_hex_u32(src_val, &tmp_hex); - if(!ret){ - *dst_val = (int)tmp_hex; - return 0; - }else{ - printf("error\n"); - return -1; - } - }else{ - ret = ascii_to_dec(src_val, &tmp_dec); - if(!ret && ((0 <= tmp_dec) && (tmp_dec <= 0xFFFFFFFF))){ - *dst_val = tmp_dec; - return 0; - }else{ - printf("error\n"); - return -1; - } - } -} - -static int get_u32_val(char *src_val, uint32_t *dst_val) -{ - int ret = 0; - uint32_t tmp_hex; - uint32_t tmp_dec; - - //printf("%s\n", src_val); - if (memcmp(src_val, "0x", strlen("0x")) == 0) - { - src_val += strlen("0x"); - ret = ascii_to_hex_u32(src_val, &tmp_hex); - if (!ret) - { - *dst_val = tmp_hex; - return 0; - } - else - { - printf("error\n"); - return -1; - } - } - else - { - ret = ascii_to_dec_u32(src_val, &tmp_dec); - if (!ret && (tmp_dec <= 0xFFFFFFFF)) - { - *dst_val = tmp_dec; - return 0; - } - else - { - printf("error\n"); - return -1; - } - } -} - -static int fm_tune(struct fm_cmd *cmd) -{ - int ret; - int freq; - struct fm_tune_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_tune_parm)); - - ret = get_int_val(cmd->para[0], &freq); - if(ret){ - return -1; - } - parm.band = FM_BAND_UE; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - - ret = ioctl(g_fm_fd, FM_IOCTL_TUNE, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK:%d\n", parm.freq); - g_freq = parm.freq; - - return 0; -} - -static int fm_stdsrc_set(struct fm_cmd *cmd) -{ - #define FM_STD_SHELL 0 - #define FM_STD_FILE 1 - int ret; - int tmp; - static int fm_stdin = 0; - static int fm_stdout = 1; - static int fm_stderr = 2; - static int input = FM_STD_SHELL; - static int output = FM_STD_SHELL; - static int errput = FM_STD_SHELL; - - char *path = cmd->para[1]; - - if(fm_stdin == 0){ - fm_stdin = dup(0); - fm_stdout = dup(1); - fm_stderr = dup(2); - printf("backup, stdin:%d stdot:%d stderr:%d\n", fm_stdin, fm_stdout, fm_stderr); - } - - if(strcmp(cmd->para[0], "in") == 0) - { - if(strcmp(cmd->para[1], "shell") == 0) - { - if(input == FM_STD_FILE) - { - dup2(fm_stdin, 0); - input = FM_STD_SHELL; - } - else - { - ;//fm already use shell as stdin - } - } - else if(path != NULL) - { - tmp = open(path, O_RDONLY); - if(tmp < 0){ - printf("FAIL: open %s err\n", path); - return -1; - } - ret = dup2(tmp, 0); - if(ret < 0){ - printf("FAIL: dup %s err\n", path); - return -1; - } - close(tmp); - input = FM_STD_FILE; - } - else - { - printf("FAIL: path err\n"); - return -1; - } - } - else if(strcmp(cmd->para[0], "out") == 0) - { - if(strcmp(cmd->para[1], "shell") == 0) - { - if(output == FM_STD_FILE){ - dup2(fm_stdin, 1); - output = FM_STD_SHELL; - }else{ - ;//fm already use shell as stdin - } - } - else if(path != NULL) - { - tmp = open(path, O_RDWR | O_CREAT,S_IRUSR | S_IWUSR); - if(tmp < 0){ - printf("FAIL: open %s err\n", path); - return -1; - } - ret = dup2(tmp, 1); - if(ret < 0){ - printf("FAIL: dup %s err\n", path); - return -1; - } - close(tmp); - output = FM_STD_FILE; - } - else - { - printf("FAIL: path err\n"); - return -1; - } - } - else if(strcmp(cmd->para[0], "err") == 0) - { - if(strcmp(cmd->para[1], "shell") == 0) - { - if(errput == FM_STD_FILE){ - dup2(fm_stdin, 2); - errput = FM_STD_SHELL; - }else{ - ;//fm already use shell as stdin - } - } - else if(path != NULL) - { - tmp = open(path, O_RDWR | O_CREAT,S_IRUSR | S_IWUSR); - if(tmp < 0){ - printf("FAIL: open %s err\n", path); - return -1; - } - ret = dup2(tmp, 2); - if(ret < 0){ - printf("FAIL: dup %s err\n", path); - return -1; - } - close(tmp); - errput = FM_STD_FILE; - } - else - { - printf("FAIL: path err\n"); - return -1; - } - } - else - { - return -1; - } - - printf("OK:%s\n", cmd->para[0]); - - return 0; -} - -static int fm_tune_tx(struct fm_cmd *cmd) -{ - int ret; - int freq; - struct fm_tune_parm parm; - - if (g_fm_fd < 0) - { - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_tune_parm)); - - ret = get_int_val(cmd->para[0], &freq); - if(ret){ - return -1; - } - parm.band = FM_BAND_UE; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - - ret = ioctl(g_fm_fd, FM_IOCTL_TUNE_TX, &parm); - if (ret) - { - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK:%d\n", parm.freq); - g_freq = parm.freq; - - return 0; -} - -static int fm_rds_tx(struct fm_cmd *cmd) -{ - int ret; - struct fm_rds_tx_parm parm; - int pi; - uint16_t ps[12] = {0x3132, 0x3334, 0x3536, - 0x3132, 0x3334, 0x3536, - 0x3132, 0x3334, 0x3536, - 0x3132, 0x3334, 0x3536}; - int i; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_rds_tx_parm)); - - ret = get_int_val(cmd->para[0], &pi); - if(ret){ - return -1; - } - parm.pi = (uint16_t)pi; - for(i = 0; i < 12; i++){ - parm.ps[i] = ps[i]; - } - parm.other_rds_cnt = 0; - - ret = ioctl(g_fm_fd, FM_IOCTL_RDS_TX, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK\n"); - - return 0; -} - -static int fm_seek(struct fm_cmd *cmd) -{ - int ret; - struct fm_seek_parm parm; - - if (g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - bzero(&parm, sizeof(struct fm_tune_parm)); - - if(strcmp(cmd->para[0], "up") == 0){ - parm.seekdir = FM_SEEK_UP; - }else if(strcmp(cmd->para[0], "down") == 0){ - parm.seekdir = FM_SEEK_DOWN; - }else{ - return -1; - } - parm.band = FM_BAND_UE; - parm.freq = g_freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - parm.seekth = FM_SEEKTH_LEVEL_DEFAULT; - ret = ioctl(g_fm_fd, FM_IOCTL_SEEK, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK:%d\n",parm.freq); - g_freq = parm.freq; - - return 0; -} - -static int fm_scan(struct fm_cmd *cmd) -{ - int ret; - int seekdir; - struct fm_scan_parm parm; - uint16_t CH_Data[256], tmp_val, ch_offset, MASK_CH; - int LOFREQ = 875; - int i = 0, step = 0, ch_cnt = 0; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_scan_parm)); - - parm.band = FM_BAND_UE; - parm.space = FM_SPACE_100K; - parm.hilo = FM_AUTO_HILO_OFF; - parm.freq = g_freq; - parm.ScanTBLSize = sizeof(parm.ScanTBL)/sizeof(uint16_t); - - ret = ioctl(g_fm_fd, FM_IOCTL_SCAN, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK\n"); - g_freq = parm.freq; - - //parm.ScanTBLSize will return valid scan table size. - printf("Scan channel:"); - for(ch_offset = 0; ch_offset < parm.ScanTBLSize; ch_offset++){ - MASK_CH = 0x0001; - tmp_val = parm.ScanTBL[ch_offset]; - for(step = 0; step < 16; step++){ - MASK_CH = 1 << step; - if((MASK_CH & tmp_val)!=0){ - *(CH_Data + ch_cnt) = LOFREQ + (ch_offset * 16 + step) * (parm.space); //100KHz - if(*(CH_Data + ch_cnt) <= 1080){ - printf("%d ", *(CH_Data + ch_cnt)); - ch_cnt++; - } - } - } - } - printf("\nScan channel num:%d\n", ch_cnt); - - return 0; -} - -static int fm_jammer_scan(struct fm_cmd *cmd) -{ - int ret; - int tmp; - int seekdir; - struct fm_scan_parm parm; - uint16_t CH_Data[256], tmp_val, ch_offset, MASK_CH; - int LOFREQ = 875; - int i = 0, step = 0, ch_cnt = 0; - struct fm_cmd cmd_tmp; - struct fm_cqi_req cqi_req; - struct fm_cqi *cqi = NULL; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - cmd_tmp.para[0] = "0x61"; - cmd_tmp.para[1] = "0xDFFF"; - cmd_tmp.para[2] = "0x2000"; - ret = fm_mod_reg(&cmd_tmp); - if(ret){ - return ret; - } - - bzero(&parm, sizeof(struct fm_scan_parm)); - - parm.band = FM_BAND_UE; - parm.space = FM_SPACE_100K; - parm.hilo = FM_AUTO_HILO_OFF; - parm.freq = g_freq; - parm.ScanTBLSize = sizeof(parm.ScanTBL)/sizeof(uint16_t); - - ret = ioctl(g_fm_fd, FM_IOCTL_SCAN, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK\n"); - g_freq = parm.freq; - - //parm.ScanTBLSize will return valid scan table size. - printf("Scan channel:"); - for(ch_offset = 0; ch_offset < parm.ScanTBLSize; ch_offset++){ - MASK_CH = 0x0001; - tmp_val = parm.ScanTBL[ch_offset]; - for(step = 0; step < 16; step++){ - MASK_CH = 1 << step; - if((MASK_CH & tmp_val)!=0){ - *(CH_Data + ch_cnt) = LOFREQ + (ch_offset * 16 + step) * (parm.space); //100KHz - printf("%d ", *(CH_Data + ch_cnt)); - ch_cnt++; - } - } - } - printf("\nScan channel num:%d\n", ch_cnt); - - cqi_req.ch_num = (uint16_t)ch_cnt; - cqi_req.ch_num = (cqi_req.ch_num > 255) ? 255 : cqi_req.ch_num; - cqi_req.buf_size = cqi_req.ch_num*sizeof(struct fm_cqi); - cqi_req.cqi_buf = malloc(cqi_req.buf_size + 1); - if(!cqi_req.cqi_buf){ - printf("no mem\n"); - return -1; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_CQI_GET, &cqi_req); - if(ret){ - free(cqi_req.cqi_buf); - printf("FAIL:%d\n", ret); - return -1; - } - cqi = (struct fm_cqi*)cqi_req.cqi_buf; - tmp = 0; - for(tmp = 0; tmp < cqi_req.ch_num; tmp++){ - printf("freq %d, jam_freq 0x%04x, reserve 0x%04x\n", (cqi[tmp].ch/2 + 640), cqi[tmp].rssi, cqi[tmp].reserve); - } - free(cqi_req.cqi_buf); - printf("OK\n"); - - cmd_tmp.para[0] = "0x61"; - cmd_tmp.para[1] = "0xDFFF"; - cmd_tmp.para[2] = "0x0000"; - ret = fm_mod_reg(&cmd_tmp); - if(ret){ - return ret; - } - - return 0; -} - -static int fm_getcqi(struct fm_cmd *cmd) -{ - int ret; - int tmp; - struct fm_cqi_req cqi_req; - struct fm_cqi *cqi = NULL; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - cqi_req.ch_num = (uint16_t)tmp; - cqi_req.ch_num = (cqi_req.ch_num > 255) ? 255 : cqi_req.ch_num; - cqi_req.buf_size = cqi_req.ch_num*sizeof(struct fm_cqi); - cqi_req.cqi_buf = malloc(cqi_req.buf_size + 1); - if(!cqi_req.cqi_buf){ - printf("no mem\n"); - return -1; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_CQI_GET, &cqi_req); - if(ret){ - free(cqi_req.cqi_buf); - printf("FAIL:%d\n", ret); - return -1; - } - cqi = (struct fm_cqi*)cqi_req.cqi_buf; - tmp = 0; - for(tmp = 0; tmp < cqi_req.ch_num; tmp++){ - printf("freq %d, rssi 0x%04x, reserve 0x%04x\n", cqi[tmp].ch/2 + 640, cqi[tmp].rssi, cqi[tmp].reserve); - } - free(cqi_req.cqi_buf); - printf("OK\n"); - - return 0; -} - -static int fm_scan_force_stop(struct fm_cmd *cmd) -{ - int stop_scan = 1; - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - if(lseek(g_fm_fd, 0, SEEK_END) != -1){ - printf("OK\n"); - return 0; - }else{ - printf("FAIL\n"); - return -1; - } - -} - -//scan test. -static int fm_seek_all(struct fm_cmd *cmd) -{ - int ret; - int start_freq = 1080; - - struct fm_seek_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - g_freq = start_freq; - - do{ - bzero(&parm, sizeof(struct fm_tune_parm)); - parm.band = FM_BAND_UE; - parm.freq = g_freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SPACE_100K; - parm.seekdir = FM_SEEK_UP; - parm.seekth = FM_SEEKTH_LEVEL_DEFAULT; - - ret = ioctl(g_fm_fd, FM_IOCTL_SEEK, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK:%d:%d:%d\n", ret, parm.err, parm.freq); - g_freq = parm.freq; - }while(parm.err == FM_SUCCESS); - - return 0; -} - -static int fm_mute(struct fm_cmd *cmd) -{ - int ret; - uint32_t mute = 1; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_MUTE, &mute); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - - printf("OK\n"); - return 0; -} - -static int fm_unmute(struct fm_cmd *cmd) -{ - int ret; - uint32_t mute = 0; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_MUTE, &mute); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - - printf("OK\n"); - return 0; -} - -static int fm_setvol(struct fm_cmd *cmd) -{ - int ret; - uint32_t vol; - int tmp; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - vol = (uint32_t)tmp; - ret = ioctl(g_fm_fd, FM_IOCTL_SETVOL, &vol); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - - printf("OK\n"); - return 0; -} - -static int fm_getvol(struct fm_cmd *cmd) -{ - int ret; - uint32_t vol; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_GETVOL, &vol); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - printf("volume:%d\n", (int)vol); - - return 0; -} - -static int fm_getrssi(struct fm_cmd *cmd) -{ - int ret; - int rssi; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_GETRSSI, &rssi); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - printf("RSSI:%d\n", rssi); - - return 0; -} - -static int fm_32kppm_compensation(struct fm_cmd *cmd) -{ - int ret; - int tmp = -1; - struct fm_gps_rtc_info rtcInfo; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&rtcInfo, sizeof(struct fm_gps_rtc_info)); - rtcInfo.ageThd = 2; - rtcInfo.driftThd = 30; - rtcInfo.retryCnt = 2; - rtcInfo.tvThd.tv_sec = 10; - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - rtcInfo.age = tmp; - - ret = get_int_val(cmd->para[1], &tmp); - if(ret){ - return -1; - } - rtcInfo.drift = tmp; - ret = ioctl(g_fm_fd, FM_IOCTL_GPS_RTC_DRIFT, &rtcInfo); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - return 0; -} - -static int fm_i2s_set(struct fm_cmd *cmd) -{ - int ret; - int tmp = -1; - static struct fm_i2s_setting i2s_cfg; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&i2s_cfg, sizeof(struct fm_i2s_setting)); - i2s_cfg.onoff = FM_I2S_ON; - i2s_cfg.mode = FM_I2S_SLAVE; - i2s_cfg.sample = FM_I2S_48K; - - if(strcmp(cmd->para[0], "on") == 0){ - i2s_cfg.onoff = FM_I2S_ON; - }else if(strcmp(cmd->para[0], "off") == 0){ - i2s_cfg.onoff = FM_I2S_OFF; - }else{ - return -1; - } - - if(strcmp(cmd->para[1], "master") == 0){ - i2s_cfg.mode = FM_I2S_MASTER; - }else if(strcmp(cmd->para[1], "slave") == 0){ - i2s_cfg.mode = FM_I2S_SLAVE; - }else{ - return -1; - } - - if(strcmp(cmd->para[2], "32k") == 0){ - i2s_cfg.sample = FM_I2S_32K; - }else if(strcmp(cmd->para[2], "44k") == 0){ - i2s_cfg.mode = FM_I2S_44K; - }else if(strcmp(cmd->para[2], "48k") == 0){ - i2s_cfg.mode = FM_I2S_48K; - }else{ - return -1; - } - - ret = ioctl(g_fm_fd, FM_IOCTL_I2S_SETTING, &i2s_cfg); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - return 0; -} - -static int fm_over_bt(struct fm_cmd *cmd) -{ - int ret; - uint32_t viabt = -1; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - if(strcmp(cmd->para[0], "on") == 0){ - viabt = 1; - }else if(strcmp(cmd->para[0], "off") == 0){ - viabt = 0; - }else{ - return -1; - } - ret = ioctl(g_fm_fd, FM_IOCTL_OVER_BT_ENABLE, &viabt); - if(ret){ - printf("FAIL:%d\n", ret); - return -1; - } - printf("OK\n"); - return 0; -} - -static int fm_read_reg(struct fm_cmd *cmd) -{ - int ret; - int tmp; - struct fm_ctl_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_ctl_parm)); - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - parm.addr = (uint8_t)tmp; - parm.rw_flag = 1; - - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%02x = 0x%04x\n", parm.addr, parm.val); - - return 0; -} - -static int print_page(uint16_t page, int mode) -{ - int ret; - uint8_t addr = 0x00; - int i = 0; - int log_fd = -1; - int std_out = -1; - struct fm_ctl_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - if(mode == 0){ - ;// - }else if(mode == 1){ - std_out = dup(1); - if(std_out < 0){ - ;//dup std out error - } - close(1); - log_fd = open("/data/data/fmlog", O_RDWR | O_CREAT | O_APPEND,S_IRUSR | S_IWUSR); - if(log_fd < 0){ - ;//error - } - } - - //setup page - printf("page %d.\n", (int)page); - bzero(&parm, sizeof(struct fm_ctl_parm)); - parm.addr = 0x9F; //page addr - parm.val = 0x0000; //page 0 - parm.rw_flag = 0; //write - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - -start: - bzero(&parm, sizeof(struct fm_ctl_parm)); - parm.addr = addr; - printf("0x%02x ", parm.addr); - parm.rw_flag = 1; - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("0x%04x\n", parm.val); - addr++; - if(++i < 256) - goto start; - - if(mode == 0){ - ;// - }else if(mode == 1){ - close(log_fd); - std_out = dup(std_out); - printf("stdout [fd=%d]\n", std_out); - } - return 0; -} - -static int fm_print_reg(struct fm_cmd *cmd) -{ - int ret = 0; - int tmp = -1; - - if(strcmp(cmd->para[0], "shell") == 0){ - tmp = 0; - }else if(strcmp(cmd->para[0], "file") == 0){ - tmp = 1; - }else{ - return -1; - } - ret = print_page(0x03, tmp); - ret = print_page(0x02, tmp); - ret = print_page(0x01, tmp); - ret = print_page(0x00, tmp); - printf("OK\n"); - - return 0; -} - -static int fm_write_reg(struct fm_cmd *cmd) -{ - int ret; - int tmp; - struct fm_ctl_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_ctl_parm)); - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - parm.addr = (uint8_t)tmp; - ret = get_int_val(cmd->para[1], &tmp); - if(ret){ - return -1; - } - parm.val = (uint16_t)tmp; - parm.rw_flag = 0; - - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%02x = 0x%04x\n", parm.addr, parm.val); - - return 0; -} - -/* - * fm_mod_reg - * mod addr mask val -> mod 0x60 0xFFFE 0x0001 - */ -static int fm_mod_reg(struct fm_cmd *cmd) -{ - int ret; - int tmp; - uint16_t mask; - uint16_t val; - struct fm_ctl_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - bzero(&parm, sizeof(struct fm_ctl_parm)); - - ret = get_int_val(cmd->para[0], &tmp); //get addr - if(ret){ - return -1; - } - parm.addr = (uint8_t)tmp; - parm.rw_flag = 1; - - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - //printf("addr: 0x%02x\n", parm.addr); - - ret = get_int_val(cmd->para[1], &tmp); //get mask - if(ret){ - return -1; - } - mask = (uint16_t)tmp; - //printf("mask: 0x%04x\n", mask); - - ret = get_int_val(cmd->para[2], &tmp); //get bits - if(ret){ - return -1; - } - val = (uint16_t)tmp; - //printf("val: 0x%04x\n", val); - - parm.val = (parm.val & mask) | (val & (~mask)); - parm.rw_flag = 0; - ret = ioctl(g_fm_fd, FM_IOCTL_RW_REG, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%02x = 0x%04x\n", parm.addr, parm.val); - - return 0; -} - -static int fm_delay(struct fm_cmd *cmd) -{ - int ret = 0; - int tmp; - struct timeval tval; - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - - if(strcmp(cmd->para[1], "s") == 0){ - tval.tv_sec = tmp; - tval.tv_usec = 0; - }else if(strcmp(cmd->para[1], "ms") == 0){ - tval.tv_sec = 0; - tval.tv_usec = tmp*1000; - }else if(strcmp(cmd->para[1], "us") == 0){ - tval.tv_sec = 0; - tval.tv_usec = tmp; - }else{ - return -1; - } - printf("OK: %ds,%dus \n", (int)tval.tv_sec, (int)tval.tv_usec); - select(0, NULL, NULL, NULL, &tval); - - return 0; -} - -static int fm_help(struct fm_cmd *cmd) -{ - int id = -1; - - printf("-------------------------------------------------------\n"); - printf("%s\t%s\t\t%s\n", "cmd id", "cmd name", "cmd para num"); - printf("-------------------------------------------------------\n"); - while((++id) < (int)(sizeof(g_cmd)/sizeof(g_cmd[0]))) { - printf("%d\t%s\t\t%d\t%s\n", id, g_cmd[id].name, g_cmd[id].para_size, g_cmd[id].description); - } - printf("-------------------------------------------------------\n"); - printf("OK\n"); - - return 0; -} - -static int fm_bye(struct fm_cmd *cmd) -{ - autofm_run = 0; - - printf("OK\n"); - return 0; -} - -static enum fm_event_type get_key_type(char *key, struct fm_cmd **pcmd) -{ - int i; - - for(i = 0; i < (int)(sizeof(g_cmd)/sizeof(g_cmd[0])); i++){ - if(strcmp(g_cmd[i].name, key) == 0){ - //printf("%s %d\n", g_cmd[i].name, g_cmd[i].para_size); - *pcmd = &g_cmd[i]; - return FM_EVENT_CMD; - } - } - return FM_EVENT_VAL; -} - -static int daemonize(int argc, char **argv) -{ - int ret = 0; - int fd0, fd1, fd2; - unsigned int i; - pid_t pid; - struct rlimit rl; - struct sigaction sa; - - umask(0); - - ret = getrlimit(RLIMIT_NOFILE, &rl); - if (ret < 0){ - return -1; - } - - pid = fork(); - if (pid < 0){ - return -1; - }else if (pid > 0){ - exit(0); - } - - setsid(); - - sa.sa_handler = SIG_IGN; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - - if (sigaction(SIGHUP, &sa, NULL) < 0){ - return -1; - } - - pid = fork(); - if (pid < 0){ - return -1; - }else if (pid > 0){ - exit(0); - } - - chdir("/"); - - if (rl.rlim_max == RLIM_INFINITY){ - rl.rlim_max = 1024; - } - - for (i = 0; i < (unsigned int)argc; i++){ - printf("%s ", argv[i]); - } - printf("\n"); - - for (i = 0; i < rl.rlim_max; i++){ - close(i); - } - - open(argv[1], O_RDWR | O_CREAT); - open(argv[2], O_RDWR | O_CREAT); - open(argv[3], O_RDWR | O_CREAT); - - return 0; -} - -static int fm_top_read_reg(struct fm_cmd *cmd) -{ - int ret; - int tmp; - struct fm_top_rw_parm parm; - - if (g_fm_fd < 0) - { - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_top_rw_parm)); - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - parm.addr = (uint16_t)tmp; - parm.rw_flag = 1; - - ret = ioctl(g_fm_fd, FM_IOCTL_TOP_RDWR, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%04x = 0x%08x\n", parm.addr, parm.val); - - return 0; -} - -static int fm_top_write_reg(struct fm_cmd *cmd) -{ - int ret; - int tmp; - struct fm_top_rw_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_top_rw_parm)); - - ret = get_int_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - parm.addr = (uint16_t)tmp; - ret = get_int_val(cmd->para[1], &tmp); - if(ret){ - return -1; - } - parm.val = (uint32_t)tmp; - parm.rw_flag = 0; - - ret = ioctl(g_fm_fd, FM_IOCTL_TOP_RDWR, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%04x = 0x%08x\n", parm.addr, parm.val); - - return 0; -} - -static int fm_host_read_reg(struct fm_cmd *cmd) -{ - int ret; - uint32_t tmp; - struct fm_host_rw_parm parm; - - if (g_fm_fd < 0) - { - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_host_rw_parm)); - - ret = get_u32_val(cmd->para[0], &tmp); - printf("tmp = 0x%08x\n", tmp); - if (ret) - { - return -1; - } - parm.addr = tmp; - parm.rw_flag = 1; - - ret = ioctl(g_fm_fd, FM_IOCTL_HOST_RDWR, &parm); - if (ret) - { - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%08x = 0x%08x\n", parm.addr, parm.val); - - return 0; -} - -static int fm_host_write_reg(struct fm_cmd *cmd) -{ - int ret; - uint32_t tmp; - struct fm_host_rw_parm parm; - - if(g_fm_fd < 0){ - printf("WARN fd unavailable\n"); - return -2; - } - - bzero(&parm, sizeof(struct fm_host_rw_parm)); - - ret = get_u32_val(cmd->para[0], &tmp); - if(ret){ - return -1; - } - parm.addr = tmp; - ret = get_u32_val(cmd->para[1], &tmp); - if(ret){ - return -1; - } - parm.val = tmp; - parm.rw_flag = 0; - - ret = ioctl(g_fm_fd, FM_IOCTL_HOST_RDWR, &parm); - if(ret){ - printf("FAIL:%d:%d\n", ret, parm.err); - return -1; - } - printf("OK: 0x%08x = 0x%08x\n", parm.addr, parm.val); - - return 0; -} - -int main(int argc, char **argv) -{ - int ret = 0; - int i; - char *buf = NULL; -#define BUF_SIZE 1024*16 - - buf = malloc(BUF_SIZE); - if(!buf){ - printf("fm malloc memory failed!\n"); - return -1; - } - - printf("\n%s:%s:%s\n", argv[0], __DATE__, __TIME__); - for (i = 0; i < argc; i++){ - printf("%s ", argv[i]); - } - printf("\n"); - -#ifdef FM_TOOL_BUILD_DEAMON - daemonize(argc, argv); -#endif - - while(autofm_run){ - char *p = buf; - char *key = NULL; - enum fm_event_type keytype; - struct fm_cmd *cmd = NULL; - enum fm_sta sta = FM_STA_NON; - - memset(buf, 0, BUF_SIZE); - get_cmd(buf, BUF_SIZE); //get a line form input file - - while(cmd_parser(p, &p, &key) == 0){ - keytype = get_key_type(key, &cmd); //this function will update "cmd" pointer if need - switch(sta){ - case FM_STA_NON: - if(keytype == FM_EVENT_VAL){ - printf("bad format\n"); - }else if(cmd->para_size == 0){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - }else{ - sta = FM_STA_CMD; //cmd need one or more para - } - break; - - case FM_STA_CMD: - if(keytype == FM_EVENT_VAL){ - cmd->para[0] = key; - if(cmd->para_size == 1){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - sta = FM_STA_NON; - }else{ - sta = FM_STA_VAL_1; - } - }else{ - printf("bad format\n"); - if(cmd->para_size == 0){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - sta = FM_STA_NON; - }else{ - ; - } - } - break; - - case FM_STA_VAL_1: - if(keytype == FM_EVENT_VAL){ - cmd->para[1] = key; - if(cmd->para_size == 2){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); - sta = FM_STA_NON; - }else{ - sta = FM_STA_VAL_2; - } - }else{ - printf("bad format\n"); - if(cmd->para_size == 0){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - sta = FM_STA_NON; - }else{ - sta = FM_STA_CMD; - } - } - break; - - case FM_STA_VAL_2: - if(keytype == FM_EVENT_VAL){ - cmd->para[2] = key; - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - sta = FM_STA_NON; - }else{ - printf("bad format\n"); - if(cmd->para_size == 0){ - //printf("%s\n", cmd->name); - cmd->handler(cmd); //yes, do cmd - sta = FM_STA_NON; - }else{ - sta = FM_STA_CMD; - } - } - default: - break; - } - } - } - - return 0; -} - diff --git a/MediaTek/fmradiolibs/autofm/autofm.h b/MediaTek/fmradiolibs/autofm/autofm.h deleted file mode 100644 index ecd7d40..0000000 --- a/MediaTek/fmradiolibs/autofm/autofm.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __AUTOFM_H__ -#define __AUTOFM_H__ - -enum fm_cmd_parser_state -{ - FM_CMD_STAT_NONE = 0, - FM_CMD_STAT_WORD -}; - -typedef enum fm_cfg_parser_state fm_cfg_parser_state_t; - -#define COMMENT_CHAR '#' -#define DELIMIT_CHAR '=' -#define isspace(a) ((a) == 0x20) - - -struct fm_cmd -{ - char *name; - int para_size; - int (*handler)(struct fm_cmd *cmd); - char *para[3]; - char *description; -}; - -enum fm_sta -{ - FM_STA_NON, - FM_STA_CMD, - FM_STA_VAL_1, - FM_STA_VAL_2 -}; - -enum fm_event_type -{ - FM_EVENT_VAL, //a value string - FM_EVENT_CMD //a cmd string, the cmd need 0 para -}; - -#endif //__AUTOFM_H__
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/autofm/fm_cust_cfg.h b/MediaTek/fmradiolibs/autofm/fm_cust_cfg.h deleted file mode 100644 index 1cc1d03..0000000 --- a/MediaTek/fmradiolibs/autofm/fm_cust_cfg.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2014. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FM_CUST_CFG_H__ -#define __FM_CUST_CFG_H__ - -//scan sort algorithm -enum{ - FM_SCAN_SORT_NON = 0, - FM_SCAN_SORT_UP, - FM_SCAN_SORT_DOWN, - FM_SCAN_SORT_MAX -}; - -//***************************************************************************************** -//***********************************FM config for customer: start****************************** -//***************************************************************************************** -//RX -#define FM_RX_RSSI_TH_LONG 0xFF01 //FM radio long antenna RSSI threshold(11.375dBuV) -#define FM_RX_RSSI_TH_SHORT 0xFEE0 //FM radio short antenna RSSI threshold(-1dBuV) -#define FM_RX_CQI_TH 0x00E9 //FM radio Channel quality indicator threshold(0x0000~0x00FF) -#define FM_RX_MR_TH 0x01BD //FM radio MR threshold -#define FM_RX_SEEK_SPACE 1 //FM radio seek space,1:100KHZ; 2:200KHZ -#define FM_RX_SCAN_CH_SIZE 40 //FM radio scan max channel size -#define FM_RX_BAND 1 //FM radio band, 1:87.5MHz~108.0MHz; 2:76.0MHz~90.0MHz; 3:76.0MHz~108.0MHz; 4:special -#define FM_RX_BAND_FREQ_L 875 //FM radio special band low freq(Default 87.5MHz) -#define FM_RX_BAND_FREQ_H 1080 //FM radio special band high freq(Default 108.0MHz) -#define FM_RX_SCAN_SORT_SELECT FM_SCAN_SORT_NON -#define FM_RX_FAKE_CH_NUM 1 -#define FM_RX_FAKE_CH_RSSI 40 -#define FM_RX_FAKE_CH_1 1075 -#define FM_RX_FAKE_CH_2 0 -#define FM_RX_FAKE_CH_3 0 -#define FM_RX_FAKE_CH_4 0 -#define FM_RX_FAKE_CH_5 0 -#define FM_RX_DEEMPHASIS 0 //0-50us, China Mainland; 1-75us China Taiwan -#define FM_RX_OSC_FREQ 0 //0-26MHz; 1-19MHz; 2-24MHz; 3-38.4MHz; 4-40MHz; 5-52MHz - -//TX -#define FM_TX_PWR_LEVEL_MAX 120 -#define FM_TX_SCAN_HOLE_LOW 923 //92.3MHz~95.4MHz should not show to user -#define FM_TX_SCAN_HOLE_HIGH 954 //92.3MHz~95.4MHz should not show to user - - -//***************************************************************************************** -//***********************************FM config for customer:end ******************************* -//***************************************************************************************** -// band -#define FM_BAND_UNKNOWN 0 -#define FM_BAND_UE 1 // US/Europe band 87.5MHz ~ 108MHz (DEFAULT) -#define FM_BAND_JAPAN 2 // Japan band 76MHz ~ 90MHz -#define FM_BAND_JAPANW 3 // Japan wideband 76MHZ ~ 108MHz -#define FM_BAND_SPECIAL 4 // special band between 76MHZ and 108MHz -#define FM_BAND_DEFAULT FM_BAND_UE -#define FM_FREQ_MIN FM_RX_BAND_FREQ_L -#define FM_FREQ_MAX FM_RX_BAND_FREQ_H -#define FM_RAIDO_BAND FM_BAND_UE -// space -#define FM_SPACE_UNKNOWN 0 -#define FM_SPACE_100K 1 -#define FM_SPACE_200K 2 -#define FM_SPACE_DEFAULT FM_RX_SEEK_SPACE -#define FM_SEEK_SPACE FM_RX_SEEK_SPACE -//max scan chl num -#define FM_MAX_CHL_SIZE FM_RX_SCAN_CH_SIZE -// auto HiLo -#define FM_AUTO_HILO_OFF 0 -#define FM_AUTO_HILO_ON 1 -// seek direction -#define FM_SEEK_UP 0 -#define FM_SEEK_DOWN 1 - -#define FM_CHIP_AR1000 0x1000 -#define FM_CHIP_MT5192 0x91 -#define FM_CHIP_MT5193 0x92 -#define FM_CHIP_MT6616 0x6616 -#define FM_CHIP_MT6626 0x6626 -#define FM_CHIP_MT6628 0x6628 -#define FM_CHIP_MT6620 0x6620 -#define FM_CHIP_UNSUPPORTED 0xffff - -// seek threshold -#define FM_SEEKTH_LEVEL_DEFAULT 4 - -#endif // __FM_CUST_CFG_H__ diff --git a/MediaTek/fmradiolibs/autofm/fm_ioctl.h b/MediaTek/fmradiolibs/autofm/fm_ioctl.h deleted file mode 100644 index 605b765..0000000 --- a/MediaTek/fmradiolibs/autofm/fm_ioctl.h +++ /dev/null @@ -1,110 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FM_IOCTL_H__ -#define __FM_IOCTL_H__ -#include "fm_rds.h" -#include "fm_main.h" - -#define FM_IOC_MAGIC 0xf5 // FIXME: any conflict? - -#define FM_IOCTL_POWERUP _IOWR(FM_IOC_MAGIC, 0, struct fm_tune_parm) -#define FM_IOCTL_POWERDOWN _IOWR(FM_IOC_MAGIC, 1, int32_t) -#define FM_IOCTL_TUNE _IOWR(FM_IOC_MAGIC, 2, struct fm_tune_parm) -#define FM_IOCTL_SEEK _IOWR(FM_IOC_MAGIC, 3, struct fm_seek_parm) -#define FM_IOCTL_SETVOL _IOWR(FM_IOC_MAGIC, 4, uint32_t) -#define FM_IOCTL_GETVOL _IOWR(FM_IOC_MAGIC, 5, uint32_t) -#define FM_IOCTL_MUTE _IOWR(FM_IOC_MAGIC, 6, uint32_t) -#define FM_IOCTL_GETRSSI _IOWR(FM_IOC_MAGIC, 7, int32_t) -#define FM_IOCTL_SCAN _IOWR(FM_IOC_MAGIC, 8, struct fm_scan_parm) -#define FM_IOCTL_STOP_SCAN _IO(FM_IOC_MAGIC, 9) -#define FM_IOCTL_POWERUP_TX _IOWR(FM_IOC_MAGIC, 20, struct fm_tune_parm) -#define FM_IOCTL_TUNE_TX _IOWR(FM_IOC_MAGIC, 21, struct fm_tune_parm) -#define FM_IOCTL_RDS_TX _IOWR(FM_IOC_MAGIC, 22, struct fm_rds_tx_parm) - -//IOCTL and struct for test -#define FM_IOCTL_GETCHIPID _IOWR(FM_IOC_MAGIC, 10, uint16_t) -#define FM_IOCTL_EM_TEST _IOWR(FM_IOC_MAGIC, 11, struct fm_em_parm) -#define FM_IOCTL_RW_REG _IOWR(FM_IOC_MAGIC, 12, struct fm_ctl_parm) -#define FM_IOCTL_GETMONOSTERO _IOWR(FM_IOC_MAGIC, 13, uint16_t) -#define FM_IOCTL_GETCURPAMD _IOWR(FM_IOC_MAGIC, 14, uint16_t) -#define FM_IOCTL_GETGOODBCNT _IOWR(FM_IOC_MAGIC, 15, uint16_t) -#define FM_IOCTL_GETBADBNT _IOWR(FM_IOC_MAGIC, 16, uint16_t) -#define FM_IOCTL_GETBLERRATIO _IOWR(FM_IOC_MAGIC, 17, uint16_t) - -//IOCTL for RDS -#define FM_IOCTL_RDS_ONOFF _IOWR(FM_IOC_MAGIC, 18, uint16_t) -#define FM_IOCTL_RDS_SUPPORT _IOWR(FM_IOC_MAGIC, 19, int32_t) - -#define FM_IOCTL_RDS_SIM_DATA _IOWR(FM_IOC_MAGIC, 23, uint32_t) -#define FM_IOCTL_IS_FM_POWERED_UP _IOWR(FM_IOC_MAGIC, 24, uint32_t) - -//IOCTL for FM Tx -#define FM_IOCTL_TX_SUPPORT _IOWR(FM_IOC_MAGIC, 25, int32_t) -#define FM_IOCTL_RDSTX_SUPPORT _IOWR(FM_IOC_MAGIC, 26, int32_t) -#define FM_IOCTL_RDSTX_ENABLE _IOWR(FM_IOC_MAGIC, 27, int32_t) -#define FM_IOCTL_TX_SCAN _IOWR(FM_IOC_MAGIC, 28, struct fm_tx_scan_parm) - -//IOCTL for FM over BT -#define FM_IOCTL_OVER_BT_ENABLE _IOWR(FM_IOC_MAGIC, 29, int32_t) - -//IOCTL for FM ANTENNA SWITCH -#define FM_IOCTL_ANA_SWITCH _IOWR(FM_IOC_MAGIC, 30, int32_t) -#define FM_IOCTL_GETCAPARRAY _IOWR(FM_IOC_MAGIC, 31, int32_t) - -//IOCTL for FM compensation by GPS RTC -#define FM_IOCTL_GPS_RTC_DRIFT _IOWR(FM_IOC_MAGIC, 32, struct fm_gps_rtc_info) - -//IOCTL for FM I2S Setting -#define FM_IOCTL_I2S_SETTING _IOWR(FM_IOC_MAGIC, 33, struct fm_i2s_setting) - -#define FM_IOCTL_RDS_GROUPCNT _IOWR(FM_IOC_MAGIC, 34, struct rds_group_cnt_req) -#define FM_IOCTL_RDS_GET_LOG _IOWR(FM_IOC_MAGIC, 35, struct rds_raw_data) - -#define FM_IOCTL_SCAN_GETRSSI _IOWR(FM_IOC_MAGIC, 36, struct fm_rssi_req) -#define FM_IOCTL_SETMONOSTERO _IOWR(FM_IOC_MAGIC, 37, int32_t) - -#define FM_IOCTL_RDS_BC_RST _IOWR(FM_IOC_MAGIC, 38, int32_t) -#define FM_IOCTL_CQI_GET _IOWR(FM_IOC_MAGIC, 39, struct fm_cqi_req) - -#define FM_IOCTL_TOP_RDWR _IOWR(FM_IOC_MAGIC, 43, struct fm_top_rw_parm) -#define FM_IOCTL_HOST_RDWR _IOWR(FM_IOC_MAGIC, 44, struct fm_host_rw_parm) - -#define FM_IOCTL_DUMP_REG _IO(FM_IOC_MAGIC, 0xFF) - -#endif //__FM_IOCTL_H__ - diff --git a/MediaTek/fmradiolibs/autofm/fm_main.h b/MediaTek/fmradiolibs/autofm/fm_main.h deleted file mode 100644 index fdcb314..0000000 --- a/MediaTek/fmradiolibs/autofm/fm_main.h +++ /dev/null @@ -1,244 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FM_MAIN_H__ -#define __FM_MAIN_H__ - -#define FM_NAME "fm" -#define FM_DEVICE_NAME "/dev/fm" - -#define FM_VOL_MAX 0x2B // 43 volume(0-15) - -#define FM_RDS_ENABLE 0x01 // 1: enable RDS, 0:disable RDS -#define FM_RDS_DATA_READY (1 << 0) - -// errno -#define FM_SUCCESS 0 -#define FM_FAILED 1 -#define FM_EPARM 2 -#define FM_BADSTATUS 3 -#define FM_TUNE_FAILED 4 -#define FM_SEEK_FAILED 5 -#define FM_BUSY 6 -#define FM_SCAN_FAILED 7 - -struct fm_tune_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_seek_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint8_t seekdir; - uint8_t seekth; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_scan_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // OUT parameter - uint16_t ScanTBL[16]; //need no less than the chip - uint16_t ScanTBLSize; //IN/OUT parameter -}; - -struct fm_cqi -{ - uint16_t ch; - uint16_t rssi; - uint16_t reserve; -}; - -struct fm_cqi_req -{ - uint16_t ch_num; - int buf_size; - char *cqi_buf; -}; - -struct fm_ch_rssi{ - uint16_t freq; - uint16_t rssi; -}; - -struct fm_rssi_req{ - uint16_t num; - uint16_t read_cnt; - struct fm_ch_rssi cr[16*16]; -}; - -struct fm_rds_tx_parm { - uint8_t err; - uint16_t pi; - uint16_t ps[12]; // 4 ps - uint16_t other_rds[87]; // 0~29 other groups - uint8_t other_rds_cnt; // # of other group -}; - -typedef struct fm_rds_tx_req{ - unsigned char pty; // 0~31 integer - unsigned char rds_rbds; // 0:RDS, 1:RBDS - unsigned char dyn_pty; // 0:static, 1:dynamic - unsigned short pi_code; // 2-byte hex - unsigned char ps_buf[8]; // hex buf of PS - unsigned char ps_len; // length of PS, must be 0 / 8" - unsigned char af; // 0~204, 0:not used, 1~204:(87.5+0.1*af)MHz - unsigned char ah; // Artificial head, 0:no, 1:yes - unsigned char stereo; // 0:mono, 1:stereo - unsigned char compress; // Audio compress, 0:no, 1:yes - unsigned char tp; // traffic program, 0:no, 1:yes - unsigned char ta; // traffic announcement, 0:no, 1:yes - unsigned char speech; // 0:music, 1:speech -}fm_rds_tx_req; - -#define TX_SCAN_MAX 10 -#define TX_SCAN_MIN 1 -struct fm_tx_scan_parm { - uint8_t err; - uint8_t band; //87.6~108MHz - uint8_t space; - uint8_t hilo; - uint16_t freq; // start freq, if less than band min freq, then will use band min freq - uint8_t scandir; - uint16_t ScanTBL[TX_SCAN_MAX]; //need no less than the chip - uint16_t ScanTBLSize; //IN: desired size, OUT: scan result size -}; - -struct fm_gps_rtc_info{ - int err; //error number, 0: success, other: err code - int retryCnt; //GPS mnl can decide retry times - int ageThd; //GPS 3D fix time diff threshold - int driftThd; //GPS RTC drift threshold - struct timeval tvThd; //time value diff threshold - int age; //GPS 3D fix time diff - int drift; //GPS RTC drift - union{ - unsigned long stamp; //time stamp in jiffies - struct timeval tv; //time stamp value in RTC - }; - int flag; //rw flag -}; - -typedef enum -{ - FM_I2S_ON = 0, - FM_I2S_OFF -}fm_i2s_state; - -typedef enum -{ - FM_I2S_MASTER = 0, - FM_I2S_SLAVE -}fm_i2s_mode; - -typedef enum -{ - FM_I2S_32K = 0, - FM_I2S_44K, - FM_I2S_48K -}fm_i2s_sample; - -struct fm_i2s_setting{ - int onoff; - int mode; - int sample; -}; - -typedef enum{ - FM_RX = 0, - FM_TX = 1 -}FM_PWR_T; - -enum group_idx { - mono=0, - stereo, - RSSI_threshold, - HCC_Enable, - PAMD_threshold, - Softmute_Enable, - De_emphasis, - HL_Side, - Demod_BW, - Dynamic_Limiter, - Softmute_Rate, - AFC_Enable, - Softmute_Level, - Analog_Volume, - GROUP_TOTAL_NUMS -}; - -enum item_idx { - Sblend_OFF=0, - Sblend_ON, - ITEM_TOTAL_NUMS -}; - -struct fm_ctl_parm { - uint8_t err; - uint8_t addr; - uint16_t val; - uint16_t rw_flag;//0:write, 1:read -}; -struct fm_top_rw_parm { - uint8_t err; - uint8_t rw_flag;//0:write, 1:read - uint16_t addr; - uint32_t val; -}; -struct fm_host_rw_parm { - uint8_t err; - uint8_t rw_flag;//0:write, 1:read - uint32_t addr; - uint32_t val; -}; - -struct fm_em_parm { - uint16_t group_idx; - uint16_t item_idx; - uint32_t item_value; -}; - -#endif //__FM_MAIN_H__ - diff --git a/MediaTek/fmradiolibs/autofm/fm_rds.h b/MediaTek/fmradiolibs/autofm/fm_rds.h deleted file mode 100644 index bda2e34..0000000 --- a/MediaTek/fmradiolibs/autofm/fm_rds.h +++ /dev/null @@ -1,242 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FM_RDS_H__ -#define __FM_RDS_H__ - -//FM_RDS_DATA_CRC_FFOST -#define FM_RDS_GDBK_IND_A (0x08) -#define FM_RDS_GDBK_IND_B (0x04) -#define FM_RDS_GDBK_IND_C (0x02) -#define FM_RDS_GDBK_IND_D (0x01) -#define FM_RDS_DCO_FIFO_OFST (0x01E0) -#define FM_RDS_READ_DELAY (0x80) - -#define RDS_RX_BLOCK_PER_GROUP (4) -#define RDS_RX_GROUP_SIZE (2*RDS_RX_BLOCK_PER_GROUP) -#define MAX_RDS_RX_GROUP_CNT (12) -#define RDS_RT_MULTI_REV_TH 16 - -typedef struct rds_packet_t -{ - uint16_t blkA; - uint16_t blkB; - uint16_t blkC; - uint16_t blkD; - uint16_t crc; //crc checksum - uint16_t cbc; //correct bit cnt -}rds_packet_t; - -typedef struct rds_rx_t -{ - uint16_t sin; - uint16_t cos; - rds_packet_t data[MAX_RDS_RX_GROUP_CNT]; -}rds_rx_t; - -typedef enum rds_ps_state_machine_t -{ - RDS_PS_START = 0, - RDS_PS_DECISION, - RDS_PS_GETLEN, - RDS_PS_DISPLAY, - RDS_PS_FINISH, - RDS_PS_MAX -}rds_ps_state_machine_t; - -typedef enum rds_rt_state_machine_t -{ - RDS_RT_START = 0, - RDS_RT_DECISION, - RDS_RT_GETLEN, - RDS_RT_DISPLAY, - RDS_RT_FINISH, - RDS_RT_MAX -}rds_rt_state_machine_t; - - -enum -{ - RDS_GRP_VER_A = 0, //group version A - RDS_GRP_VER_B -}; - -typedef enum rds_blk_t -{ - RDS_BLK_A = 0, - RDS_BLK_B, - RDS_BLK_C, - RDS_BLK_D, - RDS_BLK_MAX -}rds_blk_t; - -//For RDS feature, these strcutures also be defined in "fm.h" -typedef struct rds_flag_t -{ - uint8_t TP; - uint8_t TA; - uint8_t Music; - uint8_t Stereo; - uint8_t Artificial_Head; - uint8_t Compressed; - uint8_t Dynamic_PTY; - uint8_t Text_AB; - uint32_t flag_status; -}rds_flag_t; - -typedef struct rds_ct_t -{ - uint16_t Month; - uint16_t Day; - uint16_t Year; - uint16_t Hour; - uint16_t Minute; - uint8_t Local_Time_offset_signbit; - uint8_t Local_Time_offset_half_hour; -}rds_ct_t; - -typedef struct rds_af_t -{ - int16_t AF_Num; - int16_t AF[2][25]; //100KHz - uint8_t Addr_Cnt; - uint8_t isMethod_A; - uint8_t isAFNum_Get; -}rds_af_t; - -typedef struct rds_ps_t -{ - uint8_t PS[4][8]; - uint8_t Addr_Cnt; -}rds_ps_t; - -typedef struct rds_rt_t -{ - uint8_t TextData[4][64]; - uint8_t GetLength; - uint8_t isRTDisplay; - uint8_t TextLength; - uint8_t isTypeA; - uint8_t BufCnt; - uint16_t Addr_Cnt; -}rds_rt_t; - -typedef struct rds_raw_t -{ - int dirty; //indicate if the data changed or not - int len; //the data len form chip - uint8_t data[146]; -}rds_raw_t; - -typedef struct rds_group_cnt_t -{ - unsigned long total; - unsigned long groupA[16]; //RDS groupA counter - unsigned long groupB[16]; //RDS groupB counter -}rds_group_cnt_t; - -typedef enum rds_group_cnt_op_t -{ - RDS_GROUP_CNT_READ = 0, - RDS_GROUP_CNT_WRITE, - RDS_GROUP_CNT_RESET, - RDS_GROUP_CNT_MAX -}rds_group_cnt_op_t; - -typedef struct rds_group_cnt_req_t -{ - int err; - enum rds_group_cnt_op_t op; - struct rds_group_cnt_t gc; -}rds_group_cnt_req_t; - -typedef struct rds_t -{ - struct rds_ct_t CT; - struct rds_flag_t RDSFlag; - uint16_t PI; - uint8_t Switch_TP; - uint8_t PTY; - struct rds_af_t AF_Data; - struct rds_af_t AFON_Data; - uint8_t Radio_Page_Code; - uint16_t Program_Item_Number_Code; - uint8_t Extend_Country_Code; - uint16_t Language_Code; - struct rds_ps_t PS_Data; - uint8_t PS_ON[8]; - struct rds_rt_t RT_Data; - uint16_t event_status; //will use RDSFlag_Struct RDSFlag->flag_status to check which event, is that ok? - struct rds_group_cnt_t gc; -}rds_t; - - -//Need care the following definition. -//valid Rds Flag for notify -typedef enum rds_flag_status_t -{ - RDS_FLAG_IS_TP = 0x0001, // Program is a traffic program - RDS_FLAG_IS_TA = 0x0002, // Program currently broadcasts a traffic ann. - RDS_FLAG_IS_MUSIC = 0x0004, // Program currently broadcasts music - RDS_FLAG_IS_STEREO = 0x0008, // Program is transmitted in stereo - RDS_FLAG_IS_ARTIFICIAL_HEAD = 0x0010, // Program is an artificial head recording - RDS_FLAG_IS_COMPRESSED = 0x0020, // Program content is compressed - RDS_FLAG_IS_DYNAMIC_PTY = 0x0040, // Program type can change - RDS_FLAG_TEXT_AB = 0x0080 // If this flag changes state, a new radio text string begins -} rds_flag_status_t; - -typedef enum rds_event_status_t -{ - RDS_EVENT_FLAGS = 0x0001, // One of the RDS flags has changed state - RDS_EVENT_PI_CODE = 0x0002, // The program identification code has changed - RDS_EVENT_PTY_CODE = 0x0004, // The program type code has changed - RDS_EVENT_PROGRAMNAME = 0x0008, // The program name has changed - RDS_EVENT_UTCDATETIME = 0x0010, // A new UTC date/time is available - RDS_EVENT_LOCDATETIME = 0x0020, // A new local date/time is available - RDS_EVENT_LAST_RADIOTEXT = 0x0040, // A radio text string was completed - RDS_EVENT_AF = 0x0080, // Current Channel RF signal strength too weak, need do AF switch - RDS_EVENT_AF_LIST = 0x0100, // An alternative frequency list is ready - RDS_EVENT_AFON_LIST = 0x0200, // An alternative frequency list is ready - RDS_EVENT_TAON = 0x0400, // Other Network traffic announcement start - RDS_EVENT_TAON_OFF = 0x0800, // Other Network traffic announcement finished. - RDS_EVENT_RDS = 0x2000, // RDS Interrupt had arrived durint timer period - RDS_EVENT_NO_RDS = 0x4000, // RDS Interrupt not arrived durint timer period - RDS_EVENT_RDS_TIMER = 0x8000 // Timer for RDS Bler Check. ---- BLER block error rate -} rds_event_status_t; - -#endif //__FM_RDS_H__ - diff --git a/MediaTek/fmradiolibs/fmnative/Android.mk b/MediaTek/fmradiolibs/fmnative/Android.mk deleted file mode 100755 index f730a3c..0000000 --- a/MediaTek/fmradiolibs/fmnative/Android.mk +++ /dev/null @@ -1,643 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -BUILD_FM_CFG := false -BUILD_FM_PATCH := false - -FM_CFG_FILE := fm_cust.cfg - -LOCAL_PATH:= $(call my-dir) -#fm custom path: mediatek/custom/common/hal/fmradio -FM_CUSTOM_PATH := ./config - -# $(call config-custom-folder,custom1:hal/fmradio) - -############################################## MT6628 FM config: start######################### -ifeq ($(findstring MT6628_FM,$(MTK_FM_CHIP)),MT6628_FM) - -BUILD_FM_CFG := true -BUILD_FM_PATCH := true -FM_CHIP := mt6628 -FM_ROM_FILE := mt6628_fm_rom.bin -FM_PATCH_FILE_1 := mt6628_fm_v1_patch.bin -FM_COEFF_FILE_1 := mt6628_fm_v1_coeff.bin -FM_PATCH_FILE_2 := mt6628_fm_v2_patch.bin -FM_COEFF_FILE_2 := mt6628_fm_v2_coeff.bin -FM_PATCH_FILE_3 := mt6628_fm_v3_patch.bin -FM_COEFF_FILE_3 := mt6628_fm_v3_coeff.bin -FM_PATCH_FILE_4 := mt6628_fm_v4_patch.bin -FM_COEFF_FILE_4 := mt6628_fm_v4_coeff.bin -FM_PATCH_FILE_5 := mt6628_fm_v5_patch.bin -FM_COEFF_FILE_5 := mt6628_fm_v5_coeff.bin - - -##### INSTALL fm_cust.cfg FOR fm CONFIG ##### - -ifeq ($(BUILD_FM_CFG), true) -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -##LOCAL_SRC_FILES := custom1/$(FM_CHIP)/$(LOCAL_MODULE) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) -endif - -##### INSTALL fm PATCH ##### - -ifeq ($(BUILD_FM_PATCH), true) -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_ROM_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/mt6628 -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/mt6628/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -endif -################################################### MT6628 FM config: end###################################### - -################################################### MT6620 FM config: start##################################### -ifeq ($(findstring MT6620_FM,$(MTK_FM_CHIP)),MT6620_FM) - -FM_CHIP := mt6620 - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CHIP)_$(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -############################################### MT6620 FM config: end########################################## - -############################################### MT6627 FM config: start######################################## -ifeq ($(findstring MT6627_FM,$(MTK_FM_CHIP)),MT6627_FM) - -FM_CHIP := mt6627 -FM_PATCH_FILE_1 := mt6627_fm_v1_patch.bin -FM_COEFF_FILE_1 := mt6627_fm_v1_coeff.bin -FM_PATCH_FILE_2 := mt6627_fm_v2_patch.bin -FM_COEFF_FILE_2 := mt6627_fm_v2_coeff.bin -FM_PATCH_FILE_3 := mt6627_fm_v3_patch.bin -FM_COEFF_FILE_3 := mt6627_fm_v3_coeff.bin -FM_PATCH_FILE_4 := mt6627_fm_v4_patch.bin -FM_COEFF_FILE_4 := mt6627_fm_v4_coeff.bin -FM_PATCH_FILE_5 := mt6627_fm_v5_patch.bin -FM_COEFF_FILE_5 := mt6627_fm_v5_coeff.bin - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CHIP)_$(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -##### MT6627 FM config: end##### - -############################################### MT6625 FM config: start######################################## -ifeq ($(findstring MT6625_FM,$(MTK_FM_CHIP)),MT6625_FM) - -FM_CHIP := mt6627 -FM_PATCH_FILE_1 := mt6627_fm_v1_patch.bin -FM_COEFF_FILE_1 := mt6627_fm_v1_coeff.bin -FM_PATCH_FILE_2 := mt6627_fm_v2_patch.bin -FM_COEFF_FILE_2 := mt6627_fm_v2_coeff.bin -FM_PATCH_FILE_3 := mt6627_fm_v3_patch.bin -FM_COEFF_FILE_3 := mt6627_fm_v3_coeff.bin -FM_PATCH_FILE_4 := mt6627_fm_v4_patch.bin -FM_COEFF_FILE_4 := mt6627_fm_v4_coeff.bin -FM_PATCH_FILE_5 := mt6627_fm_v5_patch.bin -FM_COEFF_FILE_5 := mt6627_fm_v5_coeff.bin - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CHIP)_$(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -##### MT6625 FM config: end##### - -############################################### MT6580 FM config: start######################################## -ifeq ($(findstring MT6580_FM,$(MTK_FM_CHIP)),MT6580_FM) - -FM_CHIP := mt6580 -FM_PATCH_FILE_1 := mt6580_fm_v1_patch.bin -FM_COEFF_FILE_1 := mt6580_fm_v1_coeff.bin -FM_PATCH_FILE_2 := mt6580_fm_v2_patch.bin -FM_COEFF_FILE_2 := mt6580_fm_v2_coeff.bin -FM_PATCH_FILE_3 := mt6580_fm_v3_patch.bin -FM_COEFF_FILE_3 := mt6580_fm_v3_coeff.bin -FM_PATCH_FILE_4 := mt6580_fm_v4_patch.bin -FM_COEFF_FILE_4 := mt6580_fm_v4_coeff.bin -FM_PATCH_FILE_5 := mt6580_fm_v5_patch.bin -FM_COEFF_FILE_5 := mt6580_fm_v5_coeff.bin - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CHIP)_$(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -##### MT6580 FM config: end##### - -############################################### MT6630 FM config: start######################################## -ifeq ($(findstring MT6630_FM,$(MTK_FM_CHIP)),MT6630_FM) - -FM_CHIP := mt6630 -FM_PATCH_FILE_1 := $(FM_CHIP)_fm_v1_patch.bin -FM_COEFF_FILE_1 := $(FM_CHIP)_fm_v1_coeff.bin -FM_PATCH_FILE_2 := $(FM_CHIP)_fm_v2_patch.bin -FM_COEFF_FILE_2 := $(FM_CHIP)_fm_v2_coeff.bin -FM_PATCH_FILE_3 := $(FM_CHIP)_fm_v3_patch.bin -FM_COEFF_FILE_3 := $(FM_CHIP)_fm_v3_coeff.bin -FM_PATCH_FILE_4 := $(FM_CHIP)_fm_v4_patch.bin -FM_COEFF_FILE_4 := $(FM_CHIP)_fm_v4_coeff.bin -FM_PATCH_FILE_5 := $(FM_CHIP)_fm_v5_patch.bin -FM_COEFF_FILE_5 := $(FM_CHIP)_fm_v5_coeff.bin - -FM_TX_PATCH_FILE_1 := $(FM_CHIP)_fm_v1_patch_tx.bin -FM_TX_COEFF_FILE_1 := $(FM_CHIP)_fm_v1_coeff_tx.bin -FM_TX_PATCH_FILE_2 := $(FM_CHIP)_fm_v2_patch_tx.bin -FM_TX_COEFF_FILE_2 := $(FM_CHIP)_fm_v2_coeff_tx.bin -FM_TX_PATCH_FILE_3 := $(FM_CHIP)_fm_v3_patch_tx.bin -FM_TX_COEFF_FILE_3 := $(FM_CHIP)_fm_v3_coeff_tx.bin -FM_TX_PATCH_FILE_4 := $(FM_CHIP)_fm_v4_patch_tx.bin -FM_TX_COEFF_FILE_4 := $(FM_CHIP)_fm_v4_coeff_tx.bin -FM_TX_PATCH_FILE_5 := $(FM_CHIP)_fm_v5_patch_tx.bin -FM_TX_COEFF_FILE_5 := $(FM_CHIP)_fm_v5_coeff_tx.bin - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_CHIP)_$(FM_CFG_FILE) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/fmr -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_PATCH_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_PATCH_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_PATCH_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_PATCH_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_PATCH_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_COEFF_FILE_1) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_COEFF_FILE_2) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_COEFF_FILE_3) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_COEFF_FILE_4) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := $(FM_TX_COEFF_FILE_5) -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/firmware/$(FM_CHIP) -LOCAL_SRC_FILES := $(FM_CUSTOM_PATH)/$(FM_CHIP)/$(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -endif -##### MT6630 FM config: end##### -include $(call all-makefiles-under,$(LOCAL_PATH)) - -endif diff --git a/MediaTek/fmradiolibs/fmnative/NOTICE b/MediaTek/fmradiolibs/fmnative/NOTICE deleted file mode 100755 index 0519ecb..0000000 --- a/MediaTek/fmradiolibs/fmnative/NOTICE +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/README b/MediaTek/fmradiolibs/fmnative/README deleted file mode 100644 index 23bd2ae..0000000 --- a/MediaTek/fmradiolibs/fmnative/README +++ /dev/null @@ -1,21 +0,0 @@ -Configure files and DSP patches needed by FM - -WHAT IT DOES? -============= -Configure files mtXXXX_fm_cust.cfg are used to adjust FM scan parameters -DSP patches mtxxxx_fm_vx_coeff.bin and mtxxxx_fm_vx_patch.bin are needed by FM Modem - -HOW IT WAS BUILT? -================== -These files are put inside target /etc/firmware/mtxxxx/ - -HOW TO USE IT? -============== -These files can be push out/push in directely by adb command - -Change items' value of the Configure files mtXXXX_fm_cust.cfg would effect FM scan performance - -DSP patches mtxxxx_fm_vx_coeff.bin and mtxxxx_fm_vx_patch.bin are updated by MediaTek co.. - -All the source code of this library were written by MediaTek co.. - diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6620/mt6620_fm_cust.cfg b/MediaTek/fmradiolibs/fmnative/config/mt6620/mt6620_fm_cust.cfg deleted file mode 100644 index af31551..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6620/mt6620_fm_cust.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[FM Radio] -#FM RX RSSI threshold setting -FM_RX_RSSI_TH_LONG_MT6620 = -296 -FM_RX_RSSI_TH_SHORT_MT6620 = -296 -FM_RX_DESENSE_RSSI_MT6620 = -245 -FM_RX_SMG_TH_MT6620 = 6 -#deemphasis: 0-50us, China Mainland; 1-75us China Taiwan -FM_RX_DEEMPHASIS_MT6620 = 0 -#osc freq: 0-26MHz; 1-19MHz; 2-24MHz; 3-38.4MHz; 4-40MHz; 5-52MHz -FM_RX_OSC_FREQ_MT6620 = 0 -[FM Transmitter] -#FMT_SCAN_HOLE_L_MT6620 = 976 -#FMT_SCAN_HOLE_H_MT6620 = 1011 -#FMT_PWR_LVL_MAX_MT6620 = 120 diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6626/fm_cust.cfg b/MediaTek/fmradiolibs/fmnative/config/mt6626/fm_cust.cfg deleted file mode 100755 index 57fa8d3..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6626/fm_cust.cfg +++ /dev/null @@ -1,28 +0,0 @@ -[FM Radio] -#FM RX RSSI threshold setting -FMR_RSSI_TH_L = 0xFF01 -FMR_RSSI_TH_S = 0xFEE0 -FMR_CQI_TH = 0x00E9 -FMR_MR_TH = 0x01BD -#FM RX scan channel max number -FMR_SCAN_CH_SIZE = 40 -#no sort:0, sort up:1, sort down:2 -FMR_SCAN_SORT = 0 -FMR_SEEK_SPACE = 1 -#FM RX band -FMR_BAND = 1 -FMR_BAND_FREQ_L = 875 -FMR_BAND_FREQ_H = 1080 -FMR_FAKE_CH = 881 -FMR_FAKE_CH = 882 -FMR_FAKE_CH = 885 -FMR_FAKE_CH = 950 -FMR_FAKE_CH_RSSI = 40 -#deemphasis: 0-50us, China Mainland; 1-75us China Taiwan -FMR_DEEMPHASIS = 0 -#osc freq: 0-26MHz; 1-19MHz; 2-24MHz; 3-38.4MHz; 4-40MHz; 5-52MHz -FMR_OSC_FREQ = 0 -[FM Transmitter] -FMT_SCAN_HOLE_L = 976 -FMT_SCAN_HOLE_H = 1011 -FMT_PWR_LVL_MAX = 120 diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_cust.cfg b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_cust.cfg deleted file mode 100755 index b0d532b..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_cust.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[FM Radio] -#FM RX RSSI threshold setting -FM_RX_RSSI_TH_LONG_MT6627 = -296 -FM_RX_RSSI_TH_SHORT_MT6627 = -296 -FM_RX_DESENSE_RSSI_MT6627 = -240 -FM_RX_SMG_TH_MT6627 = 16421 -#deemphasis: 0-50us, China Mainland; 1-75us China Taiwan -FM_RX_DEEMPHASIS_MT6627 = 0 -#osc freq: 0-26MHz; 1-19MHz; 2-24MHz; 3-38.4MHz; 4-40MHz; 5-52MHz -FM_RX_OSC_FREQ_MT6627 = 0
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_coeff.bin Binary files differdeleted file mode 100755 index efce968..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin Binary files differdeleted file mode 100755 index 929b4a6..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_coeff.bin deleted file mode 100755 index 136d063..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_coeff.bin +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/fm_cust.cfg b/MediaTek/fmradiolibs/fmnative/config/mt6628/fm_cust.cfg deleted file mode 100755 index 168b0a6..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/fm_cust.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[FM Radio] -#FM RX RSSI threshold setting -FM_RX_RSSI_TH_LONG_MT6628 = -296 -FM_RX_RSSI_TH_SHORT_MT6628 = -296 -FM_RX_DESENSE_RSSI_MT6628 = -240 -FM_RX_SMG_TH_MT6628 = 16421 -#deemphasis: 0-50us, China Mainland; 1-75us China Taiwan -FM_RX_DEEMPHASIS_MT6628 = 0 -#osc freq: 0-26MHz; 1-19MHz; 2-24MHz; 3-38.4MHz; 4-40MHz; 5-52MHz -FM_RX_OSC_FREQ_MT6628 = 0
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_rom.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_rom.bin Binary files differdeleted file mode 100755 index adebd40..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_rom.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin Binary files differdeleted file mode 100755 index 0f9f128..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin Binary files differdeleted file mode 100755 index 8161c8a..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin Binary files differdeleted file mode 100755 index ca0c6ad..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin Binary files differdeleted file mode 100755 index de87a87..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin Binary files differdeleted file mode 100755 index 523a0e8..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin Binary files differdeleted file mode 100755 index d8ae935..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin Binary files differdeleted file mode 100755 index 523a0e8..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin Binary files differdeleted file mode 100755 index d8ae935..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin Binary files differdeleted file mode 100755 index 523a0e8..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin Binary files differdeleted file mode 100755 index d8ae935..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_cust.cfg b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_cust.cfg deleted file mode 100755 index 9784030..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_cust.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[FM Radio] -#FM RX RSSI threshold setting -FM_RX_RSSI_TH_LONG_MT6630 = -296 -FM_RX_RSSI_TH_SHORT_MT6630 = -296 -FM_RX_DESENSE_RSSI_MT6630 = -258 -FM_RX_SMG_TH_MT6630 = 16421 -#deemphasis: 0-50us, China Mainland; 1-75us China Taiwan -FM_RX_DEEMPHASIS_MT6630 = 0 diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff.bin Binary files differdeleted file mode 100644 index 0bf54f8..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff_tx.bin Binary files differdeleted file mode 100644 index 4744b8e..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin Binary files differdeleted file mode 100644 index c1b5664..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch_tx.bin Binary files differdeleted file mode 100644 index 2419651..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin Binary files differdeleted file mode 100644 index 669349d..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff_tx.bin Binary files differdeleted file mode 100644 index f709909..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin Binary files differdeleted file mode 100644 index b844c26..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch_tx.bin Binary files differdeleted file mode 100644 index 829f661..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch_tx.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch_tx.bin deleted file mode 100644 index e69de29..0000000 --- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch_tx.bin +++ /dev/null diff --git a/MediaTek/fmradiolibs/fmnative/custom/Android.mk b/MediaTek/fmradiolibs/fmnative/custom/Android.mk deleted file mode 100755 index f5dd6a0..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/Android.mk +++ /dev/null @@ -1,40 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -LOCAL_PATH := $(call my-dir) -############################################################################### -# Define MTK FM Radio Chip solution -############################################################################### - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - custom.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) - -LOCAL_CFLAGS+= \ - -DMT6620_FM -ifeq ($(findstring MT6628_FM,$(MTK_FM_CHIP)),MT6628_FM) -LOCAL_CFLAGS+= \ - -DMT6628_FM -endif -LOCAL_CFLAGS+= \ - -DMT6627_FM -ifeq ($(findstring MT6625_FM,$(MTK_FM_CHIP)),MT6625_FM) -LOCAL_CFLAGS+= \ - -DMT6627_FM -endif -ifeq ($(findstring MT6580_FM,$(MTK_FM_CHIP)),MT6580_FM) -LOCAL_CFLAGS+= \ - -DMT6580_FM -endif -LOCAL_CFLAGS+= \ - -DMT6630_FM -LOCAL_SHARED_LIBRARIES := libcutils -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmcust -include $(BUILD_SHARED_LIBRARY) - -endif - diff --git a/MediaTek/fmradiolibs/fmnative/custom/Android.mk~ b/MediaTek/fmradiolibs/fmnative/custom/Android.mk~ deleted file mode 100755 index f5dd6a0..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/Android.mk~ +++ /dev/null @@ -1,40 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -LOCAL_PATH := $(call my-dir) -############################################################################### -# Define MTK FM Radio Chip solution -############################################################################### - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - custom.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) - -LOCAL_CFLAGS+= \ - -DMT6620_FM -ifeq ($(findstring MT6628_FM,$(MTK_FM_CHIP)),MT6628_FM) -LOCAL_CFLAGS+= \ - -DMT6628_FM -endif -LOCAL_CFLAGS+= \ - -DMT6627_FM -ifeq ($(findstring MT6625_FM,$(MTK_FM_CHIP)),MT6625_FM) -LOCAL_CFLAGS+= \ - -DMT6627_FM -endif -ifeq ($(findstring MT6580_FM,$(MTK_FM_CHIP)),MT6580_FM) -LOCAL_CFLAGS+= \ - -DMT6580_FM -endif -LOCAL_CFLAGS+= \ - -DMT6630_FM -LOCAL_SHARED_LIBRARIES := libcutils -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmcust -include $(BUILD_SHARED_LIBRARY) - -endif - diff --git a/MediaTek/fmradiolibs/fmnative/custom/NOTICE b/MediaTek/fmradiolibs/fmnative/custom/NOTICE deleted file mode 100755 index 0519ecb..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/NOTICE +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/custom/README b/MediaTek/fmradiolibs/fmnative/custom/README deleted file mode 100644 index d6d4343..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/README +++ /dev/null @@ -1,20 +0,0 @@ -Initial parameters needed by FM before open it - -WHAT IT DOES? -============= -Initial parameters needed by FM before open it - -HOW IT WAS BUILT? -================== -It needs the following libs from AOSP: -1. libcutils - -HOW TO USE IT? -============== -Files in this directory is used to -generate a library which name is 'libfmcust' - -The lib 'libfmcust' is loaded when system up - -All the source code of this library were written by MediaTek co.. - diff --git a/MediaTek/fmradiolibs/fmnative/custom/custom.cpp b/MediaTek/fmradiolibs/fmnative/custom/custom.cpp deleted file mode 100644 index cf91007..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/custom.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include <sys/types.h> -#include "fm.h" -#include "fmlib_cust.h" -#include <cutils/properties.h> -#include <cutils/xlog.h> -#undef LOGV -#define LOGV(...) XLOGV(__VA_ARGS__) -#undef LOGD -#define LOGD(...) XLOGD(__VA_ARGS__) -#undef LOGI -#define LOGI(...) XLOGI(__VA_ARGS__) -#undef LOGW -#define LOGW(...) XLOGW(__VA_ARGS__) -#undef LOGE -#define LOGE(...) XLOGE(__VA_ARGS__) -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_CUST" - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef MTK_FM_50KHZ_SUPPORT -#define MT6620_FM_FAKE_CHANNEL \ - { \ - {10400, -40, -1}, \ - {9100, -40, -1}, \ - {9600, -40, -1}, \ - {9220, -80, -1} \ - } -#define MT6628_FM_FAKE_CHANNEL \ - { } -#define MT6627_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1},\ - {10750,-224,-1}\ -} -#define MT6580_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1},\ -} - -#define MT6630_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1}\ -} -#else -#define MT6620_FM_FAKE_CHANNEL \ - { \ - {1040, -40, -1}, \ - {910, -40, -1}, \ - {960, -40, -1}, \ - {922, -80, -1} \ - } -#define MT6628_FM_FAKE_CHANNEL \ - { } -#define MT6627_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1},\ - {1075,-224,-1}\ -} -#define MT6580_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1},\ -} -#define MT6630_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1}\ -} -#endif //MTK_FM_50KHZ_SUPPORT - -#if defined MT6620_FM -static struct fm_fake_channel fake_ch[] = MT6620_FM_FAKE_CHANNEL; -#elif defined MT6628_FM -static struct fm_fake_channel fake_ch[] = MT6628_FM_FAKE_CHANNEL; -#elif defined MT6627_FM -static struct fm_fake_channel fake_ch[] = MT6627_FM_FAKE_CHANNEL; -#elif defined MT6580_FM -static struct fm_fake_channel fake_ch[] = MT6580_FM_FAKE_CHANNEL; -#elif defined MT6630_FM -static struct fm_fake_channel fake_ch[] = MT6630_FM_FAKE_CHANNEL; -#endif - - -static struct fm_fake_channel_t fake_ch_info = {0, 0}; - -int CUST_get_cfg(struct CUST_cfg_ds *cfg) -{ - char val[PROPERTY_VALUE_MAX] = {0};//[10]; - cfg->chip = FM_CHIP_UNSUPPORTED; - if(property_get("persist.mtk.wcn.combo.chipid",val,NULL)) - { - LOGI("WCN CHIP ID=%s\n",val); - if(strcmp(val, "0x6628") == 0) - { - cfg->chip = FM_CHIP_MT6628; - LOGI("detect 6628 chip\n"); - } - else if(strcmp(val, "0x6620") == 0) - { - cfg->chip = FM_CHIP_MT6620; - LOGI("detect 6620 chip\n"); - } - else if ((strcmp(val, "0x6572") == 0) || (strcmp(val, "0x6582") == 0) || (strcmp(val, "0x6592") == 0) \ - || (strcmp(val, "0x8127") == 0) || (strcmp(val, "0x6752") == 0) || (strcmp(val, "0x0321") == 0) \ - || (strcmp(val, "0x0335") == 0) || (strcmp(val, "0x0337") == 0) || (strcmp(val, "0x6735") == 0) \ - || (strcmp(val, "0x8163") == 0)) - { - cfg->chip = FM_CHIP_MT6627; - LOGI("detect 6627 chip\n"); - } - else if(strcmp(val, "0x6580") == 0) - { - cfg->chip = FM_CHIP_MT6580; - LOGI("detect 6580 chip\n"); - } - else if(strcmp(val, "0x6630") == 0) - { - cfg->chip = FM_CHIP_MT6630; - LOGI("detect 6630 chip\n"); - } - } - if(cfg->chip == FM_CHIP_UNSUPPORTED) - { - LOGI("WCN CHIP ID fail!\n"); -#ifdef AR1000_FM - cfg->chip = FM_CHIP_AR1000; -#elif defined MT6616_E3_FM - cfg->chip = FM_CHIP_MT6616; -#elif defined MT5192_FM - cfg->chip = FM_CHIP_MT5192; -#elif defined MT5193_FM - cfg->chip = FM_CHIP_MT5193; -#elif defined MT519X_FM - cfg->chip = FM_CHIP_MT5192; -#elif defined MT6620_FM - cfg->chip = FM_CHIP_MT6620; -#elif defined MT6626_FM - cfg->chip = FM_CHIP_MT6626; -#elif defined MT6628_FM - cfg->chip = FM_CHIP_MT6628; -#elif defined MT6627_FM - cfg->chip = FM_CHIP_MT6627; -#elif defined MT6580_FM - cfg->chip = FM_CHIP_MT6580; -#elif defined MT6630_FM - cfg->chip = FM_CHIP_MT6630; -#else - cfg->chip = FM_CHIP_UNSUPPORTED; -#endif - } - - - cfg->band = FM_RAIDO_BAND; // 1, UE; 2, JAPAN; 3, JAPANW -#ifdef MTK_FM_50KHZ_SUPPORT - cfg->low_band = FM_FREQ_MIN * 10; - cfg->high_band = FM_FREQ_MAX * 10; -#else - cfg->low_band = FM_FREQ_MIN; - cfg->high_band = FM_FREQ_MAX; -#endif -#ifdef MTK_FM_50KHZ_SUPPORT - cfg->seek_space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - cfg->seek_space = 1; -#endif - - cfg->max_scan_num = FM_MAX_CHL_SIZE; - cfg->seek_lev = FM_SEEKTH_LEVEL_DEFAULT; - - cfg->scan_sort = FM_SCAN_SORT_SELECT; - -#ifndef MTK_FM_SHORT_ANTENNA_SUPPORT - cfg->short_ana_sup = false; -#else - cfg->short_ana_sup = true; -#endif - - cfg->rssi_th_l2 = FM_CHIP_DESE_RSSI_TH; - cfg->rssi_th_l2 = (cfg->rssi_th_l2 > -72) ? -72 : cfg->rssi_th_l2; - cfg->rssi_th_l2 = (cfg->rssi_th_l2 < -102) ? -102 : cfg->rssi_th_l2; - - fake_ch_info.chan = fake_ch; - fake_ch_info.size = sizeof(fake_ch)/sizeof(fake_ch[0]); - cfg->fake_chan = &fake_ch_info; - return 0; -} - -#ifdef __cplusplus -} -#endif diff --git a/MediaTek/fmradiolibs/fmnative/custom/custom.cpp~ b/MediaTek/fmradiolibs/fmnative/custom/custom.cpp~ deleted file mode 100644 index 076e968..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/custom.cpp~ +++ /dev/null @@ -1,237 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include <sys/types.h> -#include <linux/fm.h> -#include "fmlib_cust.h" -#include <cutils/properties.h> -#include <cutils/xlog.h> -#undef LOGV -#define LOGV(...) XLOGV(__VA_ARGS__) -#undef LOGD -#define LOGD(...) XLOGD(__VA_ARGS__) -#undef LOGI -#define LOGI(...) XLOGI(__VA_ARGS__) -#undef LOGW -#define LOGW(...) XLOGW(__VA_ARGS__) -#undef LOGE -#define LOGE(...) XLOGE(__VA_ARGS__) -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_CUST" - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef MTK_FM_50KHZ_SUPPORT -#define MT6620_FM_FAKE_CHANNEL \ - { \ - {10400, -40, -1}, \ - {9100, -40, -1}, \ - {9600, -40, -1}, \ - {9220, -80, -1} \ - } -#define MT6628_FM_FAKE_CHANNEL \ - { } -#define MT6627_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1},\ - {10750,-224,-1}\ -} -#define MT6580_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1},\ -} - -#define MT6630_FM_FAKE_CHANNEL \ -{ \ - {9600,-107,-1},\ - {10400,-107,-1}\ -} -#else -#define MT6620_FM_FAKE_CHANNEL \ - { \ - {1040, -40, -1}, \ - {910, -40, -1}, \ - {960, -40, -1}, \ - {922, -80, -1} \ - } -#define MT6628_FM_FAKE_CHANNEL \ - { } -#define MT6627_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1},\ - {1075,-224,-1}\ -} -#define MT6580_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1},\ -} -#define MT6630_FM_FAKE_CHANNEL \ -{ \ - {960,-107,-1},\ - {1040,-107,-1}\ -} -#endif //MTK_FM_50KHZ_SUPPORT - -#if defined MT6620_FM -static struct fm_fake_channel fake_ch[] = MT6620_FM_FAKE_CHANNEL; -#elif defined MT6628_FM -static struct fm_fake_channel fake_ch[] = MT6628_FM_FAKE_CHANNEL; -#elif defined MT6627_FM -static struct fm_fake_channel fake_ch[] = MT6627_FM_FAKE_CHANNEL; -#elif defined MT6580_FM -static struct fm_fake_channel fake_ch[] = MT6580_FM_FAKE_CHANNEL; -#elif defined MT6630_FM -static struct fm_fake_channel fake_ch[] = MT6630_FM_FAKE_CHANNEL; -#endif - - -static struct fm_fake_channel_t fake_ch_info = {0, 0}; - -int CUST_get_cfg(struct CUST_cfg_ds *cfg) -{ - char val[PROPERTY_VALUE_MAX] = {0};//[10]; - cfg->chip = FM_CHIP_UNSUPPORTED; - if(property_get("persist.mtk.wcn.combo.chipid",val,NULL)) - { - LOGI("WCN CHIP ID=%s\n",val); - if(strcmp(val, "0x6628") == 0) - { - cfg->chip = FM_CHIP_MT6628; - LOGI("detect 6628 chip\n"); - } - else if(strcmp(val, "0x6620") == 0) - { - cfg->chip = FM_CHIP_MT6620; - LOGI("detect 6620 chip\n"); - } - else if ((strcmp(val, "0x6572") == 0) || (strcmp(val, "0x6582") == 0) || (strcmp(val, "0x6592") == 0) \ - || (strcmp(val, "0x8127") == 0) || (strcmp(val, "0x6752") == 0) || (strcmp(val, "0x0321") == 0) \ - || (strcmp(val, "0x0335") == 0) || (strcmp(val, "0x0337") == 0) || (strcmp(val, "0x6735") == 0) \ - || (strcmp(val, "0x8163") == 0)) - { - cfg->chip = FM_CHIP_MT6627; - LOGI("detect 6627 chip\n"); - } - else if(strcmp(val, "0x6580") == 0) - { - cfg->chip = FM_CHIP_MT6580; - LOGI("detect 6580 chip\n"); - } - else if(strcmp(val, "0x6630") == 0) - { - cfg->chip = FM_CHIP_MT6630; - LOGI("detect 6630 chip\n"); - } - } - if(cfg->chip == FM_CHIP_UNSUPPORTED) - { - LOGI("WCN CHIP ID fail!\n"); -#ifdef AR1000_FM - cfg->chip = FM_CHIP_AR1000; -#elif defined MT6616_E3_FM - cfg->chip = FM_CHIP_MT6616; -#elif defined MT5192_FM - cfg->chip = FM_CHIP_MT5192; -#elif defined MT5193_FM - cfg->chip = FM_CHIP_MT5193; -#elif defined MT519X_FM - cfg->chip = FM_CHIP_MT5192; -#elif defined MT6620_FM - cfg->chip = FM_CHIP_MT6620; -#elif defined MT6626_FM - cfg->chip = FM_CHIP_MT6626; -#elif defined MT6628_FM - cfg->chip = FM_CHIP_MT6628; -#elif defined MT6627_FM - cfg->chip = FM_CHIP_MT6627; -#elif defined MT6580_FM - cfg->chip = FM_CHIP_MT6580; -#elif defined MT6630_FM - cfg->chip = FM_CHIP_MT6630; -#else - cfg->chip = FM_CHIP_UNSUPPORTED; -#endif - } - - - cfg->band = FM_RAIDO_BAND; // 1, UE; 2, JAPAN; 3, JAPANW -#ifdef MTK_FM_50KHZ_SUPPORT - cfg->low_band = FM_FREQ_MIN * 10; - cfg->high_band = FM_FREQ_MAX * 10; -#else - cfg->low_band = FM_FREQ_MIN; - cfg->high_band = FM_FREQ_MAX; -#endif -#ifdef MTK_FM_50KHZ_SUPPORT - cfg->seek_space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - cfg->seek_space = 1; -#endif - - cfg->max_scan_num = FM_MAX_CHL_SIZE; - cfg->seek_lev = FM_SEEKTH_LEVEL_DEFAULT; - - cfg->scan_sort = FM_SCAN_SORT_SELECT; - -#ifndef MTK_FM_SHORT_ANTENNA_SUPPORT - cfg->short_ana_sup = false; -#else - cfg->short_ana_sup = true; -#endif - - cfg->rssi_th_l2 = FM_CHIP_DESE_RSSI_TH; - cfg->rssi_th_l2 = (cfg->rssi_th_l2 > -72) ? -72 : cfg->rssi_th_l2; - cfg->rssi_th_l2 = (cfg->rssi_th_l2 < -102) ? -102 : cfg->rssi_th_l2; - - fake_ch_info.chan = fake_ch; - fake_ch_info.size = sizeof(fake_ch)/sizeof(fake_ch[0]); - cfg->fake_chan = &fake_ch_info; - return 0; -} - -#ifdef __cplusplus -} -#endif diff --git a/MediaTek/fmradiolibs/fmnative/custom/fm.h b/MediaTek/fmradiolibs/fmnative/custom/fm.h deleted file mode 100644 index ca232c7..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/fm.h +++ /dev/null @@ -1,656 +0,0 @@ -#ifndef __FM_H__ -#define __FM_H__ - -//#define FMDEBUG - -#include <linux/ioctl.h> -#include <linux/time.h> -//fm type define -typedef signed char fm_s8; -typedef signed short fm_s16; -typedef signed int fm_s32; -typedef signed long long fm_s64; -typedef unsigned char fm_u8; -typedef unsigned short fm_u16; -typedef unsigned int fm_u32; -typedef unsigned long long fm_u64; -typedef enum fm_bool { - fm_false = 0, - fm_true = 1 -} fm_bool; - -//scan sort algorithm -enum{ - FM_SCAN_SORT_NON = 0, - FM_SCAN_SORT_UP, - FM_SCAN_SORT_DOWN, - FM_SCAN_SORT_MAX -}; - -//scan methods -enum{ - FM_SCAN_SEL_HW = 0, //select hardware scan, advantage: fast - FM_SCAN_SEL_SW, //select software scan, advantage: more accurate - FM_SCAN_SEL_MAX -}; - - //***************************************************************************************** -//***********************************FM config for customer *********************************** -//***************************************************************************************** -//RX -#define FMR_RSSI_TH_LONG 0x0301 //FM radio long antenna RSSI threshold(11.375dBuV) -#define FMR_RSSI_TH_SHORT 0x02E0 //FM radio short antenna RSSI threshold(-1dBuV) -#define FMR_CQI_TH 0x00E9 //FM radio Channel quality indicator threshold(0x0000~0x00FF) -#define FMR_SEEK_SPACE 1 //FM radio seek space,1:100KHZ; 2:200KHZ -#define FMR_SCAN_CH_SIZE 80 //FM radio scan max channel size -#define FMR_BAND 1 //FM radio band, 1:87.5MHz~108.0MHz; 2:76.0MHz~90.0MHz; 3:76.0MHz~108.0MHz; 4:special -#define FMR_BAND_FREQ_L 875 //FM radio special band low freq(Default 87.5MHz) -#define FMR_BAND_FREQ_H 1080 //FM radio special band high freq(Default 108.0MHz) -#define FM_SCAN_SORT_SELECT FM_SCAN_SORT_NON -#define FM_SCAN_SELECT FM_SCAN_SEL_HW -#define FM_SCAN_SOFT_MUTE_GAIN_TH 3 //soft-mute threshold when software scan, rang: 0~3, 0 means better audio quality but less channel -#define FM_CHIP_DESE_RSSI_TH (-102) // rang: -102 ~ -72 - -//TX -#define FMTX_PWR_LEVEL_MAX 120 //FM transmitter power level, rang: 85db~120db, default 120db - -//***************************************************************************************** -//***********************************FM config for engineer *********************************** -//***************************************************************************************** -//RX -#define FMR_MR_TH 0x01BD //FM radio MR threshold -#define ADDR_SCAN_TH 0xE0 //scan thrshold register -#define ADDR_CQI_TH 0xE1 //scan CQI register - -//TX -#define FMTX_SCAN_HOLE_LOW 923 //92.3MHz~95.4MHz should not show to user -#define FMTX_SCAN_HOLE_HIGH 954 //92.3MHz~95.4MHz should not show to user -//***************************************************************************************** - -#define FM_NAME "fm" -#define FM_DEVICE_NAME "/dev/fm" - -// errno -#define FM_SUCCESS 0 -#define FM_FAILED 1 -#define FM_EPARM 2 -#define FM_BADSTATUS 3 -#define FM_TUNE_FAILED 4 -#define FM_SEEK_FAILED 5 -#define FM_BUSY 6 -#define FM_SCAN_FAILED 7 - -// band - -#define FM_BAND_UNKNOWN 0 -#define FM_BAND_UE 1 // US/Europe band 87.5MHz ~ 108MHz (DEFAULT) -#define FM_BAND_JAPAN 2 // Japan band 76MHz ~ 90MHz -#define FM_BAND_JAPANW 3 // Japan wideband 76MHZ ~ 108MHz -#define FM_BAND_SPECIAL 4 // special band between 76MHZ and 108MHz -#define FM_BAND_DEFAULT FM_BAND_UE - -#define FM_UE_FREQ_MIN 875 -#define FM_UE_FREQ_MAX 1080 -#define FM_JP_FREQ_MIN 760 -#define FM_JP_FREQ_MAX 1080 -#define FM_FREQ_MIN FMR_BAND_FREQ_L -#define FM_FREQ_MAX FMR_BAND_FREQ_H -#define FM_RAIDO_BAND FM_BAND_UE - -// space -#define FM_SPACE_UNKNOWN 0 -#define FM_SPACE_100K 1 -#define FM_SPACE_200K 2 -#define FM_SPACE_50K 5 - -#define FM_SEEK_SPACE FMR_SEEK_SPACE - -//max scan chl num -#define FM_MAX_CHL_SIZE FMR_SCAN_CH_SIZE -// auto HiLo -#define FM_AUTO_HILO_OFF 0 -#define FM_AUTO_HILO_ON 1 - -// seek direction -#define FM_SEEK_UP 0 -#define FM_SEEK_DOWN 1 - -#define FM_CHIP_AR1000 0x1000 -#define FM_CHIP_MT5192 0x91 -#define FM_CHIP_MT5193 0x92 -#define FM_CHIP_MT6616 0x6616 -#define FM_CHIP_MT6620 0x6620 -#define FM_CHIP_MT6626 0x6626 -#define FM_CHIP_MT6628 0x6628 -#define FM_CHIP_MT6627 0x6627 -#define FM_CHIP_MT6580 0x6580 -#define FM_CHIP_MT6630 0x6630 - -#define FM_CHIP_UNSUPPORTED -1 - -// seek threshold -#define FM_SEEKTH_LEVEL_DEFAULT 4 - -struct fm_tune_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_seek_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint8_t seekdir; - uint8_t seekth; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_scan_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // OUT parameter - uint16_t ScanTBL[26]; //need no less than the chip - uint16_t ScanTBLSize; //IN/OUT parameter -}; - -struct fm_ch_rssi{ - uint16_t freq; - int rssi; -}; - -enum fm_scan_cmd_t { - FM_SCAN_CMD_INIT = 0, - FM_SCAN_CMD_START, - FM_SCAN_CMD_GET_NUM, - FM_SCAN_CMD_GET_CH, - FM_SCAN_CMD_GET_RSSI, - FM_SCAN_CMD_GET_CH_RSSI, - FM_SCAN_CMD_MAX -}; - -struct fm_scan_t { - enum fm_scan_cmd_t cmd; - int ret; // 0, success; else error code - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - int num; // valid channel number - void *priv; - int sr_size; // scan result buffer size in bytes - union { - uint16_t *ch_buf; // channel buffer - int *rssi_buf; // rssi buffer - struct fm_ch_rssi *ch_rssi_buf; //channel and RSSI buffer - } sr; -}; - -struct fm_seek_t { - int ret; // 0, success; else error code - uint16_t freq; - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - int dir; // 0: up; 1: down - int th; // seek threshold in dbm(Eg, -95dbm) - void *priv; -}; - -struct fm_tune_t { - int ret; // 0, success; else error code - uint16_t freq; - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - void *priv; -}; -struct fm_softmute_tune_t -{ - fm_s32 rssi; // RSSI of current channel - fm_u16 freq; //current frequency - fm_bool valid; //current channel is valid(true) or not(false) -}; - -struct fm_rssi_req{ - uint16_t num; - uint16_t read_cnt; - struct fm_ch_rssi cr[26*16]; -}; - -struct fm_hw_info{ - int chip_id; //chip ID, eg. 6620 - int eco_ver; //chip ECO version, eg. E3 - int rom_ver; //FM DSP rom code version, eg. V2 - int patch_ver; //FM DSP patch version, eg. 1.11 - int reserve; -}; - -struct fm_search_threshold_t -{ - fm_s32 th_type;// 0, RSSI. 1,desense RSSI. 2,SMG. - fm_s32 th_val; //threshold value - fm_s32 reserve; -}; - -#if 1 -#define NEED_DEF_RDS 1 -#else -#define NEED_DEF_RDS 0 -#endif - -#if NEED_DEF_RDS -//For RDS feature -typedef struct -{ - uint8_t TP; - uint8_t TA; - uint8_t Music; - uint8_t Stereo; - uint8_t Artificial_Head; - uint8_t Compressed; - uint8_t Dynamic_PTY; - uint8_t Text_AB; - uint32_t flag_status; -}RDSFlag_Struct; - -typedef struct -{ - uint16_t Month; - uint16_t Day; - uint16_t Year; - uint16_t Hour; - uint16_t Minute; - uint8_t Local_Time_offset_signbit; - uint8_t Local_Time_offset_half_hour; -}CT_Struct; - -typedef struct -{ - int16_t AF_Num; - int16_t AF[2][25]; //100KHz - uint8_t Addr_Cnt; - uint8_t isMethod_A; - uint8_t isAFNum_Get; -}AF_Info; - -typedef struct -{ - uint8_t PS[4][8]; - uint8_t Addr_Cnt; -}PS_Info; - -typedef struct -{ - uint8_t TextData[4][64]; - uint8_t GetLength; - uint8_t isRTDisplay; - uint8_t TextLength; - uint8_t isTypeA; - uint8_t BufCnt; - uint16_t Addr_Cnt; -}RT_Info; - -struct rds_raw_data -{ - int dirty; //indicate if the data changed or not - int len; //the data len form chip - uint8_t data[146]; -}; - -struct rds_group_cnt -{ - unsigned int total; - unsigned int groupA[16]; //RDS groupA counter - unsigned int groupB[16]; //RDS groupB counter -}; - -enum rds_group_cnt_opcode -{ - RDS_GROUP_CNT_READ = 0, - RDS_GROUP_CNT_WRITE, - RDS_GROUP_CNT_RESET, - RDS_GROUP_CNT_MAX -}; - -struct rds_group_cnt_req -{ - int err; - enum rds_group_cnt_opcode op; - struct rds_group_cnt gc; -}; - -typedef struct -{ - CT_Struct CT; - RDSFlag_Struct RDSFlag; - uint16_t PI; - uint8_t Switch_TP; - uint8_t PTY; - AF_Info AF_Data; - uint8_t Radio_Page_Code; - uint16_t Program_Item_Number_Code; - AF_Info AFON_Data; - uint8_t Extend_Country_Code; - uint16_t Language_Code; - PS_Info PS_Data; - uint8_t PS_ON[8]; - uint16_t event_status; //will use RDSFlag_Struct RDSFlag->flag_status to check which event, is that ok? - RT_Info RT_Data; - uint8_t PAD1; //padding for data aligh - struct rds_group_cnt gc; -} RDSData_Struct; - - -//Need care the following definition. -//valid Rds Flag for notify -typedef enum { - RDS_FLAG_IS_TP = 0x0001, // Program is a traffic program - RDS_FLAG_IS_TA = 0x0002, // Program currently broadcasts a traffic ann. - RDS_FLAG_IS_MUSIC = 0x0004, // Program currently broadcasts music - RDS_FLAG_IS_STEREO = 0x0008, // Program is transmitted in stereo - RDS_FLAG_IS_ARTIFICIAL_HEAD = 0x0010, // Program is an artificial head recording - RDS_FLAG_IS_COMPRESSED = 0x0020, // Program content is compressed - RDS_FLAG_IS_DYNAMIC_PTY = 0x0040, // Program type can change - RDS_FLAG_TEXT_AB = 0x0080 // If this flag changes state, a new radio text string begins -} RdsFlag; - -typedef enum { - RDS_EVENT_FLAGS = 0x0001, // One of the RDS flags has changed state - RDS_EVENT_PI_CODE = 0x0002, // The program identification code has changed - RDS_EVENT_PTY_CODE = 0x0004, // The program type code has changed - RDS_EVENT_PROGRAMNAME = 0x0008, // The program name has changed - RDS_EVENT_UTCDATETIME = 0x0010, // A new UTC date/time is available - RDS_EVENT_LOCDATETIME = 0x0020, // A new local date/time is available - RDS_EVENT_LAST_RADIOTEXT = 0x0040, // A radio text string was completed - RDS_EVENT_AF = 0x0080, // Current Channel RF signal strength too weak, need do AF switch - RDS_EVENT_AF_LIST = 0x0100, // An alternative frequency list is ready - RDS_EVENT_AFON_LIST = 0x0200, // An alternative frequency list is ready - RDS_EVENT_TAON = 0x0400, // Other Network traffic announcement start - RDS_EVENT_TAON_OFF = 0x0800, // Other Network traffic announcement finished. - RDS_EVENT_RDS = 0x2000, // RDS Interrupt had arrived durint timer period - RDS_EVENT_NO_RDS = 0x4000, // RDS Interrupt not arrived durint timer period - RDS_EVENT_RDS_TIMER = 0x8000 // Timer for RDS Bler Check. ---- BLER block error rate -} RdsEvent; -#endif - -struct fm_rds_tx_parm { - uint8_t err; - uint16_t pi; - uint16_t ps[12]; // 4 ps - uint16_t other_rds[87]; // 0~29 other groups - uint8_t other_rds_cnt; // # of other group -}; - -typedef struct fm_rds_tx_req{ - unsigned char pty; // 0~31 integer - unsigned char rds_rbds; // 0:RDS, 1:RBDS - unsigned char dyn_pty; // 0:static, 1:dynamic - unsigned short pi_code; // 2-byte hex - unsigned char ps_buf[8]; // hex buf of PS - unsigned char ps_len; // length of PS, must be 0 / 8" - unsigned char af; // 0~204, 0:not used, 1~204:(87.5+0.1*af)MHz - unsigned char ah; // Artificial head, 0:no, 1:yes - unsigned char stereo; // 0:mono, 1:stereo - unsigned char compress; // Audio compress, 0:no, 1:yes - unsigned char tp; // traffic program, 0:no, 1:yes - unsigned char ta; // traffic announcement, 0:no, 1:yes - unsigned char speech; // 0:music, 1:speech -}fm_rds_tx_req; - -#define TX_SCAN_MAX 10 -#define TX_SCAN_MIN 1 -struct fm_tx_scan_parm { - uint8_t err; - uint8_t band; //87.6~108MHz - uint8_t space; - uint8_t hilo; - uint16_t freq; // start freq, if less than band min freq, then will use band min freq - uint8_t scandir; - uint16_t ScanTBL[TX_SCAN_MAX]; //need no less than the chip - uint16_t ScanTBLSize; //IN: desired size, OUT: scan result size -}; - -struct fm_gps_rtc_info{ - int err; //error number, 0: success, other: err code - int retryCnt; //GPS mnl can decide retry times - int ageThd; //GPS 3D fix time diff threshold - int driftThd; //GPS RTC drift threshold - struct timeval tvThd; //time value diff threshold - int age; //GPS 3D fix time diff - int drift; //GPS RTC drift - union{ - unsigned long stamp; //time stamp in jiffies - struct timeval tv; //time stamp value in RTC - }; - int flag; //rw flag -}; - -typedef enum -{ - FM_I2S_ON = 0, - FM_I2S_OFF, - FM_I2S_STATE_ERR -}fm_i2s_state_e; - -typedef enum -{ - FM_I2S_MASTER = 0, - FM_I2S_SLAVE, - FM_I2S_MODE_ERR -}fm_i2s_mode_e; - -typedef enum -{ - FM_I2S_32K = 0, - FM_I2S_44K, - FM_I2S_48K, - FM_I2S_SR_ERR -}fm_i2s_sample_e; - -struct fm_i2s_setting{ - int onoff; - int mode; - int sample; -}; - -typedef enum{ - FM_RX = 0, - FM_TX = 1 -}FM_PWR_T; - -typedef struct fm_i2s_info -{ - int status; /*0:FM_I2S_ON, 1:FM_I2S_OFF,2:error*/ - int mode; /*0:FM_I2S_MASTER, 1:FM_I2S_SLAVE,2:error*/ - int rate; /*0:FM_I2S_32K:32000,1:FM_I2S_44K:44100,2:FM_I2S_48K:48000,3:error*/ -} fm_i2s_info_t; - -typedef enum -{ - FM_AUD_ANALOG = 0, - FM_AUD_I2S = 1, - FM_AUD_MRGIF = 2, - FM_AUD_ERR -}fm_audio_path_e; - -typedef enum -{ - FM_I2S_PAD_CONN = 0, //sco fm chip: e.g.6627 - FM_I2S_PAD_IO = 1, //combo fm chip: e.g.6628 - FM_I2S_PAD_ERR -}fm_i2s_pad_sel_e; - -typedef struct fm_audio_info -{ - fm_audio_path_e aud_path; - fm_i2s_info_t i2s_info; - fm_i2s_pad_sel_e i2s_pad; -} fm_audio_info_t; - -struct fm_cqi -{ - int ch; - int rssi; - int reserve; -}; - -struct fm_cqi_req -{ - uint16_t ch_num; - int buf_size; - char *cqi_buf; -}; -typedef struct -{ - int freq; - int rssi; -}fm_desense_check_t; - -typedef struct -{ - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 0x1: 50KHz, 0x2: 100Khz, 0x4: 200Khz - int cycle; // repeat times -}fm_full_cqi_log_t; - -typedef struct -{ - int which; - bool stat; -}fm_status_t; - -// ********** ***********FM IOCTL define start ******************************* - -#define FM_IOC_MAGIC 0xf5 // FIXME: any conflict? - -#define FM_IOCTL_POWERUP _IOWR(FM_IOC_MAGIC, 0, struct fm_tune_parm) -#define FM_IOCTL_POWERDOWN _IOWR(FM_IOC_MAGIC, 1, int32_t) -#define FM_IOCTL_TUNE _IOWR(FM_IOC_MAGIC, 2, struct fm_tune_parm) -#define FM_IOCTL_SEEK _IOWR(FM_IOC_MAGIC, 3, struct fm_seek_parm) -#define FM_IOCTL_SETVOL _IOWR(FM_IOC_MAGIC, 4, uint32_t) -#define FM_IOCTL_GETVOL _IOWR(FM_IOC_MAGIC, 5, uint32_t) -#define FM_IOCTL_MUTE _IOWR(FM_IOC_MAGIC, 6, uint32_t) -#define FM_IOCTL_GETRSSI _IOWR(FM_IOC_MAGIC, 7, int32_t) -#define FM_IOCTL_SCAN _IOWR(FM_IOC_MAGIC, 8, struct fm_scan_parm) -#define FM_IOCTL_STOP_SCAN _IO(FM_IOC_MAGIC, 9) - -//IOCTL and struct for test -#define FM_IOCTL_GETCHIPID _IOWR(FM_IOC_MAGIC, 10, uint16_t) -#define FM_IOCTL_EM_TEST _IOWR(FM_IOC_MAGIC, 11, struct fm_em_parm) -#define FM_IOCTL_RW_REG _IOWR(FM_IOC_MAGIC, 12, struct fm_ctl_parm) -#define FM_IOCTL_GETMONOSTERO _IOWR(FM_IOC_MAGIC, 13, uint16_t) -#define FM_IOCTL_GETCURPAMD _IOWR(FM_IOC_MAGIC, 14, uint16_t) -#define FM_IOCTL_GETGOODBCNT _IOWR(FM_IOC_MAGIC, 15, uint16_t) -#define FM_IOCTL_GETBADBNT _IOWR(FM_IOC_MAGIC, 16, uint16_t) -#define FM_IOCTL_GETBLERRATIO _IOWR(FM_IOC_MAGIC, 17, uint16_t) - -//IOCTL for RDS -#define FM_IOCTL_RDS_ONOFF _IOWR(FM_IOC_MAGIC, 18, uint16_t) -#define FM_IOCTL_RDS_SUPPORT _IOWR(FM_IOC_MAGIC, 19, int32_t) - -#define FM_IOCTL_POWERUP_TX _IOWR(FM_IOC_MAGIC, 20, struct fm_tune_parm) -#define FM_IOCTL_TUNE_TX _IOWR(FM_IOC_MAGIC, 21, struct fm_tune_parm) -#define FM_IOCTL_RDS_TX _IOWR(FM_IOC_MAGIC, 22, struct fm_rds_tx_parm) - -#define FM_IOCTL_RDS_SIM_DATA _IOWR(FM_IOC_MAGIC, 23, uint32_t) -#define FM_IOCTL_IS_FM_POWERED_UP _IOWR(FM_IOC_MAGIC, 24, uint32_t) - -//IOCTL for FM Tx -#define FM_IOCTL_TX_SUPPORT _IOWR(FM_IOC_MAGIC, 25, int32_t) -#define FM_IOCTL_RDSTX_SUPPORT _IOWR(FM_IOC_MAGIC, 26, int32_t) -#define FM_IOCTL_RDSTX_ENABLE _IOWR(FM_IOC_MAGIC, 27, int32_t) -#define FM_IOCTL_TX_SCAN _IOWR(FM_IOC_MAGIC, 28, struct fm_tx_scan_parm) - -//IOCTL for FM over BT -#define FM_IOCTL_OVER_BT_ENABLE _IOWR(FM_IOC_MAGIC, 29, int32_t) - -//IOCTL for FM ANTENNA SWITCH -#define FM_IOCTL_ANA_SWITCH _IOWR(FM_IOC_MAGIC, 30, int32_t) -#define FM_IOCTL_GETCAPARRAY _IOWR(FM_IOC_MAGIC, 31, int32_t) - -//IOCTL for FM compensation by GPS RTC -#define FM_IOCTL_GPS_RTC_DRIFT _IOWR(FM_IOC_MAGIC, 32, struct fm_gps_rtc_info) - -//IOCTL for FM I2S Setting -#define FM_IOCTL_I2S_SETTING _IOWR(FM_IOC_MAGIC, 33, struct fm_i2s_setting) - -#define FM_IOCTL_RDS_GROUPCNT _IOWR(FM_IOC_MAGIC, 34, struct rds_group_cnt_req) -#define FM_IOCTL_RDS_GET_LOG _IOWR(FM_IOC_MAGIC, 35, struct rds_raw_data) - -#define FM_IOCTL_SCAN_GETRSSI _IOWR(FM_IOC_MAGIC, 36, struct fm_rssi_req) -#define FM_IOCTL_SETMONOSTERO _IOWR(FM_IOC_MAGIC, 37, int32_t) -#define FM_IOCTL_RDS_BC_RST _IOWR(FM_IOC_MAGIC, 38, int32_t) -#define FM_IOCTL_CQI_GET _IOWR(FM_IOC_MAGIC, 39, struct fm_cqi_req) -#define FM_IOCTL_GET_HW_INFO _IOWR(FM_IOC_MAGIC, 40, struct fm_hw_info) -#define FM_IOCTL_GET_I2S_INFO _IOWR(FM_IOC_MAGIC, 41, fm_i2s_info_t) -#define FM_IOCTL_IS_DESE_CHAN _IOWR(FM_IOC_MAGIC, 42, int32_t) -#define FM_IOCTL_TOP_RDWR _IOWR(FM_IOC_MAGIC, 43, struct fm_top_rw_parm) -#define FM_IOCTL_HOST_RDWR _IOWR(FM_IOC_MAGIC, 44, struct fm_host_rw_parm) - -#define FM_IOCTL_PRE_SEARCH _IOWR(FM_IOC_MAGIC, 45,int32_t) -#define FM_IOCTL_RESTORE_SEARCH _IOWR(FM_IOC_MAGIC, 46,int32_t) - -#define FM_IOCTL_SET_SEARCH_THRESHOLD _IOWR(FM_IOC_MAGIC, 47, fm_search_threshold_t) - -#define FM_IOCTL_GET_AUDIO_INFO _IOWR(FM_IOC_MAGIC, 48, fm_audio_info_t) -#define FM_IOCTL_FM_SET_STATUS _IOWR(FM_IOC_MAGIC, 49, fm_status_t) -#define FM_IOCTL_FM_GET_STATUS _IOWR(FM_IOC_MAGIC, 50, fm_status_t) - -#define FM_IOCTL_SCAN_NEW _IOWR(FM_IOC_MAGIC, 60, struct fm_scan_t) -#define FM_IOCTL_SEEK_NEW _IOWR(FM_IOC_MAGIC, 61, struct fm_seek_t) -#define FM_IOCTL_TUNE_NEW _IOWR(FM_IOC_MAGIC, 62, struct fm_tune_t) - -#define FM_IOCTL_SOFT_MUTE_TUNE _IOWR(FM_IOC_MAGIC, 63, struct fm_softmute_tune_t)/*for soft mute tune*/ -#define FM_IOCTL_DESENSE_CHECK _IOWR(FM_IOC_MAGIC, 64, fm_desense_check_t) - -//IOCTL for EM -#define FM_IOCTL_FULL_CQI_LOG _IOWR(FM_IOC_MAGIC, 70, fm_full_cqi_log_t ) - -#define FM_IOCTL_DUMP_REG _IO(FM_IOC_MAGIC, 0xFF) - -// ********** ***********FM IOCTL define end ******************************* - - -enum group_idx { - mono=0, - stereo, - RSSI_threshold, - HCC_Enable, - PAMD_threshold, - Softmute_Enable, - De_emphasis, - HL_Side, - Demod_BW, - Dynamic_Limiter, - Softmute_Rate, - AFC_Enable, - Softmute_Level, - Analog_Volume, - GROUP_TOTAL_NUMS -}; - -enum item_idx { - Sblend_OFF=0, - Sblend_ON, - ITEM_TOTAL_NUMS -}; - -struct fm_ctl_parm { - uint8_t err; - uint8_t addr; - uint16_t val; - uint16_t rw_flag;//0:write, 1:read -}; - -struct fm_em_parm { - uint16_t group_idx; - uint16_t item_idx; - uint32_t item_value; -}; -#endif // __FM_H__ diff --git a/MediaTek/fmradiolibs/fmnative/custom/fmlib_cust.h b/MediaTek/fmradiolibs/fmnative/custom/fmlib_cust.h deleted file mode 100644 index 36d433b..0000000 --- a/MediaTek/fmradiolibs/fmnative/custom/fmlib_cust.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FMLIB_CUST_H__ -#define __FMLIB_CUST_H__ - -struct fm_fake_channel -{ - int freq; - int rssi_th; - int reserve; -}; - -struct fm_fake_channel_t -{ - int size; - struct fm_fake_channel *chan; -}; - -struct CUST_cfg_ds -{ - int16_t chip; - int32_t band; - int32_t low_band; - int32_t high_band; - int32_t seek_space; - int32_t max_scan_num; - int32_t seek_lev; - int32_t scan_sort; - int32_t short_ana_sup; - int32_t rssi_th_l2; - struct fm_fake_channel_t *fake_chan; -}; - -#define FM_JNI_SCAN_SPACE_50K 5 -#define FM_JNI_SCAN_SPACE_100K 1 -#define FM_JNI_SCAN_SPACE_200K 2 -#if (defined(MT6620_FM) || defined(MT6628_FM)||defined(MT6627_FM)||defined(MT6580_FM)||defined(MT6630_FM)) -/*implement fm scan by soft mute tune - change to 0 will scan by orginal way*/ -#define FMR_SOFT_MUTE_TUEN_SCAN 1 -#define FMR_NOISE_FLOORT_DETECT 1 -#define RSSI_TH -296 -#define FM_SEVERE_RSSI_TH -107//67dBuV -#define FM_NOISE_FLOOR_OFFSET 10 -#else/*if new chip support, need to modify following parameters*/ -#define FMR_SOFT_MUTE_TUEN_SCAN 0 -#define FMR_NOISE_FLOORT_DETECT 0 -#endif -#endif //__FMLIB_CUST_H__ diff --git a/MediaTek/fmradiolibs/fmnative/fmr/Android.mk b/MediaTek/fmradiolibs/fmnative/fmr/Android.mk deleted file mode 100755 index 56df92e..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/Android.mk +++ /dev/null @@ -1,231 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -FM_LIB_BUILD_AR1000 := no -FM_LIB_BUILD_MT6616 := no -FM_LIB_BUILD_MT6620 := yes -FM_LIB_BUILD_MT6626 := no -FM_LIB_BUILD_MT6628 := yes -FM_LIB_BUILD_MT519X := no -FM_LIB_BUILD_MT6627 := yes -FM_LIB_BUILD_MT6580 := yes -FM_LIB_BUILD_MT6630 := yes - -LOCAL_PATH := $(call my-dir) -############################################################################### -# Define MTK FM Radio Chip solution -############################################################################### - -include $(CLEAR_VARS) - -LOCAL_CFLAGS+= \ - -DMT6627_FM - -LOCAL_SRC_FILES := \ - fmr_core.cpp \ - fmr_err.cpp \ - libfm_jni.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia \ - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmjni -include $(BUILD_SHARED_LIBRARY) - -######################## -ifeq ($(FM_LIB_BUILD_MT6616), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6616.cpp \ - common.cpp \ - bt_ctrl.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6616 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -ifeq ($(FM_LIB_BUILD_MT6626), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6626.cpp \ - common.cpp \ - bt_ctrl.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6626 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6620.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6620 -include $(BUILD_SHARED_LIBRARY) - -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6628.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6628 -include $(BUILD_SHARED_LIBRARY) -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6627.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6627 -include $(BUILD_SHARED_LIBRARY) -######################## -ifeq ($(FM_LIB_BUILD_MT6580), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6580.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6580 -include $(BUILD_SHARED_LIBRARY) -endif -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6630.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6630 -include $(BUILD_SHARED_LIBRARY) -######################## -ifeq ($(FM_LIB_BUILD_AR1000), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - ar1000.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmar1000 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -ifeq ($(FM_LIB_BUILD_MT519X), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt519x.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt519x -include $(BUILD_SHARED_LIBRARY) -endif - -######################## - -endif diff --git a/MediaTek/fmradiolibs/fmnative/fmr/Android.mk~ b/MediaTek/fmradiolibs/fmnative/fmr/Android.mk~ deleted file mode 100755 index 56df92e..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/Android.mk~ +++ /dev/null @@ -1,231 +0,0 @@ -ifeq ($(MTK_FM_SUPPORT), yes) - -FM_LIB_BUILD_AR1000 := no -FM_LIB_BUILD_MT6616 := no -FM_LIB_BUILD_MT6620 := yes -FM_LIB_BUILD_MT6626 := no -FM_LIB_BUILD_MT6628 := yes -FM_LIB_BUILD_MT519X := no -FM_LIB_BUILD_MT6627 := yes -FM_LIB_BUILD_MT6580 := yes -FM_LIB_BUILD_MT6630 := yes - -LOCAL_PATH := $(call my-dir) -############################################################################### -# Define MTK FM Radio Chip solution -############################################################################### - -include $(CLEAR_VARS) - -LOCAL_CFLAGS+= \ - -DMT6627_FM - -LOCAL_SRC_FILES := \ - fmr_core.cpp \ - fmr_err.cpp \ - libfm_jni.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia \ - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmjni -include $(BUILD_SHARED_LIBRARY) - -######################## -ifeq ($(FM_LIB_BUILD_MT6616), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6616.cpp \ - common.cpp \ - bt_ctrl.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6616 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -ifeq ($(FM_LIB_BUILD_MT6626), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6626.cpp \ - common.cpp \ - bt_ctrl.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6626 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6620.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6620 -include $(BUILD_SHARED_LIBRARY) - -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6628.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6628 -include $(BUILD_SHARED_LIBRARY) -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6627.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6627 -include $(BUILD_SHARED_LIBRARY) -######################## -ifeq ($(FM_LIB_BUILD_MT6580), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6580.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6580 -include $(BUILD_SHARED_LIBRARY) -endif -######################## -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt6630.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt6630 -include $(BUILD_SHARED_LIBRARY) -######################## -ifeq ($(FM_LIB_BUILD_AR1000), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - ar1000.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmar1000 -include $(BUILD_SHARED_LIBRARY) -endif - -######################## -ifeq ($(FM_LIB_BUILD_MT519X), yes) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := \ - mt519x.cpp \ - common.cpp - -LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \ - frameworks/base/include/media - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libdl \ - libmedia - -LOCAL_PRELINK_MODULE := false - -LOCAL_MODULE := libfmmt519x -include $(BUILD_SHARED_LIBRARY) -endif - -######################## - -endif diff --git a/MediaTek/fmradiolibs/fmnative/fmr/NOTICE b/MediaTek/fmradiolibs/fmnative/fmr/NOTICE deleted file mode 100755 index 0519ecb..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/NOTICE +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/MediaTek/fmradiolibs/fmnative/fmr/README b/MediaTek/fmradiolibs/fmnative/fmr/README deleted file mode 100644 index d16ff95..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/README +++ /dev/null @@ -1,25 +0,0 @@ -Libraries of MTK FM feature, including FM power on/off, -seek, scan, tune...and some other basic functions. - -WHAT IT DOES? -============= -Provide FM basic functions - -HOW IT WAS BUILT? -================== -It needs the following libs from AOSP: -1. libcutils -2. libdl - -and the following libs from MediaTek: -1. libmedia - -HOW TO USE IT? -============== -Files in this directory is used to -generate libraries 'libfmjni' and 'libfmmtxxxx' - -These libraries are loaded when system up - -All the source code of this library were written by MediaTek co.. - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/ar1000.cpp b/MediaTek/fmradiolibs/fmnative/fmr/ar1000.cpp deleted file mode 100644 index d6c83c6..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/ar1000.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_AR1000" - -#ifdef __cplusplus -extern "C" { -#endif - -static int AR1000_open_dev(const char *pname, int *fd) -{ - int ret; - ret = COM_open_dev(pname, fd); - - //TODO important!!!, check if it's valid FM chip, hard code here. - - return ret; -} - -static int AR1000_ana_switch(int fd, int antenna) -{ - return -ERR_UNSUPT_SHORTANA; -} - -void AR1000_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = AR1000_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - cbk_tbl->seek = COM_seek; - cbk_tbl->scan = COM_sw_scan; //hw_scan or sw_scan. - cbk_tbl->stop_scan = COM_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - cbk_tbl->ana_switch = AR1000_ana_switch; - - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/bt_ctrl.cpp b/MediaTek/fmradiolibs/fmnative/fmr/bt_ctrl.cpp deleted file mode 100644 index 87b6a92..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/bt_ctrl.cpp +++ /dev/null @@ -1,445 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#define LOG_TAG "FMJNI_BTCTRL" -#endif - -#define BT_SERIAL_PORT "/dev/ttyMT2" - -enum{ - BT_PWR_ON, - BT_PWR_OFF, - BT_PWR_UNKNOWN, - BT_PWR_MAX -}; -//for BT host -static int bt_host_rfkill_path_get(int *bt_id, char **state_path); -static int bt_host_pwr_state_get(int *state); -static int bt_host_init_uart(char *dev); -//for MT6616 BT controller -static int bt_mt6616_reset(int fd); -static int bt_mt6616_nonsleepduration_set(int fd, uint32_t dwTime); -static int bt_mt6616_alwayssleep_set(int fd); -static void *bt_mt6616_forcesleep_thread(void *priv); -//for MT6626 BT controller -static int bt_mt6626_alwayssleep_set(int fd); -static int bt_mt6626_i2s_switch_1(int fd); -static int bt_mt6626_i2s_switch_2(int fd); -static void *bt_mt6626_forcesleep_thread(void *priv); - - -static int bt_host_rfkill_path_get(int *bt_id, char **state_path) -{ - char path[128]; - char buf[32]; - int fd, id; - ssize_t sz; - - FMR_ASSERT(bt_id); - FMR_ASSERT(state_path); - - for(id = 0; id < 10 ; id++){ - snprintf(path, sizeof(path), "/sys/class/rfkill/rfkill%d/type", id); - fd = open(path, O_RDONLY); - if(fd < 0){ - LOGE("open(%s) failed\n", path); - return -1; - } - sz = read(fd, &buf, sizeof(buf)); - close(fd); - if(sz >= 9 && (memcmp(buf, "bluetooth", 9) == 0)){ - *bt_id = id; - break; - } - } - - if (id == 10) - return -1; - - asprintf(state_path, "/sys/class/rfkill/rfkill%d/state", *bt_id); - return 0; -} - -static int bt_host_pwr_state_get(int *state) -{ - int sz; - int fd = -1; - int ret = 0; - char sta; - int bt_rfkill_id = -1; - char *bt_rfkill_state_path = NULL; - - FMR_ASSERT(state); - - if(bt_rfkill_id == -1){ - ret = bt_host_rfkill_path_get(&bt_rfkill_id, &bt_rfkill_state_path); - if(ret){ - LOGE("get bt rfkill sate path failed\n"); - return ret; - } - } - - fd = open(bt_rfkill_state_path, O_RDONLY); - if(fd < 0){ - LOGE("open(%s) failed\n", bt_rfkill_state_path); - return fd; - } - sz = read(fd, &sta, 1); - if(sz != 1){ - LOGE("read(%s) failed", bt_rfkill_state_path); - close(fd); - return -1; - } - - switch(sta){ - case '1': - *state = BT_PWR_ON; - break; - case '0': - *state = BT_PWR_OFF; - break; - default: - LOGE("unknown bt pwr state\n"); - ret = -1; - } - - free(bt_rfkill_state_path); - close(fd); - return ret; -} - -static int bt_host_init_uart(char *dev) -{ - struct termios ti; - int fd, i; - - FMR_ASSERT(dev); - - fd = open(dev, O_RDWR | O_NOCTTY); - if(fd < 0){ - LOGE("Can't open serial port\n"); - return -1; - } - - tcflush(fd, TCIOFLUSH); - - if(tcgetattr(fd, &ti) < 0){ - LOGE("unable to get UART port setting\n"); - return -1; - } - - cfmakeraw(&ti); - - ti.c_cflag |= CLOCAL; - ti.c_cflag &= ~CRTSCTS; - - ti.c_lflag = 0; - ti.c_cc[VTIME] = 5; /* 0.5 sec */ - ti.c_cc[VMIN] = 0; - - if(tcsetattr(fd, TCSANOW, &ti) < 0){ - LOGE("Can't set port settings\n"); - return -1; - } - - /* Set initial baudrate */ - cfsetospeed(&ti, B115200); - cfsetispeed(&ti, B115200); - - tcsetattr(fd, TCSANOW, &ti); - tcflush(fd, TCIOFLUSH); - - return fd; -} - -static int bt_mt6616_reset(int fd) -{ - uint32_t dwBytesWritten = 0; - uint32_t dwBytesTotal = 0; - uint32_t dwCounter = 0; - uint32_t dwBytesRead = 7; - uint8_t pAckEvent[7]; - int sz = 0; - uint8_t HCI_RESET[] = {0x01, 0x03, 0x0c, 0x0}; - - sz = write(fd, HCI_RESET, sizeof(HCI_RESET)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - while((dwBytesTotal < 7) && (dwCounter < 5)){ - dwBytesRead = read(fd, &pAckEvent[dwBytesTotal], dwBytesRead); - dwBytesTotal += dwBytesRead; - dwBytesRead = 7 - dwBytesTotal; - dwCounter++; - } - if(dwBytesTotal < 7){ - LOGE("%s no ACK \n", __func__); - return -1; - } - - return 0; -} - -static int bt_mt6616_nonsleepduration_set(int fd, uint32_t dwTime) -{ - uint32_t dwBytesWritten = 0; - uint32_t dwBytesTotal = 0; - uint32_t dwCounter = 0; - uint32_t dwBytesRead = 7; - uint8_t pAckEvent[7]; - int sz = 0; - - uint32_t dwSlotNum = (dwTime<<3)/5; - uint8_t HCI_VS_SET_SLEEP[] = {0x01, 0x7a, 0xfc, 0x07, 0x03, 0x40, 0x1f, 0x40, 0x1f, 0x00, 0x04}; - - HCI_VS_SET_SLEEP[4] = 0x03; //3-pin lower power mode - HCI_VS_SET_SLEEP[5] = (uint8_t)(dwSlotNum&0xFF); - HCI_VS_SET_SLEEP[6] = (uint8_t)((dwSlotNum>>8)&0xFF); - HCI_VS_SET_SLEEP[7] = (uint8_t)(dwSlotNum&0xFF); - HCI_VS_SET_SLEEP[8] = (uint8_t)((dwSlotNum>>8)&0xFF); - - sz = write(fd, HCI_VS_SET_SLEEP, sizeof(HCI_VS_SET_SLEEP)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - while((dwBytesTotal < 7) && (dwCounter < 5)){ - dwBytesRead = read(fd, &pAckEvent[dwBytesTotal], dwBytesRead); - dwBytesTotal += dwBytesRead; - dwBytesRead = 7 - dwBytesTotal; - dwCounter++; - } - if(dwBytesTotal < 7){ - LOGE("%s no ACK \n", __func__); - return -1; - } - - return 0; -} - -static int bt_mt6616_alwayssleep_set(int fd) -{ - int sz = 0; - uint8_t HCI_VS_SET_ALWAYS_SLEEP[] = {0x01, 0xD8, 0xfc, 0x0}; - - sz = write(fd, HCI_VS_SET_ALWAYS_SLEEP, sizeof(HCI_VS_SET_ALWAYS_SLEEP)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - return 0; -} - -static void *bt_mt6616_forcesleep_thread(void *priv) -{ - int bt_fd = bt_host_init_uart((char*)BT_SERIAL_PORT); - if(bt_fd != -1){ - LOGD("+set bt force sleep, sleep 1\n"); - sleep(1); - bt_mt6616_nonsleepduration_set(bt_fd, 5000); - bt_mt6616_reset(bt_fd); - bt_mt6616_alwayssleep_set(bt_fd); - LOGD("-set bt force sleep\n"); - close(bt_fd); - } - - pthread_exit(NULL); - return NULL; -} - -static int bt_mt6626_alwayssleep_set(int fd) -{ - uint32_t dwBytesWritten = 0; - uint32_t dwBytesTotal = 0; - uint32_t dwCounter = 0; - uint32_t dwBytesRead = 7; - uint8_t pAckEvent[7]; - int sz = 0; - uint8_t HCI_VS_SET_ALWAYS_SLEEP[] = - {0x01, 0xD8, 0xFC, 0x08, 0x03, 0x40, 0x1F, 0x40, 0x1F, 0x00, 0x04, 0x01}; - - sz = write(fd, HCI_VS_SET_ALWAYS_SLEEP, sizeof(HCI_VS_SET_ALWAYS_SLEEP)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - while((dwBytesTotal < 7) && (dwCounter < 5)){ - dwBytesRead = read(fd, &pAckEvent[dwBytesTotal], dwBytesRead); - dwBytesTotal += dwBytesRead; - dwBytesRead = 7 - dwBytesTotal; - dwCounter++; - } - if(dwBytesTotal < 7){ - LOGE("%s no ACK \n", __func__); - return -1; - } - - return 0; -} - -static int bt_mt6626_i2s_switch_1(int fd) -{ - uint32_t dwBytesWritten = 0; - uint32_t dwBytesTotal = 0; - uint32_t dwCounter = 0; - uint32_t dwBytesRead = 7; - uint8_t pAckEvent[7]; - int sz = 0; - uint8_t HCI_VS_I2S_SWITCH_1[] = - {0x01, 0xD0, 0xFC, 0x08, 0x50, 0x01, 0x05, 0x80, 0x20, 0x00, 0x00, 0x00}; - - sz = write(fd, HCI_VS_I2S_SWITCH_1, sizeof(HCI_VS_I2S_SWITCH_1)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - while((dwBytesTotal < 7) && (dwCounter < 5)){ - dwBytesRead = read(fd, &pAckEvent[dwBytesTotal], dwBytesRead); - dwBytesTotal += dwBytesRead; - dwBytesRead = 7 - dwBytesTotal; - dwCounter++; - } - if(dwBytesTotal < 7){ - LOGE("%s no ACK \n", __func__); - return -1; - } - - return 0; -} - -static int bt_mt6626_i2s_switch_2(int fd) -{ - uint32_t dwBytesWritten = 0; - uint32_t dwBytesTotal = 0; - uint32_t dwCounter = 0; - uint32_t dwBytesRead = 7; - uint8_t pAckEvent[7]; - int sz = 0; - uint8_t bt_mt6626_i2s_switch_2[] = - {0x01, 0xD0, 0xFC, 0x08, 0x60, 0x01, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00}; - - sz = write(fd, bt_mt6626_i2s_switch_2, sizeof(bt_mt6626_i2s_switch_2)); - if(sz < 0){ - LOGE("%s can't send command\n", __func__); - return -1; - } - - while((dwBytesTotal < 7) && (dwCounter < 5)){ - dwBytesRead = read(fd, &pAckEvent[dwBytesTotal], dwBytesRead); - dwBytesTotal += dwBytesRead; - dwBytesRead = 7 - dwBytesTotal; - dwCounter++; - } - if(dwBytesTotal < 7){ - LOGE("%s no ACK \n", __func__); - return -1; - } - - return 0; -} - -static void *bt_mt6626_forcesleep_thread(void *priv) -{ - int bt_fd = bt_host_init_uart((char*)BT_SERIAL_PORT); - if(bt_fd != -1){ - LOGD("+set bt force sleep, sleep 1\n"); - sleep(1); - bt_mt6626_alwayssleep_set(bt_fd); - bt_mt6626_i2s_switch_1(bt_fd); - bt_mt6626_i2s_switch_2(bt_fd); - LOGD("-set bt force sleep\n"); - close(bt_fd); - } - - pthread_exit(NULL); - return NULL; -} - -/* - * bt_set_controller_force_sleep - * If bt host is not at power on state, we should info bt firmware to close bt HW - * and let bt firmware enter sleep mode - * @chip -- chip value, 0x6616/0x6626 - */ -int bt_set_controller_force_sleep(int chip) -{ - int ret = 0; - pthread_t bt_fsleep_thd; - void *(*work_thread)(void*) = NULL; - int pwr_state = BT_PWR_UNKNOWN; - - ret = bt_host_pwr_state_get(&pwr_state); - if(ret){ - LOGE("get bt power state failed\n"); - return ret; - } - - switch(chip){ - case FM_CHIP_MT6616: - work_thread = bt_mt6616_forcesleep_thread; - break; - case FM_CHIP_MT6626: - work_thread = bt_mt6626_forcesleep_thread; - break; - default: - LOGE("unknown chip type\n"); - return -1; - break; - } - - if(BT_PWR_OFF == pwr_state){ - LOGD("set bt force sleep\n"); - ret = pthread_create(&bt_fsleep_thd, NULL, work_thread, NULL); - if(ret){ - LOGE("create work thread failed\n"); - return ret; - } - pthread_join(bt_fsleep_thd, NULL); - } - return ret; -} - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/common.cpp b/MediaTek/fmradiolibs/fmnative/fmr/common.cpp deleted file mode 100644 index 9c0a2cd..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/common.cpp +++ /dev/null @@ -1,1389 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_COM" - -static int g_stopscan = 0; - -int COM_open_dev(const char *pname, int *fd) -{ - int ret = 0; - int tmp = -1; - - FMR_ASSERT(pname); - FMR_ASSERT(fd); - - LOGI("COM_open_dev start\n"); - tmp = open(pname, O_RDWR); - if (tmp < 0) { - LOGE("Open %s failed, %s\n", pname, strerror(errno)); - ret = -ERR_INVALID_FD; - } - *fd = tmp; - LOGI("%s, [fd=%d] [ret=%d]\n", __func__, *fd, ret); - return ret; -} - -int COM_close_dev(int fd) -{ - int ret = 0; - - LOGI("COM_close_dev start\n"); - ret = close(fd); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_pwr_up(int fd, int band, int freq) -{ - int ret = 0; - struct fm_tune_parm parm; - - LOGI("%s, [freq=%d]\n", __func__, freq); - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - parm.space = 1; -#endif - - ret = ioctl(fd, FM_IOCTL_POWERUP, &parm); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_pwr_down(int fd, int type) -{ - int ret = 0; - LOGI("%s, [type=%d]\n", __func__, type); - ret = ioctl(fd, FM_IOCTL_POWERDOWN, &type); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_get_chip_id(int fd, int *chipid) -{ - int ret = 0; - uint16_t tmp = 0; - - FMR_ASSERT(chipid); - - ret = ioctl(fd, FM_IOCTL_GETCHIPID, &tmp); - *chipid = (int)tmp; - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [chipid=%x] [ret=%d]\n", __func__, fd, *chipid, ret); - return ret; -} - -int COM_get_rssi(int fd, int *rssi) -{ - int ret = 0; - - FMR_ASSERT(rssi); - - ret = ioctl(fd, FM_IOCTL_GETRSSI, rssi); - if(ret){ - LOGE("%s, failed, [ret=%d]\n", __func__, ret); - } - LOGI("%s, [rssi=%d] [ret=%d]\n", __func__, *rssi, ret); - return ret; -} -/*0x20: space, 0x7E:~*/ -#define ISVALID(c)((c)>=0x20 && (c)<=0x7E) -/*change any char which out of [0x20,0x7E]to space(0x20)*/ -void COM_change_string(uint8_t *str,int len) -{ - int i=0; - for (i=0; i<len; i++) - { - if(false == ISVALID(str[i])) - { - str[i]= 0x20; - } - } -} -int COM_get_ps(int fd, RDSData_Struct *rds, uint8_t **ps, int *ps_len) -{ - int ret = 0; - char tmp_ps[9] = {0}; - - FMR_ASSERT(rds); - FMR_ASSERT(ps); - FMR_ASSERT(ps_len); - - if (rds->event_status&RDS_EVENT_PROGRAMNAME) - { - LOGD("%s, Success,[event_status=%d]\n", __func__, rds->event_status); - *ps = &rds->PS_Data.PS[3][0]; - *ps_len = sizeof(rds->PS_Data.PS[3]); - - COM_change_string(*ps,*ps_len); - memcpy(tmp_ps, *ps, 8); - LOGI("PS=%s\n", tmp_ps); - } - else - { - LOGE("%s, Failed,[event_status=%d]\n", __func__, rds->event_status); - *ps = NULL; - *ps_len = 0; - ret = -ERR_RDS_NO_DATA; - } - - return ret; -} - -int COM_get_rt(int fd, RDSData_Struct *rds, uint8_t **rt, int *rt_len) -{ - int ret = 0; - char tmp_rt[65] = { 0 }; - - FMR_ASSERT(rds); - FMR_ASSERT(rt); - FMR_ASSERT(rt_len); - - if (rds->event_status&RDS_EVENT_LAST_RADIOTEXT) - { - LOGD("%s, Success,[event_status=%d]\n", __func__, rds->event_status); - *rt = &rds->RT_Data.TextData[3][0]; - *rt_len = rds->RT_Data.TextLength; - - COM_change_string(*rt,*rt_len); - memcpy(tmp_rt, *rt, 64); - LOGI("RT=%s\n", tmp_rt); - } - else - { - LOGE("%s, Failed,[event_status=%d]\n", __func__, rds->event_status); - *rt = NULL; - *rt_len = 0; - ret = -ERR_RDS_NO_DATA; - } - return ret; -} - -int COM_get_pi(int fd, RDSData_Struct *rds, uint16_t *pi) -{ - int ret = 0; - - FMR_ASSERT(rds); - FMR_ASSERT(pi); - - if(rds->event_status&RDS_EVENT_PI_CODE){ - LOGD("%s, Success,[event_status=%d] [PI=%d]\n", __func__, rds->event_status, rds->PI); - *pi = rds->PI; - }else { - LOGI("%s, Failed, there's no pi,[event_status=%d]\n", __func__, rds->event_status); - *pi = -1; - ret = -ERR_RDS_NO_DATA; - } - - return ret; -} - -int COM_get_pty(int fd, RDSData_Struct *rds, uint8_t *pty) -{ - int ret = 0; - - FMR_ASSERT(rds); - FMR_ASSERT(pty); - - if(rds->event_status&RDS_EVENT_PTY_CODE){ - LOGD("%s, Success,[event_status=%d] [PTY=%d]\n", __func__, rds->event_status, rds->PTY); - *pty = rds->PTY; - }else{ - LOGI("%s, Success, there's no pty,[event_status=%d]\n", __func__, rds->event_status); - *pty = -1; - ret = -ERR_RDS_NO_DATA; - } - - return ret; -} - -int COM_tune(int fd, int freq, int band) -{ - int ret = 0; - - struct fm_tune_parm parm; - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - parm.space = 1; -#endif - - ret = ioctl(fd, FM_IOCTL_TUNE, &parm); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [freq=%d] [ret=%d]\n", __func__, fd, freq, ret); - return ret; -} - -int COM_seek(int fd, int *freq, int band, int dir, int lev) -{ - int ret = 0; - struct fm_seek_parm parm; - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = *freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - parm.space = 1; -#endif - if (dir == 1) { - parm.seekdir = FM_SEEK_UP; - } else if (dir == 0) { - parm.seekdir = FM_SEEK_DOWN; - } - parm.seekth = lev; - - ret = ioctl(fd, FM_IOCTL_SEEK, &parm); - if (ret == 0) { - *freq = parm.freq; - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_set_mute(int fd, int mute) -{ - int ret = 0; - int tmp = mute; - - LOGD("%s, start \n", __func__); - ret = ioctl(fd, FM_IOCTL_MUTE, &tmp); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_is_fm_pwrup(int fd, int *pwrup) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_IS_FM_POWERED_UP, pwrup); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_fm_set_status(int fd, int which, bool stat) -{ - int ret = 0; - fm_status_t stat_parm; - - bzero(&stat_parm, sizeof(fm_status_t)); - stat_parm.which = which; - stat_parm.stat = stat; - - ret = ioctl(fd, FM_IOCTL_FM_SET_STATUS, &stat_parm); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_fm_get_status(int fd, int which, bool *stat) -{ - int ret = 0; - fm_status_t stat_parm; - - bzero(&stat_parm, sizeof(fm_status_t)); - stat_parm.which = which; - - ret = ioctl(fd, FM_IOCTL_FM_GET_STATUS, &stat_parm); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - - *stat = stat_parm.stat; - - return ret; -} - -/****************************************** - * Inquiry if RDS is support in driver. - * Parameter: - * None - *supt Value: - * 1: support - * 0: NOT support - * -1: error - ******************************************/ -int COM_is_rdsrx_support(int fd, int *supt) -{ - int ret = 0; - int support = -1; - - if (fd < 0){ - LOGE("FM isRDSsupport fail, g_fm_fd = %d\n", fd); - *supt = -1; - ret = -ERR_INVALID_FD; - return ret; - } - - ret = ioctl(fd, FM_IOCTL_RDS_SUPPORT, &support); - if (ret){ - LOGE("FM FM_IOCTL_RDS_SUPPORT fail, errno = %d\n", errno); - //don't support - *supt = 0; - return ret; - } - LOGI("isRDSsupport Success,[support=%d]\n", support); - *supt = support; - return ret; -} - -int COM_is_rdstx_support(int fd, int *supt) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_RDSTX_SUPPORT, supt); - if (ret < 0){ - LOGE("%s: fail\n", __func__); - //FM don't support RDS Tx - *supt = 0; - } - LOGD("%s:[supt=%d] [ret=%d]\n", __func__, *supt, ret); - return ret; -} - - -static struct fm_scan_t scan_req; -static int scan_req_init_flag = 0; - -/* - * COM_hw_scan_new - * @fd -file descriptor - * @ppdst - target channel buffer - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - scan space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * Return channel number >= 0 if success, else error code - */ -int COM_hw_scan_new(int fd, void **ppdst, int upper, int lower, int space, void *para) -{ - int ret = 0; - int tmp = 0; - - if (!scan_req_init_flag) { - scan_req_init_flag = 1; - scan_req.sr_size = 0; - scan_req.sr.ch_rssi_buf = NULL; - } - - // alloc memory for buffer - if ((upper - lower) < space) { - LOGE("band para err\n"); - return -1; - } - - tmp = ((upper - lower) / space + 1) * sizeof(struct fm_ch_rssi*); - if (scan_req.sr_size < tmp) { - if (scan_req.sr.ch_rssi_buf) { - free(scan_req.sr.ch_rssi_buf); - scan_req.sr.ch_rssi_buf = NULL; - } - scan_req.sr_size = tmp; - } - - if (!scan_req.sr.ch_rssi_buf) { - scan_req.sr.ch_rssi_buf = (struct fm_ch_rssi*)malloc(scan_req.sr_size); - if (!scan_req.sr.ch_rssi_buf) { - LOGE("scan alloc mem failed\n"); - scan_req.sr_size = 0; - return -2; - } - } - - // scan parameter init, start scan - scan_req.lower = lower; - scan_req.upper = upper; - scan_req.space = space; - scan_req.cmd = FM_SCAN_CMD_START; - ret = ioctl(fd, FM_IOCTL_SCAN_NEW, &scan_req); - if (ret < 0) { - LOGE("scan start faild\n"); - return ret; - } - - // get result channel info - scan_req.cmd = FM_SCAN_CMD_GET_CH_RSSI; - ret = ioctl(fd, FM_IOCTL_SCAN_NEW, &scan_req); - if (ret < 0) { - LOGE("scan get num faild\n"); - return ret; - } - - *ppdst = (void*)scan_req.sr.ch_rssi_buf; - return scan_req.num; -} - - -/* - * COM_seek_new - * @fd -file descriptor - * @freq - start freqency of seek - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - scan space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * @dir - seek direction, 0: up; 1: down - * @rssi - seek threshold in dbm (Eg, -95dbm) - * Return 0 if success, else error code - */ -int COM_seek_new(int fd, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para) -{ - int ret = 0; - int tmp = 0; - struct fm_seek_t seek_req; - - // seek parameter init, start seek - seek_req.lower = lower; - seek_req.upper = upper; - seek_req.space = space; - seek_req.freq = *freq; - seek_req.dir = dir; - seek_req.th = *rssi; - ret = ioctl(fd, FM_IOCTL_SEEK_NEW, &seek_req); - if (ret < 0) { - LOGE("seek faild\n"); - return ret; - } - - *freq = seek_req.freq; - *rssi = seek_req.th; - LOGD("seek, freq %d, rssi %d\n", seek_req.freq, seek_req.th); - return ret; -} - - -/* - * COM_tune_new - * @fd -file descriptor - * @freq - target freqency - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - scan space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * Return 0 if success, else error code - */ -int COM_tune_new(int fd, int freq, int upper, int lower, int space, void *para) -{ - int ret = 0; - int tmp = 0; - struct fm_tune_t tune_req; - - // tune parameter init, start tune - tune_req.lower = lower; - tune_req.upper = upper; - tune_req.space = space; - tune_req.freq = freq; - ret = ioctl(fd, FM_IOCTL_TUNE_NEW, &tune_req); - if (ret < 0) { - LOGE("tune faild\n"); - return ret; - } - - LOGD("tune, freq %d\n", tune_req.freq); - return ret; -} -int COM_pre_search(int fd) -{ - fm_s32 ret = 0; - ret = ioctl(fd, FM_IOCTL_PRE_SEARCH, 0); - LOGD("COM_pre_search:%d\n",ret); - return ret; -} -int COM_restore_search(int fd) -{ - fm_s32 ret = 0; - ret = ioctl(fd, FM_IOCTL_RESTORE_SEARCH, 0); - LOGD("COM_restore_search:%d\n",ret); - return ret; -} - -/*soft mute tune function, usually for sw scan implement or CQI log tool*/ -int COM_Soft_Mute_Tune(int fd,fm_softmute_tune_t *para) -{ - fm_s32 ret = 0; -// fm_s32 RSSI=0, PAMD=0,MR=0, ATDC=0; -// fm_u32 PRX=0; -// fm_u16 softmuteGainLvl=0; - fm_softmute_tune_t value; - - value.freq = para->freq; - ret = ioctl(fd, FM_IOCTL_SOFT_MUTE_TUNE, &value); - if (ret) - { - LOGE("FM soft mute tune faild:%d\n",ret); - return ret; - } - #if 0 - LOGD("Raw data of soft mute tune[%d]: RSSI:[%x]PAMD:[%x]MR:[%x]ATDC:[%x]PRX:[%x]SMG:[%x]",para->freq,value.RSSI,value.PAMD,value.MR,value.ATDC,value.PRX,value.SMG); - RSSI = ((value.RSSI & 0x03FF) >= 512) ? ((value.RSSI & 0x03FF) - 1024) : (value.RSSI & 0x03FF); - PAMD = ((value.PAMD & 0xFF) >= 128) ? ((value.PAMD & 0x00FF) - 256) : (value.PAMD & 0x00FF); - MR = ((value.MR & 0x01FF) >= 256) ? ((value.MR & 0x01FF) - 512) : (value.MR & 0x01FF); - ATDC =((value.ATDC & 0x0FFF) >= 2048) ? ((value.ATDC & 0x0FFF) - 4096) : (value.ATDC & 0x0FFF); - if(ATDC < 0) - { - ATDC = (~(ATDC)) - 1;//Get abs value of ATDC - } - PRX = (value.PRX & 0x00FF); - softmuteGainLvl = value.SMG; - //check if the channel is valid according to each CQIs - if((RSSI >= RSSI_TH) - && (PAMD <= PAMD_TH) - && (ATDC <= ATDC_TH) - && (MR >= MR_TH) - && (PRX >= PRX_TH) - && (softmuteGainLvl <= softMuteGainTH)) - { - para->valid = fm_true; - } - else - { - para->valid = fm_false; - } - #endif - para->valid = value.valid; - para->rssi = value.rssi; -// LOGI("soft mute tune[%d] valid[%d]: RSSI:[%d]PAMD:[%d]MR:[%d]ATDC:[%d]PRX:[%d]SMG:[%d]",para->freq,para->valid,RSSI,PAMD,MR,ATDC,PRX,softmuteGainLvl); - return 0; -} - -int COM_hw_scan(int fd, uint16_t *scan_tbl, int *max_num, int band, int sort) -{ - struct fm_scan_parm parm; - uint16_t tmp_val = 0; - uint16_t ch_offset = 0; - uint16_t MASK_CH = 0; - int ret = 0; - int step = 0; - int chl_cnt = 0; - int i, j; - struct fm_ch_rssi tmp; - struct fm_rssi_req rssi_req; - - parm.band = band; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = FM_SPACE_50K; -#else - parm.space = FM_SPACE_100K; -#endif - parm.hilo = FM_AUTO_HILO_OFF; - parm.freq = 0; - parm.ScanTBLSize = sizeof(parm.ScanTBL)/sizeof(uint16_t); - - ret = ioctl(fd, FM_IOCTL_SCAN, &parm); - if (ret) { - LOGE("FM scan faild\n"); - *max_num = 0; - return ret; - } - - //get scan result channel - memset(&rssi_req, 0x0, sizeof(struct fm_rssi_req)); - for (ch_offset = 0; ch_offset < parm.ScanTBLSize; ch_offset++) { - if(parm.ScanTBL[ch_offset] == 0) - continue; - for (step=0;step<16;step++) { - if(parm.ScanTBL[ch_offset] & (1 << step)){ - tmp_val = FM_FREQ_MIN + (ch_offset*16 + step) * (parm.space); - if (tmp_val <= FM_FREQ_MAX) { - rssi_req.cr[chl_cnt].freq = tmp_val; - chl_cnt++; - } - } - } - } - - //sort - switch(sort){ - case FM_SCAN_SORT_NON: - break; - case FM_SCAN_SORT_UP: - case FM_SCAN_SORT_DOWN: - //get rssi per channel, mute --> fast tune --> get rssi - rssi_req.num = chl_cnt; - rssi_req.read_cnt = 1; //RSSI read times, we can read more than one time to ensure rssi valid - ret = ioctl(fd, FM_IOCTL_SCAN_GETRSSI, &rssi_req); - if(ret){ - LOGE("FM scan get rssi faild\n"); - *max_num = 0; - return ret; - } - //do sort: insert sort algorithm - for(i = 1; i < chl_cnt; i++){ - for(j = i; (j > 0) && ((FM_SCAN_SORT_DOWN == sort) ? (rssi_req.cr[j-1].rssi\ - < rssi_req.cr[j].rssi) : (rssi_req.cr[j-1].rssi > rssi_req.cr[j].rssi)); j--){ - tmp.freq = rssi_req.cr[j].freq; - tmp.rssi = rssi_req.cr[j].rssi; - rssi_req.cr[j].freq = rssi_req.cr[j-1].freq; - rssi_req.cr[j].rssi = rssi_req.cr[j-1].rssi; - rssi_req.cr[j-1].freq = tmp.freq; - rssi_req.cr[j-1].rssi = tmp.rssi; - } - } - break; - default: - break; - } - *max_num = (chl_cnt > *max_num) ? *max_num : chl_cnt; - - //copy to result buf - LOGD("Channel list(%d):", chl_cnt); - for(i = 0; i < *max_num; i++){ - scan_tbl[i] = rssi_req.cr[i].freq; - LOGD("%d(%d dbm) ", (int)scan_tbl[i], rssi_req.cr[i].rssi); - } - LOGD("\n"); - return ret; -} - -int COM_fastget_rssi(int fd, struct fm_rssi_req *rssi_req) -{ - int ret = 0; - - FMR_ASSERT(rssi_req); - //get rssi per channel, mute --> fast tune --> get rssi - if(rssi_req->read_cnt <= 0){ - rssi_req->read_cnt = 1; //RSSI read times, we can read more than one time to ensure rssi valid - } - ret = ioctl(fd, FM_IOCTL_SCAN_GETRSSI, rssi_req); - if(ret){ - LOGE("Fast get rssi faild\n"); - } - - return ret; -} - - -int COM_get_cqi(int fd, int num, char *buf, int buf_len) -{ - int ret; - struct fm_cqi_req cqi_req; - - //check buf - num = (num > CQI_CH_NUM_MAX) ? CQI_CH_NUM_MAX : num; - num = (num < CQI_CH_NUM_MIN) ? CQI_CH_NUM_MIN : num; - cqi_req.ch_num = (uint16_t)num; - cqi_req.buf_size = cqi_req.ch_num * sizeof(struct fm_cqi); - if (!buf || (buf_len < cqi_req.buf_size)) { - LOGE("get cqi, invalid buf\n"); - return -1; - } - cqi_req.cqi_buf = buf; - - //get cqi from driver - ret = ioctl(fd, FM_IOCTL_CQI_GET, &cqi_req); - if (ret < 0) { - LOGE("get cqi, failed %d\n", ret); - return -1; - } - - return 0; -} - - -int COM_sw_scan(int fd, uint16_t *scan_tbl, int *max_num, int band, int sort) -{ - int ret; - int chl_cnt = 0; - uint16_t start_freq = FM_FREQ_MIN; - struct fm_seek_parm parm; - - g_stopscan = 0; - - do { - bzero(&parm, sizeof(struct fm_tune_parm)); - parm.band = band; - parm.freq = start_freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = 5; //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ -#else - parm.space = 1; -#endif - parm.seekdir = FM_SEEK_UP; - parm.seekth = FM_SEEKTH_LEVEL_DEFAULT; - - ret = ioctl(fd, FM_IOCTL_SEEK, &parm); - if (ret != 0) { - LOGE("FM scan faild, %s, %d\n", strerror(errno), parm.err); - break; - } - - if((parm.err == FM_SUCCESS) && (chl_cnt < *max_num) && (parm.freq > start_freq)){ - scan_tbl[chl_cnt] = parm.freq; - chl_cnt++; - } else { - break; - } - - start_freq = parm.freq; - } while (g_stopscan == 0); - - LOGI("FM sw scan %d station found\n", chl_cnt); - return ret; -} - -int COM_stop_scan(int fd) -{ - int ret = 0; - - g_stopscan = 1; - - return ret; -} - -int COM_turn_on_off_rds(int fd, int onoff) -{ - int ret = 0; - uint16_t rds_on = -1; - - LOGD("Rdsset start\n"); - if(onoff == FMR_RDS_ON){ - rds_on = 1; - ret = ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - if (ret){ - LOGE("FM_IOCTL_RDS_ON failed\n"); - return ret; - } - LOGD("Rdsset Success,[rds_on=%d]\n", rds_on); - }else{ - rds_on = 0; - ret = ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - if (ret){ - LOGE("FM_IOCTL_RDS_OFF failed\n"); - return ret; - } - LOGD("Rdsset Success,[rds_on=%d]\n", rds_on); - } - return ret; -} - -int COM_read_rds_data(int fd, RDSData_Struct *rds, uint16_t *rds_status) -{ - int ret = 0; - uint16_t event_status; - //char tmp_ps[9] = {0}; - //char tmp_rt[65] = { 0 }; - - FMR_ASSERT(rds); - FMR_ASSERT(rds_status); - - if(read(fd, rds, sizeof(RDSData_Struct)) == sizeof(RDSData_Struct)){ - event_status = rds->event_status; - //memcpy(tmp_ps, &rds->PS_Data.PS[3][0], 8); - //memcpy(tmp_rt, &rds->RT_Data.TextData[3][0], 64); - LOGI("event_status = 0x%x\n", event_status); - //memset(tmp_ps, 0, 9); - //memset(tmp_rt, 0, 65); - *rds_status = event_status; - return ret; - }else { - //LOGE("readrds get no event\n"); - ret = -ERR_RDS_NO_DATA; - } - return ret; -} - -int COM_active_af(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *ret_freq) -{ - int ret = 0; - int i = 0; - struct fm_tune_parm parm; - uint16_t rds_on = 0; - uint16_t set_freq, sw_freq, org_freq, PAMD_Value, AF_PAMD_LBound, AF_PAMD_HBound; - uint16_t PAMD_Level[25]; - uint16_t PAMD_DB_TBL[5] = {// 5dB, 10dB, 15dB, 20dB, 25dB, - // 13, 17, 21, 25, 29}; - 8, 12, 15, 18, 20}; - FMR_ASSERT(rds); - FMR_ASSERT(ret_freq); - - sw_freq = cur_freq; //current freq - org_freq = cur_freq; - parm.band = band; - parm.freq = sw_freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = FM_SPACE_50K; -#else - parm.space = FM_SPACE_100K; -#endif - - - if(!(rds->event_status&RDS_EVENT_AF)){ - LOGE("activeAF failed\n"); - *ret_freq = 0; - ret = -ERR_RDS_NO_DATA; - return ret; - } - - AF_PAMD_LBound = PAMD_DB_TBL[0]; //5dB - AF_PAMD_HBound = PAMD_DB_TBL[1]; //15dB - ioctl(fd, FM_IOCTL_GETCURPAMD, &PAMD_Value); - LOGI("current_freq=%d,PAMD_Value=%d\n", cur_freq, PAMD_Value); - - if(PAMD_Value < AF_PAMD_LBound){ - rds_on = 0; - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - //make sure rds->AF_Data.AF_Num is valid - rds->AF_Data.AF_Num = (rds->AF_Data.AF_Num > 25)? 25 : rds->AF_Data.AF_Num; - for(i=0; i<rds->AF_Data.AF_Num; i++){ - set_freq = rds->AF_Data.AF[1][i]; //method A or B - if(set_freq != org_freq){ - parm.freq = set_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - usleep(250*1000); - ioctl(fd, FM_IOCTL_GETCURPAMD, &PAMD_Level[i]); - LOGI("next_freq=%d,PAMD_Level=%d\n", parm.freq, PAMD_Level[i]); - if(PAMD_Level[i] > PAMD_Value){ - PAMD_Value = PAMD_Level[i]; - sw_freq = set_freq; - } - } - } - LOGI("PAMD_Value=%d, sw_freq=%d\n", PAMD_Value, sw_freq); - if((PAMD_Value > AF_PAMD_HBound)&&(sw_freq != 0)){ - parm.freq = sw_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - cur_freq = parm.freq; - }else { - parm.freq = org_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - cur_freq = parm.freq; - } - rds_on = 1; - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - }else { - LOGD("RDS_EVENT_AF old freq:%d\n", org_freq); - } - *ret_freq = cur_freq; - - return ret; -} - -int COM_active_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq) -{ - int ret = 0; - - FMR_ASSERT(rds); - FMR_ASSERT(backup_freq); - FMR_ASSERT(ret_freq); - - if(rds->event_status&RDS_EVENT_TAON){ - uint16_t rds_on = 0; - struct fm_tune_parm parm; - uint16_t PAMD_Level[25]; - uint16_t PAMD_DB_TBL[5] = {13, 17, 21, 25, 29}; - uint16_t set_freq, sw_freq, org_freq, PAMD_Value, TA_PAMD_Threshold; - int i = 0; - - rds_on = 0; - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - TA_PAMD_Threshold = PAMD_DB_TBL[2]; //15dB - sw_freq = cur_freq; - org_freq = cur_freq; - *backup_freq = org_freq; - parm.band = band; - parm.freq = sw_freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = FM_SPACE_50K; -#else - parm.space = FM_SPACE_100K; -#endif - - ioctl(fd, FM_IOCTL_GETCURPAMD, &PAMD_Value); - //make sure rds->AF_Data.AF_Num is valid - rds->AFON_Data.AF_Num = (rds->AFON_Data.AF_Num > 25)? 25 : rds->AFON_Data.AF_Num; - for(i=0; i< rds->AFON_Data.AF_Num; i++){ - set_freq = rds->AFON_Data.AF[1][i]; - LOGI("set_freq=0x%02x,org_freq=0x%02x\n", set_freq, org_freq); - if(set_freq != org_freq){ - parm.freq = sw_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - ioctl(fd, FM_IOCTL_GETCURPAMD, &PAMD_Level[i]); - if(PAMD_Level[i] > PAMD_Value){ - PAMD_Value = PAMD_Level[i]; - sw_freq = set_freq; - } - } - } - - if((PAMD_Value > TA_PAMD_Threshold)&&(sw_freq != 0)){ - rds->Switch_TP= 1; - parm.freq = sw_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - cur_freq = parm.freq; - }else{ - parm.freq = org_freq; - ioctl(fd, FM_IOCTL_TUNE, &parm); - cur_freq = parm.freq; - } - rds_on = 1; - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - } - - *ret_freq = cur_freq; - return ret; -} - -int COM_deactive_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq) -{ - int ret = 0; - - FMR_ASSERT(rds); - FMR_ASSERT(backup_freq); - FMR_ASSERT(ret_freq); - - if(rds->event_status&RDS_EVENT_TAON_OFF){ - uint16_t rds_on = 0; - struct fm_tune_parm parm; - parm.band = FM_RAIDO_BAND; - parm.freq = *backup_freq; - parm.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = FM_SPACE_50K; -#else - parm.space = FM_SPACE_100K; -#endif - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - - ioctl(fd, FM_IOCTL_TUNE, &parm); - cur_freq = parm.freq; - rds_on = 1; - ioctl(fd, FM_IOCTL_RDS_ONOFF, &rds_on); - } - - *ret_freq = cur_freq; - return ret; -} - -int COM_is_tx_support(int fd, int *supt) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_TX_SUPPORT, supt); - if (ret < 0){ - LOGE("%s:fail\n", __func__); - *supt = -1; //error - } - LOGD("%s:[supt=%d] [ret=%d]\n", __func__, *supt, ret); - return ret; -} -//return tx support -int COM_tx_support(int fd, int *supt) -{ - *supt = 1; - LOGD("%s:\n", __func__); - return 0; -} - -int COM_tx_pwrup(int fd, int band, int freq) -{ - int ret = 0; - struct fm_tune_parm parm_tune; - - parm_tune.band = band; - parm_tune.freq = freq; - parm_tune.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm_tune.space = FM_SPACE_50K; -#else - parm_tune.space = FM_SPACE_100K; -#endif - - ret = ioctl(fd, FM_IOCTL_POWERUP_TX, &parm_tune); - if (ret){ - LOGE("%s:fail\n", __func__); - } - LOGD("%s:[freq=%d] [ret=%d]\n", __func__, freq, ret); - - return ret; -} - -int COM_tx_tune(int fd, int band, int freq) -{ - int ret = 0; - struct fm_tune_parm parm_tune; - - parm_tune.band = band; - parm_tune.freq = freq; - parm_tune.hilo = FM_AUTO_HILO_OFF; -#ifdef MTK_FM_50KHZ_SUPPORT - parm_tune.space = FM_SPACE_50K; -#else - parm_tune.space = FM_SPACE_100K; -#endif - - ret = ioctl(fd, FM_IOCTL_TUNE_TX, &parm_tune); - if (ret){ - LOGE("%s:fail\n", __func__); - } - LOGD("%s:[freq=%d] [ret=%d]\n", __func__, freq, ret); - - return ret; -} - -int COM_tx_scan(int fd, int band, int start_freq, int dir, int *num, uint16_t *tbl) -{ - int ret = 0; - struct fm_tx_scan_parm parm; - - bzero(&parm, sizeof(struct fm_tx_scan_parm)); - parm.band = band; -#ifdef MTK_FM_50KHZ_SUPPORT - parm.space = FM_SPACE_50K; -#else - parm.space = FM_SPACE_100K; -#endif - parm.hilo = FM_AUTO_HILO_OFF; - parm.freq = start_freq; - parm.scandir = dir; - parm.ScanTBLSize = *num; - - ret = ioctl(fd, FM_IOCTL_TX_SCAN, &parm); - if(ret){ - LOGE("%s:failed, [ret=%d]\n", __func__, ret); - *num = 0; - }else{ - *num = parm.ScanTBLSize; - memcpy(tbl, &parm.ScanTBL[0], parm.ScanTBLSize*sizeof(uint16_t)); - } - LOGD("%s:[num=%d] [ret=%d]\n", __func__, parm.ScanTBLSize, ret); - return ret; -} - -int COM_rdstx_onoff(int fd, int onoff) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_RDSTX_ENABLE, &onoff); - if (ret < 0){ - LOGE("%s: fail, ret = %d\n", __func__, ret); - } - - LOGD("%s: [ret = %d]\n", __func__, ret); - return ret; -} - -int COM_rdstx(int fd, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt) -{ - int ret = 0; - struct fm_rds_tx_parm param_rds_tx; - struct fm_rds_tx_req rds_req; - int i = 0; - - bzero(&rds_req, sizeof(struct fm_rds_tx_req)); - bzero(¶m_rds_tx, sizeof(struct fm_rds_tx_parm)); - - memcpy(rds_req.ps_buf, ps, ps_len); // fill ps name - rds_req.pi_code = pi; // fill pi - //fill other fileds if have any - //rds_req.af = 1000; - - //make pakect for Tx - for(i = 0; i < 4; i++){ - uint16_t blk_B = 0x0; - uint16_t blk_C = 0x0; - - if(rds_req.tp == 1){ - blk_B |= 0x0400; // blk_B[10] = TP - } - blk_B |= (rds_req.pty << 5); // blk_B[9:5] = PTY - if(rds_req.ta == 1){ - blk_B |= 0x0010; // blk_B[4] = TA - } - if(rds_req.speech == 1){ - blk_B |= 0x0008; // blk_B[3] = TA - } - switch(i){ - case 0: - if(rds_req.dyn_pty == 1){ - blk_B |= 0x0004; // blk_B[2] = d3 = dynamic pty - } - blk_B |= 0x0000; // blk_B[1:0] = 00 - break; - case 1: - if(rds_req.compress == 1){ - blk_B |= 0x0004; // blk_B[2] = d2 = compressed - } - blk_B |= 0x0001; // blk_B[1:0] = 01 - break; - case 2: - if(rds_req.ah == 1){ - blk_B |= 0x0004; // blk_B[2] = d1 = artificial head - } - blk_B |= 0x0002; // blk_B[1:0] = 10 - break; - case 3: - if(rds_req.stereo == 1){ - blk_B |= 0x0004; // blk_B[2] = d0 = mono/stereo - } - blk_B |= 0x0003; // blk_B[1:0] = 11 - break; - } - if(rds_req.af == 0){ - blk_C = 0xE000; - }else{ - blk_C = 0xE100 | rds_req.af; - } - - param_rds_tx.ps[i*3+0] = blk_B; // block B - param_rds_tx.ps[i*3+1] = blk_C; // block C - param_rds_tx.ps[i*3+2] = (rds_req.ps_buf[2*i] << 8) + rds_req.ps_buf[2*i+1];// block D - } - param_rds_tx.pi = rds_req.pi_code; - param_rds_tx.other_rds_cnt = 0; - - /*if(rdscnt > 87) - { - LOGE("FM JNI: setRDSTX get a invalid rdscnt[%d]\n", rdscnt); - rdscnt = 87; - } - memcpy(¶m_rds_tx.other_rds[0], rds, rdscnt); - param_rds_tx.other_rds_cnt = rdscnt;*/ - - ret = ioctl(fd, FM_IOCTL_RDS_TX, ¶m_rds_tx); - if (ret){ - LOGE("FM_IOCTL_RDS_TX failed\n"); - } - - return ret; -} - -int COM_fm_over_bt(int fd, int onoff) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_OVER_BT_ENABLE, &onoff); - if (ret < 0){ - LOGE("%s: fail, ret = %d\n", __func__, ret); - } - - LOGD("%s: [ret = %d]\n", __func__, ret); - return ret; -} - -int COM_ana_switch(int fd, int antenna) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_ANA_SWITCH, &antenna); - if (ret < 0){ - LOGE("%s: fail, ret = %d\n", __func__, ret); - } - - LOGD("%s: [ret = %d]\n", __func__, ret); - return ret; -} - -int COM_get_badratio(int fd, int *badratio) -{ - int ret = 0; - uint16_t tmp = 0; - - ret = ioctl(fd, FM_IOCTL_GETBLERRATIO, &tmp); - *badratio = (int)tmp; - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - - -int COM_get_stereomono(int fd, int *stemono) -{ - int ret = 0; - uint16_t tmp = 0; - - ret = ioctl(fd, FM_IOCTL_GETMONOSTERO, &tmp); - *stemono = (int)tmp; - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_set_stereomono(int fd, int stemono) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_SETMONOSTERO, stemono); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_get_caparray(int fd, int *caparray) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_GETCAPARRAY, caparray); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - -int COM_get_hw_info(int fd, struct fm_hw_info *info) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_GET_HW_INFO, info); - if(ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, fd, ret); - return ret; -} - - -/* COM_is_dese_chan -- check if gived channel is a de-sense channel or not - * @fd - fd of "dev/fm" - * @freq - gived channel - * return value: 0, not a dese chan; 1, a dese chan; else error NO. - */ -int COM_is_dese_chan(int fd, int freq) -{ - int ret = 0; - int tmp = freq; - - ret = ioctl(fd, FM_IOCTL_IS_DESE_CHAN, &freq); - if (ret < 0) { - LOGE("%s, failed,ret=%d\n", __func__,ret); - return ret; - } else { - LOGD("[fd=%d] %d --> dese=%d\n", fd, tmp, freq); - return freq; - } -} - - - -/* COM_desense_check -- check if gived channel is a de-sense channel or not - * @fd - fd of "dev/fm" - * @freq - gived channel - * @rssi-freq's rssi - * return value: 0, is desense channel and rssi is less than threshold; 1, not desense channel or it is but rssi is more than threshold. - */ -int COM_desense_check(int fd, int freq, int rssi) -{ - int ret = 0; - fm_desense_check_t parm; - - parm.freq = freq; - parm.rssi = rssi; - ret = ioctl(fd, FM_IOCTL_DESENSE_CHECK, &parm); - if (ret < 0) { - LOGE("%s, failed,ret=%d\n", __func__,ret); - return ret; - } else { - LOGD("[fd=%d] %d --> dese=%d\n", fd,freq,ret); - return ret; - } -} -/* -th_idx: - threshold type: 0, RSSI. 1,desense RSSI. 2,SMG. -th_val: threshold value*/ -int COM_set_search_threshold(int fd, int th_idx,int th_val) -{ - int ret = 0; - fm_search_threshold_t th_parm; - th_parm.th_type = th_idx; - th_parm.th_val = th_val; - ret = ioctl(fd, FM_IOCTL_SET_SEARCH_THRESHOLD, &th_parm); - if (ret < 0) - { - LOGE("%s, failed,ret=%d\n", __func__,ret); - } - return ret; -} -int COM_full_cqi_logger(int fd, fm_full_cqi_log_t *log_parm) -{ - int ret = 0; - - ret = ioctl(fd, FM_IOCTL_FULL_CQI_LOG, log_parm); - if (ret < 0) - { - LOGE("%s, failed,ret=%d\n", __func__,ret); - } - return ret; -} diff --git a/MediaTek/fmradiolibs/fmnative/fmr/fm.h b/MediaTek/fmradiolibs/fmnative/fmr/fm.h deleted file mode 100644 index ca232c7..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/fm.h +++ /dev/null @@ -1,656 +0,0 @@ -#ifndef __FM_H__ -#define __FM_H__ - -//#define FMDEBUG - -#include <linux/ioctl.h> -#include <linux/time.h> -//fm type define -typedef signed char fm_s8; -typedef signed short fm_s16; -typedef signed int fm_s32; -typedef signed long long fm_s64; -typedef unsigned char fm_u8; -typedef unsigned short fm_u16; -typedef unsigned int fm_u32; -typedef unsigned long long fm_u64; -typedef enum fm_bool { - fm_false = 0, - fm_true = 1 -} fm_bool; - -//scan sort algorithm -enum{ - FM_SCAN_SORT_NON = 0, - FM_SCAN_SORT_UP, - FM_SCAN_SORT_DOWN, - FM_SCAN_SORT_MAX -}; - -//scan methods -enum{ - FM_SCAN_SEL_HW = 0, //select hardware scan, advantage: fast - FM_SCAN_SEL_SW, //select software scan, advantage: more accurate - FM_SCAN_SEL_MAX -}; - - //***************************************************************************************** -//***********************************FM config for customer *********************************** -//***************************************************************************************** -//RX -#define FMR_RSSI_TH_LONG 0x0301 //FM radio long antenna RSSI threshold(11.375dBuV) -#define FMR_RSSI_TH_SHORT 0x02E0 //FM radio short antenna RSSI threshold(-1dBuV) -#define FMR_CQI_TH 0x00E9 //FM radio Channel quality indicator threshold(0x0000~0x00FF) -#define FMR_SEEK_SPACE 1 //FM radio seek space,1:100KHZ; 2:200KHZ -#define FMR_SCAN_CH_SIZE 80 //FM radio scan max channel size -#define FMR_BAND 1 //FM radio band, 1:87.5MHz~108.0MHz; 2:76.0MHz~90.0MHz; 3:76.0MHz~108.0MHz; 4:special -#define FMR_BAND_FREQ_L 875 //FM radio special band low freq(Default 87.5MHz) -#define FMR_BAND_FREQ_H 1080 //FM radio special band high freq(Default 108.0MHz) -#define FM_SCAN_SORT_SELECT FM_SCAN_SORT_NON -#define FM_SCAN_SELECT FM_SCAN_SEL_HW -#define FM_SCAN_SOFT_MUTE_GAIN_TH 3 //soft-mute threshold when software scan, rang: 0~3, 0 means better audio quality but less channel -#define FM_CHIP_DESE_RSSI_TH (-102) // rang: -102 ~ -72 - -//TX -#define FMTX_PWR_LEVEL_MAX 120 //FM transmitter power level, rang: 85db~120db, default 120db - -//***************************************************************************************** -//***********************************FM config for engineer *********************************** -//***************************************************************************************** -//RX -#define FMR_MR_TH 0x01BD //FM radio MR threshold -#define ADDR_SCAN_TH 0xE0 //scan thrshold register -#define ADDR_CQI_TH 0xE1 //scan CQI register - -//TX -#define FMTX_SCAN_HOLE_LOW 923 //92.3MHz~95.4MHz should not show to user -#define FMTX_SCAN_HOLE_HIGH 954 //92.3MHz~95.4MHz should not show to user -//***************************************************************************************** - -#define FM_NAME "fm" -#define FM_DEVICE_NAME "/dev/fm" - -// errno -#define FM_SUCCESS 0 -#define FM_FAILED 1 -#define FM_EPARM 2 -#define FM_BADSTATUS 3 -#define FM_TUNE_FAILED 4 -#define FM_SEEK_FAILED 5 -#define FM_BUSY 6 -#define FM_SCAN_FAILED 7 - -// band - -#define FM_BAND_UNKNOWN 0 -#define FM_BAND_UE 1 // US/Europe band 87.5MHz ~ 108MHz (DEFAULT) -#define FM_BAND_JAPAN 2 // Japan band 76MHz ~ 90MHz -#define FM_BAND_JAPANW 3 // Japan wideband 76MHZ ~ 108MHz -#define FM_BAND_SPECIAL 4 // special band between 76MHZ and 108MHz -#define FM_BAND_DEFAULT FM_BAND_UE - -#define FM_UE_FREQ_MIN 875 -#define FM_UE_FREQ_MAX 1080 -#define FM_JP_FREQ_MIN 760 -#define FM_JP_FREQ_MAX 1080 -#define FM_FREQ_MIN FMR_BAND_FREQ_L -#define FM_FREQ_MAX FMR_BAND_FREQ_H -#define FM_RAIDO_BAND FM_BAND_UE - -// space -#define FM_SPACE_UNKNOWN 0 -#define FM_SPACE_100K 1 -#define FM_SPACE_200K 2 -#define FM_SPACE_50K 5 - -#define FM_SEEK_SPACE FMR_SEEK_SPACE - -//max scan chl num -#define FM_MAX_CHL_SIZE FMR_SCAN_CH_SIZE -// auto HiLo -#define FM_AUTO_HILO_OFF 0 -#define FM_AUTO_HILO_ON 1 - -// seek direction -#define FM_SEEK_UP 0 -#define FM_SEEK_DOWN 1 - -#define FM_CHIP_AR1000 0x1000 -#define FM_CHIP_MT5192 0x91 -#define FM_CHIP_MT5193 0x92 -#define FM_CHIP_MT6616 0x6616 -#define FM_CHIP_MT6620 0x6620 -#define FM_CHIP_MT6626 0x6626 -#define FM_CHIP_MT6628 0x6628 -#define FM_CHIP_MT6627 0x6627 -#define FM_CHIP_MT6580 0x6580 -#define FM_CHIP_MT6630 0x6630 - -#define FM_CHIP_UNSUPPORTED -1 - -// seek threshold -#define FM_SEEKTH_LEVEL_DEFAULT 4 - -struct fm_tune_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_seek_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint8_t seekdir; - uint8_t seekth; - uint16_t freq; // IN/OUT parameter -}; - -struct fm_scan_parm { - uint8_t err; - uint8_t band; - uint8_t space; - uint8_t hilo; - uint16_t freq; // OUT parameter - uint16_t ScanTBL[26]; //need no less than the chip - uint16_t ScanTBLSize; //IN/OUT parameter -}; - -struct fm_ch_rssi{ - uint16_t freq; - int rssi; -}; - -enum fm_scan_cmd_t { - FM_SCAN_CMD_INIT = 0, - FM_SCAN_CMD_START, - FM_SCAN_CMD_GET_NUM, - FM_SCAN_CMD_GET_CH, - FM_SCAN_CMD_GET_RSSI, - FM_SCAN_CMD_GET_CH_RSSI, - FM_SCAN_CMD_MAX -}; - -struct fm_scan_t { - enum fm_scan_cmd_t cmd; - int ret; // 0, success; else error code - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - int num; // valid channel number - void *priv; - int sr_size; // scan result buffer size in bytes - union { - uint16_t *ch_buf; // channel buffer - int *rssi_buf; // rssi buffer - struct fm_ch_rssi *ch_rssi_buf; //channel and RSSI buffer - } sr; -}; - -struct fm_seek_t { - int ret; // 0, success; else error code - uint16_t freq; - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - int dir; // 0: up; 1: down - int th; // seek threshold in dbm(Eg, -95dbm) - void *priv; -}; - -struct fm_tune_t { - int ret; // 0, success; else error code - uint16_t freq; - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 5: 50KHz, 10: 100Khz, 20: 200Khz - void *priv; -}; -struct fm_softmute_tune_t -{ - fm_s32 rssi; // RSSI of current channel - fm_u16 freq; //current frequency - fm_bool valid; //current channel is valid(true) or not(false) -}; - -struct fm_rssi_req{ - uint16_t num; - uint16_t read_cnt; - struct fm_ch_rssi cr[26*16]; -}; - -struct fm_hw_info{ - int chip_id; //chip ID, eg. 6620 - int eco_ver; //chip ECO version, eg. E3 - int rom_ver; //FM DSP rom code version, eg. V2 - int patch_ver; //FM DSP patch version, eg. 1.11 - int reserve; -}; - -struct fm_search_threshold_t -{ - fm_s32 th_type;// 0, RSSI. 1,desense RSSI. 2,SMG. - fm_s32 th_val; //threshold value - fm_s32 reserve; -}; - -#if 1 -#define NEED_DEF_RDS 1 -#else -#define NEED_DEF_RDS 0 -#endif - -#if NEED_DEF_RDS -//For RDS feature -typedef struct -{ - uint8_t TP; - uint8_t TA; - uint8_t Music; - uint8_t Stereo; - uint8_t Artificial_Head; - uint8_t Compressed; - uint8_t Dynamic_PTY; - uint8_t Text_AB; - uint32_t flag_status; -}RDSFlag_Struct; - -typedef struct -{ - uint16_t Month; - uint16_t Day; - uint16_t Year; - uint16_t Hour; - uint16_t Minute; - uint8_t Local_Time_offset_signbit; - uint8_t Local_Time_offset_half_hour; -}CT_Struct; - -typedef struct -{ - int16_t AF_Num; - int16_t AF[2][25]; //100KHz - uint8_t Addr_Cnt; - uint8_t isMethod_A; - uint8_t isAFNum_Get; -}AF_Info; - -typedef struct -{ - uint8_t PS[4][8]; - uint8_t Addr_Cnt; -}PS_Info; - -typedef struct -{ - uint8_t TextData[4][64]; - uint8_t GetLength; - uint8_t isRTDisplay; - uint8_t TextLength; - uint8_t isTypeA; - uint8_t BufCnt; - uint16_t Addr_Cnt; -}RT_Info; - -struct rds_raw_data -{ - int dirty; //indicate if the data changed or not - int len; //the data len form chip - uint8_t data[146]; -}; - -struct rds_group_cnt -{ - unsigned int total; - unsigned int groupA[16]; //RDS groupA counter - unsigned int groupB[16]; //RDS groupB counter -}; - -enum rds_group_cnt_opcode -{ - RDS_GROUP_CNT_READ = 0, - RDS_GROUP_CNT_WRITE, - RDS_GROUP_CNT_RESET, - RDS_GROUP_CNT_MAX -}; - -struct rds_group_cnt_req -{ - int err; - enum rds_group_cnt_opcode op; - struct rds_group_cnt gc; -}; - -typedef struct -{ - CT_Struct CT; - RDSFlag_Struct RDSFlag; - uint16_t PI; - uint8_t Switch_TP; - uint8_t PTY; - AF_Info AF_Data; - uint8_t Radio_Page_Code; - uint16_t Program_Item_Number_Code; - AF_Info AFON_Data; - uint8_t Extend_Country_Code; - uint16_t Language_Code; - PS_Info PS_Data; - uint8_t PS_ON[8]; - uint16_t event_status; //will use RDSFlag_Struct RDSFlag->flag_status to check which event, is that ok? - RT_Info RT_Data; - uint8_t PAD1; //padding for data aligh - struct rds_group_cnt gc; -} RDSData_Struct; - - -//Need care the following definition. -//valid Rds Flag for notify -typedef enum { - RDS_FLAG_IS_TP = 0x0001, // Program is a traffic program - RDS_FLAG_IS_TA = 0x0002, // Program currently broadcasts a traffic ann. - RDS_FLAG_IS_MUSIC = 0x0004, // Program currently broadcasts music - RDS_FLAG_IS_STEREO = 0x0008, // Program is transmitted in stereo - RDS_FLAG_IS_ARTIFICIAL_HEAD = 0x0010, // Program is an artificial head recording - RDS_FLAG_IS_COMPRESSED = 0x0020, // Program content is compressed - RDS_FLAG_IS_DYNAMIC_PTY = 0x0040, // Program type can change - RDS_FLAG_TEXT_AB = 0x0080 // If this flag changes state, a new radio text string begins -} RdsFlag; - -typedef enum { - RDS_EVENT_FLAGS = 0x0001, // One of the RDS flags has changed state - RDS_EVENT_PI_CODE = 0x0002, // The program identification code has changed - RDS_EVENT_PTY_CODE = 0x0004, // The program type code has changed - RDS_EVENT_PROGRAMNAME = 0x0008, // The program name has changed - RDS_EVENT_UTCDATETIME = 0x0010, // A new UTC date/time is available - RDS_EVENT_LOCDATETIME = 0x0020, // A new local date/time is available - RDS_EVENT_LAST_RADIOTEXT = 0x0040, // A radio text string was completed - RDS_EVENT_AF = 0x0080, // Current Channel RF signal strength too weak, need do AF switch - RDS_EVENT_AF_LIST = 0x0100, // An alternative frequency list is ready - RDS_EVENT_AFON_LIST = 0x0200, // An alternative frequency list is ready - RDS_EVENT_TAON = 0x0400, // Other Network traffic announcement start - RDS_EVENT_TAON_OFF = 0x0800, // Other Network traffic announcement finished. - RDS_EVENT_RDS = 0x2000, // RDS Interrupt had arrived durint timer period - RDS_EVENT_NO_RDS = 0x4000, // RDS Interrupt not arrived durint timer period - RDS_EVENT_RDS_TIMER = 0x8000 // Timer for RDS Bler Check. ---- BLER block error rate -} RdsEvent; -#endif - -struct fm_rds_tx_parm { - uint8_t err; - uint16_t pi; - uint16_t ps[12]; // 4 ps - uint16_t other_rds[87]; // 0~29 other groups - uint8_t other_rds_cnt; // # of other group -}; - -typedef struct fm_rds_tx_req{ - unsigned char pty; // 0~31 integer - unsigned char rds_rbds; // 0:RDS, 1:RBDS - unsigned char dyn_pty; // 0:static, 1:dynamic - unsigned short pi_code; // 2-byte hex - unsigned char ps_buf[8]; // hex buf of PS - unsigned char ps_len; // length of PS, must be 0 / 8" - unsigned char af; // 0~204, 0:not used, 1~204:(87.5+0.1*af)MHz - unsigned char ah; // Artificial head, 0:no, 1:yes - unsigned char stereo; // 0:mono, 1:stereo - unsigned char compress; // Audio compress, 0:no, 1:yes - unsigned char tp; // traffic program, 0:no, 1:yes - unsigned char ta; // traffic announcement, 0:no, 1:yes - unsigned char speech; // 0:music, 1:speech -}fm_rds_tx_req; - -#define TX_SCAN_MAX 10 -#define TX_SCAN_MIN 1 -struct fm_tx_scan_parm { - uint8_t err; - uint8_t band; //87.6~108MHz - uint8_t space; - uint8_t hilo; - uint16_t freq; // start freq, if less than band min freq, then will use band min freq - uint8_t scandir; - uint16_t ScanTBL[TX_SCAN_MAX]; //need no less than the chip - uint16_t ScanTBLSize; //IN: desired size, OUT: scan result size -}; - -struct fm_gps_rtc_info{ - int err; //error number, 0: success, other: err code - int retryCnt; //GPS mnl can decide retry times - int ageThd; //GPS 3D fix time diff threshold - int driftThd; //GPS RTC drift threshold - struct timeval tvThd; //time value diff threshold - int age; //GPS 3D fix time diff - int drift; //GPS RTC drift - union{ - unsigned long stamp; //time stamp in jiffies - struct timeval tv; //time stamp value in RTC - }; - int flag; //rw flag -}; - -typedef enum -{ - FM_I2S_ON = 0, - FM_I2S_OFF, - FM_I2S_STATE_ERR -}fm_i2s_state_e; - -typedef enum -{ - FM_I2S_MASTER = 0, - FM_I2S_SLAVE, - FM_I2S_MODE_ERR -}fm_i2s_mode_e; - -typedef enum -{ - FM_I2S_32K = 0, - FM_I2S_44K, - FM_I2S_48K, - FM_I2S_SR_ERR -}fm_i2s_sample_e; - -struct fm_i2s_setting{ - int onoff; - int mode; - int sample; -}; - -typedef enum{ - FM_RX = 0, - FM_TX = 1 -}FM_PWR_T; - -typedef struct fm_i2s_info -{ - int status; /*0:FM_I2S_ON, 1:FM_I2S_OFF,2:error*/ - int mode; /*0:FM_I2S_MASTER, 1:FM_I2S_SLAVE,2:error*/ - int rate; /*0:FM_I2S_32K:32000,1:FM_I2S_44K:44100,2:FM_I2S_48K:48000,3:error*/ -} fm_i2s_info_t; - -typedef enum -{ - FM_AUD_ANALOG = 0, - FM_AUD_I2S = 1, - FM_AUD_MRGIF = 2, - FM_AUD_ERR -}fm_audio_path_e; - -typedef enum -{ - FM_I2S_PAD_CONN = 0, //sco fm chip: e.g.6627 - FM_I2S_PAD_IO = 1, //combo fm chip: e.g.6628 - FM_I2S_PAD_ERR -}fm_i2s_pad_sel_e; - -typedef struct fm_audio_info -{ - fm_audio_path_e aud_path; - fm_i2s_info_t i2s_info; - fm_i2s_pad_sel_e i2s_pad; -} fm_audio_info_t; - -struct fm_cqi -{ - int ch; - int rssi; - int reserve; -}; - -struct fm_cqi_req -{ - uint16_t ch_num; - int buf_size; - char *cqi_buf; -}; -typedef struct -{ - int freq; - int rssi; -}fm_desense_check_t; - -typedef struct -{ - uint16_t lower; // lower band, Eg, 7600 -> 76.0Mhz - uint16_t upper; // upper band, Eg, 10800 -> 108.0Mhz - int space; // 0x1: 50KHz, 0x2: 100Khz, 0x4: 200Khz - int cycle; // repeat times -}fm_full_cqi_log_t; - -typedef struct -{ - int which; - bool stat; -}fm_status_t; - -// ********** ***********FM IOCTL define start ******************************* - -#define FM_IOC_MAGIC 0xf5 // FIXME: any conflict? - -#define FM_IOCTL_POWERUP _IOWR(FM_IOC_MAGIC, 0, struct fm_tune_parm) -#define FM_IOCTL_POWERDOWN _IOWR(FM_IOC_MAGIC, 1, int32_t) -#define FM_IOCTL_TUNE _IOWR(FM_IOC_MAGIC, 2, struct fm_tune_parm) -#define FM_IOCTL_SEEK _IOWR(FM_IOC_MAGIC, 3, struct fm_seek_parm) -#define FM_IOCTL_SETVOL _IOWR(FM_IOC_MAGIC, 4, uint32_t) -#define FM_IOCTL_GETVOL _IOWR(FM_IOC_MAGIC, 5, uint32_t) -#define FM_IOCTL_MUTE _IOWR(FM_IOC_MAGIC, 6, uint32_t) -#define FM_IOCTL_GETRSSI _IOWR(FM_IOC_MAGIC, 7, int32_t) -#define FM_IOCTL_SCAN _IOWR(FM_IOC_MAGIC, 8, struct fm_scan_parm) -#define FM_IOCTL_STOP_SCAN _IO(FM_IOC_MAGIC, 9) - -//IOCTL and struct for test -#define FM_IOCTL_GETCHIPID _IOWR(FM_IOC_MAGIC, 10, uint16_t) -#define FM_IOCTL_EM_TEST _IOWR(FM_IOC_MAGIC, 11, struct fm_em_parm) -#define FM_IOCTL_RW_REG _IOWR(FM_IOC_MAGIC, 12, struct fm_ctl_parm) -#define FM_IOCTL_GETMONOSTERO _IOWR(FM_IOC_MAGIC, 13, uint16_t) -#define FM_IOCTL_GETCURPAMD _IOWR(FM_IOC_MAGIC, 14, uint16_t) -#define FM_IOCTL_GETGOODBCNT _IOWR(FM_IOC_MAGIC, 15, uint16_t) -#define FM_IOCTL_GETBADBNT _IOWR(FM_IOC_MAGIC, 16, uint16_t) -#define FM_IOCTL_GETBLERRATIO _IOWR(FM_IOC_MAGIC, 17, uint16_t) - -//IOCTL for RDS -#define FM_IOCTL_RDS_ONOFF _IOWR(FM_IOC_MAGIC, 18, uint16_t) -#define FM_IOCTL_RDS_SUPPORT _IOWR(FM_IOC_MAGIC, 19, int32_t) - -#define FM_IOCTL_POWERUP_TX _IOWR(FM_IOC_MAGIC, 20, struct fm_tune_parm) -#define FM_IOCTL_TUNE_TX _IOWR(FM_IOC_MAGIC, 21, struct fm_tune_parm) -#define FM_IOCTL_RDS_TX _IOWR(FM_IOC_MAGIC, 22, struct fm_rds_tx_parm) - -#define FM_IOCTL_RDS_SIM_DATA _IOWR(FM_IOC_MAGIC, 23, uint32_t) -#define FM_IOCTL_IS_FM_POWERED_UP _IOWR(FM_IOC_MAGIC, 24, uint32_t) - -//IOCTL for FM Tx -#define FM_IOCTL_TX_SUPPORT _IOWR(FM_IOC_MAGIC, 25, int32_t) -#define FM_IOCTL_RDSTX_SUPPORT _IOWR(FM_IOC_MAGIC, 26, int32_t) -#define FM_IOCTL_RDSTX_ENABLE _IOWR(FM_IOC_MAGIC, 27, int32_t) -#define FM_IOCTL_TX_SCAN _IOWR(FM_IOC_MAGIC, 28, struct fm_tx_scan_parm) - -//IOCTL for FM over BT -#define FM_IOCTL_OVER_BT_ENABLE _IOWR(FM_IOC_MAGIC, 29, int32_t) - -//IOCTL for FM ANTENNA SWITCH -#define FM_IOCTL_ANA_SWITCH _IOWR(FM_IOC_MAGIC, 30, int32_t) -#define FM_IOCTL_GETCAPARRAY _IOWR(FM_IOC_MAGIC, 31, int32_t) - -//IOCTL for FM compensation by GPS RTC -#define FM_IOCTL_GPS_RTC_DRIFT _IOWR(FM_IOC_MAGIC, 32, struct fm_gps_rtc_info) - -//IOCTL for FM I2S Setting -#define FM_IOCTL_I2S_SETTING _IOWR(FM_IOC_MAGIC, 33, struct fm_i2s_setting) - -#define FM_IOCTL_RDS_GROUPCNT _IOWR(FM_IOC_MAGIC, 34, struct rds_group_cnt_req) -#define FM_IOCTL_RDS_GET_LOG _IOWR(FM_IOC_MAGIC, 35, struct rds_raw_data) - -#define FM_IOCTL_SCAN_GETRSSI _IOWR(FM_IOC_MAGIC, 36, struct fm_rssi_req) -#define FM_IOCTL_SETMONOSTERO _IOWR(FM_IOC_MAGIC, 37, int32_t) -#define FM_IOCTL_RDS_BC_RST _IOWR(FM_IOC_MAGIC, 38, int32_t) -#define FM_IOCTL_CQI_GET _IOWR(FM_IOC_MAGIC, 39, struct fm_cqi_req) -#define FM_IOCTL_GET_HW_INFO _IOWR(FM_IOC_MAGIC, 40, struct fm_hw_info) -#define FM_IOCTL_GET_I2S_INFO _IOWR(FM_IOC_MAGIC, 41, fm_i2s_info_t) -#define FM_IOCTL_IS_DESE_CHAN _IOWR(FM_IOC_MAGIC, 42, int32_t) -#define FM_IOCTL_TOP_RDWR _IOWR(FM_IOC_MAGIC, 43, struct fm_top_rw_parm) -#define FM_IOCTL_HOST_RDWR _IOWR(FM_IOC_MAGIC, 44, struct fm_host_rw_parm) - -#define FM_IOCTL_PRE_SEARCH _IOWR(FM_IOC_MAGIC, 45,int32_t) -#define FM_IOCTL_RESTORE_SEARCH _IOWR(FM_IOC_MAGIC, 46,int32_t) - -#define FM_IOCTL_SET_SEARCH_THRESHOLD _IOWR(FM_IOC_MAGIC, 47, fm_search_threshold_t) - -#define FM_IOCTL_GET_AUDIO_INFO _IOWR(FM_IOC_MAGIC, 48, fm_audio_info_t) -#define FM_IOCTL_FM_SET_STATUS _IOWR(FM_IOC_MAGIC, 49, fm_status_t) -#define FM_IOCTL_FM_GET_STATUS _IOWR(FM_IOC_MAGIC, 50, fm_status_t) - -#define FM_IOCTL_SCAN_NEW _IOWR(FM_IOC_MAGIC, 60, struct fm_scan_t) -#define FM_IOCTL_SEEK_NEW _IOWR(FM_IOC_MAGIC, 61, struct fm_seek_t) -#define FM_IOCTL_TUNE_NEW _IOWR(FM_IOC_MAGIC, 62, struct fm_tune_t) - -#define FM_IOCTL_SOFT_MUTE_TUNE _IOWR(FM_IOC_MAGIC, 63, struct fm_softmute_tune_t)/*for soft mute tune*/ -#define FM_IOCTL_DESENSE_CHECK _IOWR(FM_IOC_MAGIC, 64, fm_desense_check_t) - -//IOCTL for EM -#define FM_IOCTL_FULL_CQI_LOG _IOWR(FM_IOC_MAGIC, 70, fm_full_cqi_log_t ) - -#define FM_IOCTL_DUMP_REG _IO(FM_IOC_MAGIC, 0xFF) - -// ********** ***********FM IOCTL define end ******************************* - - -enum group_idx { - mono=0, - stereo, - RSSI_threshold, - HCC_Enable, - PAMD_threshold, - Softmute_Enable, - De_emphasis, - HL_Side, - Demod_BW, - Dynamic_Limiter, - Softmute_Rate, - AFC_Enable, - Softmute_Level, - Analog_Volume, - GROUP_TOTAL_NUMS -}; - -enum item_idx { - Sblend_OFF=0, - Sblend_ON, - ITEM_TOTAL_NUMS -}; - -struct fm_ctl_parm { - uint8_t err; - uint8_t addr; - uint16_t val; - uint16_t rw_flag;//0:write, 1:read -}; - -struct fm_em_parm { - uint16_t group_idx; - uint16_t item_idx; - uint32_t item_value; -}; -#endif // __FM_H__ diff --git a/MediaTek/fmradiolibs/fmnative/fmr/fmr.h b/MediaTek/fmradiolibs/fmnative/fmr/fmr.h deleted file mode 100644 index fa28060..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/fmr.h +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FMR_H__ -#define __FMR_H__ - -#include <jni.h> -#include <utils/Log.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <termios.h> -#include <pthread.h> -#include <linux/serial.h> -#include "fm.h" -#include <signal.h> -#include <errno.h> -#include <dlfcn.h> -#include "../custom/fmlib_cust.h" - -#define FM_LIB_USE_XLOG - -#ifdef FM_LIB_USE_XLOG -#include <cutils/xlog.h> -#undef LOGV -#define LOGV(...) XLOGV(__VA_ARGS__) -#undef LOGD -#define LOGD(...) XLOGD(__VA_ARGS__) -#undef LOGI -#define LOGI(...) XLOGI(__VA_ARGS__) -#undef LOGW -#define LOGW(...) XLOGW(__VA_ARGS__) -#undef LOGE -#define LOGE(...) XLOGE(__VA_ARGS__) -#endif - -#define CUST_LIB_NAME "libfmcust.so" -#define AR1000_LIB_NAME "libfmar1000.so" -#define MT6616_LIB_NAME "libfmmt6616.so" -#define MT6620_LIB_NAME "libfmmt6620.so" -#define MT6626_LIB_NAME "libfmmt6626.so" -#define MT6628_LIB_NAME "libfmmt6628.so" -#define MT6627_LIB_NAME "libfmmt6627.so" -#define MT6580_LIB_NAME "libfmmt6580.so" -#define MT6630_LIB_NAME "libfmmt6630.so" -#define MT519X_LIB_NAME "libfmmt519x.so" -#define FM_DEV_NAME "/dev/fm" - -#define FM_RDS_PS_LEN 8 - -struct fm_cbk_tbl { - //Basic functions. - int (*open_dev)(const char *pname, int *fd); - int (*close_dev)(int fd); - int (*pwr_up)(int fd, int band, int freq); - int (*pwr_down)(int fd, int type); - int (*seek)(int fd, int *freq, int band, int dir, int lev); - int (*scan)(int fd, uint16_t *tbl, int *num, int band, int sort); - int (*scan_new)(int fd, void **ppdst, int upper, int lower, int space, void *para); - int (*seek_new)(int fd, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); - int (*tune_new)(int fd, int freq, int upper, int lower, int space, void *para); - int (*fastget_rssi)(int fd, struct fm_rssi_req *rssi_req); - int (*get_cqi)(int fd, int num, char *buf, int buf_len); - int (*stop_scan)(int fd); - int (*tune)(int fd, int freq, int band); - int (*set_mute)(int fd, int mute); - int (*is_fm_pwrup)(int fd, int *pwrup); - int (*fm_set_status)(int fd, int which, bool stat); - int (*fm_get_status)(int fd, int which, bool *stat); - int (*is_rdsrx_support)(int fd, int *supt); - int (*is_rdstx_support)(int fd, int *supt); - int (*turn_on_off_rds)(int fd, int onoff); - int (*get_chip_id)(int fd, int *chipid); - //FOR RDS RX. - int (*read_rds_data)(int fd, RDSData_Struct *rds, uint16_t *rds_status); - int (*get_pi)(int fd, RDSData_Struct *rds, uint16_t *pi); - int (*get_ps)(int fd, RDSData_Struct *rds, uint8_t **ps, int *ps_len); - int (*get_pty)(int fd, RDSData_Struct *rds, uint8_t *pty); - int (*get_rssi)(int fd, int *rssi); - int (*get_rt)(int fd, RDSData_Struct *rds, uint8_t **rt, int *rt_len); - int (*active_af)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *ret_freq); - int (*active_ta)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - int (*deactive_ta)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - //FOR RDS TX. - int (*is_tx_support)(int fd, int *supt); - int (*tx_pwrup)(int fd, int band, int freq); - int (*tx_tune)(int fd, int band, int freq); - int (*tx_scan)(int fd, int band, int start_freq, int dir, int *num, uint16_t *tbl); - int (*rdstx_onoff)(int fd, int onoff); - int (*rdstx)(int fd, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - // For FM new feature - //FM over BT - int (*fm_over_bt)(int fd, int onoff); - //FM long/short antenna switch - int (*ana_switch)(int fd, int antenna); - //For FM RX EM mode - int (*get_badratio)(int fd, int *badratio); - int (*get_stereomono)(int fd, int *stemono); - int (*set_stereomono)(int fd, int stemono); - int (*get_caparray)(int fd, int *caparray); - int (*get_hw_info)(int fd, struct fm_hw_info *info); - int (*is_dese_chan)(int fd, int freq); - int (*soft_mute_tune)(int fd,fm_softmute_tune_t * para); - int (*desense_check)(int fd,int freq,int rssi); - int (*set_search_threshold)(int fd, int th_idx,int th_val); - int (*full_cqi_logger)(int fd,fm_full_cqi_log_t *log_parm); - /*New search*/ - int (*pre_search)(int fd); - int (*restore_search)(int fd); -}; - -typedef int (*CUST_func_type)(struct CUST_cfg_ds *); -typedef void (*init_func_type)(struct fm_cbk_tbl *); - -struct fmr_ds { - int fd; - int err; - uint16_t cur_freq; - uint16_t backup_freq; - void *priv; - void *custom_handler; - struct CUST_cfg_ds cfg_data; - struct fm_cbk_tbl tbl; - CUST_func_type get_cfg; - void* init_handler; - init_func_type init_func; - RDSData_Struct rds; - struct fm_hw_info hw_info; - fm_bool scan_stop; -}; -/*#define fmr_fd (FMR_data.fd) -#define fmr_err (FMR_data.err) -#define fmr_chip (FMR_data.cfg_data.chip) -#define fmr_low_band (FMR_data.cfg_data.low_band) -#define fmr_high_band (FMR_data.cfg_data.high_band) -#define fmr_seek_space (FMR_data.cfg_data.seek_space) -#define fmr_max_scan_num (FMR_data.cfg_data.max_scan_num) -#define fmr_cbk_tbl (FMR_data.tbl) -#define fmr_cust_hdler (FMR_data.custom_handler) -#define fmr_get_cfg (FMR_data.get_cfg) - -extern struct fmr_ds FMR_data;*/ - -enum fmr_err_em { - ERR_SUCCESS = 1000, // kernel error begin at here - ERR_INVALID_BUF, - ERR_INVALID_PARA, - ERR_STP, - ERR_GET_MUTEX, - ERR_FW_NORES, - ERR_RDS_CRC, - ERR_INVALID_FD, // native error begin at here - ERR_UNSUPPORT_CHIP, - ERR_LD_LIB, - ERR_FIND_CUST_FNUC, - ERR_UNINIT, - ERR_NO_MORE_IDX, - ERR_RDS_NO_DATA, - ERR_UNSUPT_SHORTANA, - ERR_MAX -}; - -enum fmr_rds_onoff -{ - FMR_RDS_ON, - FMR_RDS_OFF, - FMR_MAX -}; - -typedef enum -{ - FM_LONG_ANA = 0, - FM_SHORT_ANA -}fm_antenna_type; - - -#define CQI_CH_NUM_MAX 255 -#define CQI_CH_NUM_MIN 0 - - -/****************** Function declaration ******************/ -//fmr_err.cpp -char *FMR_strerr(); -void FMR_seterr(int err); - -//fmr_core.cpp -int FMR_init(void); -int FMR_get_cfgs(int idx); -int FMR_open_dev(int idx); -int FMR_close_dev(int idx); -int FMR_pwr_up(int idx, int freq); -int FMR_pwr_down(int idx, int type); -int FMR_seek(int idx, int start_freq, int dir, int *ret_freq); -int FMR_scan(int idx, uint16_t *tbl, int *num); -int FMR_scan_new(int idx, uint16_t *scan_tbl, int *max_cnt, int upper, int lower, int space, void *para); -int FMR_seek_new(int idx, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); -int FMR_tune_new(int idx, int freq, int upper, int lower, int space, void *para); -int FMR_stop_scan(int idx); -int FMR_tune(int idx, int freq); -int FMR_set_mute(int idx, int mute); -int FMR_is_fm_pwrup(int idx, int *pwrup); -int FM_set_status(int idx, int which, bool stat); -int FM_get_status(int idx, int which, bool *stat); -int FMR_is_rdsrx_support(int idx, int *supt); -int FMR_turn_on_off_rds(int idx, int onoff); -int FMR_get_chip_id(int idx, int *chipid); -int FMR_read_rds_data(int idx, uint16_t *rds_status); -int FMR_get_pi(int idx, uint16_t *pi); -int FMR_get_ps(int idx, uint8_t **ps, int *ps_len); -int FMR_get_pty(int idx, uint8_t *pty); -int FMR_get_rssi(int idx, int *rssi); -int FMR_get_rt(int idx, uint8_t **rt, int *rt_len); -int FMR_active_af(int idx, uint16_t *ret_freq); -int FMR_active_ta(int idx, uint16_t *ret_freq); -int FMR_deactive_ta(int idx, uint16_t *ret_freq); - -int FMR_is_tx_support(int idx, int *supt); -int FMR_is_rdstx_support(int idx, int *supt); -int FMR_tx_pwrup(int idx, int freq); -int FMR_tx_tune(int idx, int freq); -int FMR_tx_scan(int idx, int start_freq, int dir, int *num, uint16_t *tbl); -int FMR_rdstx_onoff(int idx, int onoff); -int FMR_rdstx(int idx, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - -int FMR_fm_over_bt(int idx, int onoff); -int FMR_ana_switch(int idx, int antenna); -int FMR_get_badratio(int idx, int *badratio); -int FMR_get_stereomono(int idx, int *stemono); -int FMR_set_stereomono(int idx, int stemono); -int FMR_get_caparray(int idx, int *caparray); -int FMR_get_hw_info(int idx, int **info, int *info_len); -int FMR_Pre_Search(int idx); -int FMR_Restore_Search(int idx); -int FMR_EMSetTH(int idx, int th_idx, int th_val); -int FMR_EM_CQI_logger(int idx,uint16_t cycle); - - -//common part -int COM_open_dev(const char *pname, int *fd); -int COM_close_dev(int fd); -int COM_pwr_up(int fd, int band, int freq); -int COM_pwr_down(int fd, int type); -int COM_seek(int fd, int *freq, int band, int dir, int lev); -int COM_Soft_Mute_Tune(int fd,fm_softmute_tune_t * para); -//int COM_dese_chan_check(int fd, int freq); -int COM_hw_scan(int fd, uint16_t *tbl, int *num, int band, int sort); -int COM_hw_scan_new(int fd, void **ppdst, int upper, int lower, int space, void *para); -int COM_seek_new(int fd, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); -int COM_tune_new(int fd, int freq, int upper, int lower, int space, void *para); -int COM_fastget_rssi(int fd, struct fm_rssi_req *rssi_req); -int COM_get_cqi(int fd, int num, char *buf, int buf_len); -int COM_sw_scan(int fd, uint16_t *tbl, int *num, int band, int sort); -int COM_stop_scan(int fd); -int COM_tune(int fd, int freq, int band); -int COM_set_mute(int fd, int mute); -int COM_is_fm_pwrup(int fd, int *pwrup); -int COM_fm_set_status(int fd, int which, bool stat); -int COM_fm_get_status(int fd, int which, bool *stat); -int COM_is_rdsrx_support(int fd, int *supt); -int COM_is_rdstx_support(int fd, int *supt); -int COM_turn_on_off_rds(int fd, int onoff); -int COM_get_chip_id(int fd, int *chipid); -int COM_read_rds_data(int fd, RDSData_Struct *rds, uint16_t *rds_status); -int COM_get_pi(int fd, RDSData_Struct *rds, uint16_t *pi); -int COM_get_ps(int fd, RDSData_Struct *rds, uint8_t **ps, int *ps_len); -int COM_get_pty(int fd, RDSData_Struct *rds, uint8_t *pty); -int COM_get_rssi(int fd, int *rssi); -int COM_get_rt(int fd, RDSData_Struct *rds, uint8_t **rt, int *rt_len); -int COM_active_af(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *ret_freq); -int COM_active_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); -int COM_deactive_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - -int COM_is_tx_support(int fd, int *supt); -int COM_tx_support(int fd, int *supt); -int COM_tx_pwrup(int fd, int band, int freq); -int COM_tx_tune(int fd, int band, int freq); -int COM_tx_scan(int fd, int band, int start_freq, int dir, int *num, uint16_t *tbl); -int COM_rdstx_onoff(int fd, int onoff); -int COM_rdstx(int fd, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - -int COM_fm_over_bt(int fd, int onoff); -int COM_ana_switch(int fd, int antenna); -int COM_get_badratio(int fd, int *badratio); -int COM_get_stereomono(int fd, int *stemono); -int COM_set_stereomono(int fd, int stemono); -int COM_get_caparray(int fd, int *caparray); -int COM_get_hw_info(int fd, struct fm_hw_info *info); -int COM_is_dese_chan(int fd, int freq); -int COM_desense_check(int fd, int freq, int rssi); -int COM_pre_search(int fd); -int COM_restore_search(int fd); -int COM_set_search_threshold(int fd, int th_idx,int th_val); -int COM_full_cqi_logger(int fd, fm_full_cqi_log_t *log_parm); - -int bt_set_controller_force_sleep(int chip); - -#define FMR_ASSERT(a) { \ - if ((a) == NULL) { \ - LOGE("%s,invalid buf\n", __func__);\ - return -ERR_INVALID_BUF; \ - } \ - } -#endif diff --git a/MediaTek/fmradiolibs/fmnative/fmr/fmr.h~ b/MediaTek/fmradiolibs/fmnative/fmr/fmr.h~ deleted file mode 100644 index 669c346..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/fmr.h~ +++ /dev/null @@ -1,341 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#ifndef __FMR_H__ -#define __FMR_H__ - -#include <jni.h> -#include <utils/Log.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> -#include <termios.h> -#include <pthread.h> -#include <linux/serial.h> -#include <linux/fm.h> -#include <signal.h> -#include <errno.h> -#include <dlfcn.h> -#include "../custom/fmlib_cust.h" - -#define FM_LIB_USE_XLOG - -#ifdef FM_LIB_USE_XLOG -#include <cutils/xlog.h> -#undef LOGV -#define LOGV(...) XLOGV(__VA_ARGS__) -#undef LOGD -#define LOGD(...) XLOGD(__VA_ARGS__) -#undef LOGI -#define LOGI(...) XLOGI(__VA_ARGS__) -#undef LOGW -#define LOGW(...) XLOGW(__VA_ARGS__) -#undef LOGE -#define LOGE(...) XLOGE(__VA_ARGS__) -#endif - -#define CUST_LIB_NAME "libfmcust.so" -#define AR1000_LIB_NAME "libfmar1000.so" -#define MT6616_LIB_NAME "libfmmt6616.so" -#define MT6620_LIB_NAME "libfmmt6620.so" -#define MT6626_LIB_NAME "libfmmt6626.so" -#define MT6628_LIB_NAME "libfmmt6628.so" -#define MT6627_LIB_NAME "libfmmt6627.so" -#define MT6580_LIB_NAME "libfmmt6580.so" -#define MT6630_LIB_NAME "libfmmt6630.so" -#define MT519X_LIB_NAME "libfmmt519x.so" -#define FM_DEV_NAME "/dev/fm" - -#define FM_RDS_PS_LEN 8 - -struct fm_cbk_tbl { - //Basic functions. - int (*open_dev)(const char *pname, int *fd); - int (*close_dev)(int fd); - int (*pwr_up)(int fd, int band, int freq); - int (*pwr_down)(int fd, int type); - int (*seek)(int fd, int *freq, int band, int dir, int lev); - int (*scan)(int fd, uint16_t *tbl, int *num, int band, int sort); - int (*scan_new)(int fd, void **ppdst, int upper, int lower, int space, void *para); - int (*seek_new)(int fd, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); - int (*tune_new)(int fd, int freq, int upper, int lower, int space, void *para); - int (*fastget_rssi)(int fd, struct fm_rssi_req *rssi_req); - int (*get_cqi)(int fd, int num, char *buf, int buf_len); - int (*stop_scan)(int fd); - int (*tune)(int fd, int freq, int band); - int (*set_mute)(int fd, int mute); - int (*is_fm_pwrup)(int fd, int *pwrup); - int (*fm_set_status)(int fd, int which, bool stat); - int (*fm_get_status)(int fd, int which, bool *stat); - int (*is_rdsrx_support)(int fd, int *supt); - int (*is_rdstx_support)(int fd, int *supt); - int (*turn_on_off_rds)(int fd, int onoff); - int (*get_chip_id)(int fd, int *chipid); - //FOR RDS RX. - int (*read_rds_data)(int fd, RDSData_Struct *rds, uint16_t *rds_status); - int (*get_pi)(int fd, RDSData_Struct *rds, uint16_t *pi); - int (*get_ps)(int fd, RDSData_Struct *rds, uint8_t **ps, int *ps_len); - int (*get_pty)(int fd, RDSData_Struct *rds, uint8_t *pty); - int (*get_rssi)(int fd, int *rssi); - int (*get_rt)(int fd, RDSData_Struct *rds, uint8_t **rt, int *rt_len); - int (*active_af)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *ret_freq); - int (*active_ta)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - int (*deactive_ta)(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - //FOR RDS TX. - int (*is_tx_support)(int fd, int *supt); - int (*tx_pwrup)(int fd, int band, int freq); - int (*tx_tune)(int fd, int band, int freq); - int (*tx_scan)(int fd, int band, int start_freq, int dir, int *num, uint16_t *tbl); - int (*rdstx_onoff)(int fd, int onoff); - int (*rdstx)(int fd, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - // For FM new feature - //FM over BT - int (*fm_over_bt)(int fd, int onoff); - //FM long/short antenna switch - int (*ana_switch)(int fd, int antenna); - //For FM RX EM mode - int (*get_badratio)(int fd, int *badratio); - int (*get_stereomono)(int fd, int *stemono); - int (*set_stereomono)(int fd, int stemono); - int (*get_caparray)(int fd, int *caparray); - int (*get_hw_info)(int fd, struct fm_hw_info *info); - int (*is_dese_chan)(int fd, int freq); - int (*soft_mute_tune)(int fd,fm_softmute_tune_t * para); - int (*desense_check)(int fd,int freq,int rssi); - int (*set_search_threshold)(int fd, int th_idx,int th_val); - int (*full_cqi_logger)(int fd,fm_full_cqi_log_t *log_parm); - /*New search*/ - int (*pre_search)(int fd); - int (*restore_search)(int fd); -}; - -typedef int (*CUST_func_type)(struct CUST_cfg_ds *); -typedef void (*init_func_type)(struct fm_cbk_tbl *); - -struct fmr_ds { - int fd; - int err; - uint16_t cur_freq; - uint16_t backup_freq; - void *priv; - void *custom_handler; - struct CUST_cfg_ds cfg_data; - struct fm_cbk_tbl tbl; - CUST_func_type get_cfg; - void* init_handler; - init_func_type init_func; - RDSData_Struct rds; - struct fm_hw_info hw_info; - fm_bool scan_stop; -}; -/*#define fmr_fd (FMR_data.fd) -#define fmr_err (FMR_data.err) -#define fmr_chip (FMR_data.cfg_data.chip) -#define fmr_low_band (FMR_data.cfg_data.low_band) -#define fmr_high_band (FMR_data.cfg_data.high_band) -#define fmr_seek_space (FMR_data.cfg_data.seek_space) -#define fmr_max_scan_num (FMR_data.cfg_data.max_scan_num) -#define fmr_cbk_tbl (FMR_data.tbl) -#define fmr_cust_hdler (FMR_data.custom_handler) -#define fmr_get_cfg (FMR_data.get_cfg) - -extern struct fmr_ds FMR_data;*/ - -enum fmr_err_em { - ERR_SUCCESS = 1000, // kernel error begin at here - ERR_INVALID_BUF, - ERR_INVALID_PARA, - ERR_STP, - ERR_GET_MUTEX, - ERR_FW_NORES, - ERR_RDS_CRC, - ERR_INVALID_FD, // native error begin at here - ERR_UNSUPPORT_CHIP, - ERR_LD_LIB, - ERR_FIND_CUST_FNUC, - ERR_UNINIT, - ERR_NO_MORE_IDX, - ERR_RDS_NO_DATA, - ERR_UNSUPT_SHORTANA, - ERR_MAX -}; - -enum fmr_rds_onoff -{ - FMR_RDS_ON, - FMR_RDS_OFF, - FMR_MAX -}; - -typedef enum -{ - FM_LONG_ANA = 0, - FM_SHORT_ANA -}fm_antenna_type; - - -#define CQI_CH_NUM_MAX 255 -#define CQI_CH_NUM_MIN 0 - - -/****************** Function declaration ******************/ -//fmr_err.cpp -char *FMR_strerr(); -void FMR_seterr(int err); - -//fmr_core.cpp -int FMR_init(void); -int FMR_get_cfgs(int idx); -int FMR_open_dev(int idx); -int FMR_close_dev(int idx); -int FMR_pwr_up(int idx, int freq); -int FMR_pwr_down(int idx, int type); -int FMR_seek(int idx, int start_freq, int dir, int *ret_freq); -int FMR_scan(int idx, uint16_t *tbl, int *num); -int FMR_scan_new(int idx, uint16_t *scan_tbl, int *max_cnt, int upper, int lower, int space, void *para); -int FMR_seek_new(int idx, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); -int FMR_tune_new(int idx, int freq, int upper, int lower, int space, void *para); -int FMR_stop_scan(int idx); -int FMR_tune(int idx, int freq); -int FMR_set_mute(int idx, int mute); -int FMR_is_fm_pwrup(int idx, int *pwrup); -int FM_set_status(int idx, int which, bool stat); -int FM_get_status(int idx, int which, bool *stat); -int FMR_is_rdsrx_support(int idx, int *supt); -int FMR_turn_on_off_rds(int idx, int onoff); -int FMR_get_chip_id(int idx, int *chipid); -int FMR_read_rds_data(int idx, uint16_t *rds_status); -int FMR_get_pi(int idx, uint16_t *pi); -int FMR_get_ps(int idx, uint8_t **ps, int *ps_len); -int FMR_get_pty(int idx, uint8_t *pty); -int FMR_get_rssi(int idx, int *rssi); -int FMR_get_rt(int idx, uint8_t **rt, int *rt_len); -int FMR_active_af(int idx, uint16_t *ret_freq); -int FMR_active_ta(int idx, uint16_t *ret_freq); -int FMR_deactive_ta(int idx, uint16_t *ret_freq); - -int FMR_is_tx_support(int idx, int *supt); -int FMR_is_rdstx_support(int idx, int *supt); -int FMR_tx_pwrup(int idx, int freq); -int FMR_tx_tune(int idx, int freq); -int FMR_tx_scan(int idx, int start_freq, int dir, int *num, uint16_t *tbl); -int FMR_rdstx_onoff(int idx, int onoff); -int FMR_rdstx(int idx, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - -int FMR_fm_over_bt(int idx, int onoff); -int FMR_ana_switch(int idx, int antenna); -int FMR_get_badratio(int idx, int *badratio); -int FMR_get_stereomono(int idx, int *stemono); -int FMR_set_stereomono(int idx, int stemono); -int FMR_get_caparray(int idx, int *caparray); -int FMR_get_hw_info(int idx, int **info, int *info_len); -int FMR_Pre_Search(int idx); -int FMR_Restore_Search(int idx); -int FMR_EMSetTH(int idx, int th_idx, int th_val); -int FMR_EM_CQI_logger(int idx,uint16_t cycle); - - -//common part -int COM_open_dev(const char *pname, int *fd); -int COM_close_dev(int fd); -int COM_pwr_up(int fd, int band, int freq); -int COM_pwr_down(int fd, int type); -int COM_seek(int fd, int *freq, int band, int dir, int lev); -int COM_Soft_Mute_Tune(int fd,fm_softmute_tune_t * para); -//int COM_dese_chan_check(int fd, int freq); -int COM_hw_scan(int fd, uint16_t *tbl, int *num, int band, int sort); -int COM_hw_scan_new(int fd, void **ppdst, int upper, int lower, int space, void *para); -int COM_seek_new(int fd, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para); -int COM_tune_new(int fd, int freq, int upper, int lower, int space, void *para); -int COM_fastget_rssi(int fd, struct fm_rssi_req *rssi_req); -int COM_get_cqi(int fd, int num, char *buf, int buf_len); -int COM_sw_scan(int fd, uint16_t *tbl, int *num, int band, int sort); -int COM_stop_scan(int fd); -int COM_tune(int fd, int freq, int band); -int COM_set_mute(int fd, int mute); -int COM_is_fm_pwrup(int fd, int *pwrup); -int COM_fm_set_status(int fd, int which, bool stat); -int COM_fm_get_status(int fd, int which, bool *stat); -int COM_is_rdsrx_support(int fd, int *supt); -int COM_is_rdstx_support(int fd, int *supt); -int COM_turn_on_off_rds(int fd, int onoff); -int COM_get_chip_id(int fd, int *chipid); -int COM_read_rds_data(int fd, RDSData_Struct *rds, uint16_t *rds_status); -int COM_get_pi(int fd, RDSData_Struct *rds, uint16_t *pi); -int COM_get_ps(int fd, RDSData_Struct *rds, uint8_t **ps, int *ps_len); -int COM_get_pty(int fd, RDSData_Struct *rds, uint8_t *pty); -int COM_get_rssi(int fd, int *rssi); -int COM_get_rt(int fd, RDSData_Struct *rds, uint8_t **rt, int *rt_len); -int COM_active_af(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *ret_freq); -int COM_active_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); -int COM_deactive_ta(int fd, RDSData_Struct *rds, int band, uint16_t cur_freq, uint16_t *backup_freq, uint16_t *ret_freq); - -int COM_is_tx_support(int fd, int *supt); -int COM_tx_support(int fd, int *supt); -int COM_tx_pwrup(int fd, int band, int freq); -int COM_tx_tune(int fd, int band, int freq); -int COM_tx_scan(int fd, int band, int start_freq, int dir, int *num, uint16_t *tbl); -int COM_rdstx_onoff(int fd, int onoff); -int COM_rdstx(int fd, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt); - -int COM_fm_over_bt(int fd, int onoff); -int COM_ana_switch(int fd, int antenna); -int COM_get_badratio(int fd, int *badratio); -int COM_get_stereomono(int fd, int *stemono); -int COM_set_stereomono(int fd, int stemono); -int COM_get_caparray(int fd, int *caparray); -int COM_get_hw_info(int fd, struct fm_hw_info *info); -int COM_is_dese_chan(int fd, int freq); -int COM_desense_check(int fd, int freq, int rssi); -int COM_pre_search(int fd); -int COM_restore_search(int fd); -int COM_set_search_threshold(int fd, int th_idx,int th_val); -int COM_full_cqi_logger(int fd, fm_full_cqi_log_t *log_parm); - -int bt_set_controller_force_sleep(int chip); - -#define FMR_ASSERT(a) { \ - if ((a) == NULL) { \ - LOGE("%s,invalid buf\n", __func__);\ - return -ERR_INVALID_BUF; \ - } \ - } -#endif diff --git a/MediaTek/fmradiolibs/fmnative/fmr/fmr_core.cpp b/MediaTek/fmradiolibs/fmnative/fmr/fmr_core.cpp deleted file mode 100644 index 53bf74f..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/fmr_core.cpp +++ /dev/null @@ -1,2176 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -/******************************************************************* - * FM JNI core - * return -1 if error occured. else return needed value. - * if return type is char *, return NULL if error occured. - * Do NOT return value access paramater. - * - * FM JNI core should be independent from lower layer, that means - * there should be no low layer dependent data struct in FM JNI core - * - * Naming rule: FMR_n(paramter Micro), FMR_v(functions), fmr_n(global param) - * pfmr_n(global paramter pointer) - * - *******************************************************************/ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_CORE" - -#define FMR_MAX_IDX 1 - -struct fmr_ds fmr_data; -struct fmr_ds *pfmr_data[FMR_MAX_IDX] = {0}; -#define FMR_fd(idx) ((pfmr_data[idx])->fd) -#define FMR_err(idx) ((pfmr_data[idx])->err) -#define FMR_chip(idx) ((pfmr_data[idx])->cfg_data.chip) -#define FMR_low_band(idx) ((pfmr_data[idx])->cfg_data.low_band) -#define FMR_high_band(idx) ((pfmr_data[idx])->cfg_data.high_band) -#define FMR_seek_space(idx) ((pfmr_data[idx])->cfg_data.seek_space) -#define FMR_max_scan_num(idx) ((pfmr_data[idx])->cfg_data.max_scan_num) -#define FMR_cbk_tbl(idx) ((pfmr_data[idx])->tbl) -#define FMR_cust_hdler(idx) ((pfmr_data[idx])->custom_handler) -#define FMR_get_cfg(idx) ((pfmr_data[idx])->get_cfg) - -int FMR_get_cfgs(int idx) -{ - int ret = -1; - FMR_cust_hdler(idx) = NULL; - FMR_get_cfg(idx) = NULL; - - FMR_cust_hdler(idx) = dlopen(CUST_LIB_NAME, RTLD_NOW); - if (FMR_cust_hdler(idx) == NULL) { - LOGE("%s failed, %s\n", __FUNCTION__, dlerror()); - //FMR_seterr(ERR_LD_LIB); - } else { - *(void **) (&FMR_get_cfg(idx)) = dlsym(FMR_cust_hdler(idx), "CUST_get_cfg"); - if (FMR_get_cfg(idx) == NULL) { - LOGE("%s failed, %s\n", __FUNCTION__, dlerror()); - //FMR_seterr(ERR_FIND_CUST_FNUC); - } else { - LOGI("Go to run cust function\n"); - (*FMR_get_cfg(idx))(&(pfmr_data[idx]->cfg_data)); - LOGI("OK\n"); - ret = 0; - } - //dlclose(FMR_cust_hdler(idx)); - FMR_cust_hdler(idx) = NULL; - FMR_get_cfg(idx) = NULL; - } - LOGI("%s succefully. chip: 0x%x, lband: %d, hband: %d, seek_space: %d, max_scan_num: %d\n", __FUNCTION__, FMR_chip(idx), FMR_low_band(idx), FMR_high_band(idx), FMR_seek_space(idx), FMR_max_scan_num(idx)); - - return ret; -} - -int FMR_chk_cfg_data(int idx) -{ - //TODO Need check? how to check? - return 0; -} - -static void sig_alarm(int sig) -{ - LOGI("+++Receive sig %d\n", sig); - return; -} - -int FMR_init() -{ - int idx; - int ret = 0; - //signal(4, sig_alarm); - - for (idx=0;idx<FMR_MAX_IDX;idx++) { - if (pfmr_data[idx] == NULL) { - break; - } - } - LOGI("FMR idx = %d\n", idx); - if (idx == FMR_MAX_IDX) { - //FMR_seterr(ERR_NO_MORE_IDX); - return -1; - } - - /*The best way here is to call malloc to alloc mem for each idx,but - I do not know where to release it, so use static global param instead*/ - pfmr_data[idx] = &fmr_data; - memset(pfmr_data[idx], 0, sizeof(struct fmr_ds)); - - if (FMR_get_cfgs(idx) < 0) { - LOGI("FMR_get_cfgs failed\n"); - goto fail; - } - - if (FMR_chk_cfg_data(idx) < 0) { - LOGI("FMR_chk_cfg_data failed\n"); - goto fail; - } - - switch (FMR_chip(idx)) { - case FM_CHIP_AR1000: - pfmr_data[idx]->init_handler = dlopen(AR1000_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL) { - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_LD_LIB); - } else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "AR1000_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_FIND_CUST_FNUC); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - //AR1000_init(&FMR_cbk_tbl(idx)); - break; - case FM_CHIP_MT6616: - pfmr_data[idx]->init_handler = dlopen(MT6616_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL) { - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_LD_LIB); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6616_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_FIND_CUST_FNUC); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - //MT6616_init(&FMR_cbk_tbl(idx)); - break; - case FM_CHIP_MT6620: - pfmr_data[idx]->init_handler = dlopen(MT6620_LIB_NAME, RTLD_NOW); - LOGI("mt6620[init_handler=%p]\n", pfmr_data[idx]->init_handler); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_LD_LIB); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6620_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_FIND_CUST_FNUC); - }else{ - LOGI("Go to run 6620 init\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - //MT6620_init(&FMR_cbk_tbl(idx)); - break; - case FM_CHIP_MT6626: - pfmr_data[idx]->init_handler = dlopen(MT6626_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL) { - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6626_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - break; - case FM_CHIP_MT6628: - pfmr_data[idx]->init_handler = dlopen(MT6628_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6628_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - break; - case FM_CHIP_MT6627: - { - pfmr_data[idx]->init_handler = dlopen(MT6627_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6627_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - break; - } - case FM_CHIP_MT6580: - { - pfmr_data[idx]->init_handler = dlopen(MT6580_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6580_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - break; - } - case FM_CHIP_MT6630: - { - pfmr_data[idx]->init_handler = dlopen(MT6630_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT6630_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - break; - } - case FM_CHIP_MT5192: - case FM_CHIP_MT5193: - pfmr_data[idx]->init_handler = dlopen(MT519X_LIB_NAME, RTLD_NOW); - if (pfmr_data[idx]->init_handler == NULL){ - LOGE("%s init_handler error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_LD_LIB); - }else{ - *(void **) (&pfmr_data[idx]->init_func) = dlsym(pfmr_data[idx]->init_handler, "MT519X_init"); - if (pfmr_data[idx]->init_func == NULL){ - LOGE("%s init_func error, %s\n", __func__, dlerror()); - //FMR_seterr(ERR_FIND_CUST_FNUC); - }else{ - LOGI("Go to run init function\n"); - (*pfmr_data[idx]->init_func)(&(pfmr_data[idx]->tbl)); - LOGI("OK\n"); - ret = 0; - } - } - //MT5192_init(&FMR_cbk_tbl(idx)); - break; - default: - //FMR_seterr(ERR_UNSUPPORT_CHIP); - LOGI("Unsupported Chip: 0x%x", FMR_chip(idx)); - goto fail; - } - return idx; - -fail: - pfmr_data[idx] = NULL; - - return -1; -} - -int FMR_open_dev(int idx) -{ - int ret = 0; - int real_chip; - - FMR_ASSERT(FMR_cbk_tbl(idx).open_dev); - - ret = FMR_cbk_tbl(idx).open_dev(FM_DEV_NAME, &FMR_fd(idx)); - if (ret || FMR_fd(idx) < 0) { - LOGE("%s failed, [fd=%d]\n", __func__, FMR_fd(idx)); - return ret; - } - - //Check if customer's cfg matchs driver. - ret = FMR_get_chip_id(idx, &real_chip); - if (FMR_chip(idx) != real_chip) { - LOGE("%s, Chip config error. 0x%x\n", __func__, real_chip); - ret = FMR_cbk_tbl(idx).close_dev(FMR_fd(idx)); - return ret; - } - - LOGD("%s, [fd=%d] [chipid=0x%x] [ret=%d]\n", __func__, FMR_fd(idx), real_chip, ret); - return ret; -} - -int FMR_close_dev(int idx) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).close_dev); - ret = FMR_cbk_tbl(idx).close_dev(FMR_fd(idx)); - LOGD("%s, [fd=%d] [ret=%d]\n", __func__, FMR_fd(idx), ret); - return ret; -} - -int FMR_pwr_up(int idx, int freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).pwr_up); - - LOGI("%s,[freq=%d]\n", __func__, freq); - if (freq < fmr_data.cfg_data.low_band || freq > fmr_data.cfg_data.high_band) { - LOGE("%s error freq: %d\n", __func__, freq); - ret = -ERR_INVALID_PARA; - return ret; - } - ret = FMR_cbk_tbl(idx).pwr_up(FMR_fd(idx), fmr_data.cfg_data.band, freq); - if (ret) { - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - fmr_data.cur_freq = freq; - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_pwr_down(int idx, int type) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).pwr_down); - ret = FMR_cbk_tbl(idx).pwr_down(FMR_fd(idx), type); - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_chip_id(int idx, int *chipid) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_chip_id); - FMR_ASSERT(chipid); - - ret = FMR_cbk_tbl(idx).get_chip_id(FMR_fd(idx), chipid); - if (ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - *chipid = -1; - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_rssi(int idx, int *rssi) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_rssi); - FMR_ASSERT(rssi); - - ret = FMR_cbk_tbl(idx).get_rssi(FMR_fd(idx), rssi); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - *rssi = -1; - } - LOGD("%s, [rssi=%d] [ret=%d]\n", __func__, *rssi, ret); - return ret; -} - -int FMR_get_ps(int idx, uint8_t **ps, int *ps_len) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_ps); - FMR_ASSERT(ps); - FMR_ASSERT(ps_len); - ret = FMR_cbk_tbl(idx).get_ps(FMR_fd(idx), &fmr_data.rds, ps, ps_len); - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_rt(int idx, uint8_t **rt, int *rt_len) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_rt); - FMR_ASSERT(rt); - FMR_ASSERT(rt_len); - - ret = FMR_cbk_tbl(idx).get_rt(FMR_fd(idx), &fmr_data.rds, rt, rt_len); - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_pi(int idx, uint16_t *pi) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_pi); - - ret = FMR_cbk_tbl(idx).get_pi(FMR_fd(idx), &fmr_data.rds, pi); - if (ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - *pi = -1; - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_pty(int idx, uint8_t *pty) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_pty); - - ret = FMR_cbk_tbl(idx).get_pty(FMR_fd(idx), &fmr_data.rds, pty); - if (ret){ - *pty = -1; - LOGI("%s failed, %s\n", __func__, FMR_strerr()); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_tune(int idx, int freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).tune); - - ret = FMR_cbk_tbl(idx).tune(FMR_fd(idx), freq, fmr_data.cfg_data.band); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - fmr_data.cur_freq = freq; - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, freq, ret); - return ret; -} - -#if FMR_SOFT_MUTE_TUEN_SCAN -/*return: fm_true: desense, fm_false: not desene channel*/ -fm_bool FMR_DensenseDetect(fm_s32 idx,fm_u16 ChannelNo,fm_s32 RSSI) -{ - fm_u8 bDesenseCh = 0; - - bDesenseCh = FMR_cbk_tbl(idx).desense_check(FMR_fd(idx),ChannelNo,RSSI); - if(bDesenseCh == 1) - { - return fm_true; - } - return fm_false; -} -fm_bool FMR_SevereDensense(fm_u16 ChannelNo,fm_s32 RSSI) -{ - fm_s32 i=0,j=0; - struct fm_fake_channel_t *chan_info = fmr_data.cfg_data.fake_chan; - -#ifndef MTK_FM_50KHZ_SUPPORT - ChannelNo /= 10; -#endif - for(i=0; i<chan_info->size; i++) - { - if(ChannelNo == chan_info->chan[i].freq) - { - //if(RSSI < FM_SEVERE_RSSI_TH) - if(RSSI < chan_info->chan[i].rssi_th) - { - LOGI(" SevereDensense[%d] RSSI[%d]\n", ChannelNo,RSSI); - return fm_true; - } - else - { - break; - } - } - } - return fm_false; -} -#if (FMR_NOISE_FLOORT_DETECT==1) -/*return TRUE:get noise floor freq*/ -fm_bool FMR_NoiseFloorDetect(fm_bool *rF,fm_s32 rssi,fm_s32 *F_rssi) -{ - if(rF[0]==fm_true) - { - if(rF[1]==fm_true) - { - F_rssi[2]=rssi; - rF[2]=fm_true; - return fm_true; - } - else - { - F_rssi[1]=rssi; - rF[1]=fm_true; - } - } - else - { - F_rssi[0]=rssi; - rF[0]=fm_true; - } - return fm_false; -} -#endif - -/*check the cur_freq->freq is valid or not -return fm_true : need check cur_freq->valid - fm_false: check faild, should stop seek -*/ -static fm_bool FMR_Seek_TuneCheck(int idx,fm_softmute_tune_t *cur_freq) -{ - int ret=0; - if(fmr_data.scan_stop == fm_true) - { - ret = FMR_tune(idx,fmr_data.cur_freq); - LOGI("seek stop!!! tune ret=%d",ret); - return fm_false; - } - ret = FMR_cbk_tbl(idx).soft_mute_tune(FMR_fd(idx),cur_freq); - if(ret) - { - LOGE("soft mute tune, failed:[%d]\n",ret); - cur_freq->valid = fm_false; - return fm_true; - } - if(cur_freq->valid == fm_true)/*get valid channel*/ - { - if(FMR_DensenseDetect(idx,cur_freq->freq,cur_freq->rssi)==fm_true) - { - LOGI("desense channel detected:[%d] \n", cur_freq->freq); - cur_freq->valid = fm_false; - return fm_true; - } - if(FMR_SevereDensense(cur_freq->freq,cur_freq->rssi)==fm_true) - { - LOGI("sever desense channel detected:[%d] \n", cur_freq->freq); - cur_freq->valid = fm_false; - return fm_true; - } - LOGI("seek result freq:[%d] \n", cur_freq->freq); - } - return fm_true; -} -/* -check more 2 freq, curfreq: current freq, seek_dir: 1,forward. 0,backword -*/ -static int FMR_Seek_More(int idx,fm_softmute_tune_t *validfreq,fm_u8 seek_dir,fm_u8 step,fm_u16 min_freq,fm_u16 max_freq) -{ - fm_s32 i; - fm_softmute_tune_t cur_freq; - cur_freq.freq = validfreq->freq; - - for(i=0; i<2; i++) - { - if(seek_dir)//forward - { - if(cur_freq.freq + step > max_freq) - { - return 0; - } - cur_freq.freq += step; - } - else//backward - { - if(cur_freq.freq - step < min_freq) - { - return 0; - } - cur_freq.freq -= step; - } - if(FMR_Seek_TuneCheck(idx,&cur_freq) == fm_true) - { - if(cur_freq.valid == fm_true) - { - if(cur_freq.rssi > validfreq->rssi) - { - validfreq->freq = cur_freq.freq; - validfreq->rssi = cur_freq.rssi; - LOGI("seek cover last by freq=%d",cur_freq.freq); - } - } - } - else - { - return -1; - } - } - return 0; -} - -/*check the a valid channel -return -1 : seek fail - 0: seek success -*/ -int FMR_seek_Channel(int idx, int start_freq, int min_freq, int max_freq, int band_channel_no, int seek_space, int dir, int *ret_freq, int *rssi_tmp) -{ - fm_s32 i, ret = 0; - fm_softmute_tune_t cur_freq; - - if(dir==1)/*forward*/ - { - for (i=((start_freq-min_freq)/seek_space+1); i<band_channel_no; i++) - { - cur_freq.freq = min_freq + seek_space*i; - LOGI("i=%d, freq=%d-----1",i,cur_freq.freq); - ret = FMR_Seek_TuneCheck(idx,&cur_freq); - if(ret == fm_false) - { - return -1; - } - else - { - if(cur_freq.valid == fm_false) - { - continue; - } - else - { - if(FMR_Seek_More(idx,&cur_freq,dir,seek_space,min_freq,max_freq) == 0) - { - *ret_freq = cur_freq.freq; - *rssi_tmp = cur_freq.rssi; - return 0; - } - else - { - return -1; - } - } - } - } - for (i=0; i<((start_freq-min_freq)/seek_space); i++) - { - cur_freq.freq = min_freq + seek_space*i; - LOGI("i=%d, freq=%d-----2",i,cur_freq.freq); - ret = FMR_Seek_TuneCheck(idx,&cur_freq); - if(ret == fm_false) - { - return -1; - } - else - { - if(cur_freq.valid == fm_false) - { - continue; - } - else - { - if(FMR_Seek_More(idx,&cur_freq,dir,seek_space,min_freq,max_freq) == 0) - { - *ret_freq = cur_freq.freq; - *rssi_tmp = cur_freq.rssi; - return 0; - } - else - { - return -1; - } - } - } - } - } - else/*backward*/ - { - for (i=((start_freq-min_freq)/seek_space-1); i>=0; i--) - { - cur_freq.freq = min_freq + seek_space*i; - LOGI("i=%d, freq=%d-----3",i,cur_freq.freq); - ret = FMR_Seek_TuneCheck(idx,&cur_freq); - if(ret == fm_false) - { - return -1; - } - else - { - if(cur_freq.valid == fm_false) - { - continue; - } - else - { - if(FMR_Seek_More(idx,&cur_freq,dir,seek_space,min_freq,max_freq) == 0) - { - *ret_freq = cur_freq.freq; - *rssi_tmp = cur_freq.rssi; - return 0; - } - else - { - return -1; - } - } - } - } - for (i=(band_channel_no-1); i>((start_freq-min_freq)/seek_space); i--) - { - cur_freq.freq = min_freq + seek_space*i; - LOGI("i=%d, freq=%d-----4",i,cur_freq.freq); - ret = FMR_Seek_TuneCheck(idx,&cur_freq); - if(ret == fm_false) - { - return -1; - } - else - { - if(cur_freq.valid == fm_false) - { - continue; - } - else - { - if(FMR_Seek_More(idx,&cur_freq,dir,seek_space,min_freq,max_freq) == 0) - { - *ret_freq = cur_freq.freq; - *rssi_tmp = cur_freq.rssi; - return 0; - } - else - { - return -1; - } - } - } - } - } - - *ret_freq = start_freq; - return 0; -} - -int FMR_seek(int idx, int start_freq, int dir, int *ret_freq) -{ - fm_s32 ret=0,i,j; - fm_softmute_tune_t cur_freq; - fm_s32 band_channel_no=0; - fm_u8 seek_space=10; - fm_u16 min_freq,max_freq; - int rssi; - - if ((start_freq < 7600) || (start_freq > 10800)) /*need replace by macro*/ - { - LOGE("%s error start_freq: %d\n", __func__, start_freq); - return -ERR_INVALID_PARA; - } - - //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ - if(fmr_data.cfg_data.seek_space == 5) - { - seek_space=5; - } - else if (fmr_data.cfg_data.seek_space == 2) - { - seek_space=20; - } - else - { - seek_space=10; - } - if (fmr_data.cfg_data.band == FM_BAND_JAPAN)// Japan band 76MHz ~ 90MHz - { - band_channel_no = (9600-7600)/seek_space + 1; - min_freq = 7600; - max_freq = 9600; - } - else if (fmr_data.cfg_data.band == FM_BAND_JAPANW)// Japan wideband 76MHZ ~ 108MHz - { - band_channel_no = (10800-7600)/seek_space + 1; - min_freq = 7600; - max_freq = 10800; - } - else// US/Europe band 87.5MHz ~ 108MHz (DEFAULT) - { - band_channel_no = (10800-8750)/seek_space + 1; - min_freq = 8750; - max_freq = 10800; - } - - fmr_data.scan_stop = fm_false; - LOGD("seek start freq %d band_channel_no=[%d], seek_space=%d band[%d - %d] dir=%d\n", start_freq, band_channel_no,seek_space,min_freq,max_freq,dir); - - ret = FMR_seek_Channel(idx, start_freq, min_freq, max_freq, band_channel_no, seek_space, dir, ret_freq, &rssi); - - return ret; -} -#else -int FMR_seek(int idx, int start_freq, int dir, int *ret_freq) -{ - int ret = 0; - int freq = start_freq; - int rssi; - struct fm_fake_channel_t *chan_info = fmr_data.cfg_data.fake_chan; - struct fm_fake_channel *channle = NULL; - int j; - - FMR_ASSERT(FMR_cbk_tbl(idx).seek); - FMR_ASSERT(ret_freq); - - *ret_freq = 0; - - if ((start_freq < fmr_data.cfg_data.low_band) || (start_freq > fmr_data.cfg_data.high_band)) { - LOGE("%s error start_freq: %d\n", __func__, start_freq); - return -ERR_INVALID_PARA; - } - -redo: - LOGD("freq %d\n", freq); - ret = FMR_cbk_tbl(idx).seek(FMR_fd(idx), - &freq, - fmr_data.cfg_data.band, - dir, - fmr_data.cfg_data.seek_lev); - - if (ret < 0) { - //Here we just need to return the start_freq. - *ret_freq = start_freq; - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - goto out; - } - - if ((FMR_cbk_tbl(idx).is_dese_chan) && (FMR_cbk_tbl(idx).is_dese_chan(FMR_fd(idx), freq))) { - FMR_cbk_tbl(idx).get_rssi(FMR_fd(idx), &rssi); - - if (rssi < fmr_data.cfg_data.rssi_th_l2) { - // an invalid channel - LOGW("cur rssi %d < TH_L2, delete %d \n", rssi, freq); - - if (dir) { - freq++; - freq = (freq > fmr_data.cfg_data.high_band) ? fmr_data.cfg_data.low_band : freq; - } else { - freq--; - freq = (freq < fmr_data.cfg_data.low_band) ? fmr_data.cfg_data.high_band : freq; - } - - FMR_cbk_tbl(idx).tune(FMR_fd(idx), freq, fmr_data.cfg_data.band); - LOGD("restart with %d\n", freq); - goto redo; - } - } - - if (chan_info && chan_info->chan) { - channle = chan_info->chan; - - for (j = 0; j < chan_info->size; j++) { - if (freq == channle[j].freq) { - FMR_cbk_tbl(idx).get_rssi(FMR_fd(idx), &rssi); - - if (rssi < channle[j].rssi_th) { - // an invalid channel - LOGW("cur rssi %d < TH_L3, delete %d \n", rssi, freq); - - if (dir) { - freq++; - freq = (freq > fmr_data.cfg_data.high_band) ? fmr_data.cfg_data.low_band : freq; - } else { - freq--; - freq = (freq < fmr_data.cfg_data.low_band) ? fmr_data.cfg_data.high_band : freq; - } - - FMR_cbk_tbl(idx).tune(FMR_fd(idx), freq, fmr_data.cfg_data.band); - LOGD("restart with %d\n", freq); - goto redo; - } - } - } - *ret_freq = freq; - fmr_data.cur_freq = freq; - } - -out: - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, freq, ret); - return ret; -} -#endif - -int FMR_set_mute(int idx, int mute) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).set_mute) - - if ((mute < 0) || (mute > 1)){ - LOGE("%s error param mute: %d\n", __func__, mute); - } - - ret = FMR_cbk_tbl(idx).set_mute(FMR_fd(idx), mute); - if (ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - LOGD("%s, [mute=%d] [ret=%d]\n", __func__, mute, ret); - return ret; -} - -int FMR_is_fm_pwrup(int idx, int *pwrup) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).is_fm_pwrup); - FMR_ASSERT(pwrup); - - ret = FMR_cbk_tbl(idx).is_fm_pwrup(FMR_fd(idx), pwrup); - if (ret){ - *pwrup = 0; - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [pwrup=%d] [ret=%d]\n", __func__, *pwrup, ret); - return ret; -} -int FM_set_status(int idx, int which, bool stat) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).fm_set_status); - - ret = FMR_cbk_tbl(idx).fm_set_status(FMR_fd(idx), which, stat); - - if(ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [which=%d] [stat=%d] [ret=%d]\n", __func__, which, stat, ret); - return ret; -} - -int FM_get_status(int idx, int which, bool *stat) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).fm_get_status); - - ret = FMR_cbk_tbl(idx).fm_get_status(FMR_fd(idx), which, stat); - - if(ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [which=%d] [stat=%d] [ret=%d]\n", __func__, which, *stat, ret); - return ret; -} - -int FMR_is_rdsrx_support(int idx, int *supt) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).is_rdsrx_support); - FMR_ASSERT(supt); - - ret = FMR_cbk_tbl(idx).is_rdsrx_support(FMR_fd(idx), supt); - if (ret){ - *supt = 0; - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [supt=%d] [ret=%d]\n", __func__, *supt, ret); - return ret; -} -int FMR_Pre_Search(int idx) -{ - //avoid scan stop flag clear if stop cmd send before pre-search finish - fmr_data.scan_stop = fm_false; -#if FMR_SOFT_MUTE_TUEN_SCAN - FMR_ASSERT(FMR_cbk_tbl(idx).pre_search); - FMR_cbk_tbl(idx).pre_search(FMR_fd(idx)); - return 0; -#else - return 0; -#endif -} -int FMR_Restore_Search(int idx) -{ -#if FMR_SOFT_MUTE_TUEN_SCAN - FMR_ASSERT(FMR_cbk_tbl(idx).restore_search); - FMR_cbk_tbl(idx).restore_search(FMR_fd(idx)); - return 0; -#else - return 0; -#endif -} - -#if FMR_SOFT_MUTE_TUEN_SCAN -int FMR_scan_Channels(int idx, uint16_t *scan_tbl, int *max_cnt, fm_s32 band_channel_no, fm_u16 Start_Freq, fm_u8 seek_space, fm_u8 NF_Space) -{ - fm_s32 ret=0,Num=0,i,j; - fm_u32 ChannelNo=0; - fm_softmute_tune_t cur_freq; - static struct fm_cqi SortData[CQI_CH_NUM_MAX]; - fm_bool LastExist=fm_false; - struct fm_cqi swap; -#if (FMR_NOISE_FLOORT_DETECT==1) - fm_s32 Pacc=0,Nacc=0; - fm_s32 NF=0; - fm_bool F[3]={fm_false,fm_false,fm_false}; - fm_s32 F_Rssi[3]={0}; - fm_u8 NF_Idx=0; -#endif - - memset (SortData, 0, CQI_CH_NUM_MAX*sizeof(struct fm_cqi)); - LOGI("band_channel_no=[%d], seek_space=%d, start freq=%d\n", band_channel_no,seek_space,Start_Freq); - for(i=0; i<band_channel_no; i++) - { - if(fmr_data.scan_stop == fm_true) - { - FMR_Restore_Search(idx); - ret = FMR_tune(idx,fmr_data.cur_freq); - LOGI("scan stop!!! tune ret=%d",ret); - return -1; - } - cur_freq.freq = Start_Freq + seek_space*i; - ret = FMR_cbk_tbl(idx).soft_mute_tune(FMR_fd(idx),&cur_freq); - if(ret) - { - LOGE("soft mute tune, failed:[%d]\n",ret); - LastExist=fm_false; - continue; - } - if(cur_freq.valid == fm_true)/*get valid channel*/ - { -#if (FMR_NOISE_FLOORT_DETECT==1) - memset(F,fm_false,sizeof(F)); -#endif - if(FMR_DensenseDetect(idx,cur_freq.freq,cur_freq.rssi)==fm_true) - { - LOGI("desense channel detected:[%d] \n", cur_freq.freq); - LastExist=fm_false; - continue; - } - if((LastExist==fm_true)&&(Num>0)) /*neighbor channel*/ - { - if(cur_freq.rssi>SortData[Num-1].rssi)/*save current freq and cover last channel*/ - { - if(FMR_SevereDensense(cur_freq.freq,cur_freq.rssi)==fm_true) - { - LastExist=fm_false; - continue; - } - SortData[Num-1].ch=cur_freq.freq; - SortData[Num-1].rssi=cur_freq.rssi; - SortData[Num-1].reserve = 1; - LOGI("cover last channel \n"); - } - else/*ignore current freq*/ - { - LastExist=fm_false; - continue; - } - } - else/*save current*/ - { - if(FMR_SevereDensense(cur_freq.freq,cur_freq.rssi)==fm_true) - { - LastExist=fm_false; - continue; - } - SortData[Num].ch=cur_freq.freq; - SortData[Num].rssi=cur_freq.rssi; - SortData[Num].reserve = 1; - Num++; - LastExist=fm_true; - LOGI("Num++:[%d] \n", Num); - } - } - else - { -#if (FMR_NOISE_FLOORT_DETECT==1) - if(FMR_DensenseDetect(idx,cur_freq.freq,cur_freq.rssi)==fm_false) - { - if(FMR_NoiseFloorDetect(F,cur_freq.rssi,F_Rssi)==fm_true) - { - Pacc+=F_Rssi[1]; - Nacc++; - /*check next freq*/ - F[0]=F[1]; - F_Rssi[0]=F_Rssi[1]; - F[1]=F[2]; - F_Rssi[1]=F_Rssi[2]; - F[2]=fm_false; - F_Rssi[2]=0; - LOGI("FM Noise FLoor:Pacc=[%d] Nacc=[%d] \n", Pacc,Nacc); - } - } - else - { - memset(F,fm_false,sizeof(F)); - } -#endif - LastExist=fm_false; - } -#if (FMR_NOISE_FLOORT_DETECT==1) - if(((i%NF_Space)==0)&&(i!=0)) - { - if(Nacc>0) - { - NF=Pacc/Nacc; - } - else - { - NF=RSSI_TH-FM_NOISE_FLOOR_OFFSET; - } - Pacc=0; - Nacc=0; - for(j=NF_Idx; j<Num; j++) - { - if(SortData[j].rssi<(NF+FM_NOISE_FLOOR_OFFSET)) - { - LOGI("FM Noise FLoor Detected:freq=[%d] NF=[%d] \n", SortData[j].ch,NF); - SortData[j].reserve=0; - } - } - NF_Idx=j; - LOGI("FM Noise FLoor NF_Idx[%d] \n", NF_Idx); - } -#endif - } - LOGI("get channel no.[%d] \n", Num); - if(Num==0)/*get nothing*/ - { - *max_cnt = 0; - FMR_Restore_Search(idx); - return -1; - } - for(i=0; i<Num; i++)//debug - { - LOGI("[%d]:%d \n", i,SortData[i].ch); - } - - switch (fmr_data.cfg_data.scan_sort) - { - case FM_SCAN_SORT_UP: - case FM_SCAN_SORT_DOWN: - { - LOGI("Start sort \n"); - //do sort: insert sort algorithm - for (i = 1; i < Num; i++) - { - for (j = i; (j > 0) && ((FM_SCAN_SORT_DOWN == fmr_data.cfg_data.scan_sort) ? (SortData[j-1].rssi \ - < SortData[j].rssi) : (SortData[j-1].rssi > SortData[j].rssi)); j--) - { - memcpy(&swap,&SortData[j],sizeof(struct fm_cqi)); - memcpy(&SortData[j],&SortData[j-1],sizeof(struct fm_cqi)); - memcpy(&SortData[j-1],&swap,sizeof(struct fm_cqi)); - } - } - LOGI("End sort \n"); - break; - } - default: - break; - } - - ChannelNo = 0; - for(i=0; i<Num; i++) - { - if(SortData[i].reserve == 1) - { -#ifndef MTK_FM_50KHZ_SUPPORT - SortData[i].ch /= 10; -#endif - scan_tbl[ChannelNo]=SortData[i].ch; - ChannelNo++; - } - } - *max_cnt=ChannelNo; - - LOGI("return channel no.[%d] \n", ChannelNo); - return 0; - -} - -int FMR_scan(int idx, uint16_t *scan_tbl, int *max_cnt) -{ - fm_s32 ret=0; - fm_s32 band_channel_no=0; - fm_u8 seek_space=10; - fm_u16 Start_Freq=8750; -#if (FMR_NOISE_FLOORT_DETECT==1) - fm_u8 NF_Space=41; -#endif - - //FM radio seek space,5:50KHZ; 1:100KHZ; 2:200KHZ - if(fmr_data.cfg_data.seek_space == 5) - { - seek_space=5; - } - else if (fmr_data.cfg_data.seek_space == 2) - { - seek_space=20; - } - else - { - seek_space=10; - } - if (fmr_data.cfg_data.band == FM_BAND_JAPAN)// Japan band 76MHz ~ 90MHz - { - band_channel_no = (9600-7600)/seek_space + 1; - Start_Freq = 7600; -#if (FMR_NOISE_FLOORT_DETECT==1) - NF_Space = 400/seek_space; -#endif - } - else if (fmr_data.cfg_data.band == FM_BAND_JAPANW)// Japan wideband 76MHZ ~ 108MHz - { - band_channel_no = (10800-7600)/seek_space + 1; - Start_Freq = 7600; -#if (FMR_NOISE_FLOORT_DETECT==1) - NF_Space = 640/seek_space; -#endif - } - else// US/Europe band 87.5MHz ~ 108MHz (DEFAULT) - { - band_channel_no = (10800-8750)/seek_space + 1; - Start_Freq = 8750; -#if (FMR_NOISE_FLOORT_DETECT==1) - NF_Space = 410/seek_space; -#endif - } - - ret = FMR_scan_Channels(idx, scan_tbl, max_cnt, band_channel_no, Start_Freq, seek_space, NF_Space); - - return ret; -} -#else -int FMR_scan(int idx, uint16_t *scan_tbl, int *max_cnt) -{ - int ret = 0; - int i,j,k,m,n; - int flag = 0; - int hw_sort_en = FM_SCAN_SORT_NON; - struct fm_rssi_req req; - struct fm_fake_channel_t *chan_info = fmr_data.cfg_data.fake_chan; - struct fm_fake_channel *channle = NULL; - static char cqi_buf[CQI_CH_NUM_MAX*sizeof(struct fm_cqi)] = {0}; - struct fm_cqi swap; - struct fm_cqi *cqi = NULL; - - FMR_ASSERT(FMR_cbk_tbl(idx).scan); - -#ifdef MT6620 - hw_sort_en = fmr_data.cfg_data.scan_sort; -#else - hw_sort_en = FM_SCAN_SORT_NON; -#endif - - ret = FMR_cbk_tbl(idx).scan(FMR_fd(idx), scan_tbl, max_cnt, - fmr_data.cfg_data.band, hw_sort_en); - if(ret){ - LOGE("%s, failed\n", __func__); - return ret; - } - - //MT6620 will use this way - if (FMR_cbk_tbl(idx).fastget_rssi) { - //find desense channels - req.num = 0; - if(chan_info && chan_info->chan){ - channle = chan_info->chan; - for(j=0; j<chan_info->size; j++){ - for(i=0; (i<*max_cnt) && (flag==0); i++){ - if(scan_tbl[i] == channle[j].freq){ - req.cr[req.num].freq = channle[j].freq; //add to req list - channle[j].reserve = i; //record position - req.num++; - flag = 1; - } - } - flag = 0; //reset flag - } - } - - //read RSSI - if (req.num > 0) { - req.read_cnt = 1; - ret = FMR_cbk_tbl(idx).fastget_rssi(FMR_fd(idx), &req); - if(ret){ - LOGE("Can't get RSSI\n"); - goto way_1; - } - - //Decide delete a channel or not - j = 0; - for(i=0; i<chan_info->size; i++){ - if(channle[i].reserve >= 0){ - if(channle[i].rssi_th > req.cr[j].rssi){ - //delete this channel from scan table - LOGI("delete %d, RSSI %d, RSSI_TH %d\n", channle[i].freq, req.cr[j].rssi, channle[i].rssi_th); - for(k=channle[i].reserve; k<*max_cnt; k++){ - scan_tbl[k] = scan_tbl[k+1]; - } - (*max_cnt)--; - } - j++; - } - } - } - } - - way_1: - - //MT6626/28 will use this way - if (FMR_cbk_tbl(idx).get_cqi) { - memset (cqi_buf, 0, CQI_CH_NUM_MAX*sizeof(struct fm_cqi)); - ret = FMR_cbk_tbl(idx).get_cqi(FMR_fd(idx), *max_cnt, cqi_buf, CQI_CH_NUM_MAX*sizeof(struct fm_cqi)); - if (ret < 0) { - LOGE("Can't get CQI\n"); - ret = 0; - goto out; - } - cqi = (struct fm_cqi*)cqi_buf; - //show result - LOGD("before check\n"); - for (i = 0; i < *max_cnt; i++) { -#ifndef MTK_FM_50KHZ_SUPPORT - cqi[i].ch /= 10; -#endif - scan_tbl[i] = cqi[i].ch; - LOGD("NO.%d: %d --> %d(dbm)\n", i, cqi[i].ch, cqi[i].rssi); - } - - //check chip-level de-sense list - LOGD("chip-level de-sense check\n"); - if (FMR_cbk_tbl(idx).is_dese_chan) { - for (i = 0; i < *max_cnt; i++) { - if ((FMR_cbk_tbl(idx).is_dese_chan(FMR_fd(idx), cqi[i].ch)) \ - && (cqi[i].rssi < fmr_data.cfg_data.rssi_th_l2)) { - //mark for later delete - cqi[i].reserve = 0; - LOGD("del %d\n", (int)cqi[i].ch); - }else{ - // mark as a valid channel - cqi[i].reserve = 1; - } - } - - // flush invalid channels - for (i = 0; i < *max_cnt; i++) { - if (0 == cqi[i].reserve) { - //delete this channel - for (k = i; k < *max_cnt; k++) { - memcpy(&cqi[k], &cqi[k+1], sizeof(struct fm_cqi)); - } - (*max_cnt)--; - } - } - } - - - //neighbor channel check - LOGD("neighbor channel check\n"); - m = 0; - if (cqi[0].ch == fmr_data.cfg_data.low_band) { - m++; - } -#ifdef MTK_FM_50KHZ_SUPPORT - #define STEP_OFFEST 5 -#else -#define STEP_OFFEST 1 -#endif - for (i = m; i < *max_cnt; i++) { - n = i + 1; - if (cqi[n-1].reserve && cqi[n].reserve && ((cqi[n-1].ch + STEP_OFFEST) == cqi[n].ch)) { - LOGD("%d:(%d) <--v.s--> %d:(%d)\n", cqi[n-1].ch, cqi[n-1].rssi, cqi[n].ch, cqi[n].rssi); - if (cqi[n].rssi > cqi[n-1].rssi) { - cqi[n-1].reserve = 0; - LOGD("del %d\n", cqi[n-1].ch); - if (((cqi[n].ch + STEP_OFFEST) < fmr_data.cfg_data.high_band) \ - && ((cqi[n].ch + STEP_OFFEST) == cqi[n+1].ch)) { - cqi[n+1].reserve = 0; - LOGD("del %d\n", cqi[n+1].ch); - } - } else { - cqi[n].reserve = 0; - LOGD("del %d\n", cqi[n].ch); - } - - } - } - - // flush invalid channels - for (i = 0; i < *max_cnt; i++) { - if (0 == cqi[i].reserve) { - //delete this channel - for (k = i; k < *max_cnt; k++) { - memcpy(&cqi[k], &cqi[k+1], sizeof(struct fm_cqi)); - } - (*max_cnt)--; - } - } - - - //check phone-level de-sense list - LOGD("phone-level de-sense check\n"); - channle = chan_info->chan; - n = 0; - for (i = 0; i < *max_cnt; i++) { - for (j = n; j < chan_info->size; j++) { - if (cqi[i].ch == channle[j].freq) { - n++; - if (cqi[i].rssi < channle[j].rssi_th) { - // mark for later delete - cqi[i].reserve = 0; - LOGD("del %d\n", (int)cqi[i].ch); - } else { - cqi[i].reserve = 1; - } - } - } - } - - // flush invalid channels - for (i = 0; i < *max_cnt; i++) { - if (0 == cqi[i].reserve) { - //delete this channel - for (k = i; k < *max_cnt; k++) { - memcpy(&cqi[k], &cqi[k+1], sizeof(struct fm_cqi)); - } - (*max_cnt)--; - } - } - - - //RSSI sort if need - LOGD("RSSI sort way %d\n", fmr_data.cfg_data.scan_sort); - switch (fmr_data.cfg_data.scan_sort) { - case FM_SCAN_SORT_NON: - break; - case FM_SCAN_SORT_UP: - case FM_SCAN_SORT_DOWN: - //do sort: insert sort algorithm - for (i = 1; i < *max_cnt; i++) { - for (j = i; (j > 0) && ((FM_SCAN_SORT_DOWN == fmr_data.cfg_data.scan_sort) ? (cqi[j-1].rssi \ - < cqi[j].rssi) : (cqi[j-1].rssi > cqi[j].rssi)); j--) { - swap.ch = cqi[j].ch; - swap.rssi = cqi[j].rssi; - cqi[j].ch = cqi[j-1].ch; - cqi[j].rssi = cqi[j-1].rssi; - cqi[j-1].ch = swap.ch; - cqi[j-1].rssi = swap.rssi; - } - } - break; - default: - break; - } - - //get result - LOGD("after check\n"); - for (i = 0; i < *max_cnt; i++) { - scan_tbl[i] = cqi[i].ch; - LOGD("NO.%d: %d --> %d(dbm)\n", i, cqi[i].ch, cqi[i].rssi); - } - } - - // tune to original channel if scan result num is 0 - if (0 == *max_cnt) { - ret = FMR_cbk_tbl(idx).tune(FMR_fd(idx), fmr_data.cur_freq, fmr_data.cfg_data.band); - if (ret < 0) { - LOGE("scan tune failed, [ret=%d]\n", ret); - } else { - LOGE("scan tuned to %d, [ret=%d]\n", fmr_data.cur_freq, ret); - } - } - -out: - LOGD("%s, [cnt=%d] [ret=%d]\n", __func__, *max_cnt, ret); - return ret; -} -#endif - -/* - * FMR_scan_new - * @idx - contex index - * @ppdst - target buffer - * @upper - scan upper band - * @lower - scan lower band - * @space - scan space - * return channel number(>=0) if success, else error code - */ -#if FMR_SOFT_MUTE_TUEN_SCAN -int FMR_seek_new(int idx, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para) -{ - int ret = 0; - int rssi_tmp = 0; - int start_freq = *freq; - fm_s32 band_channel_no=0; - fm_u16 min_freq,max_freq; - - FMR_ASSERT(freq); - - if ((start_freq < lower) || (start_freq > upper)) { - LOGE("start freq err: %d\n", start_freq); - return -ERR_INVALID_PARA; - } - - if (rssi) { - rssi_tmp = *rssi; // rssi th - } - - band_channel_no = (upper-lower)/space + 1; - min_freq = lower; - max_freq = upper; - - LOGD("seek_new start freq %d band_channel_no=[%d], seek_space=%d band[%d - %d] dir=%d\n", start_freq, band_channel_no,space,min_freq,max_freq,dir); - - ret = FMR_seek_Channel(idx, start_freq, min_freq, max_freq, band_channel_no, space, dir, freq, &rssi_tmp); - - if (ret < 0) { - //Here we just need to return the start_freq. - *freq = start_freq; - LOGE("seek err, %d\n", ret); - } else { - fmr_data.cur_freq = *freq; - } - - // return rssi to JNI if need - if (rssi) { - *rssi = rssi_tmp; - } - - LOGD("seek_new, start %d, result %d, rssi %d, ret %d\n", start_freq, *freq, rssi_tmp, ret); - return ret; -} - -int FMR_scan_new(int idx, uint16_t *scan_tbl, int *max_cnt, int upper, int lower, int space, void *para) -{ - fm_s32 ret=0; - fm_s32 band_channel_no=0; - fm_u16 Start_Freq=8750; -#if (FMR_NOISE_FLOORT_DETECT==1) - fm_u8 NF_Space=41; -#endif - - band_channel_no = (upper-lower)/space + 1; - Start_Freq = lower; -#if (FMR_NOISE_FLOORT_DETECT==1) - NF_Space = 410/space; -#endif - - ret = FMR_scan_Channels(idx, scan_tbl, max_cnt, band_channel_no, Start_Freq, space, NF_Space); - - return 0; -} - -#else -int FMR_scan_new(int idx, void **ppdst, int upper, int lower, int space, void *para) -{ - int ret = 0; - struct fm_ch_rssi *ch_buf = NULL; - struct fm_ch_rssi swap; - int num; - int i, j, n; - struct fm_fake_channel_t *fake_info = fmr_data.cfg_data.fake_chan; - struct fm_fake_channel *fake_ch = NULL; - int flag = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).scan_new); - - // do scan - ret = FMR_cbk_tbl(idx).scan_new(FMR_fd(idx), (void**)&ch_buf, upper, lower, space, para); - if ((ret < 0) || (NULL == ch_buf)) { - LOGE("%s, failed\n", __func__); - return ret; - } - - num = ret; - - //check chip-level de-sense list - LOGD("chip-level de-sense check\n"); - if (FMR_cbk_tbl(idx).is_dese_chan) { - for (i = 0; i < num; i++) { - if ((FMR_cbk_tbl(idx).is_dese_chan(FMR_fd(idx), ch_buf[i].freq)) \ - && (ch_buf[i].rssi < fmr_data.cfg_data.rssi_th_l2)) { - //mark for later delete - LOGD("del %d\n", (int)ch_buf[i].freq); - ch_buf[i].freq = 0; - } - } - } - - //neighbor channel check - LOGD("neighbor channel check\n"); - for (i = 0; i < num; i++) { - n = i + 1; - if (ch_buf[n-1].freq && ch_buf[n].freq && ((ch_buf[n-1].freq + space) == ch_buf[n].freq)) { - LOGD("%d:(%d) <--v.s--> %d:(%d)\n", ch_buf[n-1].freq, ch_buf[n-1].rssi, ch_buf[n].freq, ch_buf[n].rssi); - if (ch_buf[n].rssi > ch_buf[n-1].rssi) { - LOGD("del %d\n", ch_buf[n-1].freq); - ch_buf[n-1].freq = 0; - if (((ch_buf[n].freq + space) < upper) \ - && ((ch_buf[n].freq + space) == ch_buf[n+1].freq)) { - LOGD("del %d\n", ch_buf[n+1].freq); - ch_buf[n+1].freq = 0; - } - } else { - LOGD("del %d\n", ch_buf[n].freq); - ch_buf[n].freq = 0; - } - } - } - - // fake channel delete - if (fake_info && fake_info->chan) { - fake_ch = fake_info->chan; - - for (j = 0; j < fake_info->size; j++) { - for (i = 0; (i < num) && (flag == 0); i++) { - if (ch_buf[i].freq == fake_ch[j].freq) { - flag = 1; - if (ch_buf[i].rssi < fake_ch[j].rssi_th) { - ch_buf[i].freq = 0; // mark for delete - } - } - } - flag = 0; //reset flag - } - } - - //RSSI sort if need - LOGD("RSSI sort way %d\n", fmr_data.cfg_data.scan_sort); - switch (fmr_data.cfg_data.scan_sort) { - case FM_SCAN_SORT_NON: - break; - case FM_SCAN_SORT_UP: - case FM_SCAN_SORT_DOWN: - //do sort: insert sort algorithm - for (i = 1; i < num; i++) { - for (j = i; (j > 0) && ((FM_SCAN_SORT_DOWN == fmr_data.cfg_data.scan_sort) ? (ch_buf[j-1].rssi \ - < ch_buf[j].rssi) : (ch_buf[j-1].rssi > ch_buf[j].rssi)); j--) { - swap.freq = ch_buf[j].freq; - swap.rssi = ch_buf[j].rssi; - ch_buf[j].freq = ch_buf[j-1].freq; - ch_buf[j].rssi = ch_buf[j-1].rssi; - ch_buf[j-1].freq = swap.freq; - ch_buf[j-1].rssi = swap.rssi; - } - } - break; - default: - break; - } - - *ppdst = (void*)ch_buf; - return num; -} - - -int FMR_seek_new(int idx, int *freq, int upper, int lower, int space, int dir, int *rssi, void *para) -{ - int ret = 0; - int rssi_tmp = 0; - int start_freq = *freq; - - FMR_ASSERT(FMR_cbk_tbl(idx).seek_new); - FMR_ASSERT(freq); - - if ((start_freq < lower) || (start_freq > upper)) { - LOGE("start freq err: %d\n", start_freq); - return -ERR_INVALID_PARA; - } - - if (rssi) { - rssi_tmp = *rssi; // rssi th - } - - ret = FMR_cbk_tbl(idx).seek_new(FMR_fd(idx), freq, upper, lower, space, dir, &rssi_tmp, para); - if (ret < 0) { - //Here we just need to return the start_freq. - *freq = start_freq; - LOGE("seek err, %d\n", ret); - } else { - fmr_data.cur_freq = *freq; - } - - // FIXED_ME fake channel handle - - // return rssi to JNI if need - if (rssi) { - *rssi = rssi_tmp; - } - - LOGD("seek, start %d, result %d, rssi %d, ret %d\n", start_freq, *freq, rssi_tmp, ret); - return ret; -} -#endif - -int FMR_tune_new(int idx, int freq, int upper, int lower, int space, void *para) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).tune_new); - - if ((freq < lower) || (freq > upper)) { - LOGE("freq err: %d\n", freq); - return -ERR_INVALID_PARA; - } - - ret = FMR_cbk_tbl(idx).tune_new(FMR_fd(idx), freq, upper, lower, space, para); - if (ret < 0) { - LOGE("tune err, %d\n", ret); - } else { - fmr_data.cur_freq = freq; - } - - LOGD("tune, freq %d, ret %d\n", freq, ret); - return ret; -} -#if FMR_SOFT_MUTE_TUEN_SCAN -int FMR_stop_scan(int idx) -{ - fmr_data.scan_stop = fm_true; - return 0; -} -#else -int FMR_stop_scan(int idx) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).stop_scan); - - ret = FMR_cbk_tbl(idx).stop_scan(FMR_fd(idx)); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} -#endif -int FMR_turn_on_off_rds(int idx, int onoff) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).turn_on_off_rds) - ret = FMR_cbk_tbl(idx).turn_on_off_rds(FMR_fd(idx), onoff); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [onoff=%d] [ret=%d]\n", __func__, onoff, ret); - return ret; -} - -int FMR_read_rds_data(int idx, uint16_t *rds_status) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).read_rds_data); - FMR_ASSERT(rds_status); - - ret = FMR_cbk_tbl(idx).read_rds_data(FMR_fd(idx), &fmr_data.rds, rds_status); - /*if (ret){ - LOGE("%s, get no event\n", __func__); - }*/ - LOGD("%s, [status=%d] [ret=%d]\n", __func__, *rds_status, ret); - return ret; -} - -int FMR_active_af(int idx, uint16_t *ret_freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).active_af); - FMR_ASSERT(ret_freq); - ret = FMR_cbk_tbl(idx).active_af(FMR_fd(idx), - &fmr_data.rds, - fmr_data.cfg_data.band, - fmr_data.cur_freq, - ret_freq); - if((ret == 0) && (*ret_freq != fmr_data.cur_freq)){ - fmr_data.cur_freq = *ret_freq; - LOGI("active AF OK, new channel[freq=%d]\n", fmr_data.cur_freq); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_active_ta(int idx, uint16_t *ret_freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).active_ta); - FMR_ASSERT(ret_freq); - ret = FMR_cbk_tbl(idx).active_ta(FMR_fd(idx), - &fmr_data.rds, - fmr_data.cfg_data.band, - fmr_data.cur_freq, - &fmr_data.backup_freq, - ret_freq); - if((ret == 0) && (*ret_freq != fmr_data.cur_freq)){ - fmr_data.cur_freq = *ret_freq; - LOGI("active TA OK, new channel[freq=%d]\n", fmr_data.cur_freq); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_deactive_ta(int idx, uint16_t *ret_freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).deactive_ta); - FMR_ASSERT(ret_freq); - ret = FMR_cbk_tbl(idx).deactive_ta(FMR_fd(idx), - &fmr_data.rds, - fmr_data.cfg_data.band, - fmr_data.cur_freq, - &fmr_data.backup_freq, - ret_freq); - if((ret == 0) && (*ret_freq != fmr_data.cur_freq)){ - fmr_data.cur_freq = *ret_freq; - LOGI("deactive TA OK, new channel[freq=%d]\n", fmr_data.cur_freq); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_is_tx_support(int idx, int *supt) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).is_tx_support); - FMR_ASSERT(supt); - - ret = FMR_cbk_tbl(idx).is_tx_support(FMR_fd(idx), supt); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [supt=%d] [ret=%d]\n", __func__, *supt, ret); - return ret; -} - -int FMR_is_rdstx_support(int idx, int *supt) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).is_rdstx_support); - FMR_ASSERT(supt); - - ret = FMR_cbk_tbl(idx).is_rdstx_support(FMR_fd(idx), supt); - if (ret){ - LOGE("%s, failed\n", __func__); - } - LOGD("%s, [supt=%d] [ret=%d]\n", __func__, *supt, ret); - return ret; -} - -int FMR_tx_pwrup(int idx, int freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).tx_pwrup); - - LOGI("%s,[freq=%d]\n", __func__, freq); - if (freq < fmr_data.cfg_data.low_band || freq > fmr_data.cfg_data.high_band){ - LOGE("%s error freq: %d\n", __func__, freq); - ret = -ERR_INVALID_PARA; - return ret; - } - ret = FMR_cbk_tbl(idx).tx_pwrup(FMR_fd(idx), fmr_data.cfg_data.band, freq); - if (ret) { - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - fmr_data.cur_freq = freq; - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_tx_tune(int idx, int freq) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).tx_tune); - - LOGI("%s,[freq=%d]\n", __func__, freq); - if (freq < fmr_data.cfg_data.low_band || freq > fmr_data.cfg_data.high_band) { - LOGE("%s error freq: %d\n", __func__, freq); - ret = -ERR_INVALID_PARA; - return ret; - } - ret = FMR_cbk_tbl(idx).tx_tune(FMR_fd(idx), fmr_data.cfg_data.band, freq); - if (ret) { - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - fmr_data.cur_freq = freq; - - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, freq, ret); - return ret; -} - -int FMR_tx_scan(int idx, int start_freq, int dir, int *num, uint16_t *tbl) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).tx_scan); - FMR_ASSERT(num); - FMR_ASSERT(tbl); - - if (start_freq < fmr_data.cfg_data.low_band || start_freq > fmr_data.cfg_data.high_band) { - LOGW("%s:error freq, [freq=%d]\n", __func__, start_freq); - start_freq = fmr_data.cfg_data.low_band; - } - - if((*num < 1) || (*num > 10)){ - LOGW("%s:error num, [ScanTBLSize=%d], use 10 as default\n", __func__, *num); - *num = 10; - } - - if(dir > 1){ - LOGW("%s:error dir, [scandir=%d], use 0(up) as default\n", __func__, dir); - dir = 0; - } - - ret = FMR_cbk_tbl(idx).tx_scan(FMR_fd(idx), fmr_data.cfg_data.band, start_freq, dir, num, tbl); - if (ret) { - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_rdstx_onoff(int idx, int onoff) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).rdstx_onoff); - - ret = FMR_cbk_tbl(idx).rdstx_onoff(FMR_fd(idx), onoff); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_rdstx(int idx, uint16_t pi, uint8_t *ps, int ps_len, uint16_t *rds, int cnt) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).rdstx); - FMR_ASSERT(ps); - FMR_ASSERT(rds); - - ret = FMR_cbk_tbl(idx).rdstx(FMR_fd(idx), pi, ps, ps_len, rds, cnt); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_fm_over_bt(int idx, int onoff) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).fm_over_bt); - - ret = FMR_cbk_tbl(idx).fm_over_bt(FMR_fd(idx), onoff); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_ana_switch(int idx, int antenna) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).ana_switch); - - if(fmr_data.cfg_data.short_ana_sup == true){ - ret = FMR_cbk_tbl(idx).ana_switch(FMR_fd(idx), antenna); - if (ret){ - LOGE("%s failed, [ret=%d]\n", __func__, ret); - } - }else{ - LOGW("FM antenna switch not support!\n"); - ret = -ERR_UNSUPT_SHORTANA; - } - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} - -int FMR_get_badratio(int idx, int *badratio) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_badratio); - FMR_ASSERT(badratio); - - ret = FMR_cbk_tbl(idx).get_badratio(FMR_fd(idx), badratio); - if (ret){ - *badratio = 0; - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [badratio=%d] [ret=%d]\n", __func__, *badratio, ret); - return ret; -} - -int FMR_get_stereomono(int idx, int *stemono) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_stereomono); - FMR_ASSERT(stemono); - - ret = FMR_cbk_tbl(idx).get_stereomono(FMR_fd(idx), stemono); - if (ret){ - *stemono = 0; - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [stemono=%d] [ret=%d]\n", __func__, *stemono, ret); - return ret; -} - -int FMR_set_stereomono(int idx, int stemono) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).set_stereomono); - - ret = FMR_cbk_tbl(idx).set_stereomono(FMR_fd(idx), stemono); - if (ret){ - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [stemono=%d] [ret=%d]\n", __func__, stemono, ret); - return ret; -} - -int FMR_get_caparray(int idx, int *caparray) -{ - int ret = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_caparray); - FMR_ASSERT(caparray); - - ret = FMR_cbk_tbl(idx).get_caparray(FMR_fd(idx), caparray); - if (ret){ - *caparray = 0; - LOGE("%s failed, %s\n", __func__, FMR_strerr()); - } - - LOGD("%s, [caparray=%d] [ret=%d]\n", __func__, *caparray, ret); - return ret; -} - -int FMR_get_hw_info(int idx, int **info, int *info_len) -{ - int ret = 0; - static int inited = 0; - static int info_array[10] = {0}; - - FMR_ASSERT(FMR_cbk_tbl(idx).get_hw_info); - FMR_ASSERT(info); - FMR_ASSERT(info_len); - - if(!inited){ - ret = FMR_cbk_tbl(idx).get_hw_info(FMR_fd(idx), &fmr_data.hw_info); - if(ret >= 0){ - inited = 1; //get hw info success - } - } - - info_array[0] = fmr_data.hw_info.chip_id; - info_array[1] = fmr_data.hw_info.eco_ver; - info_array[2] = fmr_data.hw_info.rom_ver; - info_array[3] = fmr_data.hw_info.patch_ver; - - *info = info_array; - *info_len = sizeof(struct fm_hw_info)/sizeof(int); - - LOGD("chip:0x%08x, eco:0x%08x, rom:0x%08x, patch: 0x%08x\n", info_array[0], info_array[1], info_array[2], info_array[3]); - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret; -} -/* -th_idx: - threshold type: 0, RSSI. 1,desense RSSI. 2,SMG. -th_val: threshold value*/ -int FMR_EMSetTH(int idx, int th_idx, int th_val) -{ - int ret = -1; - FMR_ASSERT(FMR_cbk_tbl(idx).set_search_threshold); - ret=FMR_cbk_tbl(idx).set_search_threshold(FMR_fd(idx),th_idx,th_val); - - return ret; -} - -int FMR_EM_CQI_logger(int idx,uint16_t cycle) -{ - int ret = -1; - fm_full_cqi_log_t log_setting; - uint i = 0; - - FMR_ASSERT(FMR_cbk_tbl(idx).full_cqi_logger); - - //log_setting.cycle = cycle; -#ifdef MTK_FM_50KHZ_SUPPORT - log_setting.lower = FM_FREQ_MIN * 10; - log_setting.upper = FM_FREQ_MAX * 10; -#else - log_setting.lower = FM_FREQ_MIN; - log_setting.upper = FM_FREQ_MAX; -#endif - log_setting.space = 0x2; - - for(i = 0;i < cycle; i++) - { - - log_setting.cycle = i; - ret = FMR_cbk_tbl(idx).full_cqi_logger(FMR_fd(idx),&log_setting); - - LOGD("%s, [%d]\n", __func__, i); - } - - //ret = FMR_cbk_tbl(idx).full_cqi_logger(FMR_fd(idx),&log_setting); - - return ret; -} - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/fmr_err.cpp b/MediaTek/fmradiolibs/fmnative/fmr/fmr_err.cpp deleted file mode 100644 index 3ba1875..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/fmr_err.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_ERR" - -#define FMR_ERR_BASE -0x100 - -static int fmr_err = 0; -static char tmp[20] = {0}; - -char *FMR_strerr() -{ - sprintf(tmp, "%d", fmr_err); - - return tmp; -} - -void FMR_seterr(int err) -{ - fmr_err = err; -} diff --git a/MediaTek/fmradiolibs/fmnative/fmr/libfm_jni.cpp b/MediaTek/fmradiolibs/fmnative/fmr/libfm_jni.cpp deleted file mode 100644 index abad2e4..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/libfm_jni.cpp +++ /dev/null @@ -1,1245 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include <jni.h> -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_JNI" - -static int g_idx = -1; -extern struct fmr_ds fmr_data; - -jboolean openDev(JNIEnv *env, jobject thiz) -{ - int ret = 0; - - ret = FMR_open_dev(g_idx); // if success, then ret = 0; else ret < 0 - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jboolean closeDev(JNIEnv *env, jobject thiz) -{ - int ret = 0; - - ret = FMR_close_dev(g_idx); - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jboolean powerUp(JNIEnv *env, jobject thiz, jfloat freq) -{ - int ret = 0; - int tmp_freq; - - LOGI("%s, [freq=%d]\n", __func__, (int)freq); -#ifdef MTK_FM_50KHZ_SUPPORT - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#else - tmp_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - ret = FMR_pwr_up(g_idx, tmp_freq); - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jboolean powerDown(JNIEnv *env, jobject thiz, jint type) -{ - int ret = 0; - - ret = FMR_pwr_down(g_idx, type); - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jint readRssi(JNIEnv *env, jobject thiz) //jint = int -{ - int ret = 0; - int rssi = -1; - - ret = FMR_get_rssi(g_idx, &rssi); - - LOGD("%s, [ret=%d]\n", __func__, ret); - return rssi; -} - -jboolean tune(JNIEnv *env, jobject thiz, jfloat freq) -{ - int ret = 0; - int tmp_freq; - -#ifdef MTK_FM_50KHZ_SUPPORT - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#else - tmp_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - ret = FMR_tune(g_idx, tmp_freq); - - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jfloat seek(JNIEnv *env, jobject thiz, jfloat freq, jboolean isUp) //jboolean isUp; -{ - int ret = 0; - int tmp_freq; - int ret_freq; - float val; - -#ifdef MTK_FM_50KHZ_SUPPORT - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#elif FMR_SOFT_MUTE_TUEN_SCAN - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 - ret = FMR_set_mute(g_idx, 1); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [mute] [ret=%d]\n", __func__, ret); -#else - tmp_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - - ret = FMR_seek(g_idx, tmp_freq, (int)isUp, &ret_freq); - if (ret){ - ret_freq = tmp_freq; //seek error, so use original freq - } - - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, ret_freq, ret); - -#ifdef MTK_FM_50KHZ_SUPPORT - val = (float)ret_freq/100; //Eg, 8755 / 100 --> 87.55 -#elif FMR_SOFT_MUTE_TUEN_SCAN - val = (float)ret_freq/100; //Eg, 8755 / 100 --> 87.55 -#else - val = (float)ret_freq/10; //Eg, 875 / 10 --> 87.5 -#endif - return val; -} - -jshortArray autoScan(JNIEnv *env, jobject thiz) -{ -#define FM_SCAN_CH_SIZE_MAX 200 - int ret = 0; - jshortArray scanChlarray; - int chl_cnt = FM_SCAN_CH_SIZE_MAX; - uint16_t ScanTBL[FM_SCAN_CH_SIZE_MAX]; - - LOGI("%s, [tbl=%p]\n", __func__, ScanTBL); - FMR_Pre_Search(g_idx); - ret = FMR_scan(g_idx, ScanTBL, &chl_cnt); - if (ret < 0) { - LOGE("scan failed!\n"); - scanChlarray = NULL; - goto out; - } - if (chl_cnt > 0) { - scanChlarray = env->NewShortArray(chl_cnt); - env->SetShortArrayRegion(scanChlarray, 0, chl_cnt, (const jshort*)&ScanTBL[0]); - } else { - LOGE("cnt error, [cnt=%d]\n", chl_cnt); - scanChlarray = NULL; - } - FMR_Restore_Search(g_idx); - - if(fmr_data.scan_stop == fm_true) - { - ret = FMR_tune(g_idx,fmr_data.cur_freq); - LOGI("scan stop!!! tune ret=%d",ret); - scanChlarray = NULL; - ret = -1; - } - -out: - LOGD("%s, [cnt=%d] [ret=%d]\n", __func__, chl_cnt, ret); - return scanChlarray; -} - - -/* - * scannew - * @env - davlink VM - * @thiz - current object - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - scan space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * Return channel list if success, else NULL - */ -jshortArray scannew(JNIEnv *env, jobject thiz, jint upper, jint lower, jint space) -{ - #define FM_SCAN_CH_SIZE_MAX 200 - int ret = 0; - jshortArray scanChlarray; - int chl_cnt = FM_SCAN_CH_SIZE_MAX; - uint16_t ScanTBL[FM_SCAN_CH_SIZE_MAX]; - int i, j; - - LOGI("%s, [tbl=%p]\n", __func__, ScanTBL); - FMR_Pre_Search(g_idx); - ret = FMR_scan_new(g_idx, ScanTBL, &chl_cnt, upper, lower, space, NULL); - if (ret < 0) { - LOGE("scan failed!\n"); - scanChlarray = NULL; - goto out; - } - - if (chl_cnt > 0){ - scanChlarray = env->NewShortArray(chl_cnt); - env->SetShortArrayRegion(scanChlarray, 0, chl_cnt, (const jshort*)&ScanTBL[0]); - } - else { - LOGE("cnt error, [cnt=%d]\n", ret); - scanChlarray = NULL; - } - - FMR_Restore_Search(g_idx); - -out: - LOGD("%s, [cnt=%d] [ret=%d]\n", __func__, chl_cnt, ret); - return scanChlarray; -} - - -/* - * seeknew - * @env - davlink VM - * @thiz - current object - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - seek space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * @start - start freq, Eg, 9000 (90.00Mhz) - * @dir - seek direction, 0: up; 1, down - * @lev - seek rssi threshold, eg -95dbm - * Return channel if success, else -1 - */ -jint seeknew(JNIEnv *env, jobject thiz, jint upper, jint lower, jint space, jint start, jint dir, jint lev) -{ - int ret = 0; - int tmp_freq = start; - int rssi_th = lev; - - ret = FMR_seek_new(g_idx, &tmp_freq, upper, lower, space, dir, &rssi_th, NULL); - if (ret < 0) { - tmp_freq = -1; - } - - LOGD("seeknew result %d, ret %d\n", tmp_freq, ret); - return tmp_freq; -} - - -/* - * tunenew - * @env - davlink VM - * @thiz - current object - * @upper - upper band, Eg: 10800 (108.00Mhz) - * @lower - lower band, Eg: 7600 (76.00Mhz) - * @space - seek space, 5: 50Khz, 10: 100Khz, 20: 200Khz - * @freq - target freq, Eg, 9000 (90.00Mhz) - * Return JNI_TRUE if success, else JNI_FALSE - */ -jboolean tunenew(JNIEnv *env, jobject thiz, jint upper, jint lower, jint space, jint freq) -{ - int ret = 0; - - ret = FMR_tune_new(g_idx, freq, upper, lower, space, NULL); - - LOGD("tunenew ret %d\n", ret); - return (ret < 0) ? JNI_FALSE : JNI_TRUE; -} - -jboolean emsetth(JNIEnv *env, jobject thiz, jint index, jint value) -{ - int ret = 0; - - ret = FMR_EMSetTH(g_idx, index, value); - - LOGD("emsetth ret %d\n", ret); - return (ret < 0) ? JNI_FALSE : JNI_TRUE; -} -jshortArray emcmd(JNIEnv *env, jobject thiz, jshortArray val) -{ - jshortArray eventarray; - uint16_t eventtbl[20]={0}; - uint16_t* cmdtbl=NULL; - - cmdtbl = (uint16_t*) env->GetShortArrayElements(val, NULL); - if(cmdtbl == NULL) - { - LOGE("%s:get cmdtbl error\n", __func__); - goto out; - } - LOGI("EM cmd:=%x %x %x %x %x",cmdtbl[0],cmdtbl[1],cmdtbl[2],cmdtbl[3],cmdtbl[4]); - - if(!cmdtbl[0]) //LANT - { - } - else //SANT - { - } - - switch(cmdtbl[1]) - { - case 0x02: //CQI log tool - { - FMR_EM_CQI_logger(g_idx, cmdtbl[2]); - } - break; - default: - break; - } - - eventarray = env->NewShortArray(20); - env->SetShortArrayRegion(eventarray, 0, 20, (const jshort*)&eventtbl[0]); - //LOGD("emsetth ret %d\n", ret); -out: - return eventarray; -} - -jshort readRds(JNIEnv *env, jobject thiz) -{ - int ret = 0; - uint16_t status = 0; - - ret = FMR_read_rds_data(g_idx, &status); - - if(ret){ - //LOGE("%s,status = 0,[ret=%d]\n", __func__, ret); - status = 0; //there's no event or some error happened - } - - return status; -} - -jshort getPI(JNIEnv *env, jobject thiz) -{ - int ret = 0; - uint16_t pi = 0; - - ret = FMR_get_pi(g_idx, &pi); - - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - pi = -1; //there's some error happened - } - return pi; -} - -jbyte getPTY(JNIEnv *env, jobject thiz) -{ - int ret = 0; - uint8_t pty = 0; - - ret = FMR_get_pty(g_idx, &pty); - - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - pty = -1; //there's some error happened - } - return pty; -} - -jbyteArray getPs(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jbyteArray PSname; - uint8_t *ps = NULL; - int ps_len = 0; - - ret = FMR_get_ps(g_idx, &ps, &ps_len); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return NULL; - } - PSname = env->NewByteArray(ps_len); - env->SetByteArrayRegion(PSname, 0, ps_len, (const jbyte*)ps); - LOGD("%s, [ret=%d]\n", __func__, ret); - return PSname; -} - -jbyteArray getLrText(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jbyteArray LastRadioText; - uint8_t *rt = NULL; - int rt_len = 0; - - ret = FMR_get_rt(g_idx, &rt, &rt_len); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return NULL; - } - LastRadioText = env->NewByteArray(rt_len); - env->SetByteArrayRegion(LastRadioText, 0, rt_len, (const jbyte*)rt); - LOGD("%s, [ret=%d]\n", __func__, ret); - return LastRadioText; -} - -jshort activeAf(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jshort ret_freq = 0; - - ret = FMR_active_af(g_idx, (uint16_t*)&ret_freq); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return 0; - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret_freq; -} - -jshortArray getAFList(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jshortArray AFList; - char *af = NULL; - int af_len = 0; - - //ret = FMR_get_af(g_idx, &af, &af_len); // If need, we should implemate this API - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return NULL; - } - AFList = env->NewShortArray(af_len); - env->SetShortArrayRegion(AFList, 0, af_len, (const jshort*)af); - LOGD("%s, [ret=%d]\n", __func__, ret); - return AFList; -} - -jshort activeTA(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jshort ret_freq = 0; - - ret = FMR_active_ta(g_idx, (uint16_t*)&ret_freq); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return 0; - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret_freq; -} - -jshort deactiveTA(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jshort ret_freq = 0; - - ret = FMR_deactive_ta(g_idx, (uint16_t*)&ret_freq); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return 0; - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret_freq; -} - -jint setRds(JNIEnv *env, jobject thiz, jboolean rdson) -{ - int ret = 0; - int onoff = -1; - - if(rdson == JNI_TRUE){ - onoff = FMR_RDS_ON; - }else{ - onoff = FMR_RDS_OFF; - } - ret = FMR_turn_on_off_rds(g_idx, onoff); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [onoff=%d] [ret=%d]\n", __func__, onoff, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jboolean stopScan(JNIEnv *env, jobject thiz) -{ - int ret = 0; - - ret = FMR_stop_scan(g_idx); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [ret=%d]\n", __func__, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -jint setMute(JNIEnv *env, jobject thiz, jboolean mute) -{ - int ret = 0; - - ret = FMR_set_mute(g_idx, (int)mute); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [mute=%d] [ret=%d]\n", __func__, (int)mute, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -/****************************************** - * Used to get chip ID. - *Parameter: - * None - *Return value - * 1000: chip AR1000 - * 6616: chip mt6616 - * -1: error - ******************************************/ -jint getchipid(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int chipid = -1; - ret = FMR_get_chip_id(g_idx, &chipid); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [chipid=%x] [ret=%d]\n", __func__, chipid, ret); - return chipid; -} - -/****************************************** - * Inquiry if RDS is support in driver. - * Parameter: - * None - *Return Value: - * 1: support - * 0: NOT support - * -1: error - ******************************************/ -jint isRdsSupport(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int supt = -1; - - ret = FMR_is_rdsrx_support(g_idx, &supt); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [supt=%d] [ret=%d]\n", __func__, supt, ret); - return supt; -} - -/****************************************** - * Inquiry if FM is powered up. - * Parameter: - * None - *Return Value: - * 1: Powered up - * 0: Did NOT powered up - ******************************************/ -jint isFMPoweredUp(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int pwrup = -1; - - ret = FMR_is_fm_pwrup(g_idx, &pwrup); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [pwrup=%d] [ret=%d]\n", __func__, pwrup, ret); - return pwrup; -} -/****************************************** - * Set FM Status. - * Parameter: - * which - * 0: RX power - * 1: TX power - * 2: TX scan - * stat - * JNI_TRUE: on - * JNI_FALSE: off - *Return Value: - * 1: Set status fail - * 0: Set status success - ******************************************/ -jboolean setFmStatus(JNIEnv *env, jobject thiz, jint which, jboolean stat) -{ - int ret = 0; - - ret = FM_set_status(g_idx, which, stat); - - if(!ret) - { - LOGD("%s, [object=%d], [stat=%d], [ret=%d]\n", __func__, which, stat, ret); - } - else - { - LOGD("%s, error, [object=%d] [ret=%d]\n", __func__, which, ret); - } - - return ret?JNI_FALSE:JNI_TRUE; -} - -/****************************************** - * Get FM Status. - * Parameter: - * which - * 0: RX power - * 1: TX power - * 2: TX scan - *Return Value: - * JNI_TRUE: on - * JNI_FALSE: off - ******************************************/ -jboolean getFmStatus(JNIEnv *env, jobject thiz, jint which) -{ - int ret = 0; - bool status = 0; - - ret = FM_get_status(g_idx, which, &status); - - if(!ret) - { - LOGD("%s, [object=%d] [status=%d]\n", __func__, which, status); - } - else - { - LOGD("%s, error, [object=%d]\n", __func__, which); - } - - return status?JNI_TRUE:JNI_FALSE; -} - -/****************************************** - * Inquiry if TX is support in driver. - * Parameter: - * None - *Return Value: - * 1: support - * 0: NOT support - * -1: error - ******************************************/ -jint isTXSupport(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int support = -1; - - ret = FMR_is_tx_support(g_idx, &support); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [support=%d] [ret=%d]\n", __func__, support, ret); - - return support; -} - -/****************************************** - * Start to transmit - * Parameter: - * freq: Which freqency to work on. - *Return Value: - * True: Sucess - * False: Failed - ******************************************/ -jboolean powerupTX(JNIEnv *env, jobject thiz, jfloat freq) -{ - int ret = 0; - int tmp_freq; - -#ifdef MTK_FM_50KHZ_SUPPORT - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#else - tmp_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - - LOGI("%s, [freq=%d]\n", __func__, tmp_freq); - - ret = FMR_tx_pwrup(g_idx, tmp_freq); - if(ret){ - LOGE("%s, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, tmp_freq, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -/********************************************************* -*Description: Tune FM to a desired channel in TX mode -* -*Date: 2010.12.01 -* -*Parameter: freq, the freqency will be tune -* -*Return: TRUE, if success; FALSE, if failed -*********************************************************/ -jboolean tuneTX(JNIEnv *env, jobject thiz, jfloat freq) -{ - int ret = 0; - int tmp_freq; - -#ifdef MTK_FM_50KHZ_SUPPORT - tmp_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#else - tmp_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - - LOGI("%s, [freq=%d]\n", __func__, tmp_freq); - - ret = FMR_tx_tune(g_idx, tmp_freq); - if(ret){ - LOGE("%s, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [freq=%d] [ret=%d]\n", __func__, tmp_freq, ret); - return ret?JNI_FALSE:JNI_TRUE; -} - -/****************************************** - * Get useable TX frequency list. - * Parameter: - * freq: Start frenquency. - * num: max number to scan - * Return Value: TX frequency list. - ******************************************/ -jshortArray getTXFreqList(JNIEnv *env, jobject thiz, jfloat freq, jint scandir, jint num) -{ - int ret = 0; - uint16_t tbl[TX_SCAN_MAX+1] = {0}; - int start_freq; - int dir = scandir; - int scan_num = num; - -#ifdef MTK_FM_50KHZ_SUPPORT - start_freq = (int)(freq * 100); //Eg, 87.55 * 100 --> 8755 -#else - start_freq = (int)(freq * 10); //Eg, 87.5 * 10 --> 875 -#endif - - LOGI("%s, [freq=%d] [dir=%d] [num=%d]\n", __func__, start_freq, dir, scan_num); - ret = FMR_tx_scan(g_idx, start_freq, dir, &scan_num, &tbl[0]); - if(ret){ - LOGE("%s:failed, [ret=%d]\n", __func__, ret); - goto err; - } - - if ((scan_num > 0) && (scan_num < (TX_SCAN_MAX+1))){ - jshortArray scanChlarray ; - int i = 0; - scanChlarray = env->NewShortArray(scan_num); - env->SetShortArrayRegion(scanChlarray, 0, scan_num, (const jshort*)&tbl[0]); - LOGD("Success,[chl_cnt=%d]\n", scan_num); - for(i = 0; i < scan_num; i++){ - LOGI("NO.%d:%d\n", i+1, tbl[i]); - } - return scanChlarray; - } - -err: - LOGE("%s:Failed,[chl_cnt=%d] [ret=%d]\n", __func__, scan_num, ret); - return NULL; -} - -/****************************************** - * Inquiry if RDS TX is support in driver. - * Parameter: - * None - *Return Value: - * 1: support - * 0: NOT support - * -1: error - ******************************************/ -jint isRDSTXsupport(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int support = -1; - - ret = FMR_is_rdstx_support(g_idx, &support); - if(ret){ - LOGE("%s, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [support=%d] [ret=%d]\n", __func__, support, ret); - - return support; -} - -/****************************************** - * Enable/Disable RDS TX - * Parameter: - * Enable: - JNI_TRUE : To enable RDS TX - JNI_FALSE: To disable RDS TX - *Return Value: - * JNI_TRUE: Success - * JNI_FALSE: Failed - ******************************************/ -jboolean setRDSTXEnabled(JNIEnv *env, jobject thiz, jboolean enable) -{ - int ret = 0; - jboolean jret = JNI_FALSE; - int onoff = -1; - - if(JNI_FALSE == enable){ - onoff = 0; - }else if(JNI_TRUE == enable){ - onoff = 1; - }else{ - LOGE("%s:fail, para error\n", __func__); - jret = JNI_FALSE; - goto out; - } - ret = FMR_rdstx_onoff(g_idx, onoff); - if(ret){ - jret = JNI_FALSE; - }else{ - jret = JNI_TRUE; - } -out: - LOGD("%s: [enable=%d] [ret=%d]\n", __func__, onoff, ret); - return jret; -} - -/****************************************** - * This function is used to set RDS data. The blockA is stored in parameter pi, The rest three block(B, C, D) is stored in parameter rds, - * parameter rds can also contains many pakage. - * Parameter: - * pi: PI code - * ps: PS name, make sure it's 8 bytes. - * rds: RDS blockB, C and D - * rdscnt: The number of pakages papameter rds contains. - *Return Value: - * JNI_TRUE: Success - * JNI_FALSE: Failed - ******************************************/ -jboolean setRDSTX(JNIEnv *env, jobject thiz, jshort pi, jcharArray ps, jshortArray rds, jint rdscnt) -{ - int ret = 0; - jboolean jret = JNI_TRUE; - uint16_t rds_pi = pi; - uint8_t *rds_ps = NULL; - int rds_ps_len = 8; - uint16_t *rdsdata = NULL; - int rds_data_len = rdscnt; - - if(ps){ - rds_ps = (unsigned char*) env->GetCharArrayElements(ps, NULL); - if(rds_ps == NULL){ - LOGE("%s:get ps error\n", __func__); - jret = JNI_FALSE; - goto out; - } - }else{ - LOGE("%s:NULL java array\n", __func__); - jret = JNI_FALSE; - goto out; - } - - if(rds){ - rdsdata = (uint16_t*) env->GetShortArrayElements(rds, NULL); - if(rdsdata == NULL){ - LOGE("%s:get rdsdata error\n", __func__); - jret = JNI_FALSE; - goto out; - } - }else{ - LOGE("%s:NULL java array\n", __func__); - jret = JNI_FALSE; - goto out; - } - - ret = FMR_rdstx(g_idx, rds_pi, rds_ps, rds_ps_len, rdsdata, rds_data_len); - if(ret){ - LOGE("%s:failed, [ret=%d]\n", __func__, ret); - jret = JNI_FALSE; - } - -out: - LOGD("%s, [ret=%d]\n", __func__, ret); - return jret; -} - -/****************************************** - * FM over BT - * Parameter: - * Enable: - JNI_TRUE : To enable FM over BT - JNI_FALSE: To disable FM over BT - *Return Value: - * JNI_TRUE: Success - * JNI_FALSE: Failed - ******************************************/ -jboolean setFMViaBTController(JNIEnv *env, jobject thiz, jboolean enable) -{ - int ret = 0; - int jret = JNI_FALSE; - int onoff = -1; - - if(JNI_FALSE == enable){ - onoff = 0; - }else if(JNI_TRUE == enable){ - onoff = 1; - }else{ - LOGE("%s:fail, para error\n", __func__); - jret = JNI_FALSE; - goto out; - } - ret = FMR_fm_over_bt(g_idx, onoff); - if(ret){ - LOGE("%s:fail\n", __func__); - jret = JNI_FALSE; - }else{ - jret = JNI_TRUE; - } -out: - LOGD("%s: [enable=%d] [ret=%d]\n", __func__, onoff, ret); - return jret; -} - -/****************************************** - * SwitchAntenna - * Parameter: - * antenna: - 0 : switch to long antenna - 1: switch to short antenna - *Return Value: - * 0: Success - * 1: Failed - * 2: Not support - ******************************************/ -jint switchAntenna(JNIEnv *env, jobject thiz, jint antenna) -{ - int ret = 0; - jint jret = 0; - int ana = -1; - - if(0 == antenna){ - ana = FM_LONG_ANA; - }else if(1 == antenna){ - ana = FM_SHORT_ANA; - }else{ - LOGE("%s:fail, para error\n", __func__); - jret = JNI_FALSE; - goto out; - } - ret = FMR_ana_switch(g_idx, ana); - if(ret == -ERR_UNSUPT_SHORTANA){ - LOGW("Not support switchAntenna\n"); - jret = 2; - }else if(ret){ - LOGE("switchAntenna(), error\n"); - jret = 1; - }else{ - jret = 0; - } -out: - LOGD("%s: [antenna=%d] [ret=%d]\n", __func__, ana, ret); - return jret; -} - -/****************************************** - * Inquiry if FM is stereoMono. - * Parameter: - * None - *Return Value: - * JNI_TRUE: stereo - * JNI_FALSE: mono - ******************************************/ -jboolean stereoMono(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int stemono = -1; - - ret = FMR_get_stereomono(g_idx, &stemono); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [stemono=%d] [ret=%d]\n", __func__, stemono, ret); - - return stemono?JNI_TRUE:JNI_FALSE; -} - -/****************************************** - * Force set to stero/mono mode. - * Parameter: - * type: JNI_TRUE, mono; JNI_FALSE, stero - *Return Value: - * JNI_TRUE: success - * JNI_FALSE: failed - ******************************************/ -jboolean setStereoMono(JNIEnv *env, jobject thiz, jboolean type) -{ - int ret = 0; - ret = FMR_set_stereomono(g_idx, ((type == JNI_TRUE) ? 1 : 0)); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s,[ret=%d]\n", __func__, ret); - - return (ret==0) ? JNI_TRUE : JNI_FALSE; -} - -/****************************************** - * Read cap array of short antenna. - * Parameter: - * None - *Return Value: - * CapArray - ******************************************/ -jshort readCapArray(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int caparray = -1; - - ret = FMR_get_caparray(g_idx, &caparray); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - LOGD("%s, [caparray=%d] [ret=%d]\n", __func__, caparray, ret); - - return (jshort)caparray; -} - -/****************************************** - * Read cap array of short antenna. - * Parameter: - * None - *Return Value: - * CapArray : 0~100 - ******************************************/ -jshort readRdsBler(JNIEnv *env, jobject thiz) -{ - int ret = 0; - int badratio = -1; - - ret = FMR_get_badratio(g_idx, &badratio); - if(ret){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - } - - if(badratio > 100){ - badratio = 100; - LOGW("badratio value error, give a max value!"); - }else if(badratio < 0){ - badratio = 0; - LOGW("badratio value error, give a min value!"); - } - LOGD("%s, [badratio=%d] [ret=%d]\n", __func__, badratio, ret); - - return (jshort)badratio; -} - -jintArray getHardwareVersion(JNIEnv *env, jobject thiz) -{ - int ret = 0; - jintArray hw_info; - int *info = NULL; - int info_len = 0; - - ret = FMR_get_hw_info(g_idx, &info, &info_len); - if(ret < 0){ - LOGE("%s, error, [ret=%d]\n", __func__, ret); - return NULL; - } - hw_info = env->NewIntArray(info_len); - env->SetIntArrayRegion(hw_info, 0, info_len, (const jint*)info); - LOGD("%s, [ret=%d]\n", __func__, ret); - return hw_info; -} - -static const char *classPathNameRx = "com/mediatek/fmradio/FmRadioNative"; -static const char *classPathNameTx = "com/mediatek/FMTransmitter/FMTransmitterNative"; - - -static JNINativeMethod methodsRx[] = { - {"openDev", "()Z", (void*)openDev }, //1 - {"closeDev", "()Z", (void*)closeDev }, //2 - {"powerUp", "(F)Z", (void*)powerUp }, //3 - {"powerDown", "(I)Z", (void*)powerDown }, //4 - {"tune", "(F)Z", (void*)tune }, //5 - {"seek", "(FZ)F", (void*)seek }, //6 - {"autoScan", "()[S", (void*)autoScan }, //7 - {"stopScan", "()Z", (void*)stopScan }, //8 - {"readRssi", "()I", (void*)readRssi }, //9 - {"setRds", "(Z)I", (void*)setRds }, //10 - {"readRds", "()S", (void*)readRds }, //11 will pending here for get event status - //{"getPI", "()S", (void*)getPI }, //12 - //{"getPTY", "()B", (void*)getPTY }, //13 - {"getPs", "()[B", (void*)getPs }, //14 - {"getLrText", "()[B", (void*)getLrText}, //15 - {"activeAf", "()S", (void*)activeAf}, //16 - //{"getAFList", "()[S", (void*)getAFList }, //17 not need show actually - //{"activeTA", "()S", (void*)activeTA}, //18 - //{"deactiveTA","()S", (void*)deactiveTA}, //19 - {"setMute", "(Z)I", (void*)setMute}, //20 - //{"getchipid", "()I", (void*)getchipid}, //21 - {"isRdsSupport", "()I", (void*)isRdsSupport}, //22 - //{"isFMPoweredUp", "()I", (void*)isFMPoweredUp}, //23 - //{"setFMViaBTController", "(Z)Z", (void*)setFMViaBTController}, //24 - {"switchAntenna", "(I)I", (void*)switchAntenna}, //25 - {"stereoMono", "()Z", (void*)stereoMono}, //26 - {"readCapArray", "()S", (void*)readCapArray}, //27 - {"readRdsBler", "()S", (void*)readRdsBler}, //28 - {"setStereoMono", "(Z)Z", (void*)setStereoMono}, //29 - {"getHardwareVersion", "()[I", (void*)getHardwareVersion}, //30 - //{"scannew", "(III)[S", (void*)scannew}, //31 - //{"seeknew", "(IIIIII)I", (void*)seeknew}, //32 - //{"tunenew", "(IIII)Z", (void*)tunenew}, //33 - {"emsetth","(II)Z",(void*)emsetth},//34 - {"emcmd","([S)[S",(void*)emcmd},//35 - {"setFmStatus", "(IZ)Z",(void*)setFmStatus}, - {"getFmStatus", "(I)Z",(void*)getFmStatus}, -}; - -static JNINativeMethod methodsTx[] = { - {"openDev", "()Z", (void*)openDev }, //1 - {"closeDev", "()Z", (void*)closeDev }, //2 - {"powerUp", "(F)Z", (void*)powerUp }, //3 - {"powerDown", "(I)Z", (void*)powerDown }, //4 - {"tune", "(F)Z", (void*)tune }, //5 - {"seek", "(FZ)F", (void*)seek }, //6 - {"autoScan", "()[S", (void*)autoScan }, //7 - {"stopScan", "()Z", (void*)stopScan }, //8 - //{"getrssi", "()I", (void*)getrssi }, //9 - {"setRds", "(Z)I", (void*)setRds }, //10 - {"readRds", "()S", (void*)readRds }, //11 will pending here for get event status - //{"getPI", "()S", (void*)getPI }, //12 - //{"getPTY", "()B", (void*)getPTY }, //13 - {"getPs", "()[B", (void*)getPs }, //14 - {"getLrText", "()[B", (void*)getLrText}, //15 - {"activeAf", "()S", (void*)activeAf}, //16 - //{"getAFList", "()[S", (void*)getAFList }, //17 not need show actually - {"activeTA", "()S", (void*)activeTA}, //18 - {"deactiveTA","()S", (void*)deactiveTA}, //19 - {"setMute", "(Z)I", (void*)setMute}, //20 - //{"getchipid", "()I", (void*)getchipid}, //21 - {"isRdsSupport", "()I", (void*)isRdsSupport}, //23 - {"isTXSupport", "()I", (void*)isTXSupport}, //24 - {"powerupTX", "(F)Z", (void*)powerupTX}, //25 - {"getTXFreqList", "(FII)[S", (void*)getTXFreqList }, //26 - {"isRDSTXSupport", "()I", (void*)isRDSTXsupport}, //27 - {"setRDSTXEnabled", "(Z)Z", (void*)setRDSTXEnabled}, //28 - {"setRDSTX", "(S[C[SI)Z", (void*)setRDSTX}, //29 - {"tuneTX", "(F)Z", (void*)tuneTX}, //30 - {"setFmStatus", "(IZ)Z",(void*)setFmStatus}, - {"getFmStatus", "(I)Z",(void*)getFmStatus}, -}; - - -/* - * Register several native methods for one class. - */ -static jint registerNativeMethods(JNIEnv* env, const char* className, - JNINativeMethod* gMethods, int numMethods) -{ - jclass clazz; - - clazz = env->FindClass(className); - if(env->ExceptionCheck()){ - env->ExceptionDescribe(); - env->ExceptionClear(); - } - if (clazz == NULL) { - LOGE("Native registration unable to find class '%s'", className); - return JNI_FALSE; - } - if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) { - LOGE("RegisterNatives failed for '%s'", className); - return JNI_FALSE; - } - - LOGD("%s, success\n", __func__); - return JNI_TRUE; -} - -/* - * Register native methods for all classes we know about. - * - * returns JNI_TRUE on success. - */ -static jint registerNatives(JNIEnv* env) -{ - jint ret = JNI_FALSE; - - if (registerNativeMethods(env, classPathNameRx,methodsRx, - sizeof(methodsRx) / sizeof(methodsRx[0]))){ - ret = JNI_TRUE; - } - - if (registerNativeMethods(env, classPathNameTx,methodsTx, - sizeof(methodsTx) / sizeof(methodsTx[0]))){ - ret = JNI_TRUE; - } - - LOGD("%s, done\n", __func__); - return ret; -} - - -// ---------------------------------------------------------------------------- - -/* - * This is called by the VM when the shared library is first loaded. - */ - -typedef union { - JNIEnv* env; - void* venv; -} UnionJNIEnvToVoid; - -jint JNI_OnLoad(JavaVM* vm, void* reserved) -{ - UnionJNIEnvToVoid uenv; - uenv.venv = NULL; - jint result = -1; - JNIEnv* env = NULL; - - LOGI("JNI_OnLoad"); - - if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) { - LOGE("ERROR: GetEnv failed"); - goto bail; - } - env = uenv.env; - - if (registerNatives(env) != JNI_TRUE) { - LOGE("ERROR: registerNatives failed"); - goto bail; - } - - if ((g_idx = FMR_init()) < 0) { - goto bail; - } - result = JNI_VERSION_1_4; - -bail: - return result; -} diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt519x.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt519x.cpp deleted file mode 100644 index 7416b83..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt519x.cpp +++ /dev/null @@ -1,342 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" -#include <ATVCtrl.h> - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_519x" - -extern "C" { - using namespace android; - - int ATVC_fm_powerup(void* parm){return ATVCtrl::ATVC_fm_powerup(parm);} - int ATVC_fm_powerdown(void){return ATVCtrl::ATVC_fm_powerdown();} - int ATVC_fm_getrssi(int* val){return ATVCtrl::ATVC_fm_getrssi(val);} - int ATVC_fm_tune(void* parm){return ATVCtrl::ATVC_fm_tune(parm);} - int ATVC_fm_seek(void* parm){return ATVCtrl::ATVC_fm_seek(parm);} - int ATVC_fm_scan(void* parm){return ATVCtrl::ATVC_fm_scan(parm);} - int ATVC_fm_mute(int val){return ATVCtrl::ATVC_fm_mute(val);} - int ATVC_fm_getchipid(unsigned short int* val){return ATVCtrl::ATVC_fm_getchipid(val);} - int ATVC_fm_isRDSsupport(int* val){return ATVCtrl::ATVC_fm_isRDSsupport(val);} - int ATVC_fm_isFMPowerUp(int* val){return ATVCtrl::ATVC_fm_isFMPowerUp(val);} -} - -#ifdef __cplusplus -extern "C" { -#endif - -#define MT519X_VFD_MAX 10 -#define MT519X_VFD_BASE 20 - -static int g_stopscan = 0; -static int vfd[MT519X_VFD_MAX] = {0}; - -int MT519X_open_dev(const char *pname, int *fd); -int MT519X_close_dev(int fd); -int MT519X_pwr_up(int fd, int band, int freq); -int MT519X_pwr_down(int fd, int type); -int MT519X_seek(int fd, int *freq, int band, int dir, int lev); -int MT519X_sw_scan(int fd, uint16_t *scan_tbl, int *max_num, int band, int sort); -int MT519X_scan(int fd, uint16_t *tbl, int *num); -int MT519X_stop_scan(int fd); -int MT519X_tune(int fd, int freq, int band); -int MT519X_set_mute(int fd, int mute); -int MT519X_is_fm_pwrup(int fd, int *pwrup); -int MT519X_is_rdsrx_support(int fd, int *supt); -int MT519X_is_rdstx_support(int fd, int *supt); -int MT519X_turn_on_off_rds(int fd, int onoff); -int MT519X_get_chip_id(int fd, int *chipid); - - -void MT519X_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT519X_open_dev; - cbk_tbl->close_dev = MT519X_close_dev; - cbk_tbl->pwr_up = MT519X_pwr_up; - cbk_tbl->pwr_down = MT519X_pwr_down; - cbk_tbl->seek = MT519X_seek; - cbk_tbl->scan = MT519X_sw_scan; //hw_scan or sw_scan. - cbk_tbl->stop_scan = MT519X_stop_scan; - cbk_tbl->tune = MT519X_tune; - cbk_tbl->set_mute = MT519X_set_mute; - cbk_tbl->is_fm_pwrup = MT519X_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = MT519X_is_rdsrx_support; - cbk_tbl->is_rdstx_support = MT519X_is_rdstx_support; - cbk_tbl->turn_on_off_rds = MT519X_turn_on_off_rds; - cbk_tbl->get_chip_id = MT519X_get_chip_id; - - return; -} - -int MT519X_open_dev(const char *pname, int *fd) -{ - int idx; - int ret = 0; - - for (idx=0;idx<MT519X_VFD_MAX;idx++) { - if (vfd[idx] == 0) { - vfd[idx] = 1; - *fd = idx+MT519X_VFD_BASE; - return ret; - } - } - - return -ERR_INVALID_FD; -} - -int MT519X_close_dev(int fd) -{ - if (vfd[fd-MT519X_VFD_BASE] == 1) { - vfd[fd-MT519X_VFD_BASE] = 0; - return 0; - } else { - return -1; - } -} - -int MT519X_pwr_up(int fd, int band, int freq) -{ - int ret = 0; - struct fm_tune_parm parm; - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SEEK_SPACE; - - if(ATVC_fm_powerup(&parm)) - { - ret = 0; - } - else - { - ret = ERR_FW_NORES; - } - return ret; -} - -int MT519X_pwr_down(int fd, int type) -{ - int ret = 0; - - if(ATVC_fm_powerdown()) - { - ret = 0; - } - else - { - ret = ERR_FW_NORES; - } - return ret; -} - -int MT519X_get_chip_id(int fd, int *chipid) -{ - int ret = 0; - - ret = ATVC_fm_getchipid((short unsigned int *)chipid)?0:1; - return ret; -} - -int MT519X_get_rssi(int fd, int *rssi) -{ - int ret = 0; - - ret = ATVC_fm_getrssi(rssi)?0:1; - return ret; -} - -int MT519X_tune(int fd, int freq, int band) -{ - int ret = 0; - struct fm_tune_parm parm; - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SEEK_SPACE; - - ret = ATVC_fm_tune(&parm); - return ret?0:1; -} - -int MT519X_seek(int fd, int *freq, int band, int dir, int lev) -{ - int ret = 0; - struct fm_seek_parm parm; - - bzero(&parm, sizeof(struct fm_tune_parm)); - - parm.band = band; - parm.freq = *freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SEEK_SPACE; - if (dir == 1) { - parm.seekdir = FM_SEEK_UP; - } else if (dir == 0) { - parm.seekdir = FM_SEEK_DOWN; - } - parm.seekth = lev; - - ret = ATVC_fm_seek(&parm)?0:1; - if (ret == 0) { - *freq = parm.freq; - } - - return ret; -} - -int MT519X_set_mute(int fd, int mute) -{ - int ret = 0; - - ret = ATVC_fm_mute(mute)?0:1; - - return ret; -} - -int MT519X_is_fm_pwrup(int fd, int *pwrup) -{ - int ret = 0; - - ret = ATVC_fm_isFMPowerUp(pwrup); - return ret; -} - -int MT519X_is_rdsrx_support(int fd, int *supt) -{ - int ret = 0; - - ret = ATVC_fm_isRDSsupport(supt)?0:1; - return ret; -} - -int MT519X_is_rdstx_support(int fd, int *supt) -{ - int ret = 0; - - *supt = 0; - return ret; -} - -int MT519X_sw_scan(int fd, uint16_t *scan_tbl, int *max_num, int band, int sort) -{ - int ret = 0; - int chl_cnt = 0; - struct fm_seek_parm parm; - int start_freq = FM_FREQ_MIN; - - g_stopscan = false; - - do - { - bzero(&parm, sizeof(struct fm_tune_parm)); - parm.band = band; - parm.freq = start_freq; - parm.hilo = FM_AUTO_HILO_OFF; - parm.space = FM_SEEK_SPACE; - parm.seekdir = FM_SEEK_UP; - parm.seekth = FM_SEEKTH_LEVEL_DEFAULT; - - ret = ATVC_fm_seek(&parm)?0:1; - - if (ret) - { - LOGE("FM scan faild:%d:%d\n", ret, parm.err); - return NULL; - } - - if((parm.err == FM_SUCCESS) - && (chl_cnt < *max_num) - && (parm.freq > start_freq)) - { - scan_tbl[chl_cnt] = parm.freq; - chl_cnt++; - LOGI("FM scan:%d:%d\n", chl_cnt, parm.freq); - } - else - { - break; - } - start_freq = parm.freq; - } while (!g_stopscan); - - if(g_stopscan) - { - LOGI("FM force stop scan\n"); - g_stopscan = false; - } - - *max_num = chl_cnt; - - if(g_stopscan) - { - LOGI("FM force stop scan\n"); - g_stopscan = false; - } - - LOGI("FM sw scan %d station found\n", chl_cnt); - return ret; -} - - -int MT519X_stop_scan(int fd) -{ - int ret = 0; - - g_stopscan = 1; - return ret; -} - -int MT519X_turn_on_off_rds(int fd, int onoff) -{ - return 0; -} - -#ifdef __cplusplus -} -#endif - - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6616.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6616.cpp deleted file mode 100644 index a41e2c8..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6616.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_MT6616" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6616_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - //TODO important!!!, check if it's valid FM chip, hard code here. - - ret = bt_set_controller_force_sleep(FM_CHIP_MT6616); - - return ret; -} - -int MT6616_stop_scan(int fd) -{ - int ret = 0; - if (fd < 0){ - LOGE("FM fd unavailable for stopscan\n"); - ret = ERR_INVALID_FD; - goto out; - } - - if(lseek(fd, 0, SEEK_END) != -1){ - LOGE("Stopscan failed\n"); - ret = -1; - goto out; - } - else - LOGD("Stopscan Success,[fd=%d]\n", fd); -out: - return ret; -} - -void MT6616_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6616_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - cbk_tbl->seek = COM_seek; - cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - cbk_tbl->stop_scan = MT6616_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6620.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6620.cpp deleted file mode 100644 index dea2bd6..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6620.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "FMLIB_MT6620" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6620_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - - //TODO important!!!, check if it's valid FM chip here. - - return ret; -} - -int MT6620_stop_scan(int fd) -{ - int ret = 0; - if (fd < 0){ - LOGE("FM fd unavailable for stopscan\n"); - ret = ERR_INVALID_FD; - goto out; - } - - //becare for the impliment of lseek in FM driver char device driver - if(lseek(fd, 0, SEEK_END) != 0){ - LOGE("Stopscan failed\n"); - ret = -1; - goto out; - }else - LOGD("Stopscan Success,[fd=%d]\n", fd); -out: - return ret; -} - -void MT6620_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6620_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - cbk_tbl->seek = COM_seek; - cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - cbk_tbl->scan_new = COM_hw_scan_new; - cbk_tbl->seek_new = COM_seek_new; - cbk_tbl->tune_new = COM_tune_new; - cbk_tbl->fastget_rssi = COM_fastget_rssi; - cbk_tbl->stop_scan = MT6620_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - //FOR RDS TX. - //TODO RDS TX functions. - cbk_tbl->is_tx_support = COM_tx_support; - cbk_tbl->tx_pwrup = COM_tx_pwrup; - cbk_tbl->rdstx_onoff = COM_rdstx_onoff; - cbk_tbl->tx_tune = COM_tx_tune; - cbk_tbl->tx_scan = COM_tx_scan; - cbk_tbl->rdstx = COM_rdstx; - //FM over BT - cbk_tbl->fm_over_bt = COM_fm_over_bt; - //FM short antenna - cbk_tbl->ana_switch = COM_ana_switch; - cbk_tbl->get_caparray = COM_get_caparray; - //RX EM mode use - cbk_tbl->get_badratio = COM_get_badratio; - cbk_tbl->get_stereomono = COM_get_stereomono; - cbk_tbl->set_stereomono = COM_set_stereomono; - cbk_tbl->get_hw_info = COM_get_hw_info; - - cbk_tbl->soft_mute_tune = COM_Soft_Mute_Tune; - cbk_tbl->is_dese_chan = COM_is_dese_chan;//COM_dese_chan_check; - cbk_tbl->desense_check = COM_desense_check; - cbk_tbl->pre_search = COM_pre_search; - cbk_tbl->restore_search = COM_restore_search; - //EM - cbk_tbl->set_search_threshold = COM_set_search_threshold; - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6626.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6626.cpp deleted file mode 100644 index 8b5ad35..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6626.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6626_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - //TODO important!!!, check if it's valid FM chip, hard code here. - - ret = bt_set_controller_force_sleep(FM_CHIP_MT6626); - - return ret; -} - -int MT6626_stop_scan(int fd) -{ - int ret = 0; - if (fd < 0){ - LOGE("FM fd unavailable for stopscan\n"); - ret = ERR_INVALID_FD; - goto out; - } - - if(lseek(fd, 0, SEEK_END) != -1){ - LOGE("Stopscan failed\n"); - ret = -1; - goto out; - } - else - LOGD("Stopscan Success,[fd=%d]\n", fd); -out: - return ret; -} - -void MT6626_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6626_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - cbk_tbl->seek = COM_seek; - cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - cbk_tbl->scan_new = COM_hw_scan_new; - cbk_tbl->seek_new = COM_seek_new; - cbk_tbl->tune_new = COM_tune_new; - cbk_tbl->stop_scan = MT6626_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->ana_switch = COM_ana_switch; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - //RX EM mode use - cbk_tbl->get_caparray = COM_get_caparray; - cbk_tbl->get_badratio = COM_get_badratio; - cbk_tbl->get_stereomono = COM_get_stereomono; - cbk_tbl->set_stereomono = COM_set_stereomono; - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6627.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6627.cpp deleted file mode 100644 index 8af454c..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6627.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6627_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - - //TODO important!!!, check if it's valid FM chip here. - - return ret; -} - -/*int MT6627_stop_scan(int fd) -{ - int ret = 0; - if (fd < 0){ - LOGE("FM fd unavailable for stopscan\n"); - ret = ERR_INVALID_FD; - goto out; - } - - if(lseek(fd, 0, SEEK_END) != 0){ - LOGE("Stopscan failed\n"); - ret = -1; - goto out; - }else - LOGD("Stopscan Success,[fd=%d]\n", fd); -out: - return ret; -}*/ - -void MT6627_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6627_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - //cbk_tbl->seek = COM_seek; - //cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - //cbk_tbl->scan_new = COM_hw_scan_new; - //cbk_tbl->seek_new = COM_seek_new; - //cbk_tbl->tune_new = COM_tune_new; - //cbk_tbl->stop_scan = MT6627_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->fm_set_status = COM_fm_set_status; - cbk_tbl->fm_get_status = COM_fm_get_status; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - //FM over BT - //cbk_tbl->fm_over_bt = COM_fm_over_bt; - //FM short antenna - cbk_tbl->ana_switch = COM_ana_switch; - cbk_tbl->get_caparray = COM_get_caparray; - //RX EM mode use - cbk_tbl->get_badratio = COM_get_badratio; - cbk_tbl->get_stereomono = COM_get_stereomono; - cbk_tbl->set_stereomono = COM_set_stereomono; - cbk_tbl->get_cqi = COM_get_cqi; - cbk_tbl->is_dese_chan = COM_is_dese_chan; - cbk_tbl->desense_check = COM_desense_check; - cbk_tbl->get_hw_info = COM_get_hw_info; - //soft mute tune - cbk_tbl->soft_mute_tune = COM_Soft_Mute_Tune; - cbk_tbl->pre_search = COM_pre_search; - cbk_tbl->restore_search = COM_restore_search; - //EM - cbk_tbl->set_search_threshold = COM_set_search_threshold; - cbk_tbl->full_cqi_logger = COM_full_cqi_logger; - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6628.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6628.cpp deleted file mode 100644 index 15d0a85..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6628.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6628_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - - //TODO important!!!, check if it's valid FM chip here. - - return ret; -} - -int MT6628_stop_scan(int fd) -{ - int ret = 0; - if (fd < 0){ - LOGE("FM fd unavailable for stopscan\n"); - ret = ERR_INVALID_FD; - goto out; - } - - //becare for the impliment of lseek in FM driver char device driver - if(lseek(fd, 0, SEEK_END) != 0){ - LOGE("Stopscan failed\n"); - ret = -1; - goto out; - }else - LOGD("Stopscan Success,[fd=%d]\n", fd); -out: - return ret; -} - -void MT6628_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6628_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - cbk_tbl->seek = COM_seek; - cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - cbk_tbl->scan_new = COM_hw_scan_new; - cbk_tbl->seek_new = COM_seek_new; - cbk_tbl->tune_new = COM_tune_new; - cbk_tbl->stop_scan = MT6628_stop_scan; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - //FM over BT - cbk_tbl->fm_over_bt = COM_fm_over_bt; - //FM short antenna - cbk_tbl->ana_switch = COM_ana_switch; - cbk_tbl->get_caparray = COM_get_caparray; - //RX EM mode use - cbk_tbl->get_badratio = COM_get_badratio; - cbk_tbl->get_stereomono = COM_get_stereomono; - cbk_tbl->set_stereomono = COM_set_stereomono; - cbk_tbl->get_cqi = COM_get_cqi; - cbk_tbl->is_dese_chan = COM_is_dese_chan; - cbk_tbl->desense_check = COM_desense_check; - cbk_tbl->get_hw_info = COM_get_hw_info; - //soft mute tune - cbk_tbl->soft_mute_tune = COM_Soft_Mute_Tune; - cbk_tbl->pre_search = COM_pre_search; - cbk_tbl->restore_search = COM_restore_search; - //EM - cbk_tbl->set_search_threshold = COM_set_search_threshold; - cbk_tbl->full_cqi_logger = COM_full_cqi_logger; - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/mt6630.cpp b/MediaTek/fmradiolibs/fmnative/fmr/mt6630.cpp deleted file mode 100644 index 04e9b27..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/mt6630.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -int MT6630_open_dev(const char *pname, int *fd) -{ - int ret = 0; - ret = COM_open_dev(pname, fd); - - //TODO important!!!, check if it's valid FM chip here. - - return ret; -} - -void MT6630_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_tbl->open_dev = MT6630_open_dev; - cbk_tbl->close_dev = COM_close_dev; - cbk_tbl->pwr_up = COM_pwr_up; - cbk_tbl->pwr_down = COM_pwr_down; - //cbk_tbl->seek = COM_seek; - //cbk_tbl->scan = COM_hw_scan; //hw_scan or sw_scan. - //cbk_tbl->scan_new = COM_hw_scan_new; - //cbk_tbl->seek_new = COM_seek_new; - //cbk_tbl->tune_new = COM_tune_new; - cbk_tbl->tune = COM_tune; - cbk_tbl->set_mute = COM_set_mute; - cbk_tbl->is_fm_pwrup = COM_is_fm_pwrup; - cbk_tbl->fm_set_status = COM_fm_set_status; - cbk_tbl->fm_get_status = COM_fm_get_status; - cbk_tbl->is_rdsrx_support = COM_is_rdsrx_support; - cbk_tbl->is_rdstx_support = COM_is_rdstx_support; - cbk_tbl->turn_on_off_rds = COM_turn_on_off_rds; - cbk_tbl->get_chip_id = COM_get_chip_id; - //For RDS RX. - cbk_tbl->read_rds_data = COM_read_rds_data; - cbk_tbl->get_pi = COM_get_pi; - cbk_tbl->get_ps = COM_get_ps; - cbk_tbl->get_pty = COM_get_pty; - cbk_tbl->get_rssi = COM_get_rssi; - cbk_tbl->get_rt = COM_get_rt; - cbk_tbl->active_af = COM_active_af; - cbk_tbl->active_ta = COM_active_ta; - cbk_tbl->deactive_ta = COM_deactive_ta; - //FM over BT - cbk_tbl->fm_over_bt = COM_fm_over_bt; - //FM short antenna - cbk_tbl->ana_switch = COM_ana_switch; - cbk_tbl->get_caparray = COM_get_caparray; - //RX EM mode use - cbk_tbl->get_badratio = COM_get_badratio; - cbk_tbl->get_stereomono = COM_get_stereomono; - cbk_tbl->set_stereomono = COM_set_stereomono; - cbk_tbl->get_cqi = COM_get_cqi; - cbk_tbl->is_dese_chan = COM_is_dese_chan; - cbk_tbl->desense_check = COM_desense_check; - cbk_tbl->get_hw_info = COM_get_hw_info; - //soft mute tune - cbk_tbl->soft_mute_tune = COM_Soft_Mute_Tune; - cbk_tbl->pre_search = COM_pre_search; - cbk_tbl->restore_search = COM_restore_search; - //EM - cbk_tbl->set_search_threshold = COM_set_search_threshold; - cbk_tbl->full_cqi_logger = COM_full_cqi_logger; - - //TX - cbk_tbl->is_tx_support = COM_tx_support; - cbk_tbl->tx_pwrup = COM_tx_pwrup; - cbk_tbl->rdstx_onoff = COM_rdstx_onoff; - cbk_tbl->tx_tune = COM_tx_tune; - cbk_tbl->tx_scan = COM_tx_scan; - cbk_tbl->rdstx = COM_rdstx; - - return; -} - -#ifdef __cplusplus -} -#endif - diff --git a/MediaTek/fmradiolibs/fmnative/fmr/target.cpp b/MediaTek/fmradiolibs/fmnative/fmr/target.cpp deleted file mode 100644 index 2e65c36..0000000 --- a/MediaTek/fmradiolibs/fmnative/fmr/target.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* Copyright Statement: - * - * This software/firmware and related documentation ("MediaTek Software") are - * protected under relevant copyright laws. The information contained herein is - * confidential and proprietary to MediaTek Inc. and/or its licensors. Without - * the prior written permission of MediaTek inc. and/or its licensors, any - * reproduction, modification, use or disclosure of MediaTek Software, and - * information contained herein, in whole or in part, shall be strictly - * prohibited. - * - * MediaTek Inc. (C) 2010. All rights reserved. - * - * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES - * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") - * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER - * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL - * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR - * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH - * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, - * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES - * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. - * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO - * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK - * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE - * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR - * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S - * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE - * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE - * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE - * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. - * - * The following software/firmware and/or related documentation ("MediaTek - * Software") have been modified by MediaTek Inc. All revisions are subject to - * any receiver's applicable license agreements with MediaTek Inc. - */ - -#include "fmr.h" - -void TGT_init(struct fm_cbk_tbl *cbk_tbl) -{ - //Basic functions. - cbk_table->open_dev = TGT_open_dev; - cbk_table->close_dev = TGT_close_dev; - cbk_table->pwr_up = TGT_pwr_up; - cbk_table->pwr_down = TGT_pwr_down; - cbk_table->seek = TGT_seek; - cbk_table->scan = TGT_hw_scan; //hw_scan or sw_scan. - cbk_table->stop_scan = TGT_stop_scan; - cbk_table->tune = TGT_tune; - cbk_table->set_mute = TGT_set_mute; - cbk_table->is_fm_pwrup = TGT_is_fm_pwrup; - cbk_table->is_rdsrx_support = TGT_is_rdsrx_support; - cbk_table->is_rdstx_support = TGT_is_rdstx_support; - cbk_table->turn_on_off_rds = TGT_turn_on_off_rds; - cbk_table->get_chip_id = TGT_get_chip_id; - //For RDS RX. - cbk_table->read_rds_data = TGT_read_rds_data; - cbk_table->get_pi = TGT_get_pi; - cbk_table->get_ps = TGT_get_ps; - cbk_table->get_pty = TGT_get_pty; - cbk_table->get_rssi = TGT_get_rssi; - cbk_table->get_rt = TGT_get_rt; - cbk_table->active_af = TGT_active_af; - cbk_table->active_ta = TGT_active_ta; - cbk_table->deactive_ta = TGT_deactive_ta; - //FOR RDS TX. - //TODO RDS TX functions. - return; -} - -int TGT_open_dev(const char *pname, int *fd) -{ - int ret = 0;; - ret = COM_open_dev(pname, fd); - //TODO important!!!, check if it's valid FM chip here. - - return ret; -} - -int TGT_close_dev(int fd, int freq) -{ - return COM_close_dev(fd, freq); -} - -int TGT_pwr_up(int fd) -{ - return COM_pwr_up(fd); -} - -int TGT_pwr_down(int fd, int type) -{ - return COM_pwr_down(fd, type); -} - -int TGT_get_chip_id(int fd, int *chipid) -{ - return COM_get_chip_id(fd, chipid); -} - -int TGT_get_rssi(int fd, int *rssi) -{ - return COM_get_rssi(fd, rssi); -} - -char *TGT_get_ps(int fd) -{ - return COM_get_ps(fd); -} - -char *TGT_get_rt(int fd) -{ - return COM_get_rt(fd); -} - -int TGT_get_pi(int fd) -{ - return COM_get_pi(fd); -} - -int TGT_get_pty(int fd) -{ - return COM_get_pty(fd); -} - -int TGT_tune(int fd, int freq, int band) -{ - return COM_tune(fd, freq, band); -} - -int TGT_seek(int fd, int start_freq, int dir) -{ - return COM_seek(fd, start_freq, dir); -} - -int TGT_set_mute(int fd, int mute) -{ - return COM_set_mute(fd, mute); -} - -int TGT_is_fm_pwrup(int fd) -{ - return COM_is_fm_pwrup(fd); -} - -int TGT_is_rdsrx_support(int fd) -{ - return COM_is_rdsrx_support(fd); -} - -int TGT_is_rdstx_support(int fd) -{ - return COM_is_rdstx_support(fd); -} - -int TGT_sw_scan(int fd, uint16_t *scan_tbl, int max_cnt, int band) -{ - return COM_sw_scan(fd, scan_tbl, max_cnt, band); -} - -int TGT_hw_scan(int fd, uint16_t *scan_tbl, int max_cnt, int band) -{ - return COM_hw_scan(fd, scan_tbl, max_cnt, band); -} - -int TGT_stop_scan(int fd) -{ - return COM_stop_scan(); -} - -int TGT_turn_on_off_rds(int fd, int onoff) -{ - return COM_turn_on_off_rds(fd, onoff); -} - -uint16_t TGT_read_rds_data(int fd) -{ - return COM_read_rds_data(fd); -} - -int TGT_active_af(int fd) -{ - return COM_active_af(fd); -} - -int TGT_active_ta(int fd) -{ - return COM_active_ta(fd); -} - -int TGT_deactive_ta(int fd) -{ - return COM_deactive_ta(fd); -}
\ No newline at end of file |
