Hi Tom,
here are more details. I've added all the labels to the fritzing, you shuold be able to understand, the pic is bigger and I've added a link to let you see the big image.

(Note: In the big image, I've removed the 220ohm resistor at the base of NPN on the left, which turns on and off the blutooth, because without resistor I can rise a bit the volume, within the 220ohm resistor it turns off when the music begins, just after my phone connects to the blutooth dongle)
Here is the code, but I think that the point isn't in the code because on low volume it works.
Look the "loop" function, it switches from radio to bluetooth using transistors when button on rotary encoder is pressed.
Tell me if you need more informations and thank you for your help Tom! 
int pinSwitchBT = 5;
int pinSwitchFM = 6;
int st = 0; // 0=fm 1=blutooth
int oldvalbut = 1;
#include <avr/wdt.h>
#include <EEPROM.h>
int encoderPin1 = 2;
int encoderPin2 = 3;
int btfmTogglePin = 4;
volatile int lastEncoded = 0; // x rotary encoder
volatile long encoderValue = 0;
long lastencoderValue = 0;
int lastMSB = 0;
int lastLSB = 0;
int dir = 0; // -1 giro ccw , 1 giro cw, 0 fermo
#include <TEA5767.h> // https://github.com/andykarpov/TEA5767 >>> C:\Users\pons\Documents\Arduino\libraries\TEA5767-master
#include <Wire.h>
int bt = 1; // stato iniziale bottone
void storeFreq(double d) {
// WRITE
char s[5] = "_____";
dtostrf(d, 1, 1, s);
EEPROM.write(0, '!');
for(int i=1;i<=5;i++){
EEPROM.write(i, s[i-1]);
}
}
double readFreq() {
// READ
char l[5] = "_____";
char value = EEPROM.read(0);
if(value=='!') {
for(int i=1;i<=5;i++){
value = EEPROM.read(i);
l[i-1]=value;
}
l[5]='\0';
double d;
d=atof(l);
return d;
} else {
return 0;
}
}
void goRadio() {
double d = readFreq();
if (d<1) d = 102.8;
Serial.println("RADIOOOO");
Wire.begin();
TEA5767 Radio;
int search_mode = 0;
int search_direction;
unsigned long last_pressed;
Radio.init();
Radio.set_frequency(d);
while (st == 0) {
unsigned char buf[5];
int stereo;
int signal_level;
double current_freq;
unsigned long current_millis = millis();
if (Radio.read_status(buf) == 1) {
current_freq = floor (Radio.frequency_available (buf) / 100000 + .5) / 10;
stereo = Radio.stereo(buf);
signal_level = Radio.signal_level(buf);
}
if (search_mode == 1) {
if (Radio.process_search (buf, search_direction) == 1) {
search_mode = 0;
}
}
if ( dir == 1) {
search_direction = TEA5767_SEARCH_DIR_DOWN;
} else {
if (dir == -1) {
search_direction = TEA5767_SEARCH_DIR_UP;
}
}
if(dir!=0) {
last_pressed = current_millis;
search_mode = 1;
Radio.search_down(buf);
current_freq = floor (Radio.frequency_available (buf) / 100000 + .5) / 10;
stereo = Radio.stereo(buf);
signal_level = Radio.signal_level(buf);
Serial.print("FM: "); Serial.print(current_freq); Serial.print(" level: ");
Serial.println(signal_level);
storeFreq(current_freq);
}
if ( encoderValue > 255 ) {
encoderValue = 255;
}
if ( encoderValue < 0 ) {
encoderValue = 0;
}
dir = 0;
bt = digitalRead(btfmTogglePin);
if (bt == 0 && oldvalbut == 1) {
Serial.println("PREMUTO2");
if (st == 0) st = 1; else st = 0;
if (st == 1) {
Serial.println("bloutooth on");
digitalWrite(pinSwitchBT, HIGH);
digitalWrite(pinSwitchFM, LOW);
delay(3000);
return;
}
}
oldvalbut = bt;
}
}
void setup() {
Serial.begin (57600);
Wire.begin();
pinMode(encoderPin1, INPUT);
pinMode(encoderPin2, INPUT);
pinMode(btfmTogglePin, INPUT_PULLUP);
pinMode(pinSwitchBT, OUTPUT);
pinMode(pinSwitchFM, OUTPUT);
digitalWrite(pinSwitchBT, LOW);
digitalWrite(pinSwitchFM, HIGH);
digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
digitalWrite(encoderPin2, HIGH); //turn pullup resistor on
attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);
delay(3000);
goRadio();
}
void loop() {
bt = digitalRead(btfmTogglePin);
if (bt == 0 && oldvalbut == 1) {
Serial.println("PRESSED BUTTON");
if (st == 0) st = 1; else st = 0;
if (st == 1) {
// TURN ON BLUTOOTH DONGLE
// TURN OFF RADIO TEA5767
Serial.println("bloutooth on");
digitalWrite(pinSwitchBT, HIGH);
digitalWrite(pinSwitchFM, LOW);
delay(500);
TWCR = 0;
delay(2500);
} else {
// TURN ON RADIO TEA5767
// TURN OFF BLUTOOTH DONGLE
Serial.println("radio on");
digitalWrite(pinSwitchBT, LOW);
digitalWrite(pinSwitchFM, HIGH);
delay(3000);
goRadio();
}
Serial.print(encoderValue);
Serial.print(" bt:");
Serial.print(bt);
Serial.print(" st:");
Serial.println(st);
}
oldvalbut = bt;
}
void updateEncoder() {
int MSB = digitalRead(encoderPin1); //MSB = most significant bit
int LSB = digitalRead(encoderPin2); //LSB = least significant bit
int encoded = (MSB << 1) | LSB; //converting the 2 pin value to single number
int sum = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
if (sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) {
encoderValue --;
dir = -1; Serial.println("dir = -1");
}
if (sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) {
encoderValue ++;
dir = 1;Serial.println("dir = 1");
}
lastEncoded = encoded; //store this value for next time
}