Android FMRadio上层调试
背景
在某个平台上,应用同事一直反馈FMRadio报错,闪退。这部分功能我们在framework部分和hal部分有修改,特别是hal部分,没有使用原生的broadcastradio。但是维护这块代码的同事离职了,工作也没有交接,也没有留下任何文档。领导说“看看”,然后就接下了这活儿
获取RadioManager对象为空
我先看了一下应用端的代码,由于应用是系统应用,UID是system uid。所以获取RadioManager的方式是使用的RadioManager的构造方法
/**
* @hide
*/
public RadioManager(@NonNull Context context) throws ServiceNotFoundException {
mContext = context;
mService = IRadioService.Stub.asInterface(
ServiceManager.getServiceOrThrow(Context.RADIO_SERVICE));
}
但是通过log看到获取到的RadioManager对象为空,就说明RADIO_SERVICE没有publish ,也就是BroadcastRadioService
没有启动,可以通过service list
的命令看下。于是就在SystemServer中看了一下BroadcastRadioService的启动条件
if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_BRO