I'm building a Kiosk, using a MacMini and an Elotouch display. It would load a CoreAnimation based App. that plays multimedia content following user touch-based choices.
I'm in a early stage of the project. I can change the architecture/technology if needed.
I need that my Kiosk could also distribute mp3 content to Smartphones close to it, wirelessly.
For now I would like to support iOS and Android phones. I don't have any control on the smartphone side. The Kiosk is coin-operated (with time based session expiration) and connected to the web through a wifi network, managed by me.
Can you tell me a common, safe and simple way to accomplish this?
I thought to WebDav but I would like to explore alternatives, the simpler for the user-side the better.
If you have one-time/session-based URLs, displaying a QR code on your kiosk screen would be one way to get the download URL to the device (and invalidated after successful download/session expiration); this would require a QR code reader which neither iOS nor Android have built in, though, but many users have one.
Additionally, display the same URL that's encoded in the QR code using URL shortener service like bit.ly, goo.gl, etc. for the user to type in.
This way there's no set up for the user, no funny business with pushing data to the user (privacy/security concerns) and every smartphone does have a web browser.
The best way to accomplish this is by using OBEX Push and bluetooth.
There are plenty of command-line tools to list all bluetooth devices nearby, and to do a file transfer to one of them.
The user would just need to activate bluetooth discovery on his cell phone, search for the phone on the kiosk, and select his phone.
Another alternative is mail. WebDAV is a bad idea, because the user will have to type in the address (cumbersome!).
A lot of photo kiosks are already using OBEX Push to receive photos from phones.
The easiest is to provide different types of usb cables: micro-usb, mini-usb... Almost all cell phones can be attached as a USB disk nowadays.
Summary:
* OBEX Push
* USB connect
* Mail
Related
I would have to build two apps (Android and iOS) and control some equipment via Bluetooth. For clarification, i cannot just use OS device discovery to connect to the equipment because there's hundreds of them and their position is very important (as well as the user's position when issuing commands), thus it's less of a hassle for operators to just point the phone's camera at a QR code and connect than having to go through a long list of devices with mangled names.
I haven't found many details about specifically using a QR code for bluetooth connections, but i figured that people experienced with this kind of communication will be able to say if it can be done. Please correct me if i'm wrong, but my understanding is that a bluetooth socket is not that different from a TCP one and a connection could be established by knowing the server's credentials.
Can I use a QR code to store device credentials that I can use to establish a connection? It doesn't really matter how much information needs storing, the QR code can contain any sensitive information.
Is there anything more, apart from the UUID, that would need storing on the QR code?
Is it simpler to configure the device as a server and the phone as a client for this specific request? There will be multiple operators that will need to work with these devices.
This is specific to Android and iOS, but if the points above were possible, would I get an OS pop-up window for each connection? Would skipping the discovery step save the operator the hassle of having to confirm the connection to the OS?
If the target device is configured as a server, each with its UUID as the QR code, can i scan that code and open a socket to that very device without manually connecting to it from the phone's menu?
Basically - the task:
On device one, text is copied to clipboard.
Device two must perform some actions with the text just copied on device one, for example invoke a browser with search engine page and query ?q=text-from-clipboard-just-copied-on-device-A.
First question: is it possible to do with out-of-the box applications?
Second question: if not, what are different approaches to do that?
Both devices are on the same local wi-fi network (connected via router). Connection via external ip server is not what I want, I would prefer a server running on device A or device B (android) if there's any, so there would be not need in working internet connection.
I see there's an option of Wi-fi direct (my devices are 4.0 and 4.2 Android versions, so it's possible). Is there a source code how to send a message with wifi direct and receive it on the other side?
First question: is it possible to do with out-of-the box applications?
No it is not possible with out of box applications. I would be surprised if there would be one!
Second question: if not, what are different approaches to do that?
One approach will be to implement Bluetooth Server and Client applications that can communicate between them and excange data. Ofcourse you will be able to implement different functionalities for example opening a webpage with the text as you mentioned in your question.
Or you can also have a look at NFC Communication explained here: (Remember the devices will have to be at very short distances to achieve such communication) http://developer.android.com/guide/topics/connectivity/nfc/index.html
I guess question 1 is not possible. I can't imagine that an out of the box app knows what action you want to perform with the received data.
Solution for question two could be working with tcp sockets. One device as server one as client, so that you can send your sting, link or whatever to the other device, which receives this and performs some action.
edit: Sorry, just read that you don't want to do it with internet permission, so data exchange via bluetooth, sms... could be possible
what is the best framework that I should use to make a remote control app for Android. What I want to do is something like Tony Fadel's app for Android and Iphone where you control your house thermostat temperature remotely with a smartphone app.
I was going to use sockets programming, but not sure if that is the best way. If it is then i will use it, but wanted some feedback before i get started.
If I make one android device the server and the other device the client I will still have to manually set the IP address every time I want to connect the client to the server.
I am trying to avoid having to make a web-app and having to make a php website to act as a server for this. Having to keep a server running is too much overhead. would rather make something like two android phones or tablets that can send message to each other over the internet or wifi router without too much setup and effort.
Would appreciate any ideas on this. I can't figure out how the nest thermostat works (http://www.nest.com/) but that is kind of the functionality that I am looking to copy. I wonder if they have to use a centralized server for all of the remote controls. If there is a way to do this peer to peer that would be great. that way all i would need is two Android tablets.
The other examples I can think of is VOIP like skype and google talk. I am sure these don't use a centralized server for voice calls. My needs are much more simple. no voice or video, only sending text messages from one android device to another over the internet. Each android device will probably be using wifi exclusively.
I am a little stumped. I've been trying to find a way for a wireless device (i.e. Android/ios/Windows mobile devices) to receive a message from a central server and then launch the device web browser.
The Scenario: a server on a WLAN network monitors a certain system. when something on the system goes wrong, the system stops what it is doing and sends an error message to the server and wait for the user to enter a response on the server before it resumes what it was doing.
Now, I want to send a message from the server(when the system it is monitoring crashes) to the wireless devices, so the user does not have to go to the server all the time to continue the system but can just do it over the wireless device (in the web browser).
Just to clarify, I know how to send a message out from the server to everybody connected to the wireless network, i just don't know what to do with that message on the devices...
Any ideas or solutions would be HIGHLY appreciated...
Thanks in advance
You can do this a few different ways:
1) Using commercially available Push Notifications (Google & Apple for example). The advantage is your application will work outside of your wireless LAN, but the disadvantage is you're using their platform, which is restricted in its ability and functionality (having designed and built a couple of these platforms myself I can attest to their limitations - they were going for "least common denominator" when they designed and implemented theirs).
2) If your app is only going to run on a LAN (you control the network) you can put your own system together. The advantage here is there is almost nothing that cannot be done (except on iOS which has several limitations related to the topic). The disadvantage, though, is this is a lot of work.
3) Leveraging an existing platform that might have been designed for a different purpose but can easily be used with minimal changes for your own purposes, and offers a nice compromise between options #1 and #2 (this will require some additional backend/middleware servers to add to your mix). Look at XMPP and Jabber as an example.
Once you have this piece of your architecture in place - receiving pushed data - the only missing item is invoking the handset's browser (or browser type component in your own native application) in response to the received payload.
** As possible alternatives it's worth noting that most mobile platforms allow your native application to directly interact with the handset's IMs or e-mails. For example, you can write code that intercepts a specifically formatted IM, with a small payload, and use that as a "poor man's push engine." I have put together little POCs (proof of concepts) for clients using this technique on Windows Mobile, BlackBerry, and Android (not sure what's possible with iOS in this regard) as it's quick and easy.
The hard part is the pushed data (but several available options on how to handle this requirement), the easy part is invoking the browser.
I have zero experience with apps and smartphone development. I would like to know if it's possible to screen scrape or otherwise access data coming from apps on smartphone?
Like If Im using some app that displays a list of train timetables or sporting fitxures, is it possible to access this data from another app on the phone? Even if it means capturing packets being sent to/from the phone. Any know what my options are when it comes to capturing data being displayed/used by another app on a smartphone?
Basically no. This would represent a huge security vulnerability.
You can try:
Point your phone proxy to a PC will proxy facility.
Forward all packet to an app and push those packet into file. (PCAP format perhaps, something like the TCPDUMP command in Ubuntu.
Then you can read the packet content.
You will have to write this App yourself. (I am not sure if there is such App around)