Changeset 359a504 in orbit for iOS


Ignore:
Timestamp:
08/07/13 13:49:25 (6 years ago)
Author:
Jonathon Horsman <jonathon@…>
Branches:
master, Servo, Tab_Interface, pyramid
Children:
7945ecb
Parents:
6fc29d0
Message:

Add check for headphones being plugged in

Location:
iOS/Orbit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • iOS/Orbit/Orbit/SignalConverter.h

    rde10cbc r359a504  
    3232- (BOOL) isBluetoothReady; 
    3333- (BOOL) isVolumeMax; 
     34- (BOOL) isAudioJackPlugged; 
    3435- (void) setYaw:(int)y throttle:(int)t pitch:(int)p; 
    3536- (void) playTestSound; 
  • iOS/Orbit/Orbit/SignalConverter.m

    rde10cbc r359a504  
    4646        yaw = 78; 
    4747        pitch = 31; 
     48         
     49        // initialise the audio session - this should only be done once 
     50        AudioSessionInitialize(NULL, NULL, NULL, NULL); 
    4851    } 
    4952    return self; 
     
    140143{ 
    141144    AudioSessionSetActive(YES); 
    142     return 1.0 == [[AVAudioSession sharedInstance] outputVolume]; 
     145    float volume = [[AVAudioSession sharedInstance] outputVolume]; 
     146    NSLog(@"Volume is %f", volume); 
     147    return 1.0 == volume; 
     148} 
     149 
     150- (BOOL) isAudioJackPlugged 
     151{ 
     152    UInt32 routeSize; 
     153     
     154    // oddly, without calling this method caused an error. 
     155    AudioSessionGetPropertySize(kAudioSessionProperty_AudioRouteDescription, &routeSize); 
     156    CFDictionaryRef desc; // this is the dictionary to contain descriptions 
     157     
     158    // make the call to get the audio description and populate the desc dictionary 
     159    AudioSessionGetProperty (kAudioSessionProperty_AudioRouteDescription, &routeSize, &desc); 
     160 
     161    // the dictionary contains 2 keys, for input and output. Get output array 
     162    CFArrayRef outputs = CFDictionaryGetValue(desc, kAudioSession_AudioRouteKey_Outputs); 
     163     
     164    // the output array contains 1 element - a dictionary 
     165    CFDictionaryRef dict = CFArrayGetValueAtIndex(outputs, 0); 
     166     
     167    // get the output description from the dictionary 
     168    CFStringRef output = CFDictionaryGetValue(dict, kAudioSession_AudioRouteKey_Type); 
     169     
     170    /** 
     171     These are the possible output types: 
     172     kAudioSessionOutputRoute_LineOut 
     173     kAudioSessionOutputRoute_Headphones 
     174     kAudioSessionOutputRoute_BluetoothHFP 
     175     kAudioSessionOutputRoute_BluetoothA2DP 
     176     kAudioSessionOutputRoute_BuiltInReceiver 
     177     kAudioSessionOutputRoute_BuiltInSpeaker 
     178     kAudioSessionOutputRoute_USBAudio 
     179     kAudioSessionOutputRoute_HDMI 
     180     kAudioSessionOutputRoute_AirPlay 
     181     */ 
     182 
     183    NSLog(@"Output: %@ is %@", output, kAudioSessionOutputRoute_Headphones); 
     184    return CFStringCompare(output, kAudioSessionOutputRoute_Headphones, 0) == kCFCompareEqualTo; 
    143185} 
    144186 
  • iOS/Orbit/Orbit/controllers/FlightViewController.m

    rde10cbc r359a504  
    142142        [signalConverter stopProcessing]; 
    143143        [self resetViews]; 
    144     } else if (!signalConverter.isVolumeMax) { 
    145         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Turn Up The Volume" message:@"Your device volume must be at the maximum for proper operation" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    146         [alert show]; 
    147     } else if (!signalConverter.isBluetoothReady) { 
    148         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Device not found" message:@"No Bluetooth device detected. Ensure Bluetooth is on and the Mindwave headset is paired" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    149         [alert show]; 
    150     } else if ([signalConverter startProcessing]) { 
    151         [self logMessage:@"Searching for device"]; 
    152         connectButton.title = @"Disconnect"; 
    153144    } else { 
    154         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to connect" message:@"Check the device is correctly paired on Bluetooth" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    155         [alert show]; 
     145        BOOL volumeMax  = [signalConverter isVolumeMax]; 
     146        BOOL headphones = [signalConverter isAudioJackPlugged]; 
     147         
     148        if (!volumeMax && !headphones) { 
     149            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Check Volume & Transmitter" message:@"Ensure the volume is at max and the transmitter is plugged into the headphones" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     150            [alert show]; 
     151        } else if (!volumeMax) { 
     152            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Turn Up The Volume" message:@"Your device volume must be at the maximum for proper operation" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     153            [alert show]; 
     154        } else if (!headphones) { 
     155            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Plug In The Transmitter" message:@"Ensure the infrared transmitter is plugged into the headphone jack" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     156            [alert show]; 
     157        } else if (!signalConverter.isBluetoothReady) { 
     158            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Device not found" message:@"No Bluetooth device detected. Ensure Bluetooth is on and the Mindwave headset is paired" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     159            [alert show]; 
     160        } else if ([signalConverter startProcessing]) { 
     161            [self logMessage:@"Searching for device"]; 
     162            connectButton.title = @"Disconnect"; 
     163        } else { 
     164            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to connect" message:@"Check the device is correctly paired on Bluetooth" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     165            [alert show]; 
     166        } 
    156167    } 
    157168} 
    158169 
    159170- (IBAction) testButtonPressed:(id) sender { 
     171    [signalConverter isAudioJackPlugged]; 
    160172    if (signalConverter.running) { 
    161173        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Stop test sound" message:@"Press Stop first to end the test" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
Note: See TracChangeset for help on using the changeset viewer.