通过前面的文章发现一个问题,有时我们很需要这样的一个功能,就是搜索当前位置所有可用电台的列表。但是并没有该方法,startBackgroundScan() 方法扫描的是一个固定列表,scan() 方法只是获取上一个或下一个电台信息,都不满足我们最需要的需求。这一篇我们就尝试一下,能不能通过现有方法实现上述功能。
一、自动搜索
思路:通过不断调用 scan() 方法,实现自动搜索。并将 scan() 的扫描结果存入到电台列表中,实现可用电台列表的保存。
方法封装
首先我们创建一个供 APP 调用的接口 startRadioAutosSeek()。
private RadioTuner mRadioTuner;
/**
* 开始自动搜索
*/
public void startRadioAutosSeek() {
synchronized (mLock) {
Log.i(TAG, "CONTROL_ACTION_SEEKUP mLock");
if (mRadioTuner == null) {
mRadioTuner = openSession(mRadioCallback);
}
// 设置静音
mRadioTuner.setMute(true);
// 开始自动搜索
mRadioTuner.startAutosSeek(RadioTuner.DIRECTION_UP, true);
}
}
RadioTuner
源码位置:/frameworks/base/core/java/android/hardware/radio/RadioTuner.java