126

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.

Ben Brocka
  • 40,865
  • 10
  • 112
  • 183
  • 62
    Breathalyzer attachment. – Random832 Dec 09 '11 at 14:55
  • 15
    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 09 '11 at 15:07
  • 6
    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. –  Dec 09 '11 at 15:53
  • 2
    Since the best answer to your question is probably “by preventing anyone from using it”, can you maybe hint on the impact of false positives versus false negatives? – sam hocevar Dec 10 '11 at 12:29
  • Is this a one-time use app or reapeated-use? – Shawn Dec 10 '11 at 19:17
  • I'm really curious, what sort of app is this? – Peter Olson Dec 10 '11 at 23:44
  • 20
    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 00:35
  • If it is actually important (i.e. legal liability), then a breathalyzer is the only solution that isn't hogwash. Otherwise it isn't actually important. – Merlyn Morgan-Graham Dec 11 '11 at 12:41
  • 2
    I would be very interested in more detail as to the business needs driving this requirement. Is the test for drunkenness due to religious reasons (i.e. a test for presence of alcohol), or a test for physical impairment (e.g. like for driving a car), or a test to safeguard against careless/uninhibited decisions (e.g. to prevent "drunk texting")? – Erics Dec 11 '11 at 14:09
  • 8
    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
  • 2
    I almost completely rewrote this one while keeping the focus of the question; I think it's a much better written question now and provides a better reason for needing a drunk detection. I'm at least pretty sure this is what the original intent of the question was about. – Ben Brocka Dec 11 '11 at 20:27
  • 1
    @RogerAttrill this is why emergency services are usually super easy to access on phones, at least on Android you're a tap of a button away from an emergency call on the lock screen even if a password/ect is required. – Ben Brocka Dec 12 '11 at 00:26
  • 2
    @RogerAttrill - good point. I wouldn't want to have to bleed to death just because my stupid phone had a novelty 'prevent drunken call' feature. Or be unable to phone a taxi one night after drinking and walk home instead. Things like that would Not Make Me Happy. – Jimmy Breck-McKye Dec 12 '11 at 13:58
  • 1
    The breathalyzer thing has been done and was sold in Korea about 5 years ago - see article on gizmag about the LG LP4100 – Roger Attrill Dec 12 '11 at 14:23
  • @RogerAttrill Is that a phone or the hood of a car? – Ben Brocka Dec 12 '11 at 19:42
  • I swear my phone used to do this. Something about the chemistry in my body changed to where the screen wouldn't recognize my fingers on the touch screen. – Steve Robbins Dec 12 '11 at 22:38
  • 1
    Worth noting that a person can be physically and/or mentally exhausted because they for instance went 30 miles through the territory without cell network coverage without excess water and food. No doubt they will have drunk-sounding speech and they will likely have fine motor skills problems. – sharptooth Dec 26 '11 at 15:20
  • 1
    This 'anti drunk use' feature probably shouldn't affect calls to the emergency services. Having a stroke can look pretty well exactly like being drunk http://www.nhs.uk/Conditions/Stroke/Pages/Symptoms.aspx – PhillipW Dec 30 '11 at 13:31
  • As PhillipW says, in all seriousness, an 'anti-drunk' feature could create some severe safety risks if applied carelessly. It also assumes that people might not have legitimate reasons to call others whilst drunk (call taxi; find lost party; etc) – Jimmy Breck-McKye Dec 30 '11 at 15:06
  • Can't be done. If there was a way to do something like this, the government would most likely have required manufacturers to put it in motor vehicles. It's just too fraught with legal minefields. – Joel Garfield Feb 29 '12 at 18:29
  • I wouldn't prevent users from using the phone. Quite the opposite, you should make it easier to use if you're drunk and want to make an emergency call or perhaps phone a taxi. Other contacts could be hidden perhaps by using groups. Perhaps you could just make an "I'm going to get shitfaced" button that hides all contacts, but the ones I mentioned earlier + the emergency number, for say the coming 8 hours? Then make these fairly large buttons with large text? – johnny Mar 26 '12 at 18:08
  • Someone's got a Kickstarter project for one — http://www.kickstarter.com/projects/996412530/droidalyzer-android-alcohol-detector-android-dev-k?ref=category – msanford Jul 10 '12 at 22:55
  • You could ask that they pass a Jamestown level on divine: http://www.finalformgames.com/jamestown/ – yarian Dec 20 '12 at 16:11
  • I've seen desktop apps that use a maths test (to login). – logic-unit May 09 '14 at 10:24
  • Is the user a liar? Ask them how much they have had to drink!!! Allow them to set there drink limit when the app loads. 3 beers, 4 cocktails or something like that within say 2 hours or something. Then just ask when they access the phone how many drinks they have consumed. If they can't even answer, shut it down or dial a for them. – htm11h Jul 20 '16 at 17:46

19 Answers19

73

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 :)

Benny Skogberg
  • 54,996
  • 22
  • 140
  • 241
Caner
  • 855
  • 5
  • 6
  • 32
    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 09:22
  • I also think calibration is the key. – Thomas Stock Dec 11 '11 at 10:33
  • 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 01 '12 at 16:45
  • 2
    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
  • alcohol impairment is also characterized by poor perception of time...have them hit a button in 10 seconds with no timer or something. –  Aug 01 '12 at 23:04
  • I think this would work best if the user sets a base line when sober. This will also solve a lot of issues with comments on question – Andrey Nov 29 '12 at 19:44
  • balance your phone on your nose for 1 minute!! – htm11h Jul 20 '16 at 17:49
44

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.

dr jimbob
  • 586
  • 3
  • 6
36

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.

Ben Brocka
  • 40,865
  • 10
  • 112
  • 183
  • 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 00:08
  • There's now a mobile app to test for sobriety as well. http://www.webroot.com/En_US/sites/sobrietytest/index.html – Ben Brocka Feb 06 '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
26

Aaaaaaaaaaand... here it is!

iBreath breathalyzer

The breathalazyer attachment DOES exist.

Naoise Golden
  • 4,415
  • 24
  • 28
14

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!

Matt Wilko
  • 483
  • 2
  • 8
12

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!

Albin Sunnanbo
  • 229
  • 1
  • 3
7

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.

amy
  • 179
  • 2
6

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..
Ravi
  • 177
  • 2
5

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.

artifex
  • 159
  • 1
  • 2
5

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.

Schroedingers Cat
  • 9,141
  • 1
  • 23
  • 31
4

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.
  • 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
2

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...

AidanO
  • 199
  • 5
  • 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 01 '12 at 11:21
2

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)

Itumac
  • 4,794
  • 2
  • 20
  • 34
  • 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 ? – UXbychoice Nov 28 '12 at 06: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. – UXbychoice Nov 29 '12 at 10:11
1

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.

codeinthehole
  • 2,885
  • 1
  • 21
  • 14
1

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.

:)

Itumac
  • 4,794
  • 2
  • 20
  • 34
0

[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.

dnbrv
  • 13,227
  • 5
  • 44
  • 75
Vrashabh Irde
  • 449
  • 1
  • 6
  • 13
0

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.

Danny Varod
  • 7,333
  • 25
  • 38
0

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.

Itumac
  • 4,794
  • 2
  • 20
  • 34
-1

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.

Christian
  • 566
  • 3
  • 16