aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoyster <oysterized@gmail.com>2016-10-24 13:01:27 +0200
committerMoyster <oysterized@gmail.com>2016-10-24 13:01:27 +0200
commitc90cf4fb7f700dc8a608be09da3bb468dfa64161 (patch)
treeb7f33597c84d26dedafbf36f39161d81a233aec2
parentcdc198e59cdd1aceae304476a848029ddf711f27 (diff)
don't build anything FMRadio related
-rwxr-xr-xMediaTek/FmRadio/Android.mk61
-rwxr-xr-xMediaTek/FmRadio/Android.mk~68
-rwxr-xr-xMediaTek/FmRadio/AndroidManifest.xml80
-rw-r--r--MediaTek/FmRadio/NOTICE0
-rwxr-xr-xMediaTek/FmRadio/README30
-rwxr-xr-xMediaTek/FmRadio/bsp/com/mediatek/fmradio/ExtensionUtils.java49
-rwxr-xr-xMediaTek/FmRadio/ext/Android.mk12
-rw-r--r--MediaTek/FmRadio/ext/NOTICE0
-rwxr-xr-xMediaTek/FmRadio/ext/README25
-rwxr-xr-xMediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/DefaultProjectStringExt.java46
-rwxr-xr-xMediaTek/FmRadio/ext/src/com/mediatek/fmradio/ext/IProjectStringExt.java45
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/bg_rec_infobar.9.pngbin98 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.pngbin126 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.pngbin3022 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.pngbin3009 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.pngbin1317 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.pngbin1992 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.pngbin3020 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.pngbin3008 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.pngbin2955 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.pngbin2944 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.pngbin3059 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.pngbin3042 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.pngbin2870 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.pngbin2869 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.pngbin3064 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.pngbin3050 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_disabled.pngbin3062 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_enabled.pngbin3055 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_disabled.pngbin2863 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_enabled.pngbin2864 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.pngbin3220 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.pngbin3242 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.pngbin3505 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.pngbin3442 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.pngbin3444 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.pngbin3393 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/fm_anim.pngbin3108 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.pngbin1338 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-hdpi/ic_launcher.pngbin9162 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.pngbin157 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.pngbin157 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.pngbin3329 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.pngbin3401 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.pngbin155 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.pngbin155 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.pngbin135 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.pngbin2845 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.pngbin2994 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.pngbin2966 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.pngbin2876 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.pngbin2875 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.pngbin3000 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.pngbin2970 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_disabled.pngbin2948 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_enabled.pngbin2982 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_disabled.pngbin2857 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_enabled.pngbin2858 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.pngbin3046 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.pngbin2992 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.pngbin3129 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.pngbin3169 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.pngbin3204 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.pngbin3130 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/fm_anim.pngbin3383 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.pngbin417 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldpi/ic_launcher.pngbin2860 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.pngbin361 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease_disable.pngbin348 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.pngbin362 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase_disable.pngbin347 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.pngbin282 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list_disable.pngbin271 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.pngbin407 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation_disable.pngbin387 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.pngbin408 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation_disable.pngbin398 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_disabled.pngbin422 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_enabled.pngbin432 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.pngbin488 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.pngbin211 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease_disable.pngbin228 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.pngbin211 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase_disable.pngbin237 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.pngbin158 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.pngbin922 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation_disable.pngbin885 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.pngbin925 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation_disable.pngbin879 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_disabled.pngbin829 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_enabled.pngbin933 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.pngbin642 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.pngbin359 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease_disable.pngbin343 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.pngbin370 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase_disable.pngbin349 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.pngbin197 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list_disable.pngbin189 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.pngbin286 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation_disable.pngbin280 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.pngbin293 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation_disable.pngbin282 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_disabled.pngbin312 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_enabled.pngbin326 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.pngbin305 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.pngbin823 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease_disable.pngbin689 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.pngbin823 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase_disable.pngbin700 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.pngbin785 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list_disable.pngbin667 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.pngbin541 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation_disable.pngbin523 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.pngbin554 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation_disable.pngbin525 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_disabled.pngbin612 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_enabled.pngbin591 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.pngbin603 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.pngbin823 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease_disable.pngbin689 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.pngbin823 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase_disable.pngbin700 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.pngbin785 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list_disable.pngbin667 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.pngbin541 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation_disable.pngbin523 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.pngbin554 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation_disable.pngbin525 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_disabled.pngbin612 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_enabled.pngbin591 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.pngbin603 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-ldrtl/anim.xml9
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/bg_rec_infobar.9.pngbin98 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.pngbin126 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.pngbin3052 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.pngbin3032 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.pngbin857 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.pngbin1239 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.pngbin3045 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.pngbin3029 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.pngbin2898 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.pngbin2891 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.pngbin2981 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.pngbin2968 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.pngbin2850 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.pngbin2849 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.pngbin2981 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.pngbin2967 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_disabled.pngbin2993 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_enabled.pngbin3001 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_disabled.pngbin2843 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_enabled.pngbin2844 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.pngbin3070 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.pngbin3096 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.pngbin3257 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.pngbin3223 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.pngbin3215 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.pngbin3173 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/fm_anim.pngbin2976 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.pngbin849 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-mdpi/ic_launcher.pngbin5251 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_off.pngbin857 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_on.pngbin1239 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.pngbin98 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.pngbin126 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.pngbin3423 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.pngbin3310 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.pngbin1749 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.pngbin4060 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.pngbin3415 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.pngbin3306 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.pngbin3390 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.pngbin3299 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.pngbin3163 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.pngbin3143 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.pngbin2906 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.pngbin2904 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.pngbin3164 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.pngbin3150 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_disabled.pngbin3217 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_enabled.pngbin3214 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_disabled.pngbin2898 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_enabled.pngbin2899 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.pngbin3578 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.pngbin3586 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.pngbin3714 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.pngbin3658 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.pngbin3653 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.pngbin3590 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/fm_anim.pngbin3226 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.pngbin1846 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.pngbin13662 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.pngbin98 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.pngbin126 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.pngbin3423 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.pngbin3310 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.pngbin1749 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.pngbin4060 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.pngbin3415 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.pngbin3306 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.pngbin3390 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.pngbin3299 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.pngbin3163 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.pngbin3143 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.pngbin2906 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.pngbin2904 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.pngbin3164 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.pngbin3150 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_disabled.pngbin3217 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_enabled.pngbin3214 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_disabled.pngbin2898 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_enabled.pngbin2899 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.pngbin3578 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.pngbin3586 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.pngbin3714 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.pngbin3658 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.pngbin3653 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.pngbin3590 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.pngbin3226 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.pngbin2061 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.pngbin24564 -> 0 bytes
-rwxr-xr-xMediaTek/FmRadio/res/drawable/anim.xml46
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_decrease_frequency.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_favorite_off_selector.xml41
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_favorite_on_selector.xml41
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_increase_frequency.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_list_selector.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_next.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_overflow_selector.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_powerdown_selector.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_powerup_selector.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_previous.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_rec_play.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_rec_stop.xml44
-rwxr-xr-xMediaTek/FmRadio/res/drawable/btn_fm_record.xml44
-rwxr-xr-xMediaTek/FmRadio/res/layout-ldrtl/addstation.xml46
-rwxr-xr-xMediaTek/FmRadio/res/layout-ldrtl/editstation.xml50
-rwxr-xr-xMediaTek/FmRadio/res/layout-ldrtl/fm_recorder_dialog.xml81
-rwxr-xr-xMediaTek/FmRadio/res/layout-ldrtl/main.xml243
-rwxr-xr-xMediaTek/FmRadio/res/layout-sw1024dp-land/main.xml270
-rwxr-xr-xMediaTek/FmRadio/res/layout-sw1024dp-port/main.xml270
-rwxr-xr-xMediaTek/FmRadio/res/layout/addstation.xml80
-rwxr-xr-xMediaTek/FmRadio/res/layout/editstation.xml82
-rwxr-xr-xMediaTek/FmRadio/res/layout/favorite.xml57
-rwxr-xr-xMediaTek/FmRadio/res/layout/fm_recorder_dialog.xml117
-rwxr-xr-xMediaTek/FmRadio/res/layout/fm_rx_em.xml789
-rwxr-xr-xMediaTek/FmRadio/res/layout/main.xml270
-rwxr-xr-xMediaTek/FmRadio/res/layout/simpleadapter.xml70
-rwxr-xr-xMediaTek/FmRadio/res/layout/test_view.xml28
-rwxr-xr-xMediaTek/FmRadio/res/menu/fm_action_bar.xml60
-rwxr-xr-xMediaTek/FmRadio/res/menu/fm_menu.xml48
-rwxr-xr-xMediaTek/FmRadio/res/values-af/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-am/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-ar/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-bg/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-bn/strings.xml110
-rwxr-xr-xMediaTek/FmRadio/res/values-ca/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-cs/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-da/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-de-rAT/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-de/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-el/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-en-rGB/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-en-rIN/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-en-rUS/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-es-rUS/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-es/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-et-rEE/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-fa/strings.xml109
-rwxr-xr-xMediaTek/FmRadio/res/values-fi/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-fr-rCA/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-fr/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-hi/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-hr/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-hu/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-hy-rAM/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-in/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-it/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-iw/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-ja/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-ka-rGE/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-kk/strings.xml70
-rwxr-xr-xMediaTek/FmRadio/res/values-km-rKH/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-ko/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-lo-rLA/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-lt/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-lv/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-mn-rMN/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-ms/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-my-rMM/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-my-rZG/strings.xml70
-rwxr-xr-xMediaTek/FmRadio/res/values-nb/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-nl/strings.xml109
-rwxr-xr-xMediaTek/FmRadio/res/values-pl/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-pt-rPT/strings.xml109
-rwxr-xr-xMediaTek/FmRadio/res/values-pt/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-ro/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-ru/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-sk/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-sl/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-sr/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-sv/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-sw/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values-th/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-tl/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-tr/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-uk/strings.xml107
-rwxr-xr-xMediaTek/FmRadio/res/values-ur/strings.xml109
-rwxr-xr-xMediaTek/FmRadio/res/values-vi/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-zh-rCN/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-zh-rHK/strings.xml70
-rwxr-xr-xMediaTek/FmRadio/res/values-zh-rTW/strings.xml108
-rwxr-xr-xMediaTek/FmRadio/res/values-zu/strings.xml98
-rwxr-xr-xMediaTek/FmRadio/res/values/strings.xml149
-rwxr-xr-xMediaTek/FmRadio/res/values/strings_test.xml6
-rwxr-xr-xMediaTek/FmRadio/res/values/styles.xml45
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java2196
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioActivity.java~2196
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioContentProvider.java297
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioEmActivity.java1049
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioFavorite.java533
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioListener.java140
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioNative.java253
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java2802
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioService.java~2802
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioStation.java524
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRadioUtils.java262
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRecordDialogFragment.java333
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/FmRecorder.java807
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java168
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/TestFM.java~168
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/AddFavoriteDialog.java137
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/DeleteFavoriteDialog.java107
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/EditFavoriteDialog.java225
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/NoAntennaDialog.java124
-rwxr-xr-xMediaTek/FmRadio/src/com/mediatek/fmradio/dialogs/SearchChannelsDialog.java111
-rwxr-xr-xMediaTek/FmRadio/tests/Android.mk57
-rwxr-xr-xMediaTek/FmRadio/tests/AndroidManifest.xml27
-rw-r--r--MediaTek/FmRadio/tests/NOTICE0
-rwxr-xr-xMediaTek/FmRadio/tests/README25
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioActivityTest.java1054
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFavoriteTest.java261
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioFunctionRunner.java59
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioLaunchPerformance.java59
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceRunner.java57
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioPerformanceTest.java554
-rwxr-xr-xMediaTek/FmRadio/tests/src/com/mediatek/fmradio/tests/FmRadioTestCaseUtil.java219
-rwxr-xr-xMediaTek/FmRadio/turnkey/com/mediatek/fmradio/ExtensionUtils.java67
-rw-r--r--MediaTek/fmaudioplayer/Android.mk44
-rw-r--r--MediaTek/fmaudioplayer/FMAudioPlayer.cpp1086
-rw-r--r--MediaTek/fmaudioplayer/FMAudioPlayer.h154
-rw-r--r--MediaTek/fmaudioplayer/rtpm_prio.h84
-rwxr-xr-xMediaTek/fmradiolibs/Android.mk28
-rwxr-xr-xMediaTek/fmradiolibs/autofm/Android.mk34
-rwxr-xr-xMediaTek/fmradiolibs/autofm/NOTICE1
-rw-r--r--MediaTek/fmradiolibs/autofm/README17
-rw-r--r--MediaTek/fmradiolibs/autofm/autofm.c1955
-rw-r--r--MediaTek/fmradiolibs/autofm/autofm.h77
-rw-r--r--MediaTek/fmradiolibs/autofm/fm_cust_cfg.h119
-rw-r--r--MediaTek/fmradiolibs/autofm/fm_ioctl.h110
-rw-r--r--MediaTek/fmradiolibs/autofm/fm_main.h244
-rw-r--r--MediaTek/fmradiolibs/autofm/fm_rds.h242
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/Android.mk643
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/NOTICE1
-rw-r--r--MediaTek/fmradiolibs/fmnative/README21
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6620/mt6620_fm_cust.cfg14
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6626/fm_cust.cfg28
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_cust.cfg10
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_coeff.bin1
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v2_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v3_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v4_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v5_patch.bin0
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/fm_cust.cfg10
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_rom.binbin18438 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.binbin1092 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.binbin1028 -> 0 bytes
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_cust.cfg8
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff.binbin1092 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff_tx.binbin1092 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.binbin1028 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch_tx.binbin1028 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.binbin1092 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff_tx.binbin1092 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.binbin1028 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch_tx.binbin1028 -> 0 bytes
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_coeff_tx.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v3_patch_tx.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_coeff_tx.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v4_patch_tx.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_coeff_tx.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch.bin0
-rw-r--r--MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v5_patch_tx.bin0
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/custom/Android.mk40
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/custom/Android.mk~40
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/custom/NOTICE1
-rw-r--r--MediaTek/fmradiolibs/fmnative/custom/README20
-rw-r--r--MediaTek/fmradiolibs/fmnative/custom/custom.cpp237
-rw-r--r--MediaTek/fmradiolibs/fmnative/custom/custom.cpp~237
-rw-r--r--MediaTek/fmradiolibs/fmnative/custom/fm.h656
-rw-r--r--MediaTek/fmradiolibs/fmnative/custom/fmlib_cust.h84
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/fmr/Android.mk231
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/fmr/Android.mk~231
-rwxr-xr-xMediaTek/fmradiolibs/fmnative/fmr/NOTICE1
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/README25
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/ar1000.cpp89
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/bt_ctrl.cpp445
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/common.cpp1389
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/fm.h656
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/fmr.h341
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/fmr.h~341
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/fmr_core.cpp2176
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/fmr_err.cpp60
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/libfm_jni.cpp1245
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt519x.cpp342
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6616.cpp113
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6620.cpp142
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6626.cpp117
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6627.cpp131
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6628.cpp130
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/mt6630.cpp120
-rw-r--r--MediaTek/fmradiolibs/fmnative/fmr/target.cpp194
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
deleted file mode 100755
index c38132d..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/bg_rec_infobar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png
deleted file mode 100755
index 4985b08..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/bottom_bar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png
deleted file mode 100755
index 24ef191..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png
deleted file mode 100755
index f786a6f..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png
deleted file mode 100755
index 942722e..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png
deleted file mode 100755
index fecb1af..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png
deleted file mode 100755
index 2032636..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png
deleted file mode 100755
index 811f015..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png
deleted file mode 100755
index 61a466e..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png
deleted file mode 100755
index d05cc32..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png
deleted file mode 100755
index a7e326a..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png
deleted file mode 100755
index ae7d400..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png
deleted file mode 100755
index 02bf8e0..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png
deleted file mode 100755
index af02bf8..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_overflow_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png
deleted file mode 100755
index 46c1afe..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png
deleted file mode 100755
index 8e5454f..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 6b3a5e4..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 1e4601b..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 068eecb..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index e5a34bf..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_rec_stop_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png
deleted file mode 100755
index 75d6ac1..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_disabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png
deleted file mode 100755
index e674d07..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_record_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png
deleted file mode 100755
index 067397a..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png
deleted file mode 100755
index 4ce7da3..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_start_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png
deleted file mode 100755
index 3e104c0..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png
deleted file mode 100755
index 3b102e5..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/btn_fm_stop_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png
deleted file mode 100755
index 2309234..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png
deleted file mode 100755
index 9a69528..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/fm_title_icon.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index f2b54b7..0000000
--- a/MediaTek/FmRadio/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png
deleted file mode 100755
index 009b4ba..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png
deleted file mode 100755
index a66f36d..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png
deleted file mode 100755
index eeab430..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png
deleted file mode 100755
index 61cfb69..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png
deleted file mode 100755
index 41941f7..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png
deleted file mode 100755
index b021ca4..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png
deleted file mode 100755
index 73fecf2..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png
deleted file mode 100755
index 498489f..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png
deleted file mode 100755
index c0de4ef..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png
deleted file mode 100755
index cf6dbcf..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png
deleted file mode 100755
index 5c1b6f9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png
deleted file mode 100755
index 21669ab..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_overflow_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png
deleted file mode 100755
index d25704f..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png
deleted file mode 100755
index 84fad14..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 8e74448..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index c1137f9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index efbc115..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 13e35a1..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_rec_stop_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png
deleted file mode 100755
index c208f73..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_disabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png
deleted file mode 100755
index 3f27dd0..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_record_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png
deleted file mode 100755
index 17a20c2..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png
deleted file mode 100755
index da098e8..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_start_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png
deleted file mode 100755
index 2650185..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png
deleted file mode 100755
index 01b9a95..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/btn_fm_stop_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png
deleted file mode 100755
index 20c55ad..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png
deleted file mode 100755
index 672e050..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/fm_title_icon.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png
deleted file mode 100755
index fc1da78..0000000
--- a/MediaTek/FmRadio/res/drawable-ldpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png
deleted file mode 100755
index 6b3ac01..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index c3c46be..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png
deleted file mode 100755
index 0c67050..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 4d68e66..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png
deleted file mode 100755
index 6bf78a9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 0812c1b..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png
deleted file mode 100755
index ac7d6b0..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index c402fa1..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png
deleted file mode 100755
index 1b4276d..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 0b787c1..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 6ecb091..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 6cb1a31..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png
deleted file mode 100755
index 44b5107..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-hdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png
deleted file mode 100755
index 65d407e..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 880b55f..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png
deleted file mode 100755
index d8cfbd3..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 41197c0..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png
deleted file mode 100755
index b0fc9e1..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png
deleted file mode 100755
index 47e9a70..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index acd9c45..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png
deleted file mode 100755
index 5318e4b..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index abe6eb2..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 14ccbeb..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 1a4aa77..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png
deleted file mode 100755
index f4a63ee..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-ldpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png
deleted file mode 100755
index bcd0611..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index f75b2de..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png
deleted file mode 100755
index 8c7cc8b..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index fb5875d..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png
deleted file mode 100755
index b88d8a9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 9813971..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png
deleted file mode 100755
index 162164c..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 1b95d49..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png
deleted file mode 100755
index 7c6e06a..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index e9ca061..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index d1447fb..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 3d0dfef..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png
deleted file mode 100755
index 28e09d3..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-mdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png
deleted file mode 100755
index 9a44bf3..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index dbcb0cf..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png
deleted file mode 100755
index 877bb86..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index b53e3ad..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png
deleted file mode 100755
index a6313e2..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 5064901..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png
deleted file mode 100755
index a0d9bd9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 5aa0d07..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png
deleted file mode 100755
index 2933bd4..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index b042212..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 27593fc..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index cf165ec..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png
deleted file mode 100755
index 70791f5..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xhdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png
deleted file mode 100755
index 9a44bf3..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index dbcb0cf..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png
deleted file mode 100755
index 877bb86..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index b53e3ad..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png
deleted file mode 100755
index a6313e2..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 5064901..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png
deleted file mode 100755
index a0d9bd9..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 5aa0d07..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png
deleted file mode 100755
index 2933bd4..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index b042212..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 27593fc..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index cf165ec..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png
deleted file mode 100755
index 70791f5..0000000
--- a/MediaTek/FmRadio/res/drawable-ldrtl-xxhdpi/fm_anim.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index c38132d..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/bg_rec_infobar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png
deleted file mode 100755
index 4985b08..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/bottom_bar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png
deleted file mode 100755
index 0111567..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png
deleted file mode 100755
index de3e323..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png
deleted file mode 100755
index 05563bf..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png
deleted file mode 100755
index c0c6b49..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png
deleted file mode 100755
index 772530f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png
deleted file mode 100755
index f362f89..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png
deleted file mode 100755
index 5eaf0ba..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png
deleted file mode 100755
index 8fe43b4..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png
deleted file mode 100755
index 01fbc5a..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png
deleted file mode 100755
index 997485f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png
deleted file mode 100755
index 80e2504..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png
deleted file mode 100755
index 3a7bab7..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_overflow_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png
deleted file mode 100755
index 1fe787f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png
deleted file mode 100755
index 71803b8..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 4e1fe7f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 48ee750..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index b54058f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 08f8388..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_rec_stop_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png
deleted file mode 100755
index 0b464d2..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_disabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png
deleted file mode 100755
index 026b9d1..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_record_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png
deleted file mode 100755
index ff53bb9..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png
deleted file mode 100755
index 1bbfb9e..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_start_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png
deleted file mode 100755
index 134807f..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png
deleted file mode 100755
index f9b804a..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/btn_fm_stop_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png
deleted file mode 100755
index 116af88..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png
deleted file mode 100755
index 2f38c87..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/fm_title_icon.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755
index d1cb30b..0000000
--- a/MediaTek/FmRadio/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 05563bf..0000000
--- a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index c0c6b49..0000000
--- a/MediaTek/FmRadio/res/drawable-sw1024dp-ldpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png
deleted file mode 100755
index c38132d..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/bg_rec_infobar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png
deleted file mode 100755
index 4985b08..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/bottom_bar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png
deleted file mode 100755
index 4dd4042..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png
deleted file mode 100755
index 06fe97c..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png
deleted file mode 100755
index c591cae..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png
deleted file mode 100755
index 8f14270..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png
deleted file mode 100755
index 45ce276..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png
deleted file mode 100755
index 16b948e..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png
deleted file mode 100755
index 3028829..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png
deleted file mode 100755
index 8ce3d27..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png
deleted file mode 100755
index 07f4c44..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png
deleted file mode 100755
index 9929646..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png
deleted file mode 100755
index 3902d93..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png
deleted file mode 100755
index 9494074..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_overflow_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png
deleted file mode 100755
index 0b38c7a..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png
deleted file mode 100755
index 7743e11..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index dead2bd..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index bb9582a..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 4bef4e8..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index d2c6c90..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_rec_stop_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png
deleted file mode 100755
index 96590b2..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_disabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png
deleted file mode 100755
index 8c97fcd..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_record_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png
deleted file mode 100755
index e6c0f6b..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png
deleted file mode 100755
index 4fdda08..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_start_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png
deleted file mode 100755
index 68135bc..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png
deleted file mode 100755
index bc88941..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/btn_fm_stop_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png
deleted file mode 100755
index 420dc9c..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png
deleted file mode 100755
index a8d9f5d..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/fm_title_icon.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index c11060e..0000000
--- a/MediaTek/FmRadio/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png b/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png
deleted file mode 100755
index c38132d..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/bg_rec_infobar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png b/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png
deleted file mode 100755
index 4985b08..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/bottom_bar.9.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png
deleted file mode 100755
index 4dd4042..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png
deleted file mode 100755
index 06fe97c..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_decrease_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png
deleted file mode 100755
index c591cae..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_off.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png
deleted file mode 100755
index 8f14270..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_favorite_on.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png
deleted file mode 100755
index 45ce276..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png
deleted file mode 100755
index 16b948e..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_increase_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png
deleted file mode 100755
index 3028829..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png
deleted file mode 100755
index 8ce3d27..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_list_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png
deleted file mode 100755
index 07f4c44..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png
deleted file mode 100755
index 9929646..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_nextstation_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png
deleted file mode 100755
index 3902d93..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png
deleted file mode 100755
index 9494074..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_overflow_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png
deleted file mode 100755
index 0b38c7a..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png
deleted file mode 100755
index 7743e11..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_prevstation_disable.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index dead2bd..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index bb9582a..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_playback_enabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index 4bef4e8..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_disabled.png
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index d2c6c90..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_rec_stop_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png
deleted file mode 100755
index 96590b2..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_disabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png
deleted file mode 100755
index 8c97fcd..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_record_enabled.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png
deleted file mode 100755
index e6c0f6b..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png
deleted file mode 100755
index 4fdda08..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_start_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png
deleted file mode 100755
index 68135bc..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png b/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png
deleted file mode 100755
index bc88941..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/btn_fm_stop_disable.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png b/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png
deleted file mode 100755
index 420dc9c..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_anim.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png b/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png
deleted file mode 100755
index 1ba5028..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/fm_title_icon.png
+++ /dev/null
Binary files differ
diff --git a/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png b/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 964da33..0000000
--- a/MediaTek/FmRadio/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
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 remov‍al 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
deleted file mode 100755
index efce968..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin
deleted file mode 100755
index 929b4a6..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6627/mt6627_fm_v1_patch.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100755
index adebd40..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_rom.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin
deleted file mode 100755
index 0f9f128..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin
deleted file mode 100755
index 8161c8a..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v1_patch.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin
deleted file mode 100755
index ca0c6ad..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin
deleted file mode 100755
index de87a87..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v2_patch.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin
deleted file mode 100755
index 523a0e8..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin
deleted file mode 100755
index d8ae935..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v3_patch.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin
deleted file mode 100755
index 523a0e8..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin
deleted file mode 100755
index d8ae935..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v4_patch.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin
deleted file mode 100755
index 523a0e8..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_coeff.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin
deleted file mode 100755
index d8ae935..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6628/mt6628_fm_v5_patch.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 0bf54f8..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 4744b8e..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_coeff_tx.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin
deleted file mode 100644
index c1b5664..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 2419651..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v1_patch_tx.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin
deleted file mode 100644
index 669349d..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index f709909..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_coeff_tx.bin
+++ /dev/null
Binary files differ
diff --git a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin b/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin
deleted file mode 100644
index b844c26..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch.bin
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 829f661..0000000
--- a/MediaTek/fmradiolibs/fmnative/config/mt6630/mt6630_fm_v2_patch_tx.bin
+++ /dev/null
Binary files differ
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(&param_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(&param_rds_tx.other_rds[0], rds, rdscnt);
- param_rds_tx.other_rds_cnt = rdscnt;*/
-
- ret = ioctl(fd, FM_IOCTL_RDS_TX, &param_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