Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

Consider a mobile application which for some reason needs to prevent drunk users from using it (e.g. to avoid dreaded "drunk dials" or "drunk texts"). How could "sober authentication" be executed from a human interaction point of view?

There must be a balance between usability of such applications for sober users while providing some mechanism to protect against the "drunk dialing" problem.

Please additionally consider that there also could be elderly or disabled people who may act slower and less precisely similar to how a drunk acts. An accessible app would need to accommodate them as well.

share|improve this question

migrated from stackoverflow.com Dec 10 '11 at 5:47

This question came from our site for professional and enthusiast programmers.

51  
Breathalyzer attachment. –  Random832 Dec 9 '11 at 14:55
14  
And friendly to people with celebral palsy, Down's, etc. Without a breathalyzer, you cannot succeed in a way that will satisfy usability requirements. –  Dave Newton Dec 9 '11 at 15:07
5  
An old man with shaking hands could be detected as really drunk. I have a feeling you can't detect them both with the same algorithm. Maybe try to think of a way to separate normal people, drunk people and old people, although you take the same action for the first two group. –  Shahbaz Dec 9 '11 at 15:53
19  
without a specific reason for needing to do this, if the OP can't explain exactly what he is trying to accomplish and why any app would have this requirement -- beyond as stated "for some reason" -- this is purely blue sky speculation. Per FAQ "practical, answerable questions based on actual problems that you face". –  Jeff Atwood Dec 11 '11 at 0:35
6  
How much is it important to automatically detect a drunk user (as opposed to say an injured user in an emergency situation, who may behave similarly), and how much is it necessary for a user to just accept responsibility for using the mobile while drunk - eg by simply logging answers to the question 'how much have you had to drink?' and if calculated as possibly having had too much, request the user to press a button stating they accept responsibility to continue. As @Erics says - the business case may decide the constraints and the thinking... –  Roger Attrill Dec 11 '11 at 14:33
show 19 more comments

19 Answers 19

I think you should test users "motor coordination" & reflexes. After all, that's what traffic police does when he stops you.

Some sort of game where the user needs to quickly burst some randomly appearing bubbles (= reflex test) and draw straight lines (= motor coordination test) on the screen comes to my mind.

EDIT

Alcohol impairment is also characterized by poor perception of time...have them hit a button in 10 seconds with no timer or something.

Btw, I am willing to test your solution for free provided that you pay for my booze :)

share|improve this answer
26  
Great idea. I'd like to add a suggestion. It might be a good idea to let sober users calibrate this once so that the app knows how fast you really are under sober conditions. Otherwise you'll need some magic numbers in there somewhere that might not be suitable for all people –  Assaf Lavie Dec 10 '11 at 9:22
4  
Look at the field sobriety tests. Most are ~65% accurate and usually test multitasking (e.g., say alphabet backwards without slurring while walking in a line) and can't be done in a way that's not trivial to cheat, except maybe the eye gaze test though would be difficult to implement (computer vision/adequate lighting/front camera). It will also exclude users with certain diseases (multiple sclerosis) who will always fail it. –  dr jimbob Dec 12 '11 at 16:38
1  
I am not sure this would this work for users that are very tired either. –  Danny Varod Feb 29 '12 at 22:30
1  
When the traffic police makes you walk a straight line they will gather at least as much information from the way you talk about that assignment (and how you talk about how well you will do) as they will from your motor coordination. –  Jeroen Mar 1 '12 at 16:45
1  
How would you differentiate a sober person with motor coordination problems from a drunk person? Not good for accessibility IMO –  Naoise Golden Mar 14 '12 at 19:22
show 3 more comments

Other than a silly novelty thing (e.g., the gmail labs "mail goggles") or requiring a breathalyzer attachment to activate (e.g., your application starts automobiles for people with past DUIs), its not worth it.

Assuming your application is useful and people will want to use it while both drunk and sober, any barriers that could differentiate the ability of some moderately drunk person and a sober person will filter out a lot of sober people. Requiring fine motor tests or math/memory questions will let lots of drunkards through and frustrate a lot of sober users, especially if the user is in a rush, commuting, or multitasking.

For example, I primarily use mobile devices mostly while commuting on the subway. I won't be able to trace a line easily as I'm standing on a moving train with people bumping into me; or it may take extra time to type in math answers with one hand holding the device and the other switching back between holding a pole and typing on the device.

Most of the time when one is moderately drunk (BAC ~ 0.10), you can temporarily focus to pass these sorts of tests if they try. A college friend would always try doing difficult math while drunk (e.g., advanced calculus and do it correctly) and then shortly after pass out or vomit.

share|improve this answer
add comment

How do we know when to test if the user drunk?

An app that requires a test before you can use it at start up will be so frustrating you'll stop using it immediately, well intentioned or not. A schedule system would allow users to specify when they wish to be tested (e.g. I might be drunk after 8 PM on fridays and saturdays). Most importantly, this could allow you to have an app that blocks other apps based on a schedule; rather than building this feature into a single app, one could have an app that blocks texting, email or calls, rather than requiring the user to use your proprietary app. (this has implementation due to access rights, but is a possible feature)

How do we know you're drunk?

Speech recognition is an advanced possiblity. Computer analysis is now possible which can detect slurred speech. This will likely work for a majority of users, but it's important to consider users may be mute or may be using their phone where speaking aloud would be inappropriate; while a nice feature it should not be the only way to test drunken users.

The easy software solution would be an integrated breathalyzer; this of course requires specialized hardware, but isn't completely infeasable; these devices are cheap and could be a peripheral or built into a handset from the get go.

Barring speech recognition and specialized hardware, a motor skill and or reaction time test is the common solution; alcohol significantly impairs task performance. Allow a user to set a baseline performance (to accommodate users with better or worse motor control/reaction times than typical) and give them a test. Common motor skill tests could be simple commands like "tap here" on a touch enabled device or a typing test.

Asking a user to set a "drunk baseline" would be a very bad idea; never encourage irresponsible behavior.

What do we do if they're drunk?

Give the user several tries to retry. I would hesitate to ever implement a "lockout" that prevents future tries. You could leave a lockout or timeout feature as a configurable option; users with poor motor skills will want it off, but, ahem, "power users" of alcohol might want the extra security a lockout provides.

share|improve this answer
1  
+1 for establishing a sober baseline. One problem, though - how do you prevent gaming the system by "throwing" the sober test? –  peteorpeter Dec 13 '11 at 19:25
2  
If the user doesn't really want to be blocked, they will find a way around it. You're always going to require a degree of cooperation; a friend could always take such tests ect. Unless this was a required legal measure I don't think such levels of certainty would be good as they would harm normal operation of the device, which I was trying to avoid in my solution. –  Ben Brocka Dec 13 '11 at 19:35
    
+1 for stating that testing against drunkenness will be a nuisance to the user. –  Alpha Dec 14 '11 at 0:08
    
There's now a mobile app to test for sobriety as well. webroot.com/En_US/sites/sobrietytest/index.html –  Ben Brocka Feb 6 '12 at 16:15
    
Pretty sure I've read that the cheap breathalyzers are not even remotely as reliable as "catalytic" style breathalyzers. –  sirtimbly Feb 29 '12 at 20:25
add comment

Aaaaaaaaaaand... here it is!

iBreath breathalyzer

The breathalazyer attachment DOES exist.

share|improve this answer
add comment

You could maybe get some ideas from the Social Media Sobriety Test - this includes drawing a line along the screen and keeping it within the prescribed box - haven't tried it after drinking so can't tell you if it works!

share|improve this answer
add comment

It depends a bit on how the user interacts with your application, but I would collect different metrics about the user input during normal use.

If it is a texting application you can collect metrics about how far from the middle of the letter-buttons the user presses. The speed the user is typing, the variance of speed etc. I would combine several metrics and if the metrics deviate more than normal you can assume the user is drunk. You need to engage yourself in some testing what metrics that are affected by beeing drunk (hey, how can I help :-) ).

In a game or similar you could keep track of the user precision. If the user performs much worse than normal you can assume he is drunk.

Another alternative would be to exploit the fact that drunkness affects reaction time.
Create a lock screen with dots appearing at different locations. Measure the reaction time until the user points at the dot. You can also measure how close the user points. Three good picks in a row and you have a non drunk user!

share|improve this answer
5  
+1 for collecting metrics during normal use –  Shawn Dec 10 '11 at 19:21
add comment

You could use facial recognition to check for Postitonal Alcohol Nystagmus, which is a common field sobriety test. You'd have to be careful with implementing this because nystagmus (the "jerking" eye movement) is common enough in the general population and has other non-alcohol related causes.

If you were going to try to control for alcohol related nystagmus, I think there would have to be a way to recognize the position of the head. Because according to the linked Wikipedia, the head has to be aligned with the spine (head can't tilted), so doing that might be a little tricky.

share|improve this answer
add comment

Try to get them to solve some simple math problems within a time limit, like 11 x 11 = ? within 5 seconds.

You can also allow the users to customize the difficulty level of the math problems and probably decide the time based on the difficulty level.. (Higher the difficulty tougher the problem, lower the time limit)

Note: This is not my orignial idea, this is from the Gmail tools. I have used this myself, I usually set it to very high. It takes me a couple of minutes to figure it out by then either of the two things will happen

  • I am drunk and I take too many tries to solve the problem at that point of time I abandon the effort of sending the mail. :)
  • I am sober and I solve the problems and send the mail anyway..
share|improve this answer
17  
I am still good at maths when drunk, and also very foolhardy. –  buddhabrot Dec 9 '11 at 14:28
5  
Conversely, my girlfriend couldn't solve this problem in 5 seconds while sober. Maths is her kryptonite. –  John N Dec 9 '11 at 16:15
5  
Some people won't find the answer to 11 x 11 even sober ;-) –  wildpeaks Dec 12 '11 at 0:45
2  
TV shows that require you to ring up to enter a competition (at a cost of £/$4 a minute) ask you questions like: What is 11 x 11? Is it a) Fish b) Sunday c) Everest or d) 121 Maybe there's an idea there... –  Roger Attrill Dec 12 '11 at 14:11
    
+1 for experience. It's anecdotal, but at least it's something. –  Patrick McElhaney Dec 12 '11 at 14:14
show 1 more comment

Your problem states that you may have elderly and disabled people.

You may test , for example coordination and reflexes when the user "swears" he is sober and thus creating a baseline.
If your score deviates by a To-Be-Decided(TM) value you may be locked out.

share|improve this answer
    
+1, good point about comparing against a baseline for the user. –  Erics Dec 11 '11 at 14:11
add comment

There is no definitive test you can use, but your best bet is to monitor usage over time, and when some precision is being lost, then lock the app, on the assumption that user is either drunk, or at least not completely with it.

The problems are legion. For example, when I have a cold or am ill in other ways, I am less capable of achieving these sorts of tasks. It might be a good idea to keep me off it, depending on what it does. These sorts of test are only demonstrating certain reaction times - if that is what you need, then you can use this.

There is also the definition of "drunk". When I am very drunk, I can still achieve a remarkeable amount. When I am slightly drunk, I am sometimes better than normal. Do you want to stop me after one glass of wine? Or two? Or two bottles? How drunk is an issue?

I think you would do better to define something more definitive than "drunk", because it is not a clear term, and it is not easy to detect - and differs between people.

share|improve this answer
    
If you post on SE it means you are alive. Problem solved. –  Geeo Sep 16 '13 at 10:42
add comment

Interesting question!

Couple points/questions for you:

  • Assuming you could come up with a method that 100% of the time would identify a drunk person as drunk and a sober person as sober how would you enforce I (a drunk person) don't get Andy (a sober person) to do the test for me? Does this matter?
  • For high accuracy: It would not be good for distribution but you could sell a hardware alcohol detector that doubles a case for the mobile device.
  • For low accuracy: Assume users are drunk Fridays and Saturdays after 7:00 pm and all other days after 3:00 am. Alternately you could ask users when you expect them to be sober when they will be drinking.
share|improve this answer
    
I'd certainly use some 'time of day / day of the week' criteria - and require the user to get better results in a physical test to unlock the phone at say 10pm on a Friday night - than they would have to at 9am on a Tuesday morning. –  PhillipW Dec 10 '11 at 18:25
add comment

Another variation of a time lock would be make the application activation only available after x seconds/minutes for y seconds.

So you select the application and it would say "Activate period in 40 seconds for 5 seconds"

It might be harder for a drunk person to A: wait and B:get the timing right.

This could be made more complicated by adding in a maths problem to work out the time, and having lock outs if you get it wrong etc...

share|improve this answer
    
Can whoever down voted this please tell me why? –  AidanO Dec 12 '11 at 10:06
    
I didn't vote down, but I do think this is a bad answer. I wouldn't be willing to wait especially if I AM sober. Counting seconds or looking at a watch shouldn't be hard after several drinks. –  Danny Varod Feb 29 '12 at 22:37
    
@DannyVarod I think the majority of solutions suggested involve some form of inconvenience to the end user, playing a game or doing maths would take time. I'm not suggesting this as a stand alone solution but something that could be used in conjunction with something else. I think using this in conjunction with some form of scheduling important (only on at time when you'd be expected to be drunk). So at the weekend I would only want you sending texts (or whatever) if it's important enough that you'd be wiling to wait. –  AidanO Mar 1 '12 at 11:21
add comment

Here is a different approach... Use Geo-location and match it to google maps data on bars. If a phone has spent prolonged time in one location in close proximity to a bar, it would ask you if you might be too tipsy to send this message.

Responding to Hem's comment, I thought of another idea to go with this: IF you are near the bar and your texts contain more typos than normal, it makes you confirm your text. (all text inputs are monitored by the app to gather a baseline)

share|improve this answer
    
I don't drink but my friend does. What if we spend considerable time in a bar say 1-2 hrs. Should I also get notifications ? –  Hem Nov 28 '12 at 6:37
    
Nice question. If you activated the app, then yes. Let's say you and your friend go to the bar and you both have the app installed. He opens ("activates") the app because he's drinking. You are driving so you do not. He get's the message and you don't. The interface could be more sophisticated but that's the idea. –  Itumac Nov 28 '12 at 20:38
    
I might be wrong but I have noticed most of the drunk people prefer direct call rather than text; if they want to talk to their GFs/BFs and do text to inform their parents. Lets assume a case, you are drunk and want to call any friend or family member to pick you up from bar or from roadside. How do you communicate with them if it is disable for you. My personal thought is we need to check why we want to stop drunker to use the app and drive the solution around it. –  Hem Nov 29 '12 at 10:11
add comment

[humor]Move a button around when the user clicks on it. That way he is either bound to get irritated back to sobriety or throw the phone away.

On a serious note I think the most important parameter is the users co ordination. The best way I feel is to create a quick game screen which moves things around and challenges the user to stop them from moving by catching them which requires solid co ordination.

[humor again. maybe serious?] Or make him play Drunk Man video game (Android) and compare the scores.

share|improve this answer
add comment

It's not possible to prevent a drunk user from using the app. However, you can try to positively influence the behaviour of your user.

I would therefore recommend, thinking about what is at stake through 'drunk usage' and trying to positively influence behaviour:

  • What are the resulting actions that could ensue, should a drunk user actually use the app?
  • Are there usage patterns that are recognisable as a sign the user is using the application while intoxicated?
  • How best can you remind the user that they need to exercise caution if these signs are detected?
  • It's also worth considering how you can ensure that differently-able users aren't falsely accused of being drunk. E.g. A baseline metric of usage patterns of could be established while sober, and used for comparison.

Thinking laterally, (depending on the ramifications / risk) rather than prohibit usage, you could try to provide assistance to the user while drunk. E.g. an extra-assistance mode - to prevent the worst from happening.

share|improve this answer
add comment

As "dr jimbob" and the (correctly) negative commenters to Ravis's answer pointed out, since each person has different initial abilities and the environment differs from usage to usage (is user moving, multi-tasking, is environment shaking, is environment noisy/distracting, is user tired and so on...) you can not tell if a mobile user is drunk according to precision, responsiveness and intellectual skills.

What you should consider is why the user must not be drunk and test according to that.

E.g.

  • If user must use accurate gestures, test that, but then take into consideration that any user that is incapable of doing so can not user the app.

  • If user must solve hard problems, test that, but then take into consideration that not all sober users can use the app.

  • If user must spell correctly without using a dictionary... well you should have got the point by now.

  • If the user must be capable of good judgement, test judgement with questions and offer wrong yet funny answers and see if user can avoid them, yet as before... not all sober users will pass.

  • If the test is for legal reasons, then the only solution is a hardware alcohol level tester with some way to prevent user from cheating.

share|improve this answer
add comment

I had another idea. Voice recognition patterns. To calibrate, you enter a statement a few times until it has a baseline. Example: "vini vidi vici".

When you turn on the drunk app, it asks you to enter your statment in before you dial or text. If you say "Veeeny Vee Dee Veeshee", it will notice the change and ask if you REALLY want to send this text. Or block you entirely. Almost like parental controls.

I love this question.

share|improve this answer
add comment

How about asking the user directly:

"How drunk are you?" Please hit the corresponding point on this sliding scale.

If the user says he's only a little bit drunk, give him an explanation of why he shouldn't use the service while drunk. Afterwards you ask him again how drunk he is. If he answers differently then the first time you log him out.

share|improve this answer
add comment

Finally, a product that solves the whole issue.

http://www.alcohoot.com/

Build an app around it that doesn't let you text until you blow into the nozzle.

:)

share|improve this answer
add comment

protected by Community Dec 12 '11 at 14:09

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?