0
点赞
收藏
分享

微信扫一扫

android JB2版本FM中无RDS功能设置选项


在JB2版本上没有RDS频道信息和频率切换设置选项,RDS频道信息和频率切换是默认开启的,即虽然没有相关菜单RDS相关信息都不会遗漏,这样也方便用户使用




部分客户一定要求添加,可按如下修改



1.修改FMRadioActivity.java中    private final ServiceConnection mServiceConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
。。。。


                powerUpFM();
之后添加如下:

// Get RDS settings from database and set them into FM service.
mIsPSRTEnabled = FMRadioStation.getRDSEnabled(mContext,
FMRadioStation.RDS_SETTING_FREQ_PSRT);
mIsAFEnabled = FMRadioStation.getRDSEnabled(mContext,
FMRadioStation.RDS_SETTING_FREQ_AF);
enablePSRT(mIsPSRTEnabled);
enableAF(mIsAFEnabled);


2.在FMRadioActivity类中添加如下:

public boolean mIsPSRTEnabled = false;
public boolean mIsAFEnabled =false;

private void enablePSRT(boolean enable) {
if (null != mService) {
mService.enablePSRT(enable);
}
}
private void enableAF(boolean enable) {
if (null != mService) {
mService.enableAF(enable);
}
}
void showRDSDialog(){
boolean[] checkedItems = new boolean[2];

CharSequence[] items = new CharSequence[2];
items[0] = "RDS channel_information";
items[1] = "RDS alternative_frequency";
Context context = this.getApplicationContext();
checkedItems[0] = FMRadioStation.getRDSEnabled(context,
FMRadioStation.RDS_SETTING_FREQ_PSRT);
checkedItems[1] = FMRadioStation.getRDSEnabled(context,
FMRadioStation.RDS_SETTING_FREQ_AF);
new AlertDialog.Builder(this)
.setTitle(R.string.optmenu_rds_settings)
.setMultiChoiceItems(items, checkedItems,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (0 == which) {
// RDS PS and RT
mIsPSRTEnabled = isChecked;
FMRadioStation.setRDSEnabled(mContext,
FMRadioStation.RDS_SETTING_FREQ_PSRT,
mIsPSRTEnabled);
enablePSRT(mIsPSRTEnabled);
} else if (1 == which) {
// RDS AF
mIsAFEnabled = isChecked;
FMRadioStation.setRDSEnabled(mContext,
FMRadioStation.RDS_SETTING_FREQ_AF,
mIsAFEnabled);
enableAF(mIsAFEnabled);
}
}
})
.setPositiveButton(R.string.btn_ok, null)
.setCancelable(true)
.create()
.show();

}


3.修改    public boolean onOptionsItemSelected(MenuItem item) 
中        case R.id.fm_menu:
在            boolean isPlaying = mService.isPowerUp();
之前添加:            menu.findItem(R.id.fm_RDS_setting).setEnabled(mService.isRDSSupported());




4.修改mediatek\packages\apps\FMRadio\res\menu\fm_menu.xml文件,
添加menu:
 <item android:id="@+id/fm_RDS_setting"
   android:title="RDS Setting"
   android:enabled="false"/>  


5.修改    public boolean onMenuItemClick(MenuItem item)


添加
  case R.id.fm_RDS_setting:
                                             showRDSDialog();
   break;


7.修改FMRadioService.java
添加:

public void enablePSRT(boolean enable) {

LogUtils.d(TAG, "FMRadioService.enablePSRT: " + enable);

mIsPSRTEnabled = enable;

if (!mIsPSRTEnabled) {

// Clear PS and RT strings.

setPS("");

setLRText("");

}

}


/**

* open or close AF function

* @param enable true, open; false, close.

*/

public void enableAF(boolean enable) {

LogUtils.d(TAG, "FMRadioService.enableAF: " + enable);

mIsAFEnabled = enable;

}


/**

* inquiry PS RT function opened or not

* @return if open return true, otherwise return false

*/

public boolean isPSRTEnabled() {

LogUtils.d(TAG, "FMRadioService.isPSRTEnabled: " + mIsPSRTEnabled);

return mIsPSRTEnabled;

}


/**

* inquiry AF function opened or not

* @return if open return true, otherwise return false

*/

public boolean isAFEnabled() {

LogUtils.d(TAG, "FMRadioService.isAFEnabled: " + mIsAFEnabled);

return mIsAFEnabled;

}



8.修改    private void startRDSThread() 
将                    if (RDS_EVENT_PROGRAMNAME == (RDS_EVENT_PROGRAMNAME & iRDSEvents)) {
修改成
                        if (mIsPSRTEnabled
                                && RDS_EVENT_PROGRAMNAME == (RDS_EVENT_PROGRAMNAME & iRDSEvents)) {


将                    if (RDS_EVENT_LAST_RADIOTEXT == (RDS_EVENT_LAST_RADIOTEXT & iRDSEvents)) 
修改成:
                        if (mIsPSRTEnabled
                                && RDS_EVENT_LAST_RADIOTEXT == (RDS_EVENT_LAST_RADIOTEXT & iRDSEvents))


将                    if (RDS_EVENT_AF == (RDS_EVENT_AF & iRDSEvents)) {
修改成:
                        if (mIsAFEnabled && RDS_EVENT_AF == (RDS_EVENT_AF & iRDSEvents)) {


9.修改FMRadioStation.java
将注释掉的函数    public static void setRDSEnabled(Context context, int type, boolean enable) {
和    public static boolean getRDSEnabled(Context context, int type) {
开启即可,若没有相关函数可将之前平台上的这两个函数copy过来

举报

相关推荐

0 条评论