How to get device Bluetooth address on OS X? - objective-c

I've looked over the IOBluetooth framework what feels like a dozen times, but I can't for the life of me find a way to retrieve the Bluetooth device address for the current device. I've written an application that scans for devices in range utilizing IOBluetoothDeviceInquiry, but this doesn't seem to offer up the address of the device doing the scanning.
How might this be accomplished programatically? (Without opening up System Profiler)

[[IOBluetoothHostController defaultController] addressAsString]
or getAddress: if you want a BluetoothDeviceAddress.

Related

Camera Remote API beta SDK: How to synchronize multiple DSC QX 100 cameras

Can we control multiple DSC-QX100 cameras using the Camera Remote API SDK from an iPad OS7?
The objective is to cause multiple cameras to "snap" picture at the exact same time. Perhaps each camera has an address (serial number)...can the software communicate with all cameras at the same time using multiple addresses? Need is limited to still photos and so-called fast, rapid photography. Video not necessary.
If so, how?
Unfortunately you can only control one QX100 lens at a time. This is because the lens connects over WiFi and you are limited to only a single WiFi connection at once on an iPad. It may be possible using a desktop PC with multiple wireless cards installed but that would be the only way.
As the Sony rep said, there's no way to do this with "officially supported" techniques.
The reason for this is that the camera acts as a WiFi Access Point (AP) - so while multiple devices can connect to it, most mobile devices can only connect to it and not anything else (since iOS and Android don't support connection to multiple APs simultaneously). This is also why you can't use other network interfaces when connected to the camera. (I don't know about iOS, but Android always prioritizes WiFi over cell network data, for example.)
Android devices have a feature called "WiFi Direct" that provides more flexibility in terms of peer-to-peer interconnection, but iOS does not support WFD. The QX100 DOES respond to WFD invites, and you can accept a pairing request with (if I remember correctly) a long-press of the shutter button. However, the official app only supports normal WiFi AP connections.
I have not yet attempted to see if using Sony's remote API in combination with the (unsupported but apparently present) WiFi Direct capability works.
More info on Wifi Direct and Android can be found at http://developer.android.com/guide/topics/connectivity/wifip2p.html
Marlin SONY, I disagree, wifi is Ethernet and by definition can handle multiple devices on the same network. If you run a phone or iPad as a hotspot and connect multiple devices, it works.
Multicam Switcher Basic is an example of a free app that supports cutting together multiple camera angles live. Unfortunately the app is still being developed so features like third party camera support isn't included, but it does show what is possible and awaits development.
I think this should be possible. Apps like CollabraCamâ„¢ (Multicam Social Video Production) or RecoLive MultiCam prove that is possible to use mulitple cams simultaneous.
I need someone too to develop an App to be able to use "two" sony dsc-qx for 3D shoots. Please, if You know how or who can do this contact me email#3-d.re

How can I use Bluetooth 4.0 LE to detect/measure proximity to a PC (Windows 8.1)?

I have a crazy dream that one day I'll be able to way into my rec room and my lighting system will turn on based on my proximity to the seating area. I've played with home automation (SmartThings most recently, the proximity sensor is unreliable and has no way to measure room area proximity), motion sensors, etc... but none of them actually do what I want, and that is detect if I'm in a room for real, not if I'm waving my arms in front of a sensor.
One idea I had was to measure the SNR between WIFI devices. I was thinking of playing around with some wifi survey tools and see what I can measure in my home. The problem I think will be sensitivity and range. Wifi's range is typically intended to try and cover a home, so if I go that route, I'm worried it'll be a waste as I'll only be able to measure when I arrive home, not if I'm in a specific room.
The other approach I'd like to try is Bluetooth 4.0 LE. The Bluetooth GATT specification includes a Proximity Profile, but the problem with profiles is it's something that a Bluetooth enabled device would share with another device it's peered to. e.g. You have a proximity sensor in your pocket and it shares proximity info with a PC or another device.
In my case I'm hoping to try using my iPhone as the marker, and my HTPC as the measuring system. The HTPC can continuously measure the RSSI or SNR of any paired Bluetooth devices without having to actually exchange profile data with the device.
I could do something like write a Windows app/service that registers or watches for a paired Bluetooth device to connect. (such as when I get home and my iPhone auto-pairs with my PC, just like when you get in your car and it pair with your stereo) From there it would measure the SNR as a source of distance information. If the SNR is high enough (least noise, strongest signal) it could automate doing something. I was thinking sending a HTTPS call to my Smartthings hub to turn on my lighting system.
When the SNR drops too low (lower signal strength), it would again send a call to turn off the lighting system.
This method could work with any device that bluetooth pairs. The concept would work with pretty much any platform, not just Windows. Like in a Raspberry Pi with Bluetooth.
Does anyone know if this is possible or am I crazy? I was going to grab the Visual Studio C# 2013 Express IDE when I get home and see what the Windows 8.1 APIs let me get access to.
Also, Bluetooth 4.0 LE should be nicer to use. I was hoping that a heavy, full Bluetooth connection wouldn't be needed as I simply want to detect the device within a small range. (25' of free air)
Thanks.

CoreBluetooth - get all devices connected to Bluetooth peripheral

Is there a way how to get list of all devices connected to the Bluetooth peripheral?
I want to connect to iBeacon and check if another iPhone is connected to it.
No, two reasons why not:
iBeacons are not connected to the iOS device, iBeacons are broadcast only and no back communication exist from the phone to the beacon.
Knowing details of other BT 4.0 Centrals connected to a Peripheral are not in line with the the privacy features of Bluetooth 4.0. iOS and other Centrals are are using resolvable private addresses, in order to avoid situation like you are describing.
#barbazoo is correct that you cannot do exactly what you are asking because iBeacons only transmit data -- they have no idea what devices see them.
You can accomplish something similar, however, if you have an app running on each of the iOS devices you mention, and you have a server where you can build a web service. The web service would expose two methods:
reportIBeaconVisible(iBeaconProximityUUID, iBeaconMajor, iBeaconMinor, myPhoneAdvertisingId)
queryVisiblePhones(iBeaconProximityUUID, iBeaconMajor, iBeaconMinor)
The app would report each iBeacon it sees using the first method, passing the iBeacon's identifiers, along with the phone's advertising identifier to the server.
The app could then use the second method to ask the server what other phones have seen the exact same iBeacon, which would return a list of phone advertising identifiers.
You'd have to have logic on the phone to only report data to the server at a reasonable frequency. You'd also need code on the server to automatically delete phone records in the list if the phones haven't reported seeing a beacon in a certain time interval.

Turn iPhone into a server programmatically?

I want to make my iPhone app display on a Mac's screen, kind of like AirPlay does with other machines. The only way I have heard to do this is, although I do not like it, turn the iPhone into a server. Unfortunately, I cannot figure out how to do so. I also wanted to set it up in such a way that my Mac automatically detects it. I have seen a similar setup in the game Chopper 2. My Mac app will have a simple timer that fires every few seconds to look for the iPhone, in the same way that Chopper 2's "Find iPhone" button does.
Is there a simple way to turn the iPhone into a server, or start a "session" like Game Center does?
One last thing: I know it is somehow possible, because another app I have actually gives my iPhone a web address at the click of a button. It is called the Dicenomicon, if you want proof.
First there is no easy way to redirect your display to Mac, even if you made it a server of some kind.
Second, to discover or publish customized services on WLAN, you may want to refer to the samples on Bonjour:
CocoaHTTPServer: a simple TCP/HTTP server.
WiTap: an app that discovers and connects to services of the same kind on WLAN by Bonjour.
I'm not really sure what you mean by "server", because there is no way to share the screen of an iPhone using the official SDK, although this is possible by jailbreaking.
It would be possible, however, to send data back and forth between the Mac and iPhone, and display the data on the iPhone, on a Mac. Using that data, you could try to recreate the interface on the Mac. All of this could be accomplished using sockets. A class that might help with that would be cocoaAsyncSocket, which makes network programming a lot easier.
The auto-discovery of iPhones on the local network is achievable with Bonjour. Without getting into too many details, NSNetService would allow you to publish a service for your app from an iPhone, and NSNetServiceBrowser would allow you to find that service on the local network from the Mac. From the NSNetServiceBrowser, you could establish a socket connection with the iPhone.
Good luck!
You might want to take a look at the GameKit APIs, I know they do something similar between two iOS devices.
http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html

How to pass data to another app constantly in iOS?

I just want to know that is it possible to communicate two different apps in different device. Like I have a sample app in device A App name A and in another device B i have a app B I want to share some things between them. I came across to GameKit framework in iOS but I made a app when it is installed in both device they communicate succesfully but what if apps are different and what is the size limit of the data to send it over bluetooth in iOS.
Any idea how to implement this feature?
Two different apps can communicate via Bluetooth using GameKit as long as they both agree on the protocol (i.e. if you wrote both apps, or you know what protocol the other app is using).
There's no limit to the amount of data they can exchange, although there is obviously an upper limit on bandwidth (bytes per second).
Does that help?