微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt6735 JB2版本FM中无RDS功能设置选项

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

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
在JB2版本上没有RDS频道信息和频率切换设置选项,RDS频道信息和频率切换是默认开启的,即虽然没有相关菜单RDS相关信息都不会遗漏,这样也方便用户使用
部分客户一定要求添加,可按如下修改
[SOLUTION]
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);
mService.setRDSAsync(false);
mService.setRDSAsync(true);
}
}
private void enableAF(boolean enable) {
if (null != mService) {
mService.enableAF(enable);
mService.setRDSAsync(false);
mService.setRDSAsync(true);
}
}
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过来

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top