- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Android 自定义构建开发一个应用。
本应用需要在Android的AudioManager中订阅AudioDeviceCallback。
我正在使用:
mAudioManager.registerAudioDeviceCallback(new MyDeviceCallback(), null);
哪里:
private class MyDeviceCallback extends AudioDeviceCallback {
@Override
public void onAudioDevicesAdded(AudioDeviceInfo[] addedDevices) {
Log.d(LOG_TAG, "onAudioDevicesAdded(): New devices detected");
updateAuxStatus();
}
@Override
public void onAudioDevicesRemoved(AudioDeviceInfo[] devices) {
Log.d(LOG_TAG, "onAudioDevicesAdded(): devices removed");
updateAuxStatus();
}
private void updateAuxStatus() {
AudioDeviceInfo[] devices = mAudioManager.getDevices(AudioManager.GET_DEVICES_INPUTS);
boolean isPluggedIn = false;
for (AudioDeviceInfo device : devices) {
if (device.getType() == AudioDeviceInfo.TYPE_LINE_ANALOG) {
isPluggedIn = true;
}
}
onAuxPluggedInChanged(isPluggedIn);
}
}
当我以普通用户 (u0_aXX) 运行应用程序时,这工作正常,但当我以系统共享用户身份运行应用程序时(添加到 list ):
android:sharedUserId="android.uid.system"
此回调仅在订阅后调用,但不会再次调用。即使没有系统用户的其他应用程序也能正常接听电话。
我跟踪了对 AudioManager 代码的调用,发现当我的应用作为系统 sharedUser 运行时,我的应用从未调用 AudioPortEventHandler 中的 postEventFromNative。因为这是一个 jni 调用,所以我停止了,因为我不完全理解它是如何工作的。
真正让我烦恼的是,在没有系统 sharedUser 的情况下运行时,相同的代码按预期工作。系统 sharedUser 是否存在某些可能导致此问题的限制?
最佳答案
在AudioPolicy中,registerClient使用uid作为key。当手机启动时,system_server 或 telecom 已经注册了通知,如果您的应用程序以系统用户身份运行,它将永远无法运行。
mNotificationClients.add(uid, notificationClient);
关于android - 当 sharedUserId ="android.uid.system"时 AudioDeviceCallback 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284715/
我正在为 Android 自定义构建开发一个应用。 本应用需要在Android的AudioManager中订阅AudioDeviceCallback。 我正在使用: mAudioManager.reg
我是一名优秀的程序员,十分优秀!