Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Alternar dispositivo A2DP (Android)

Tengo dos dispositivos bluetooth emparejados (la cabeza-unidad de mi coche para el audio del teléfono y un receptor separado del bluetooth para A2DP). En mi teléfono hay una casilla de verificación para "Usar para audio de medios" que tengo que conmutar manualmente para mi salida A2DP para ir a los altavoces de mi coche. Mi objetivo es alternar esto de forma programática.

Intenté usar la clase de AudioManager con el setBluetoothA2dpOn obsoleto y el setBluetoothScoOn pero ninguno parecía tener efecto. Pude conseguir una lista de los dispositivos emparejados del bluetooth y conseguir una manija a la conexión que quisiera cambiar pero no podía parecer conseguirla absolutamente a la derecha. También intenté conseguir el adaptador del bluetooth del defecto y después usar el getProfileProxy pero siento como que estoy ladrando encima del árbol incorrecto allí.

¿Puede alguien señalarme en la dirección correcta? Básicamente todo lo que quiero hacer es el equivalente a comprobar que "Utilice para el audio de los medios" cuadro.

  • Biblioteca OCR para reconocer números en el dispositivo de medición
  • Cómo depurar la pérdida de memoria donde las instancias de excepción en el volcado heap no tienen referencias entrantes?
  • NoOptions no se puede resolver con un tipo
  • Es posible copia de seguridad y restaurar un archivo de base de datos en android? Dispositivos no root
  • La llamada requiere el nivel 11 de la API (el min actual es 8) android.app.Activity # onCreateView
  • ¿Cómo especificar el tamaño correcto del diálogo en el archivo de disposición XML para el diálogo de Android?
  • Milliseconds to UNIX timestamp
  • No se puede reinstalar el Sony SmartWatch Control
  • 2 Solutions collect form web for “Alternar dispositivo A2DP (Android)”

    Hace poco tiempo tuve un problema similar al intentar conectar un dispositivo bluetooth al teléfono android. Aunque su perfil de dispositivo es diferente, creo que la solución es la misma.

    Primero usted necesita crear un paquete en su proyecto llamado android.bluetooth y poner el siguiente IBluetoothA2dp.aidl allí:

     package android.bluetooth; import android.bluetooth.BluetoothDevice; /** * System private API for Bluetooth A2DP service * * {@hide} */ interface IBluetoothA2dp { boolean connectSink(in BluetoothDevice device); boolean disconnectSink(in BluetoothDevice device); boolean suspendSink(in BluetoothDevice device); boolean resumeSink(in BluetoothDevice device); BluetoothDevice[] getConnectedSinks(); BluetoothDevice[] getNonDisconnectedSinks(); int getSinkState(in BluetoothDevice device); boolean setSinkPriority(in BluetoothDevice device, int priority); int getSinkPriority(in BluetoothDevice device); boolean connectSinkInternal(in BluetoothDevice device); boolean disconnectSinkInternal(in BluetoothDevice device); } 

    Luego, para acceder a esas funcionalidades, coloque la siguiente clase en su proyecto:

     public class BluetoothA2dpConnection { private IBluetoothA2dp mService = null; public BluetoothA2dpConnection() { try { Class<?> classServiceManager = Class.forName("android.os.ServiceManager"); Method methodGetService = classServiceManager.getMethod("getService", String.class); IBinder binder = (IBinder) methodGetService.invoke(null, "bluetooth_a2dp"); mService = IBluetoothA2dp.Stub.asInterface(binder); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } public boolean connect(BluetoothDevice device) { if (mService == null || device == null) { return false; } try { mService.connectSink(device); } catch (RemoteException e) { e.printStackTrace(); return false; } return true; } public boolean disconnect(BluetoothDevice device) { if (mService == null || device == null) { return false; } try { mService.disconnectSink(device); } catch (RemoteException e) { e.printStackTrace(); return false; } return true; } 

    }

    Por último, para conectar su dispositivo A2dp, seleccione un BluetoothDevice de una lista de dispositivos emparejados y envíelo como parámetro del método connect . Asegúrese de elegir un dispositivo con el perfil correcto, de lo contrario tendrá una excepción.

    He probado esta solución en un teléfono con Android versión 2.3 y funcionó bien.

    Lo siento cualquier error Inglés. Espero que esto pueda ayudarte.

    Primero debe configurar el programa para activar el Bluetooth en el teléfono y seleccionar el dispositivo con el que debe emparejarse vía

     bluetoothAdapter.disable() / enable() 

    (No estoy seguro sobre el emparejamiento, pero esto debe hacerse a través de algunos config actividad)

    Entonces usted debe fijar A2DP para conectar con el estéreo del coche

    Siga este enlace para tratar de encontrar el código para ello, si tengo tiempo voy a tratar de encontrarlo para usted, pero es un comienzo =]

    Api ocultos y internos

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.