在Android上检索当前选定媒体音频输出的名称的正确方法是什么?我已经查看了Audio Manager和Media Router API,但无法找到任何方法来检索当前选择的输出是哪个音频设备。例如,Spotify应用程序具有以下功能:
qxsslcnc1#
我没有在有线设备上尝试过,但我为蓝牙设备做了这个-
BluetoothManager btManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); bluetoothAdapter.cancelDiscovery(); bluetoothAdapter.getProfileProxy(this, listener, BluetoothProfile.HEADSET); public final BluetoothProfile.ServiceListener listener = new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int i, final BluetoothProfile bluetoothProfile) { final TextView device = (TextView) findViewById(R.id.device); List<BluetoothDevice> b = bluetoothProfile.getConnectedDevices(); StringBuilder stringBuilder = new StringBuilder(); for(BluetoothDevice getConnectedDevice : b){ stringBuilder.append(getConnectedDevice.getName()); } device.setText(stringBuilder); } @Override public void onServiceDisconnected(int i) { final TextView device = (TextView) findViewById(R.id.device); device.setText(String.valueOf(i)); } };
你可以为蓝牙设备试试这个,希望有帮助。
o2g1uqev2#
private fun getOutputDeviceName(): String { val am = getSystemService(AUDIO_SERVICE) as AudioManager ?: return "" if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { if (am.isWiredHeadsetOn || am.isBluetoothScoOn || am.isBluetoothA2dpOn) return "Headset" } else { val devices = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS) for (device in devices) { if (device.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || device.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES || device.type == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP || device.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO) { return device.productName.toString() } } } return "" }
wqsoz72f3#
Spotify有自己的API。您需要使用获取当前设备的设备名称的端点是Get Playback State(demo here)。要获取所有可用设备的名称,可以使用获取可用设备端点(demo here)。
3条答案
按热度按时间qxsslcnc1#
我没有在有线设备上尝试过,但我为蓝牙设备做了这个-
你可以为蓝牙设备试试这个,希望有帮助。
o2g1uqev2#
wqsoz72f3#
Spotify有自己的API。您需要使用获取当前设备的设备名称的端点是Get Playback State(demo here)。
要获取所有可用设备的名称,可以使用获取可用设备端点(demo here)。