if ((devices2.isEmpty()) && (strategy != STRATEGY_SONIFICATION)) { // no sonification on aux digital (e.g. HDMI) // devices2 = availableOutputDevices.getDevicesFromType(AUDIO_DEVICE_OUT_AUX_DIGITAL); devices2 = availableOutputDevices.getDevicesFromTypes({ AUDIO_DEVICE_OUT_AUX_DIGITAL, AUDIO_DEVICE_OUT_HDMI_1, }); } //priority Wired > a2dp > hdmi > hdmi 1 > spdif > spdif 1 if ((devices2.isEmpty()) && (strategy != STRATEGY_SONIFICATION)) { // devices2 = availableOutputDevices.getDevicesFromType(AUDIO_DEVICE_OUT_HDMI_1); devices2 = availableOutputDevices.getDevicesFromTypes({ AUDIO_DEVICE_OUT_AUX_DIGITAL, AUDIO_DEVICE_OUT_HDMI_1, }); }
时间: 2024-04-25 14:26:20 浏览: 5
这段代码是关于音频设备输出策略的处理,主要是针对不同的设备类型进行选择。如果当前的设备列表为空,且策略不是声音提示,则会根据优先级依次选择有线、蓝牙、HDMI、SPDIF等类型的设备进行输出。其中,如果是AUX数字输出(比如HDMI),则不进行声音提示,否则会根据可用的设备类型选择输出设备。如果还没有可用的设备,则会再次尝试选择HDMI等设备类型进行输出。
相关问题
怎么使用if(fifoQueue != null && !fifoQueue.isEmpty())
使用if(fifoQueue != null && !fifoQueue.isEmpty())可以避免在调用fifoQueue.peek()方法时出现NullPointerException异常。请按照以下步骤使用它:
1. 在需要调用fifoQueue.peek()方法的代码处添加if语句。
2. 在if语句的括号中判断fifoQueue是否为null,如果为null,则不执行后面的条件,直接跳过;如果不为null,则继续判断队列是否为空。
3. 在if语句的括号中添加!fifoQueue.isEmpty()条件,如果队列不为空,则执行peek()方法;如果队列为空,则不执行peek()方法。
以下是一个使用if(fifoQueue != null && !fifoQueue.isEmpty())的示例代码:
```
if (fifoQueue != null && !fifoQueue.isEmpty()) {
// 队列不为空,执行peek()方法
Object element = fifoQueue.peek();
System.out.println("队列头元素为:" + element);
} else {
// 队列为空,输出提示信息
System.out.println("队列为空!");
}
```
在这个示例中,首先判断fifoQueue是否为null,如果为null则直接跳过,不执行后面的条件;如果不为null,则继续判断队列是否为空。如果队列不为空,则执行peek()方法,获取队列头元素并输出;如果队列为空,则输出提示信息。这样可以避免在空队列上调用peek()方法的情况,确保程序的稳定性。
优化 if (!CrowdClassifyList.isEmpty() && CrowdClassifyList.size() != 0) { CrowdClassifyList.forEach(k -> { Integer tnb = k.getTnb(); Integer gxy = k.getGxy(); Date diabetesTime = k.getTnbXcsfJzsj20(); if (diabetesTime != null) { int dateAnddiabetesTime = date.compareTo(diabetesTime); if (Objects.equals(1, tnb) && dateAnddiabetesTime < 0) { k.setTnbStatus("糖"); } else if (Objects.equals(1, tnb) && dateAnddiabetesTime >= 0) { k.setTnbStatus("糖随"); } } Date hypertensionTime = k.getGxyXcsfJzsj20(); if (hypertensionTime != null) { int dateAndhypertensionTime = date.compareTo(hypertensionTime); if (Objects.equals(1, gxy) && dateAndhypertensionTime < 0) { k.setGxyStatus("高"); } else if (Objects.equals(1, gxy) && dateAndhypertensionTime >= 0) { k.setGxyStatus("高随"); } } String status = ""; if (!StringUtils.isEmpty(k.getTnbStatus())) { status = k.getTnbStatus(); } if (!StringUtils.isEmpty(k.getGxyStatus())) { status = k.getGxyStatus(); } if (!StringUtils.isEmpty(k.getTnbStatus()) && !StringUtils.isEmpty(k.getGxyStatus())) { status = k.getGxyStatus().concat(",").concat(k.getTnbStatus()); } k.setStatus(status); });
可以优化的地方有:
1. 使用 `List.isEmpty()` 替换 `CrowdClassifyList.size() != 0`
2. 将 `if (!CrowdClassifyList.isEmpty())` 和 `CrowdClassifyList.forEach(k -> {...})` 合并到一起
3. 将 `if (diabetesTime != null)` 和 `if (hypertensionTime != null)` 合并到一起
4. 将 `!StringUtils.isEmpty()` 替换为 `StringUtils.hasText()`
综上所述,可以将原始代码优化为如下形式:
```
if (!CrowdClassifyList.isEmpty()) {
CrowdClassifyList.forEach(k -> {
Integer tnb = k.getTnb();
Integer gxy = k.getGxy();
Date diabetesTime = k.getTnbXcsfJzsj20();
Date hypertensionTime = k.getGxyXcsfJzsj20();
if (diabetesTime != null || hypertensionTime != null) {
int dateAndTime = date.compareTo(diabetesTime != null ? diabetesTime : hypertensionTime);
if (Objects.equals(1, tnb) && diabetesTime != null && dateAndTime < 0) {
k.setTnbStatus("糖");
} else if (Objects.equals(1, tnb) && diabetesTime != null && dateAndTime >= 0) {
k.setTnbStatus("糖随");
}
if (Objects.equals(1, gxy) && hypertensionTime != null && dateAndTime < 0) {
k.setGxyStatus("高");
} else if (Objects.equals(1, gxy) && hypertensionTime != null && dateAndTime >= 0) {
k.setGxyStatus("高随");
}
}
String status = "";
if (StringUtils.hasText(k.getTnbStatus())) {
status = k.getTnbStatus();
}
if (StringUtils.hasText(k.getGxyStatus())) {
status = StringUtils.hasText(status) ? status + "," + k.getGxyStatus() : k.getGxyStatus();
}
k.setStatus(status);
});
}
```
以上优化方式主要是对代码风格和代码逻辑的调整,旨在提高代码可读性和性能。