在搜索、调辐、调频等操作时,如果时间较长,用户通常会放弃本次操作,这是就需要取消之前的 tuner 操作,这就需要用到取消功能。
一、功能实现
方法封装
private RadioTuner mRadioTuner;
/**
* 取消操作
*/
public void setRadioCancel(boolean tag) {
if (mRadioTuner == null) {
mRadioTuner = openSession(mRadioCallback);
}
mRadioTuner.cancel();
}
在封装的方法中直接调用 RadioTuner 中的 cancel() 方法。
二、源码分析
1、取消操作
RadioTuner.cancel
源码位置:/frameworks/base/core/java/android/hardware/radio/RadioTuner.java
/**
* 取消挂起的扫描或调优操作
* 如果一个操作正在等待,Callback onError()将被调用#ERROR_CANCELLED
* @return
* RadioManager#STATUS_OK 成功
* RadioManager#STATUS_ERROR 未知错误
* RadioManager#STATUS_NO_INIT 无法访问本机服务
* RadioManager#STATUS_BAD_VALUE 参数无效
* RadioManager#STATUS_INVALID_OPERATION 调用无序
* RadioManager#STATUS_DEAD_OBJECT 绑定到本地服务的事务失败
*/
public abstract int can