一、功能实现
方法封装
private final Object mLock = new Object();
private RadioTuner mRadioTuner;
/**
* 向上调频/调辐
*/
public void setRadioSeekUp(boolean tag) {
synchronized (mLock) {
Log.i(TAG, "CONTROL_ACTION_SEEKUP mLock");
if (mRadioTuner == null) {
mRadioTuner = openSession(mRadioCallback);
}
// 设置静音
mRadioTuner.setMute(true);
// 开始调频/调辐
if (tag) {
mRadioTuner.scan(RadioTuner.DIRECTION_UP, true);
} else {
mRadioTuner.scan(RadioTuner.DIRECTION_DOWN, true);
}
}
}
这里不论向上或向下调频/调辐,最后都是调用 RadioTuner.scan() 方法。
二、源码分析
1、调频/调辐
RadioTuner.scan
源码位置:/frameworks/base/core/java/android/hardware/radio/RadioTuner.java
/**
* 向上或向下扫描到下一个有效站
* 操作是异步的,当扫描完成时将调用{@link Callback} onProgramInfoC