Custom Search

jeudi 29 décembre 2011

(Translations) Запитайте себе "А що б зробив користувач?"

Переклад статті з книги 97 Things Every Programmer Should Know про те, як мислить юзер і як його краще зрозуміти. Більше стосується програмування, та думаю і тестерам може бути цікаво. Буду вдячний за будь-які зауваження щодо помилок чи неточностей. Також вдячний друзям за допомогу. Ну що ж, поїхали!

В оригіналі статтю можна прочитати тут.

Запитайте себе "А що б зробив користувач?"

Giles Colborne
Ми всі часто припускаємо, що інші люди думають так само як і ми. Але це не так. Психологи називають це упередженням несправжньої згоди. Людей, які мислять або поводяться не так як ми, ми часто (підсвідомо) вважаємо неповноцінними.

Це припущення пояснює, чому програмістові так складно поставити себе на місце користувача. Користувачі думають зовсім не так, як це роблять програмісти. Перш за все, вони проводять значно менше часу за комп’ютером. Вони не знають, яким чином працює комп’ютер, та їх це й не цікавить. Це означає, що вони не можуть застосувати одну з багатьох технік розв’язання проблем, які добре відомі програмістам. Вони не розпізнають структури та натяки, які допомагають програмістам використовувати, вдосконалювати та обходити інтерфейс.

Найкращий спосіб дізнатися, як думає користувач, -- це спостерігати за ним. Попросіть його виконати якесь завдання, використовуючи програмне забезпечення, схоже на те, що ви розробляєте. Переконайтесь, що завдання цілком реальне: "Знайти суму колонки чисел" -- нормально; "Підрахувати витрати за останній місяць" -- взагалі чудово. Уникайте занадто конкретизованих завдань, на зразок "Виберіть комірки таблиці і введіть формулу сумування під ними" -- занадто багато підказок в одному реченні. Дозвольте користувачу розповісти про його успіхи. Не перебивайте. Не намагайтесь допомогти. Постійно запитуйте себе "Чому він робить саме так?".

Перше, що ви помітите -- це те, що користувачі роблять більшість речей однаково. Вони намагаються виконати завдання в одному й тому ж порядку і роблять однакові помилки в тих самих місцях. Слід взяти цю базову поведінку за основу. Це не те саме, що відбувається на нарадах з проектування, де люди схильні слухати, коли хтось каже: "А якщо користувач захоче те-то і те-то?". Це призводить до появи хитромудрих функцій і непорозумінь щодо вимог користувача. Спостереження за користувачами допоможе уникнути цих непорозумінь.

Ви побачите, як користувачі потрапляють у глухий кут. Коли ви потрапляєте в таку ситуацію, ви оглядаєтесь навколо. Користувач же, коли опиняється в тупику, навпаки, зосереджується на місці виникнення проблеми. Йому стає важче побачити рішення деінде на екрані. Ось чому тексти допомоги є поганим рішенням проблеми неякісно розробленого інтерфейсу. Якщо необхідно подати інструкції або текст допомоги, обов’язково розташуйте їх поряд з проблемними місцями. Через вузьке поле уваги користувача спливаючі підказки ефективніші, ніж меню допомоги.

Користувачі як-небудь справляються з труднощами. Вони знаходять робочий спосіб і постійно ним користуються, навіть якщо він дуже заплутаний. Краще забезпечити один очевидний спосіб виконання завдання, ніж декілька посилань на спосіб вирішення проблеми.

Ви також побачите, що між тим, що користувач каже, хоче та робить насправді, є певна різниця. Саме це і хвилює найбільше, бо найпоширеніший спосіб збирати користувацькі вимоги -- це задавати їм запитання. Ось чому найкращий метод вловлювати вимоги до продукту -- це спостерігати за користувачами. Провести годину, спостерігаючи за процесом роботи користувачів, краще, ніж витратити весь день, роблячи припущення про те, чого вони хочуть.

mardi 13 décembre 2011

(Translations) Beauty Is in Simplicity - Jørn Ølmheim

Оригінал статті можна прочитати тут.

Beauty Is in Simplicity - Jørn Ølmheim
Краса у простоті

Jørn Ølmheim
Є відома цитата Платона, яку, на мою думку, варто знати і пам’ятати усім розробникам програмного забезпечення.


У характері, в манерах, в стилі, у всьому цьому найпрекрасніше - простота.

Усього в одному реченні описані всі цінності, до яких ми повинні прагнути як розробники програмного забезпечення.

Ось кілька властивостей, які ми прагнемо надати коду:
  • Легкість читання
  • Легкість підтримки
  • Швидкість розробки
  • Невловиме поняття краси

Платон каже, що всі ці якості можна досягнути через простоту.

Що таке гарний код? Це дуже суб’єктивне питання. Сприйняття краси, як і будь-чого іншого, залежить від нас самих. Люди з художньою освітою сприймають красу не так, як люди з технічною освітою (чи, принаймні, мають інший підхід до краси). Знавці мистецтв при оцінці краси програм порівнюють їх з творами мистецтва, натомість науковці згадують симетрію і золотий переріз та намагаються звести все до формул. Наскільки я знаю, більшість аргументів обох сторін ґрунтується на простоті.
Пригадайте той код, який ви вивчали. Якщо ви не вивчали чужий код, зараз же припиніть це читати і знайдіть який-небудь відкритий код для вивчення. Негайно! Пошукайте в інтернеті якийсь код на вашій мові програмування, написаний відомим і поважним експертом.

Ви вже повернулись? Чудово. На чому ми зупинилися? Ага... Я помітив, що код, який я вважаю красивим, має декілька спільних ознак. Головною з них є простота. Я вважаю, що незалежно від того, наскільки складна програма чи система в цілому, окремі частини повинні бути простими: прості об’єкти з простими обов’язками, які містять так само прості, сфокусовані методи з описовими назвами. Дехто вважає, що короткі методи на 5-10 рядків коду -- це занадто, і цього важко досягнути на деяких мовах, але я вважаю, що все одно така стислість є бажаною метою.

Отже висновок такий: гарний код -- це простий код. Кожна окрема частина повинна залишатися простою, з простими обов’язками та взаємозв’язками з іншими частинами системи. Саме так можна зробити наші системи легкими в підтримці, з чистим, простим кодом, який можна тестувати, і забезпечувати високі темпи розробки впродовж усього часу життя системи.
Краса народжується і відкривається у простоті.



jeudi 8 décembre 2011

(Translations) The Guru Myth - Міф про гуру

Ryan Brush

Оригінал можна прочитати тут.

Кожен, хто займався розробкою достатньо довго, чув питання на зразок такого:


В мене вилітає виключення XYZ. Ти часом не знаєш, в чому справа?

Ті, хто задають такі запитання, рідко додають до опису проблеми слід стеку(stack traces), логи реєстрації помилок, або будь-який контекст, у якому виникла дана проблема. здається, що вони вважають, що ви думаєте якимось інакшим способом, що рішення з’являються перед вами без аналізу, який базується на фактах. Вони вважають, що ви -- гуру.

Таких запитань слід очікувати від людей, не знайомих з програмним забезпеченням: для них системи видаються мало не магією. Що мене турбує -- це такі випадки у спільноті програмного забезпечення. Подібні питання постають при проектуванні програм, наприклад: “Я пишу керування запасами(inventory management).Чи варто використовувати оптимістичне блокування(optimistic blocking)?” Парадоксально, але той, хто задає питання, часто може дати кращу відповідь, ніж той, кого запитують. Той, хто питає, скоріше за все, знає контекст і вимоги, а також може прочитати про переваги і недоліки різних стратегій. Втім, вони очікують від вас розумної відповіді без контексту. Вони очікують чаклунства.

Настав час індустрії програмного забезпечення розвіяти цей міф про гуру. “Гуру” -- це люди. Вони керуються логікою і системно аналізують задачі, як і всі ми. Вони користуються своїм досвідом та інтуіцією. Гляньмо на найкращого програміста, якого ви знаєте. Був час, коли він знав про програмування менше, ніж ви знаєте зараз. Якщо хтось здається вам гуру, то це результат років навчання і тренування розуму. “Гуру” -- це просто розумна людина з невгамовною цікавістю.

Звичайно, залишається велика різниця у природних здібностях. Багато хакерів розумніші, обізнаніші і продуктивніші, ніж я міг би коли-небудь бути. Незважаючи на це, розвінчання міфу про гуру має і позитивний вплив. Наприклад, працюючи з кимось розумнішим за мене, я напевне займатимусь біганиною, щоб забезпечити цій особі достатні умови, щоб вона могла ефективно використовувати свої навички. Розвіювання міфу про гуру також означає усунення перепон для розвитку. Замість магічного бар’єру я бачу простір, в якому можна розвиватися.

Нарешті, одна з найбільших перешкод в програмному забезпеченні - розумні люди, які цілеспрямовано поширюють міф про гуру. Це може бути проявом егоїзму або стратегією для того, щоб набити собі ціну в очах клієнта чи роботодавця. За іронією долі, таке ставлення може зробити розумних людей менш цінними, оскільки вони не сприяють розвитку своїх колег. Нам не потрібні гуру. Нам потрібні фахівці, які прагнуть розвивати інших фахівців у своїй галузі. Тут достатньо місця для всіх.





(Tranlations) Постійно вчитись - Клінт Шанк

Стаття з книги 97 Things Every Programmer Should Know. Величезне спасибі друзям за допомогу з перекладами. Буду вдячний за будь-які зауваження щодо помилок чи неточностей. Ну що ж, поїхали!

В оригіналі статтю можна прочитати тут.

Clint Shank
Ми живемо в цікаві часи. Розробка поширюється по світу, і ви дізнаєтеся, що є дуже багато людей, здатних виконувати твою роботу. Вам слід постійно вчитися, щоб залишатися конкурентоздатним. Інакше ви застрягнете на своїй роботі до того часу, поки Ви станете непотрібними або на неї не підрядиться хтось за меншу оплату.

То що ж Вам з усім цим робити? Деякі роботодавці достатньо щедрі, щоб забезпечити тренінги для покращення Ваших умінь. Інші ж можуть не мати змоги виділити ні часу, ні грошей для Вашої освіти взагалі. Щоб не ризикувати, потрібно серйозно взятись за свою освіту самостійно.

Ось список способів, як продовжувати навчатися. Багато з них доступні безкоштовно в інтернеті:
  • Читайте книги, журнали, блоґи, Твіттер та веб-сайти. Якщо ви бажаєте заглибитись у вивчення предмету, подумайте про приєднання до розсилок новин. 
  • Якщо ви справді хочете розібратись в технології, приступайте до діла -- пишіть код. 
  • Завжди намагайтеся працювати з наставником, бо якщо ви найкращий у колективі, це може ускладнити Вашу освіту. Хоча від кожного можна чогось навчитися, набагато більше можна почерпнути від того, хто розумніший чи досвідченіший за Вас. Якщо ж ви не можете знайти вчителя, переходьте до наступних пунктів. 
  • Використовуйте віртуальних учителів. Знайдіть в інтернеті авторів і розробників, які Вам справді до вподоби, і читайте все, що вони пишуть. Підпишіться на їхні блоґи. 
  • Вивчайте фреймворки та бібліотеки, які ви використовуєте. Якщо ви знаєте, як що-небудь працює, то можете краще його використовувати. Якщо вони мають відкритий код, то Вам дуже пощастило. За допомогою дебаґґера покроково проходьте код і спостерігайте, що відбувається під капотом. Ви побачите код, який писали і перевіряли дуже розумні люди. 
  • Кожного разу, коли ви зробили помилку, виправили баґ, або зіткнулися з проблемою, постарайтесь розібратися, що сталось насправді. Скоріше за все, ще хтось зіткнувся з подібною проблемою і опублікував її в інтернеті. Google -- Ваш друг:) 
  • Прекрасний спосіб щось вивчити -- вчити це або говорити про це. Коли люди збираються Вас слухати, і задавати Вам запитання, у Вас буде чудова мотивація вчитись. Спробуйте lunch’n’learn на роботі, приєднайтесь до групи користувачів, або відвідайте якусь місцеву конференцію. 
  • Приєднайтеся до навчальної групи, або створіть нову (як-то спілка вивчення "узорів"-паттернів), або приєднайтеся до місцевої групи користувачів мови, технології чи дисципліни, яка Вас цікавить. 
  • Відвідуйте конференції. Якщо ж не маєте змоги -- багато конференцій транслюються онлайн безплатно. 
  • Далеко їхати? Слухайте подкасти. 
  • Користувалися статичним аналізом кодової бази? Бачили попередження свого середовища розробки (IDE)? Дізнайтеся, що вони повідомляють і чому. 
  • Послухайте пораду Pragmatic Programmers та вивчайте нову мову програмування кожного року. Принаймні вивчіть нову технологію чи інструмент. Це дасть Вам нові ідеї, які ви зможете використати у технології, з якою працюєте зараз. 
  • Не все, що ви вивчаєте, повинно буди пов’язане з технологією. Вивчайте свою галузь роботи, щоб краще розуміти вимоги і допомагати в розв’язанні бізнес-проблем. Вчіться бути продуктивнішими і краще працювати -- це також дуже хороший варіант. 
  • Поверніться до школи.  (?)
Було би класно мати таку можливість, як Нео з “Матриці” і просто завантажити усю необхідну інформацію у наш мозок. Але, на жаль, такої можливості немає, тому доведеться тратити час. Вам не треба проводити кожну вільну годину навчаючись. Трохи часу кожного тижня - це набагато краще, ніж нічого. Повинне бути життя і поза роботою.

Технологія змінюється швидко. Не відставайте.

jeudi 8 septembre 2011

How can I better enjoy my HTC EVO Shift 4G With Sense UI and Gingerbread?

Contributed by Alex Hiironen

The HTC EVO Shift 4G from Sprint is an excellent Android phone, with hardware keyboard, physical navigational controller, and decent specs. One of its drawbacks, however, is the HTC Sense user interface. The Sense UI affects fewer of the phone's applications than the Touchwiz overlay on some Samsung phones, but Sense does require users to find some extra know-how or workarounds for certain things: the accessibility option in settings, the unlock gestures, the stock launcher, the call answer/reject/end gestures, the in-call screen, and the Contacts, Messaging, Alarms, and camera apps. Don't worry, most of this is still usable.

In this post, I explain how to work around the accessibility glitches in the HTC Sense interface on my Evo Shift. There may be a little variation, especially when it comes to the gestures, but most of this information should transfer to other HTC Sense UI phones.

Finding Accessibility Settings in a New Sense UI Device

When you walk into the store to check out Sense UI cell phones or when your new Sense UI device comes in the mail, the person who is helping you start accessibility may tell you there is no accessibility item in the phone's settings. No need to sound the alarm.

To restore the accessibility option to settings, direct the sighted person helping you to go into the Market and install Talkback by Eyes-Free Project or by Google, Inc. Doing this not only installs the screen reader but also adds the Accessibility option to Settings.

To start speech, have the person helping you go into Settings/Accessibility, and check both Accessibility and Talkback. After that, you're good to go, and can manage the rest on your own.

A Note About the Instructions in This Post

When I say, "Press enter to do something," I mean "Press the actual Enter key on the hardware keyboard," not the center of the arrow keys. The center button in the arrow keys only seems to move focus through lists of items.

Unlocking the Screen on the Evo Shift

To unlock the screen, press the power button at the top of the phone. Spiel or Talkback says the time. Place your finger in the very center of the screen (both horizontally and vertically) and swipe down, and the screen unlocks. This gesture applies to the Shift, but may not apply to all Sense devices.

Alternatively, unlock the screen by opening the hardware keyboard.

Using the Stock Launcher in HTC Sense Phones

The HTC Sense launcher or home screen is almost completely inaccessible, so you'll want to go to the Market to install a home screen you can use. Examples of home screens that work well with speech are the Eyes-Free Shell by Eyes-Free Project or Google, Inc., and Launcher Pro by Federico Carnales.

The only part of the stock HTC launcher that is usable with a screen reader is the All Applications list. To access it, press the Menu key. Then you can scroll through a list of all the apps installed, and you can press the enter key on the one you want to use.

Answering/Rejecting Calls on the Evo Shift

Gestures to answer and reject calls on Sense UI phones vary, depending on the version of Android you're running and on whether the screen is locked or unlocked. With the Shift and Gingerbread (2.3), the following instructions apply:

To answer a call while the phone is locked, simply swipe down from the very center of the screen, like when you unlock it.

To reject a call while the screen is locked, do the gesture in reverse, swiping up, starting at the bottom edge of the screen protector, if you have one, or above the 4 capacitive function keys. This makes the phone stop ringing and sends the call directly to voicemail.

To answer a call while the screen is unlocked, like when you're on your home screen or in another app, tap the on-screen answer button, which is located in the bottom left portion of the screen above the capacitive home and menu buttons. Having a screen protector helps. If you have one, locate the button by finding the edge of the screen protector and tap about .25 inch or .5 cm from the left. To do this, I usually hold the phone in my left hand and reach around so I can touch the button on the screen with my left thumb. It takes practice, but is second nature once you've done it enough. With the phone positioned in landscape, these buttons move to the long edge of the screen and become a bit longer and easier to tap.

To reject a call while the screen is unlocked, like when you're on your home screen or in another app, tap the on-screen ignore button, which is located in the bottom right portion of the screen above the capacitive back and search buttons. It's the same spot for answering, except on the right side of the screen. I find these gestures are easier to do by holding the phone in one hand and reaching around with my thumb to do the tapping.

Some users of FroYo (2.2) and earlier answer calls with a free app called Shake Call by YSRSoft.

Since the Sense UI has removed the Use Power Button to End Call accessibility feature, you can also reject calls by pressing the power button.

Ending Calls on HTC Sense Phones

Ending calls is a little trickier on Sense UI phones because an accessibility feature allowing the power button to hang up has been removed, so you have to use the on-screen end-call button.

To end a call or hang up, pull the phone away from your face so the screen wakes up, find the lower left center of the screen, and tap it. The spot is roughly between the two capacitive buttons on the left and a little over 1 inch or 2.5 cm above the bottom edge. You have to do a little practicing, but after a few taps in that general area, it will be second nature. The phone plays a short tone to confirm the call has been ended.

You're probably thinking, "Why can't I just open the keyboard and arrow to the end call button?" You can, but I've found that sometimes Talkback or Spiel doesn't speak in the in-call screen, even when I have the phone far enough away from my face to avoid interfering with the proximity sensor. On those occasions, I've had to restart the phone to hang up at the end of a call or voicemail. It's much more efficient to use the touch gestures to answer and hang up calls.

Note: when attempting to touch the on-screen end call button, try not to tap the home or other capacitive keys. If you do, you'll have a tough time getting back to the in-call screen. The process involves using status notifications to return to the phone app and preying you get to the right screen so you can tap the "end call" button.


Some users with FroYo (2.2) and earlier end calls with a free app called Shake Call by YSRSoft.

Adding, viewing, and Deleting Contacts using People

People, the Contacts app on the Shift, is fairly accessible. You can add and delete contacts with a screen reader. You do have to arrow around more than usual to get things to speak, but it's doable.

When the app opens, you're on the "add contact" icon. Press enter on this to create a new contact.

To scroll through the list of contacts, open the ap and down-arrow. Pressing enter on someone's name enables you to call, text, set ringtone, and edit the contact details for that person. The options on this screen are spoken fairly well with Spiel. If you don't hear anything after pressing down arrow, press the down-arrow again. There are some unlabeled image buttons, which clutter the screen. To return to the contact list, press the back button.

One thing to keep in mind while in the main contact list is that, if you arrow down after you've reached the end of the list, you get to the most inaccessible part of the application. It seems to be a list of categories, and the enter and arrow buttons have no effect on these items. You need to force close and restart the contacts app to exit this area and use People again.

To add a contact, arrow to the "add contact" icon at the top of the contact list and press enter. It should be the item with focus when People opens.

When focus moves to the Name edit box, Spiel doesn't announce that it's an edit box, it just says, "Name." Go ahead and type the contact's full name and down arrow until you hear, "phone, edit text." You can specify multiple numbers and emails for a contact. It's just a little trickier, but the arrows are your friend in this app, so you can do it with Spiel if you're patient enough.

As you continue arrowing around to enter other details, you encounter lots of items that Spiel announces as "add." These are for birthdays and so on and make use of nonstandard picker controls, which are inaccessible, so arrow past them.

When you finish adding all the details you want for the contact, arrow down several times until you get to the "save" and "cancel" buttons. Save is on the left, and cancel is to the right of that. To save your changes, either press enter on the "Save" button or simly press the Back key.

Note: The contacts app allows for the creation of groups so you can send messages to multiple people at the same time. I haven't used this functionality, so I don't know if it's accessible or not.

Using the messaging App in HTC Sense

The messaging app that comes with the EVO Shift 4G is not all that different from the stock messaging app.

To compose a new message, just launch the app and press enter, as focus moves directly to the "compose message" icon when you start the app.

To add contacts to the "to" field, hit right arrow once while on the "To" field. This puts you on an unlabeled button. Press enter on this. The contact list comes up, allowing you to check as many as you wish. At the bottom is the "done" button. The great thing about this button is that it tells you how many contacts are selected, such as "Done (6)" button.

To return to the "to" field and the rest of the message, hit left arrow After pressing enter on the Done button. Then down arrow to the message body, where you can type your message. When you're done, press right arrow to move to the send button and press enter.

To reply to a text message, some workarounds are required because it is not possible to open a conversation and move to the message body field directly. Instead,hit enter on the conversation in the list, and arrow to the specific message you wish to reply to. Then do one of two things:

Either … long press enter to bring up the context menu for the message, and press enter on "Reply." When you do, focus moves to the message body edit field, where you can type your reply.

Or … press enter on the message in the thread, then tap the bottom center of the screen to move focus to the edit field.

Whichever method you use, Spiel says, "Add text," when focus moves to the message body. The next thing to do is to type your reply, press enter, then right arrow to the send button, and press Enter again. I've found that pressing enter in the message body field before moving to the send button works all the time. If I skip this step, focus stays in the message field or the app has other strange behavior.

Setting Alarms with Alarm Klock

The default clock app on the Evo Shift is inaccessible, so go to the Market, and download a free app called Alarm Klock by Craig G/, which is easy to use and 100% accessible. Here is some basic information on how to use this app:

To set an alarm in Alarm Klock, start by opening the app and setting the time you wish the alarm to go off. When the app. is launched, focus moves right to the Add Alarm button. Press enter there, and explore the new screen. The items are organized top to bottom, so hitting left or right arrow doesn't wrap around confusingly. the screen shows some edit boxes and some buttons labeled +1, -1, +5, and -5. The +/-1 buttons are for setting the hour, and the +/-5 buttons are for setting the minutes. You can also enter the time manually in the edit fields. The AM/PM button is to the right of the time edit fields. Pressing enter on it toggles between the two, and Spiel speaks the new status when you arrow away and back again. After setting the time, down arrow to the OK button and press enter.

To give your new alarm a label and maybe assign it a different sound from the default alarm ring, go to the app's main screen, up arrow to the new unlabeled alarm, and press enter. This brings up a totally accessible screen for setting the alarm ringtone and other options. You can change the time here as well. Most of this is self-explanatory, so I won't go into any detail.

To stop a ringing alarm, simply slide your finger across the screen from left to right, about 1 inch or 2.5 cm from the bottom edge,. The alarm sound will stop immediately and place you on the HTC lock screen. You can then either swipe down to unlock or hit the power button to put the phone back to sleep.

To snooze a ringing alarm, simply tap the screen once near the center.

Using the Camera

The camera in HTC Sense is as inaccessible as the camera in stock Android, but you can still take pictures.

Don't smirk. Taking pictures may be useful even for totally blind people. For example, I was once in a lunch room where there was a new microwave I didn't know how to use. I took a quick snapshot of the front panel and sent it to a friend, and a few seconds later, I had enough info to warm up my lunch.

To take a picture, open the camera app, and press Enter while you're pointing the back of your phone at the object you wish to take a picture of. The menus don't read and there's no way to adjust picture quality, but the defaults are fine. The pictures are stored as ImagX.jpg, where X is a number, and placed on the SD card\dsim\100MEDIA.;

Conclusion

The EVO Shift 4G is an excellent phone once you learn to work with it. It would have been a better device if HTC left well enough alone, but even so, this phone is usable with hardly any 3rd party apps.

mercredi 10 août 2011

Accessible GMail On Android ---- Eyes-Free Email On The Go!

Accessible GMail On Android — Eyes-Free Email On The Go

1 Accessible GMail On Android — Eyes-Free Email On The Go

I've been using Android as my primary smart phone since late 2008, and the level of email access I've had on Android in the past has always been a source of frustration. About a year ago, I first started accessing my email on Android with K9-Mail — that helped me bridge some of the accessibility gaps on the platform.

Over the last few months, our friends over in GMail Mobile have been adding accessibility support to the GMail client on Android. What is truly exciting is that this support is being added to existing releases of Android including Froyo (Android 2.2) and GingerBread (Android 2.3). This means that GMail on Android is now accessible on existing devices — get the update from Market and give it a spin.

1.1 Typical Usage Pattern

Here is my typical usage pattern when accessing my corporate email at Google. Note that the volume of email I receive on this account is extremely high, and includes many mailing lists that I typically do not read while on a mobile device. To limit how much email I download to the mobile device, and to ensure that I attend to the most pressing email messages while on the go I do the following:

  • I have defined a GMail filter that assigns label to-mobile to messages I want to access when on the go.
  • Typically, this includes email addressed directly to me, and other priority items.
  • I launch GMail to open to this label.
  • I quickly skim through the list of displayed messages to here the subject and a quick overview of the message.
  • If I decide to read the complete message, I select that message via the trackball on my Nexus One to hear the message in its entirety.
  • And finding an email thread I am looking for is just one click away — press the search button, and use up/down to navigate your search history.

See our help center documentation for additional details.

Author: T.V Raman <raman@google.com>

Date: 2011-08-10 Wed

HTML generated by org-mode 6.30c in emacs 23

dimanche 19 juin 2011

How do I set and use alarms on Android?

Android phones come with an accessible alarm clock app, which is surprisingly handy. On the road, users can have their phones wake them up in the morning. At home, they can set alarms for the start or end of their exercise routines, the time needed to boil an egg, the beginning of a favorite TV show, or the times they normally take any medication. At work, they can set alarms for specific tasks (e.g., work on X for an hour before moving on to Y for today). This post covers setting, using, and managing alarms with the stock alarms app in Android 2.2.

The process is similar in 2.1, but the app to search for is called Alarms, not clock.

Finding the Alarms

The Alarms app is part of an app called Clock. To find it, users start at their home screens, find the All Applications list, navigate to Clock, and launch the app. Once in Clock, users scroll to and press the selector on Alarms. The steps are as follows:

• From the stock home screen, scroll to and press the selector on All Applications or on Sliding drawer; then scroll to and press the selector on Clock.
• From the Eyes-Free Shell, down-stroke to Applications; type the letter C and scroll down to Clock, or use stroke dialing. Then press the enter, selector, or Search button.
• From Mobile Accessibility, swipe down to Apps, double tap, swipe to Clock, and double-tap again. The MA suite has it's own alarm clock app called Alarms.

Getting Familiar with the Clock Screen

The clock app has an interesting organization, which is easiest to conceptualize as an interrupted loop. When the app opens, focus is on the Dim button, and scrolling down once moves focus to the Alarms button. If users scroll left from Dim, focus moves to Music, Gallery, and Alarms, and from Alarms, they can scroll up once to return to Dim. If users start at Dim and scroll down once to Alarms, they can scroll right to Gallery, Music, and Launcher, and from Launcher, they can scroll up once to return to Dim.

Pressing the Menu button while on the Clock screen moves focus to Alarms, Add Alarms, and Dock Settings. The Alarms item on the Clock screen and the one accessed from the Menu button open the same screen; likewise, Add Alarms from the Clock Menu options opens the same screen as Add Alarms from the Alarms screen.

Pressing the selector on Gallery, Launcher, or Music while on the Clock screen launches the default photo, music, or home screen app.

Setting an Existing Alarm

A few alarms are preset on the phone, and each time a new one is set, it is added to the chronological list of alarms, so the quickest way for users to set an alarm is to scroll through the list of existing alarms and check one. The steps are these:

1. Launch Clock from the home screen using the steps described in an earlier section of this post.
2. Navigate to and press the selector on Alarms.
3. Scroll through the list. The first item is an Add Alarm button, and the last item is Clock Display, which returns focus to the Clock main screen. All the items in between are individual alarms, listed chronologically (e.g., 9:00 a.m. appears before 3:30 p.m.).
4. Find the desired alarm, and do one of the following:
a. Long-press (2-3 seconds) the selector, scroll to Turn Alarm On, and press the selector there.
b. Short-press the selector, scroll to and press the selector on the Turn on alarm checkbox to check it, scroll through the alarm details and edit if desired, and navigate to and press the selector on Done, or simply press Back to set the alarm and return to the previous screen.
5. Press Back several times or Home to return to the home screen.

Setting a New Alarm

The process of setting a new alarm feels long and tedious the first time or two. After that, it becomes quick and efficient.

1. Launch Clock from the home screen using the steps described in an earlier section of this post.
2. Press Menu.
3. Navigate to and press the selector on Add Alarm.
4. Fill in the alarm information. Initially, the screen appears to have only two items: a Turn On Alarm checkbox and below it a Set item. Scroll up or to the right from Set and more items appear. They form a rough grid and are as follows from left to right and top to bottom :
a. Increment Hour & Increment Minute – Briefly pressing the selector on one of these items adds one hour or one minute to the number that is already in the edit field (e.g., from 10 to 11). Pressing and holding the selector down on these controls increases the hours or minutes, depending on how long the selector is pressed: holding it down a couple of seconds increases by a small amount, and holding it down several seconds increases by a larger amount. When the selector is released, focus returns to the appropriate edit field, but the number does not refresh automatically for the screen reader, so you need to scroll up or down, then back, to hear the new number in the edit field.
b. Hours edit field, Minutes edit field, & AM/PM button – The edit fields show the current time, so if it's 11:35 AM, the Hours edit field shows 11; the Minutes edit field shows 35; and the AM/PM button is set to AM. Enter the time you want the alarm to go off by typing into the edit fields or by pressing the selector on the Increment or Decrement controls (above or below). On many phones, it may be necessary to erase the current time before entering new numbers with the keyboard. If your phone does not have a number row, it may be necessary to press the alt key twice in each edit field before typing numbers. Scroll left to and press the selector on the AM/PM button to toggle between AM and PM. If the Talkback keyboard is enabled and you have trouble scrolling out of the edit fields, try pressing alt twice, then once more, before attempting to navigate away from the edit fields again.
c. Decrement Hour & Decrement Minute – Briefly pressing the selector on one of these items subtracts one hour or one minute from the number that is already in the edit field (e.g., from 10 to 9). Pressing and holding the selector down on these controls decreases the hours or minutes, depending on how long the selector is pressed: holding it down a couple of seconds decreases by a small amount, and holding it down several seconds decreases by a larger amount. When the selector is released, focus returns to the appropriate edit field, but the number does not refresh automatically for the screen reader, so you need to scroll up or down, then back, to hear the new number in the edit field.
d. Set & Cancel – Pressing the selector on these confirms or clears the alarm time and returns focus to the previous screen.
5. Once the alarm has been set, focus moves to a screen with additional options. Scroll through them and make any changes. Options are as follows:
a. Turn Alarm On – This checkbox is already checked for you. Press the selector to uncheck it if you don't want to hear the alarm.
b. Time – This shows the time you expect the alarm to go off. Pressing the selector here moves focus to the Alarm Set screen described in Step 4.
c. Repeat – This dropdown list is set to Never by default. Pressing the selector here moves focus to a list of the days of the week. If you want the alarm to go off on Monday through Friday, but not on Saturday or Sunday, SCROLL TO AND press the selector ON Monday, Tuesday, Wednesday, Thursday, and Friday to check those days; then scroll to and press the selector on OK.
d. Ringtone – The default alarm ringtone sounds like an old fashion alarm clock. To change it, press the selector on this item, navigate to and press the selector on the ringtone of your choice, then jump to the bottom of the ringtone list with alt+down-arrow, scrolling down one more time and pressing the selector on OK.
e. Vibrate – This checkbox is checked by default. Press the selector here to uncheck it if you do not want the phone to vibrate when the alarm goes off.
f. Label – This item allows you to name the alarm. Press the selector here, type the label name in the edit field, then scroll to and press the selector on OK. The label name is spoken when the alarm goes off. This is a handy feature as names simplify choosing an alarm and act as reminders of what the alarm is for. So if you have a favorite show, you can set an alarm for it, then find it quickly by naming the alarm after the show, and if you're busy getting dinner ready, you can have two alarms set for the same general period of time, one called Casserole for turning off the oven and another called pudding for chilling the dessert.
g. Done, Revert, Delete – These three items appear at the bottom of the list of options. Done saves the alarm information. Revert clears the alarm settings. Delete discards the alarm. Navigate to and press the selector on any of these, or press back to accept the current settings and return to the previous screen.
6. When the alarm goes off, press the hardware volume or camera button to stop or snooze the alarm.

Setting Alarm Behavior

The Clock app offers users the option to determine alarm behavior through the Settings item on the alarm screen. The choices made in this Settings screen affect all alarms and remain in place until they are changed to something else.

To set alarm behavior, do the following:

1. Launch Clock from the home screen using the steps described in an earlier section of this post.
2. Navigate to and press the selector on Alarms.
3. Press the Menu button.
4. Navigate to and press the selector on Settings; then scroll through the following items, making changes as desired.
a. Alarm in silent mode – Checking this item allows the alarm to ring even when the phone is set to vibrate or silent mode. This item is checked by default as many users silence their phones at night.
b. Alarm volume – Pressing the selector here pulls up a screen with a seek control and OK and Cancel buttons. Arrowing right on the seek control increases the volume of the alarm while arrowing left decreases it. Pressing the selector on OK sets the volume level and moves focus to the previous screen.
c. Snooze duration – Pressing the selector here opens a list for setting the interval between snoozes. Options are 5, 10, 15, 20, 25, and 30 minutes. Navigate to and press the selector on the desired item. Then press Back to return to the previous screen.
d. Volume and camera button – Pressing the selector here pulls up options that determine what effect the volume and camera buttons have on the alarms. Options are None, Snooze, Dismiss, and Cancel. Choosing None means that pushing the volume or camera button does nothing while the alarm is ringing. Snooze means that pressing the volume or camera button stops the alarm temporarily, and Dismiss means that pressing Volume or Camera stops the alarm once and for all. Press Back to return to the previous screen.
5. Press Back several times or Home once to return to the home screen.

Stopping and Snoozing Alarms


When an alarm rings, users can stop it temporarily (snooze) or completely (dismiss), depending on their setting in the Volume and Camera option described in the previous section of this post.

What to do when the alarm rings:

• If the option is set to Dismiss, press the physical volume or camera button to stop the alarm permanently.
• If the option is set to Snooze, Press the physical volume or camera button to stop the alarm temporarily. When the alarm rings again, press the camera or volume button again. To stop the alarm permanently, pull down the status bar (by touching the top of the screen and sliding your finger down until you hear, "Status bar" or "Notifications"), scroll through the items, pressing the selector on the alarm label (e.g., Casserole), and press the selector to dismiss the alarm.
• If the option is set to None, press the physical navigational controller or open the keyboard to wake up the phone, then down-arrow once to the Snooze item, and press the selector. To stop the alarm permanently, left-arrow from Snooze to Dismiss, and press The selector. This method of snoozing or dismissing alarms requires practice, unless screen reader volume is set to maximum, because the ringing alarm drowns out speech.

Deleting and Editing Alarms

When a new alarm is set, it is added to the chronological list of existing alarms so users can quickly access and reuse it at any time.

To quickly turn on an existing alarm – While on the list of alarms, scroll to the desired alarm, long-press the selector, then scroll to and press the selector on Turn on Alarm.

To delete an alarm you no longer need – While on the list of alarms, scroll to the desired alarm, long-press the selector, then scroll to and press the selector on Delete Alarm. A confirmation screen appears asking if you're sure you want to delete the alarm. Press the selector on OK.

To edit an alarm (e.g., to pick the children up from school early) – While on the list of alarms, scroll to the desired alarm, long-press the selector, then scroll to and press the selector on Edit Alarm. Focus moves to the screen for setting a new alarm, described earlier in this post.

jeudi 26 mai 2011

How do I text with the stock messaging app on my Android phone?

Text messaging is so easy to do with an Android phone that it is one of the first tasks new users learn on their own.

This post covers sending and receiving texts, managing conversations, and adjusting settings in the stock messenger app. Not all features are covered because most are self-explanitory, but the basics are here.

Users can have the entire text of all incoming text messages spoken through a setting in Accessibility Preferences, an app from the Android Market. To have entire messages spoken as they come in, Talkback users must go into Accessibility Preferences/Talkback/Screen Status and check Allow Speech When Screen Is Off, and Spiel users must go into Accessibility Preferences/Spiel/Notifications and check Speak Notifications Even When Screen Is Off.

Sending a Text Message

1. Launch Messaging, the text app that is preinstalled on your phone.
a. From the stock home screen, scroll to and press the selector on All Applications or on Sliding drawer; then scroll to and press the selector on Messaging.
b. From the Eyes-Free Shell, down-stroke to Applications; type the letter M and scroll down to Messaging, or use stroke dialing.
c. From Mobile Accessibility, swipe down to Apps, double tap, swipe to Messaging, and double-tap again. The MA suite has it's own messaging app called SMS.
2. Press the selector on the New Message button, which has focus when the app opens.
3. Enter the recipient's number or name in the To edit field, which is what has focus. Two methods are available.
a. Type the phone number; then down-arrow twice to the message field.
b. Type the name of a contact; then arrow down through a list of results and press enter or the selector on the one you want. When you press the selector, the To field is filled in and focus jumps to the message field. The first result is always the numeric equivalent of the text string: 747 for Sis or 74783 for Sister.
4. Type the message. If you are using the Talkback Keyboard or Mobile Accessibility, you can review the text. If you are using Spiel, you can review the text character by character and line by line, or you can arrow up or to the right to move focus away from the edit field, then back down or left to return and hear what you've written.
5. Press the Menu button to add a subject line, attachment, or emoticon; then arrow to and press the selector on the appropriate option. Emoticons are presented in a vertical list when you press the selector on Insert Smiley. This is an optional step.
6. Send or discard the message.
a. Right-arrow once to the Send button and press the selector. The Send button is not available when the body of the message is empty.
b. Press Menu, then arrow to and press the selector on Discard to cancel the message.

Reading a Text Message

1. Launch Messaging from the Applications section of the stock home screen, the Eyes-Free Shell, or Mobile Accessibility as described earlier in this post.
2. Arrow to and press the selector on the conversation you want to read.
3. Down/up-arrow to read the messages in the thread.

Adding the Sender of a Text Message to Contacts

1. Launch Messaging from the Applications section of the stock home screen, the Eyes-Free Shell, or Mobile Accessibility as described earlier in this post.
2. Arrow to and press the selector on the conversation with the sender you want to add.
3. Down/up-arrow through the messages in the thread, stopping when focus is on the sender's name.
4. Press Menu, then arrow to and press the selector on Add to Contacts. The procedure is similar to adding a contact from the Call Log. the Contacts app opens, and you can either scroll through contacts to add information to an existing entry or press the create button at the top of the screen to start a new entry.

Replying to a Text Message

1. Launch Messaging from the Applications section of the stock home screen, the Eyes-Free Shell, or Mobile Accessibility as described earlier in this post.
2. Arrow to the conversation you want to reply to.
3. Start the reply in one of two ways:
a. Press Menu on the closed conversation; then arrow to and press the selector on Reply. The Reply option usually has focus when Menu is pressed.
b. Press the selector to open the conversation. Down/up-arrow through the messages in the thread as if to read them. Move focus to the Reply edit field, which is at the bottom.
4. Type the message. You can review what you're writing by using your screen reader's review features or by arrowing up or to the right to move focus away from the edit field, then back down or left to return and hear what you've written.
5. Press the Menu button to add a subject line, attachment, or emoticon; then arrow to and press the selector on the appropriate option. Emoticons are presented in a vertical list when you press the selector on Insert Smiley. This is an optional step.
6. Send or discard the message.
a. Right-arrow once to the Send button and press the selector. The Send button is not available when the body of the message is empty.
b. Press Menu, then arrow to and press the selector on Discard to cancel the message.

Deleting Individual Messages, Threads, and All Threads

Some of these methods work better than others in different versions of Android.

1. Launch Messaging from the Applications section of the stock home screen, the Eyes-Free Shell, or Mobile Accessibility as described earlier in this post.
2. To delete a message within a thread, navigate to the conversation, press the selector to open it, and arrow to the specific message to be deleted. Then long-press the selector, navigate to Delete Message, and short-press the selector.
3. To delete a thread, navigate to and press the selector on the conversation you want to delete, and do one of the following:
a. Long-press the selector on the closed conversation. Navigate to Delete Thread, and short-press the selector.
b. Open the conversation by pressing the selector. Press Menu; then arrow to and press the selector on Delete Thread.
c. Open the conversation by pressing the selector. Move focus to anywhere in the conversation except the Reply edit field. Long-press the selector; then arrow to and press the selector on Delete Thread.
4. To delete all threads, Navigate to any conversation, but do not open it with the selector. Instead, press Menu and scroll to and press the selector on Delete Threads.

In all cases, a confirmation screen asks users if they're sure they want to delete. Focus is on the on-screen delete button. To delete, users simply press enter or the selector. To cancel, they press the back button or arrow to and press the selector on the on-screen cancel button.

Changing Settings

The Settings covered in this final section of the post are the ones most users are likely to ask about, the ones dealing with notifications and ringtones. Other settings enable users to determine how many messages with and without media should be in a conversation, whether messages are deleted automatically, which messages should have read receipts, what the messaging app should do when roaming, and more, but these are all self-explanitory checkboxes, so they are not covered here.

1. To go to Settings in the stock messaging app, launch Messaging. Press Menu while on the main screen, where all the conversations are listed. Then navigate to and press the selector on Settings.
2. To reach the three items discussed in this post, either scroll to the bottom of the list of settings or press alt+down-arrow to jump to the end of the list. The items are Notifications, Select Ringtones, and Vibrate Also.
a. Notifications – Checking this item sends a message to the status bar to let you know that a new text has arrived. This is checked by default as this is the behavior most users want. If, however, you are using a different messaging app (like Go SMS by Go Dev Team) because of an accessibility issue with your Sense UI or Touchwiz 2.2 phone, unchecking this item stops the phone from sending duplicate notifications, one from each messaging app.
b. Select Ringtones – this dropdown list lets you assign a distinctive ringtone to incoming text messages. To change the messaging ringtone, press the selector on this item, scroll to and press the selector on the desired ringtone, then scroll to the OK button at the bottom of the list, pressing the selector. Remember that, on most phones, you can jump to the last ringtone with alt+down-arrow and press down-arrow once more to reach OK.
c. Vibrate Also – Checking this item causes the phone to vibrate when it notifies you of a new text message. Some users have definite preferences about vibrational feedback.

lundi 16 mai 2011

Leveraging Android Access From Google IO 2011

You can watch our Google IO 2011 on Levarging Android Access APIs. The main take-aways from the talk:

  • Android Access is easy --- the framework does most of the heavy-lifting.
  • Implementing Android Access does not mean you take a performance hit.
  • Accessibility is really about expanding the reach of your application.

Implementing accessibility within your application and thereby ensuring that it is usable in a wide variety of end-user scenarios will benefit your application --- both in terms of the number of users you gain, as well as how often your users use your application.

mardi 29 mars 2011

How do I use an external GPS receiver with my phone?

Contributed by John J. Herzog

One of the Android apps that blind and visually impaired users especially enjoy is WalkyTalky by the Eyes-Free Project. When the app is on, users hear street addresses as they walk past buildings and houses. If the phone has a good internal GPS receiver, this app makes independent travel much easier, but if the device has a buggy internal receiver, as is the case with the Samsung Epic, feedback is nonexistent or obviously inaccurate.

For users who are not hearing spoken feedback or reliable information from WalkyTalky and other navigation apps, I highly recommend the use of an external Bluetooth receiver with an app called Bluetooth GPS Provider by mobile-j.de. This combination of hardware and software greatly increases the accuracy of the GPS and even, as in my case, the amount of auditory feedback delivered.

Bluetooth GPS receivers are available through eBay and electronics stores like Radio Shack and Best Buy. I have the Holux m 1000. Other members of the Eyes-Free users list recommend the i-Blue 737 and the Qstarz 818, which have a newer chip set and reportedly get you within 10 feet of a location. Whichever device you choose, be sure to read the manufacturer's documentation for instructions on operation and maintenance.

To use the external receiver with your phone, do the following:

1. Install Bluetooth GPS Provider by mobile-j.de from the Android Market. Note that the first time you run the app, you may not hear any speech. I had to press the back button to open the main screen.
2. Pair your Bluetooth receiver with your phone through Settings/Wireless and Network.
3. Start the Bluetooth GPS Provider application. The main screen presents three options: Start, Stop, and Choose Receiver.
4. Click on Choose Receiver In Provider, then scroll to and click on the Bluetooth device you paired with your phone.
5. Click the Start button in Provider. If you get a message about allowing mock locations, do that. The app opened the appropriate option in my phone's settings so I was able to check the item. If you have to allow mock locations manually, go into Settings/Applications/Development.
6. Hit Home on the phone. Don't hit Back, or you quit Provider and turn off any feedback.
7. Launch WalkyTalky from the home screen. I heard the address of the house I was near almost as soon as I turned it on.
8. Enable internal GPS if prompted. WalkyTalky may nag you to turn on internal GPS. If you leave the Destination field blank, this does not happen, so you can just use WalkyTalky with your Bluetooth GPS and Provider; however, if you enter a destination, WalkyTalky prompts you to turn on your internal GPS for route information. Don't worry, the external receiver is the one that actually provides the data to your phone. The prompt for turning on internal GPS is a glitch in WalkyTalky.
9. Quit WalkyTalky when you're done.
10. Turn off Bluetooth GPS Provider.
11. Go into the Bluetooth GPS application and hit the Stop button. This prevents Talkback from repeating that there is a bluetooth gps problem when you turn off your receiver.

That's all there is to it. If you're having trouble using WalkyTalky and other GPS apps, it may be that the GPS receiver in your phone is the problem. That is the case for me, and though keeping and charging an external device is yet another thing to remember, using a Bluetooth receiver with a simple Market app is easy and preferable to inaccurate or missing voice guidance.

How do I work around the accessibility issues in Touchwiz with Android 2.2?

Contributed by John J. Herzog

Unfortunately, the upgrade to Android 2.2 has broken many accessible applications and features of the Samsung Epic. This is largely due to the Touchwiz user interface (UI), which is responsible for modifying key apps. After using my phone for a couple of days, I have found issues with Messaging, Call Log, Contacts, Caller ID, music player, GPS, my user defined home screen, and the My Apps area of the Market. Other apps may be affected as well. In this post, I explain the accessibility drawbacks in each of these key apps and describe workarounds to help you get a useable phone.

Messaging on the Epic with 2.2

Problem:

In the stock text messaging app, it is hard to send a message to a person when there is no pre-existing conversation. When you open the app, you are placed in an edit box, and Talkback says, "to," to indicate that this is where you enter a phone number or contact name. While you can still write in this box, you can no longer type the first few letters of a contact's name, then scroll down the list of available matches with the arrow keys. If you try, you get an error stating that you have entered an incorrect address, and that the recipients will not get your message. For me, a person with over fifty contacts in his phone, this bug is a showstopper.

solution:

Download an app called Go SMS by Go Dev Team. It is available from the Android Market and is free to use.

Go SMS is almost identical to the stock messaging app. There is an unlabeled button at the top of the screen; clicking on it allows you to compose a new message. The typing boxes have labels and work normally.

When you launch go sms, focus is in the box where you specify who the message will go to. In this case, you can type the first few letters and use your arrows to scroll through a list of matches. Just hit enter when you find the contact you want, and the text is filled into the message box.

After you finish filling in the recipient, hit the down arrow to get into the message body and type your text. This behaves appropriately as well. Then to send the message, hit the right arrow from here to move to an unlabeled button, which sends the message as it does in the stock messaging app.

Other areas of Go SMS also behave similarly to the stock messaging app. For instance, when you launch Go SMS and use your arrows, you can browse through your conversations with friends. Clicking on a conversation allows you to either send a message to that person or reread all of the prior messages in the thread. There are no unusual quirks here.

Note: If you open the Go SMS from a status bar notification, the New Text Message alert does not clear automatically. To clear it, you must either go into the stock messenger or clear the notification manually from the status bar.

Call log on the Epic with 2.2

Problem:

The stock call log is largely inaccessible. Whenever you click on the call log, you are presented with a list of items that does not speak to you. You can hear a click every time you move, but you do not get any information about who called you, what time the call took place, and so on.

But if you hit enter on any of the items that do not speak, Talkback announces the number for that call log entry, and you are placed in a list of all calls made between you and the number in question. This is inconvenient for two reasons. First, you have to click on each item that does not speak to find out which call it refers to. Seconde, if you make many calls to a particular number, many of the items that do not speak take you back to the same list, so you have to move up and down the list of all calls ever made between you and that number, instead of having a quick overview of individual calls that you can read in sequence.

Solution:

Download an app called Go Contacts by Go Dev Team. It is available from the Android Market and is free to use. The application contains two components, which are both useful to have: Go Dialer and Go Contacts.

When you launch go dialer, you are placed in a list of calls. As you move down the list, Talkback announces each phone number. By pressing the menu key, you get to determine what types of calls are shown to you. For instance, I can click on the option that shows Missed Calls only. There are three other options: Incoming Calls, Outgoing Calls, and All Calls.

One drawback of this application is that it arranges your calls alphabetically. In other words, if you have a missed call from Bob Smith, it appears in the list before your missed call from Doug Jones. This is true even if Doug was the most recent missed call. This is really annoying but I cannot seem to find a way around it for the time being.

When you find a call you want to work with, you can short-press or long-press on the entry in the list. If you short-press enter, the phone dials the number so you can return the call. If you long press enter, you get several options. One is to delete this call from the call log. I choose this often so as not to forget who I called back and who I didn't. Other options are to add this caller to contacts or to create a new contact for the caller. All of these options are accessible and present no problems for Talkback.

While Go Dialer is helpful, you may run into a few accessibility snags. When first opening the app, be sure not to hit the up-arrow. This takes you out of your call log, and into a dialing area of the app. It contains the keys on the number pad, and you can move from button to button using the arrow keys. However, from this dialing screen, you cannot get back into your list of calls. To return to the call log, up-arrow to the top of the screen, and click on the Dial item, which is actually a tab, and should bring you back into your call log. If this fails, go back up to Dial, right-arrow once, then left-arrow again. If all else fails, just exit the app and restart it.

Note: If you open the Go Dialer call log from a status bar notification, the Missed Call alert does not clear automatically. To clear it, you must either go into the stock messenger or clear the notification manually from the status bar.

Contacts on the Epic with 2.2.

Problem:

It is not possible to add a new contact from the stock call log. The stock call log includes an option for adding an entry to contacts by hitting the menu key and choosing add to contacts. This places you in a list of your existing contacts. The next logical step is to arrow to a New Contact button, click it, and start an entry with the phone number from the call log. However, this is the step that is inaccessible as there is no New Contact button that can be reached with the arrow keys. Navigating above the contact list takes you to a search box, where you type the name of a contact you are looking for, and moving to the bottom of the list doesn't produce anything either. So your only real option is to add the number to an existing contact.

Solution:

Download an app called Go Contacts by Go Dev Team. It is available from the Android Market and is free to use. The application contains two components, which are both useful to have: Go Dialer and Go Contacts.

I usually access Go Contacts through Go Dialer because these apps work together. In Go Dialer, I arrow through the items in the call log. Calls associated with contacts are listed alphabetically, with other calls at the top of the list. When I find the phone number I want to add to contacts, I long press the enter key on it. I get a menu of options, including one for adding a new contact. I click on this option, and then edit the contact info as I did in the stock Contact app of 2.1. All the fields are labeled and behave appropriately with Talkback.

caller ID on the Epic in 2.2

Problem:

The option to have caller ID spoken is no longer available. Samsung has removed it. I consider this one of the most annoying accessibility regressions of the Epic. Previously, I could have the Epic announce the name of the caller in place of the ring tone itself.

Solution:

Download an app called Call Announcer by Codean software. It's available from the Android Market in both free and licensed versions; I'm using the free version.

After Call Announcer is installed, I simply go into the app, and check the setting Enable Callback Announcer. This lets the app speak the name of the caller over the ringtone. A quieter ringtone works better; otherwise, the voice may be drowned out by the tone itself. I use the system default which is called Luminescence. Note that, if you put the ringtone to silent, the free version of Call Announcer does not speak the caller ID information.

Music Player on the Epic with 2.2

Problem

In the stock music player, you can scroll through a list of sound files and click on individual items, but you cannot control playback once the music starts. When playback begins, focus moves to a screen with unlabeled buttons. You can find out what some of them do by clicking on them, but this method of trial and error isn't completely helpful since some buttons take you out of the screen and none seems to stop the current song from playing. I was able to stop playback only by using the task manager to kill the app. Also, in the window that is shown while a song is played, the seek control does not respond to the left and right arrow keys, so you cannot rewind or fast-forward within a song.

Solution

Download an app called Android Music by JRTStudio. It is available from the Android Market and is free to use. According to the app description, it is identical to the stock Gingerbread music player.

The app opens on a song list. Arrowing up and down moves focus through the items in that list. Arrowing left and right moves focus to the Artist, Album, Song, and Play List tabs, from which you can also arrow up and down. Clicking on a title plays the song, and all the buttons on the play screen are labeled.

Internal GPS on the Epic with 2.2.

Problem:

The internal receiver continues to have problems getting a fix on satellites. For example, when using Walkytalky with the Epic's internal GPS, Walkytalky does not announce the addresses you are passing by, and it does not alert you to upcoming turns, as the GPS accuracy can be off by 3 to 4 meters and usually more.

Solution:

Use an external GPS receiver with an app called Bluetooth GPS Provider by mobile-j.de. It is yet another replacement app available from the Android Market and is free to use.

By default, android phones do not let you connect with bluetooth gps receivers. Here is a brief overview of the steps needed to run bluetooth gps provider with the Epic. For more detailed information, refer to the post on using GPS receivers with Android phones:

1. Install Bluetooth GPS Provider from the market.
2. Do not start the app yet.
3. Go into Settings, Applications, then Development. Check the Allow Mock Locations box, and press Back several times to exit Settings.
4. Click on Bluetooth GPS Provider to start the app. Be sure that your receiver is on, and select it from within the app. In the future, you can just open Bluetooth GPS Provider, and click Start. Once the Start button has been pressed, do not click the Back button; if you do, you close the application. Instead, hit the home button to move to your home screen, then to Walkytalky, leaving Bluetooth GPS Provider running in the background. Walkytalky now gives you appropriate information as you use it.
5. Turn off Bluetooth GPS Provider when finished. Go into the Bluetooth GPS application and hit the Stop button. This will prevent Talkback from repeating that there is a bluetooth gps problem when you turn off your receiver.

User Defined Home Screen on the Epic with 2.2

Problem:

You can set the eyes-Free Shell as your default, but the phone keeps going back to TW Launcher, which is part of Touchwiz. This, however, doesn't happen with Mobile Accessibility. I follow the steps to set Eyes Free Shell as the default home screen, but when I restart the phone or when I long-press Back, TW Launcher opens, and pressing the Home button doesn't open the Eyes Free Shell. I have to go through the process of setting the Eyes Free Shell as my default again.

Solution:

Download an app called HomeSmack by TeslaCoil Software. It is available from the Android Market and is free to use.

Unfortunately, there is no fix beyond telling the phone you want the Eyes-Free Shell to be the default home screen. What HomeSmack does is offer an easy way to change the default home screen, letting me reestablish which one I want to use without my having to dig through the settings. Nevertheless, my Epic insists on defaulting to TW, and nothing I do changes that.

My Apps Area of the Market on the Epic with 2.2

Problem

It's not possible to access the My Apps area in Market, using the keyboard. When you open the Market app and press Menu, My Apps is one of the available options. Pressing the physical enter key on this option returns focus to the list of apps on the Market main screen; it does not open the My Apps list. Since the Epic doesn't also have a selector, there is no alternative hardware key to activate My Apps, and the soft d-pad of the Talkback keyboard isn't available because My Apps appears on a menu screen.

Solution

There is no alternative app for this problem. The solution is to guess where the option is on the screen and tap it with your finger.

The menu options (Search, My Apps, Settings, and Help) appear across the bottom of the screen. Whenever the physical keyboard is open, the phone is in landscape orientation, so these options are on the screen above the number row.

To find My apps, touch the number 5 or 6 on the physical keyboard; then slide your finger directly on to the screen from there. I'm not at 100 percent, but I find it most of the time.

conclusion:

The Samsung Epic with 2.1 was a fine choice for a screen reader user. Since its upgrade to froyo (2.2), I no longer recommend it to a blind user. Many of the critical apps do not work well with Talkback or Spiel. Messaging, managing your call log, adding contacts, checking caller ID, listening to music, using GPS, maintaining the user defined home screen, and accessing My Apps in Android Market are all near impossible without replacement apps from the market. Furthermore, if you use alternative applications to read texts and respond to missed calls, the system notifications alerting you of these events do not clear automatically. If you really must have an Epic, be sure you are a user who is comfortable using the android market to find and install apps; otherwise, I recommend either Mobile Accessibility from Code Factory or a different phone altogether.

lundi 21 mars 2011

TalkBack Refreshed: Accessible On-Screen Keyboard And More ...

Android Access: TalkBack Refreshed

1 Android Access: TalkBack Refreshed

The latest enhancements to TalkBack now brings Android Accessibility to devices without a physical keyboard. Many of these enhancements also improve the overall TalkBack experience on all devices.

1.1 Highlights

  • New TalkBack Keyboard.
  • On-screen talking keyboard enables text entry via the touch screen.
  • Text review provides spoken feedback when moving the cursor by character, word, sentence, or paragraph.
  • Virtual D-Pad for navigating the Android user interface.
  • Global TalkBack commands enable one-click access to oft-used commands.

1.2 TalkBack Keyboard

The TalkBack Keyboard is an Accessible Input Method (Accessible IME) that when activated enables you to enter and review text via the touch screen. To use this feature, you need to first activate the TalkBack keyboard via the Language and Keyboard option in the Settings menu. Next, customize the TalkBack Keyboard to taste via the TalkBack Keyboard Settings option --- here, you can customize additional features including auditory feedback as you type. Finally, open your favorite editing application, long-press on an edit field, and select TalkBack keyboard as your default IME. Note that you need do this only once; once the TalkBack keyboard has been made the default, it persists across reboots.

1.3 Entering Text On The Touch Screen

TalkBack keyboard is an on-screen keyboard that supports touch exploration along with synchronized spoken and auditory feedback. This means you can now enter text when using devices that don't sport a physical keyboard.

But wait, there's more here than meets the finger at first touch. Once you have activated the TalkBack Keyboard, you can switch the keyboard among three states by long-pressing the volume up/down buttons:

Hidden
The TalkBack keyboard is not displayed.
Navigating
You get access to an on-screen virtual D-Pad, along with Back, Home, Search, and Menu buttons.
Typing
An on-screen qwerty keyboard.

My preferred means of using the keyboard is to turn on auditory feedback from within TalkBack Keyboard Settings, as well as having SoundBack active. In this mode, you hear keys as you explore the keyboard along with an auditory icon; picking up your finger types the last key you explored. Typing produces a distinctive key-click.

The on-screen keyboard occupies the bottom 1/3 of your screen. While entering text, explore and find the top row, then move above it to hear what you have typed so far.

1.4 Reviewing Text By Character, Word, Sentence Or Paragraph

You can now navigate and review text by character, word, sentence or paragraph. Use a two-finger tap to move forward through these navigation levels; a two-finger double tap moves in the reverse direction. Once you have selected your preferred mode of navigation, you can use Up/Down on the physical track-ball/D-Pad, or alternatively, flick up or down on the virtual D-Pad to move forward or backward through the text being reviewed.

Note that text review works when the TalkBack keyboard is in either/navigating/ or typing mode; personally, I find it less error-prone on keyboard-less devices to first switch to navigating mode when reviewing text, since it is easy to inadvertently enter spurious text otherwise.

1.5 Using The On-Screen Virtual D-Pad

Placing the TalkBack keyboard in navigating mode provides an on-screen virtual D-Pad --- this is especially useful on devices that do not have a physical D-Pad or track-ball on the front of the device. When active, the virtual D-Pad occupies the bottom one-third of the screen, and fast-flicks in that area has the same effect as moving with a D-Pad or track-ball. Tapping anywhere within the virtual D-Pad is the same as clicking with the track-ball.

The corners of the virtual D-Pad also provides Back, Home, Search and Menu buttons --- these are especially useful on devices that lack explicit physical or capacitive buttons for these common Android actions. You can explore the virtual D-pad by moving your finger around the D-Pad area; crossing the top-edge of this area provides haptic and auditory feedback that can be used as an orientation aid in finding the virtual buttons on the corners.

1.6 Global Commands

In addition, selecting the TalkBack Keyboard as your default input method enables a set of global commands that can be accessed from your physical keyboard --- eventually, we will make these available via the soft keyboard as well. Here are a list of the current commands:

CommandDescriptionKey
BatterySpeaks the current battery levelmenu + B
TimeSpeaks the current date and timemenu + T
ConnectivitySpeaks the connectivity state of each connection: WiFi, 3G, etcmenu + O
RepeatRepeats the last TalkBack utterancemenu + R
SpellSpells the last TalkBack utterancemenu + S

These shortcuts are listed in the Accessibility Preferences application where they can be edited. You can choose between menu and search for the modifier, and any letter on the keyboard for the letter.

1.7 Summary

All of these features work on Android 2.2 and above. In addition, TalkBack makes WebView accessible in Honeycomb --- look for a separate announcement about accessibility enhancements that are exclusive to the Honeycomb release in the coming weeks.

Author: T.V Raman

Date: 2011-03-16 Wed

HTML generated by org-mode 7.4 in emacs 24

jeudi 17 mars 2011

How do I listen to Kindle books on my Android Phone?

Contributed by Fenton Smith

I explain here how blind people can remove the DRM from Kindle books for use on Android and other devices. These instructions are permitted only for personal use so that people with disabilities can have the same level of access to ebooks as is already available to the sighted.

Certain legal ramifications should be kept in mind. While the Department of Justice has said that it will take no action against those who break DRM to make file content accessible to people with disabilities, the DOJ has also said that it will take legal action if people sell, give away or loan such files outside their immediate households. Also, carelessness with respect to the rights of authors and publishers may cause the DOJ to rethink its stand and Amazon to plug this hole in its DRM.

Given all of this, I recommend against doing the work for other blind people, even if they buy the original source from Amazon. Instead, I suggest pointing them to tutorials like this one, which describe the tools and procedure for setting up an environment that allows them to make their purchases accessible for themselves.

Gathering the Tools

A number of tools are needed to support this process or help set up the environment. All are listed at the end of this article along with links to sources, and all are free.

The first item is the EBook DRM removal Kit.

This is a Torrent file. I used BitTorrent for the download. The file contains zip and rar files. Both can be unpacked by 7zip.

The file is a set of instructions, Python scripts and related executables for removing the DRM from Kindle and other file types. The basic DRM removal doesn't require a python interpreter, but the scripts for topaz file handling do require python 2.6 or 2.7.

The second item is the Kindle for PC with accessibility plugin from Amazon. The K4PC gives you access to the files you purchase and brings them to your PC. The files will appear in your “My Kindle Content” directory, which is created during installation, and they will have an .azw (Amazon.com wrapper) extension.

Note that this version of Kindle for PC requires that you have a screen reader installed. The Amazon page describing this version of K4PC includes a list of shortcuts for the accessible Kindle Application and a list of screen readers known to work with it. If you are using a screen reader that is not listed, download the program, install it, and check to find out if it works anyway. If it doesn’t, contact Amazon to tell them which one you are using and request that they add it to the list of compatible screen readers.

The third item is Calibre, a set of tools for translating ebooks from one format to another.

Note that the torrent does contain the installation executable for Kindle for PC, but that version is not accessible. Instead, use the special version directly from Amazon.

Removing the DRM from the File

The DRM remover package documents several methods for using the programs and scripts it contains. The one I chose is this:

1. Create a special SKindle directory on the hard drive, where the My Kindle Content directory is also located. This is usually the system drive c:. I created the SKindle directory on my c:\ drive, but you can put it anywhere else on the drive.
2. Create two sub directories in the SKindle directory. Their names are Input and Output.
3. Into the SKindle directory, copy LZSkindle4PCv1_1.exe and skindle.exe, each of which is found in different subdirectories of the Torrent.
4. copy the .azw file from your “My Kindle Content” directory into the input directory in SKindle and execute LZSkindle4PCv1_1.exe. This is the step that actually removes the DRM from the Kindle book.

Three outcomes are possible:

• No conversion is done since the file is an unencrypted mobi file. The file remains in the input directory.
• The file is converted, the version without DRM appearing in the output subdirectory.
• The file version without DRM appears in the output file with a changed extension.

The goal is the first or second option. The third is a problem as it represents the case of a topaz ebook. The set of scripts do include python scripts for dealing with topaz books, but the results are said to be unsatisfactory. Since most Amazon books are mobi, I'll leave the handling of topaz books until I need to attempt to read one.

Note: While the DRM removal tools were running, I noticed that K4PC uses both the user account name on the PC and the serial number of the disk drive as part of the encryption. That means these scripts will work only if you log onto your computer using the same user account (login name)that was used when the book was downloaded from Amazon and that the SKindle directory must be on the same physical drive as the “My Kindle Content” directory.

Converting the Kindle File to Epub

Now that you have a mobi book with no encryption in either the input or the output subdirectory, you need to convert it into an ePub for use on your Android or other reading device. Use Calibre to do this. The steps are as follows:

1. Create a directory named Calibre in the root directory of the drive that contains the SKindle and “My Kindle Content” directories.
2. Copy the .azw file with the DRM removed into the Calibre directory.
3. Use the notepad or your favorite text editor to create the following batch file:

Note that these are separate commands and should appear on different lines of the batch file. Also note that the assumption here is that the “My Kindle Content” directory will be on the C drive. This is the normal case, but advanced users can move it to another drive, in which case, the drive letter in the following needs to be changed.

cd c:\calibre\

ebook-convert "[book name].azw" .epub

Exit

4. Save this file as Calibre.bat in the Calibre directory.
5. If you need to edit the batch file, either open Notepad directly and use the file menu to open, or right click on the batch file name in Windows Explorer and select Edit from the context menu.
6. Execute the file by left clicking on the batch file name in Windows Explorer.

Notes:

• In this tutorial, when a modified command line is specified, the idea is that you modify the line in the batch file. Running the command line outside its’ normal context does not produce the desired result.
• The phrase “[book name]” and the brackets around it should be replaced with the base name (the file name without the extension)of the Kindle book you want to process. In other words, before running the batch file, you need to substitute "[book name]" with the actual name of the book so the line reads something like this:

ebook-convert "Dracula.azw" .epub

Dividing the Book into Chapters

While Calibre normally correctly identifies chapter headings, there may be instances in which it fails to do so or in which the book has no identifiable chapter headings. If this is the case, you can do a little extra work to add them yourself, converting the file to .rtf and using Word to insert chapter breaks:

1. Use the notepad to open the Calibre.bat file and change the output file type in the second line from epub to .rtf so that it reads:

ebook-convert "[book name].azw" .rtf

2. Save the modified batch file.
3. Execute Calibre.bat by doing a left click on the file name in the Windows Explorer.
4. Open the resulting document in word and either mark chapters or insert headings every 10 to 15 pages.
a. To find existing chapters, use Find (ctrl+f) to locate the word "chapter" or some other word or character that seems unique to chapter headings in the book.
b. To insert arbitrary chapter breaks, Use Edit/GoTo (or ctrl+g) and enter a page number about 10 to 15 pages ahead of your current position, do a skim of the area where you land to find a suitable point for a chapter break, and insert text like "Chapter ##."
c. Once the existing chapter has been found or an arbitrary break has been inserted, highlight the title text and press alt+ctrl+1 to make it a heading at level 1 . Then repeat the process throughout the book. Note that pressing alt+ctrl+1 to alt+ctrl+6 turns highlighted text into a heading at levels 1 through 6.
5. Use the caliber batch file to convert the modified rtf file back into an epub after all chapter breaks have been marked or inserted.
a. Open the caliber.bat file with the notepad or right click the file name in the Windows Explorer and select “edit.”
b. Alter the second line to read:

ebook-convert "[book name].rtf" .epub

c. Save the batch file and exit notepad.
6. Left click on the caliber.bat file in Windows Explorer to run the batch file, resulting in a conversion of the file from rtf format to an epub book.

Moving the Converted File to the Phone

Now that the DRM has been removed and the book is an ordinary ePub file, the only step left is to copy it to the phone's SD card. The usual procedure is to connect the phone to the PC with the USB cable provided, mount the SD card/turn on USB Mass Storage Mode, and copy the files from the computer to the SD card. If a reader is already installed on the phone, a directory named Books is on the root of the SD card. That is the directory where ePub files are to be copied. Once the ebook is in that folder, you are ready to enjoy your book with an accessible reader like Moon Reader+ Pro.

Trying an Alternate Method

Notice that Calibre was used for three different processes, altering the associated batch file for each specific process. Another approach is to create three batch files, one for each purpose. That is, the batch files would have names like “Amazon-epub.bat,” “amazon-rtf.bat,” and “rtf-epub.bat.”

Another simplification is to always use the same file name for every book processed. Thus, you would always use the file name “book” with the appropriate extension in each of the batch files. The following outlines such a process:

• Copy the desired book from “My Kindle Content” to SKindle/input.
• Run LZSkindle4PCv1 to remove the DRM.
• Copy the file from either SKindle\output or SKindle\Input, depending on the case, into c:\calibre.
• Change the file name to “book.azw” in the c:\calibre directory. You can edit file names in the Windows Explorer by hitting the F2 key while the file name is selected and then type a new name.
• Use the base name “book” in all subsequent processing.
• When the epub is finished, change its name from “book.epub” to reflect the content (e.g., “Margaret Mitchell, Gone With the Wind.epub”).

This modified approach lets you perform the needed processing on many books without needing to modify the batch scripts for each book.

To summarize, blind and visually impaired users can legally remove DRM from Kindle files to access the content as long as they do so for their own personal use. The actual file conversion process is easy and straight forward. The hard part is finding information on removing the DRM. It's available on the web for people without disabilities, but it's scarcer when the tool set to complete the process needs to be accessible too. It took me a good deal of research to find a tool set that works for blind people. I am sharing what I've found with other Android users to keep them from reinventing the wheel.

Now that I can access them, I'm looking forward to Kindle books. My first choice for reading material is still Bookshare, but due to the time it takes me to download from BARD (an hour or more at my download speed), my second choice will probably be Amazon via my Android.

Tool sources

The following are referred to in this tutorial. Hyperlinks have been included in the text for your convenience, but URLs are listed here in case you wish to keep them in your records.
BitTorrent
Source: www.bittorrent.com/btusers/download

7zip
Source: www.7-zip.org/

DRM remover
Source: www.demonoid.me/files/details/2483622/004261412868/

Python
Source: www.python.org/getit/

Calibre
Source: calibre-ebook.com/download

Kindle for PC with Accessibility Plugin
Source: www.amazon.com/gp/feature.html?ie=UTF8&docId=1000632481

Accessible Kindle for PC shortcuts list
Source: www.amazon.com/gp/help/customer/display.html/ref=hp_pcaccess_accessshortcuts?nodeId=200608290&pop-up=1