我使用AudioManager.setRingerMode()来处理我的应用程序中的设备卷:
AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT) 关闭振动和声音.AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE) 关闭声音并打开振动.AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL) 打开声音并打开振动.换句话说,我能够控制设备音量并达到所有"模式".
但是,仅使用Android 5.0不能处理Android 5.0中的所有设备音量模式AudioManager.setRingerMode.
根据文件:
将设备设置为RINGER_MODE_SILENT会导致设备进入新的优先级模式.如果将设置设置为RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE,则设备将保留优先模式.
如何在Android 5.0中处理设备音量的所有模式(无,优先级振动,优先级声音,所有振动,所有声音)?
我正在尝试将NsdServiceInfo的mHost作为参数传递给NsdManager.DiscoveryListener.onServiceFound(),但它为null.我有两个Android设备,其中设备1是服务器,设备2是客户端.
这是我在设备1中注册服务器的方式
public void registerService(int port, InetAddress myIp) {
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setPort(port);
serviceInfo.setServiceName(this.serviceName);
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setHost(myIp);
this.nsdManager.registerService(
serviceInfo, NsdManager.PROTOCOL_DNS_SD, registrationListener);
}
Run Code Online (Sandbox Code Playgroud)
这就是我初始化DiscoveryListener的方法
public void initializeDiscoveryListener() {
discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onServiceFound(NsdServiceInfo service) {
Log.d(TAG, "Service discovery success" + service);
if (!service.getServiceType().equals(SERVICE_TYPE)) {
Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
} else if (service.getHost() == myIp) {
Log.d(TAG, "Same machine: " + service.getHost());
} else if (service.getServiceName().contains(serviceName)){
nsdManager.resolveService(service, resolveListener);
}
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是 …