2017-07-10 2 views
1

Ich arbeite an einer App, in der ich den Sound der Benachrichtigung pro Sekunde auf der Schütteln Sie das Telefon aus dem internen Lautsprecher, und gleichzeitig ist meine App über (a2dp) mit dem Bluetooth eines Autos verbunden. Ich muss das Benachrichtigungs-Audio an den internen Lautsprecher und den Rest der Töne (Musik, Anrufe, Alarme usw.) an den Bluetooth-Lautsprecher weiterleiten. Ist das möglich?Rout android Benachrichtigung Sound zu internen Lautsprecher und all die anderen (Musik, Anrufe, Alarme) zu Bluetooth Lautsprecher (A2DP)

Ich habe alle relevanten Fragen im Stack über den Flow recherchiert, aber keine scheint sie zu beantworten. Im Folgenden ist der Codeschnipsel, den ich über die Audio-Manager-Klasse ausprobiert habe.

Ich habe Route versucht, den Audio-Stream unter Verwendung der in Methoden gebaut

AudioManager audioManager = (AudioManager) getContext().getSystemService(AUDIO_SERVICE); 
    audioManager.setMode(AudioManager.ROUTE_EARPIECE); 
    audioManager.setSpeakerphoneOn(false); 

, die für die Zeit verkürzt sich der Strom aus dem Bluetooth-Lautsprecher, aber so bald jede Musik hinter den Strom wieder gespielt wird, wird geroutet Richtung der BT-Lautsprecher und dann gibt es keinen Benachrichtigungston. Ich habe alle Audio Manager Router und Modi ausprobiert, aber keiner scheint zu funktionieren. Der Benachrichtigungssound ist ein mp3 und der Pfad wird durch Parsing von URI gesetzt und so wie ich meine Benachrichtigung erstelle.

NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(context) 
        .setSmallIcon(R.drawable.newlogo) 
        .setLargeIcon(largeIcon) 
        .setSound(uri) 
        .setContentTitle(notificationHeading) 
        .setContentText(notificationBody) 
        .setPriority(Notification.PRIORITY_HIGH).setVibrate(v); 
    notificationManager.notify(1,mBuilder.build()); 

Also, wenn es eine geringste Chance ist dieses Ding wobei ich bin mehr als bereit, es zu nehmen, jede Bibliothek auch diejenigen gezahlt, wenn löst dieses Problem bitte nicht teilen und auch ich kann das Telefon nicht root ist diese App im Play-Store veröffentlicht werden.

Antwort

0

Geben Sie den Ton der Lautsprecherbenachrichtigung über die AudioTrack.java-Klasse wieder und verwenden Sie den Stream AUDIO_STREAM_TTS (abgekürzt: "Über Lautsprecher übertragen") oder AUDIO_STREAM_ENFORCED_UDUDIBLE.

https://developer.android.com/reference/android/media/AudioTrack.html#AudioTrack(int,%20int,%20int,%20int,%20int,%20int)

AUDIO_STREAM_ENFORCED_AUDIBLE = 7, /* Sounds that cannot be muted by user 
            * and must be routed to speaker 
            */ 
AUDIO_STREAM_TTS    = 9, /* Transmitted Through Speaker. 
            * Plays over speaker only, silent on other devices. 
            */ 
Verwandte Themen