android 如何找到当前选定媒体输出的名称?

zdwk9cvp  于 2023-04-10  发布在  Android
关注(0)|答案(3)|浏览(107)

在Android上检索当前选定媒体音频输出的名称的正确方法是什么?
我已经查看了Audio ManagerMedia Router API,但无法找到任何方法来检索当前选择的输出是哪个音频设备。
例如,Spotify应用程序具有以下功能:

qxsslcnc

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));
    }
};

你可以为蓝牙设备试试这个,希望有帮助。

o2g1uqev

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 ""
}
wqsoz72f

wqsoz72f3#

Spotify有自己的API。您需要使用获取当前设备的设备名称的端点是Get Playback State(demo here)。
要获取所有可用设备的名称,可以使用获取可用设备端点(demo here)。

相关问题