×
Namespaces

Variants
Actions
(Difference between revisions)

Tactile feedback

From Nokia Developer Wiki
Jump to: navigation, search
Risalmin (Talk | contribs)
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot update - Fix ArticleMetaData)
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{ArticleMetaData <!-- v1.2 -->
 +
|sourcecode= <!-- Link to example source code e.g. [[Media:The Code Example ZIP.zip]] -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') -->
 +
|sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Qt SDK 1.1.4]) -->
 +
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later -->
 +
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) -->
 +
|dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 -->
 +
|signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer -->
 +
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. -->
 +
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase -->
 +
|language= <!-- Language category code for non-English topics - e.g. Lang-Chinese -->
 +
|translated-by= <!-- [[User:XXXX]] -->
 +
|translated-from-title= <!-- Title only -->
 +
|translated-from-id= <!-- Id of translated revision -->
 +
|review-by= <!-- After re-review: [[User:username]] -->
 +
|review-timestamp= <!-- After re-review: YYYYMMDD -->
 +
|update-by= <!-- After significant update: [[User:username]]-->
 +
|update-timestamp= <!-- After significant update: YYYYMMDD -->
 +
|creationdate= 20071220
 +
|author= [[User:Risalmin]]
 +
}}
 +
[[Category:Usability]][[Category:UI]]
 
== Description ==
 
== Description ==
  
Tactile feedback refers to intentionally produced feedback that is perceived as movement. In most cases this movement is perceived with the touch sense on the skin. Another widely used term is Haptic technology[http://en.wikipedia.org/wiki/Haptic].
+
Tactile feedback refers to intentionally produced feedback that is perceived as movement. In most cases this movement is perceived with the touch sense on the skin. Another widely used term is Haptic technology, details from [http://en.wikipedia.org/wiki/Haptic Wikipedia].
  
 
<br>
 
<br>
Line 9: Line 32:
 
=== To assist other senses ===
 
=== To assist other senses ===
  
There are several possibilities for providign tactile feedback. One interesting example is the use of a [[Braille]] output device, that traces text as embossed groups of dots that can be read using the tips of your fingers. There are some quite innovative applications[http://www.nada.kth.se/~fredrikw/Braille_Pad/braille_pad.html] of this in the market. They are, of course aimed at people with sight problems, but could be used by anyone.
+
There are several possibilities for providign tactile feedback. One interesting example is the use of a braillle output device, that traces text as embossed groups of dots that can be read using the tips of your fingers. There are some quite innovative applications, like [http://www.nada.kth.se/~fredrikw/Braille_Pad/braille_pad.html Braille Pad] of this in the market. They are, of course aimed at people with sight problems, but could be used by anyone.
  
 
=== In games ===
 
=== In games ===
Line 17: Line 40:
 
=== Silent alarm ===
 
=== Silent alarm ===
  
In mobile devices it usual, that you can set a ''silent mode'', where the device does not emmit a sound, but uses rythmic vibration to tell the user needs to take an action. Usually an alarm or an incoming message or phone call.
+
In mobile devices it usual, that you can set a ''silent mode'', where the device does not emit a sound, but uses rythmic vibration to tell the user needs to take an action. Usually an alarm or an incoming message or phone call. In such cases the device also blinks to notify the user of an event on which they should take some action.
  
 
== How does it work ==
 
== How does it work ==
  
The Braille pad example above uses retractable pins to create the Braille patterns.
+
The Braille pad example above uses retractable pins to create the Braille patterns.Most of the Nokia mobile devices have a small eccentric rotator that creates vibration when turning at high speeds.
  
Most of the Nokia mobile devices have a small eccentric rotator that creates vibration when turning at high speeds.
+
There are several examples around the web on how to use the vibration functionality, please use a search engine to find them out.  
  
There are several examples around the web on how to use the vibration functionality, please use a search engine to find them out. On Forum Nokia Wiki there are articles for [[Flash Lite|Using Vibration to give user feedback in Flash Lite]] and [[Symbian C++|Vibration Control API]].
+
On Nokia Developer Wiki there are articles for :-
 +
 
 +
<b>Flash Lite</b>
 +
 
 +
[[Using Vibration to give user feedback in Flash Lite]]  
 +
 
 +
<b>Symbian C++</b>
 +
 
 +
[[Archived:Vibration Control API on Symbian]]
 +
 
 +
[[Monitoring Tactile Feedback Vibration Mode]]
 +
 
 +
<b>J2ME</b>
 +
 
 +
[[Archived:Using backlight and vibration in Java on S60 2nd Edition (Known Issue)]]
  
Please see the referenced articles for more information.
 
  
 
=== Code examples ===
 
=== Code examples ===
Line 36: Line 72:
  
  
<br>''Symbian C++''
+
<br><br>''Symbian C++''
<code c="c">//add code here
+
 
 +
Your sample .h file looks like this :-
 +
 
 +
<code c="c">
 +
#include <HWRMVibra.h>
 +
 
 +
class CYourClass : public CBase, public MHWRMVibraObserver
 +
{
 +
public:
 +
void StartVibrate();
 +
void StopVibrate();
 +
virtual void VibraModeChanged(CHWRMVibra::TVibraModeState aStatus);
 +
virtual void VibraStatusChanged(CHWRMVibra::TVibraStatus aStatus);
 +
 
 +
private:
 +
CHWRMVibra* iVibrate;
 +
};
 
</code>
 
</code>
  
 +
The sample cpp file looks like this :-
 +
 +
<code cpp>
 +
void CYourClass::StartVibrate()
 +
{
 +
CHWRMVibra::TVibraModeState vibrationState = iVibrate->VibraSettings();
 +
 +
if (vibrationState == CHWRMVibra::EVibraModeON)
 +
{
 +
TRAPD(leaveError, iVibrate->StartVibraL(2000)); //time you want to vibrate the device for
 +
}
 +
}
 +
 +
void CYourClass::VibraStatusChanged(CHWRMVibra::TVibraStatus aStatus)
 +
{
 +
//Blank implementation to avoid class abstraction
 +
}
 +
 +
 +
void CYourClass::VibraModeChanged(CHWRMVibra::TVibraModeState aStatus)
 +
{
 +
//Blank implementation to avoid class abstraction
 +
}
 +
 +
void CYourClass::ConstructL()
 +
      {
 +
      iVibrate = CHWRMVibra::NewL(this); // Pass a reference of your class to get callbacks
 +
      }
 +
</code>
 +
 +
The class CHWRMVibra links against HWRMVibraClient.lib, so add the following line to your mmp file
 +
 +
<code>
 +
LIBRARY HWRMVibraClient.lib
 +
</code>
  
<br>''Java''
+
<br><br>''Java''
 
<code java="java">//add code here
 
<code java="java">//add code here
 
</code>
 
</code>
  
  
<br>''Python''
+
<br><br>''Python''
 
<code python="python">#add code here
 
<code python="python">#add code here
 
</code>
 
</code>
  
  
<br>
+
<br><br>
  
 
== Why is it used ==
 
== Why is it used ==
Line 61: Line 148:
 
===Enhanced user experience ===
 
===Enhanced user experience ===
  
Since most people live in a world of sound, light and touch, using tactile feedback in games and other applications gives a highly elevated experience and creates a [[Wow effect|wow effect]] for the user. Furthemore, in some cases, like the [[Touch screen|touch screen]] it is possible that tapping on a button does not immediately result in the UI, so it is a good idea to give the user some feedback trough vibration so they know the tap was registered.
+
Since most people live in a world of sound, light and touch, using tactile feedback in games and other applications gives a highly elevated experience and creates a wow effect for the user. Furthemore, in some cases, like the touch screen it is possible that tapping on a button does not immediately result in the UI, so it is a good idea to give the user some feedback trough vibration so they know the tap was registered.
 +
 
 +
 
 +
==Links==
 +
[http://en.wikipedia.org/wiki/Haptic Haptic technology]
 +
 
 +
[http://www.redferret.net/?p=9533 Article about Nokia tactile feedback on Redferret]
 +
 
 +
[http://www.nada.kth.se/~fredrikw/Braille_Pad/braille_pad.html Braille pad ]
  
  
=== Please give feedback ===
+
==Please give feedback==
  
 
Please use the Comment tab to give feedback to the author and ask for more focusing certain aspects of the tactile feedback issue.
 
Please use the Comment tab to give feedback to the author and ask for more focusing certain aspects of the tactile feedback issue.

Latest revision as of 11:21, 31 July 2012

Article Metadata
Article
Created: Risalmin (20 Dec 2007)
Last edited: hamishwillee (31 Jul 2012)

Contents

[edit] Description

Tactile feedback refers to intentionally produced feedback that is perceived as movement. In most cases this movement is perceived with the touch sense on the skin. Another widely used term is Haptic technology, details from Wikipedia.


[edit] Where is it used

[edit] To assist other senses

There are several possibilities for providign tactile feedback. One interesting example is the use of a braillle output device, that traces text as embossed groups of dots that can be read using the tips of your fingers. There are some quite innovative applications, like Braille Pad of this in the market. They are, of course aimed at people with sight problems, but could be used by anyone.

[edit] In games

One very common way is to use vibration to give the user feedback in a game or other application to enhance the user experience. For example, when you shoot in a game, your game controller jerks or vibrates suddenly to give the impression of recoil. Or in a racing game the steering wheel or game controller vibrates when you go off road to simulate a bumpy ride.

[edit] Silent alarm

In mobile devices it usual, that you can set a silent mode, where the device does not emit a sound, but uses rythmic vibration to tell the user needs to take an action. Usually an alarm or an incoming message or phone call. In such cases the device also blinks to notify the user of an event on which they should take some action.

[edit] How does it work

The Braille pad example above uses retractable pins to create the Braille patterns.Most of the Nokia mobile devices have a small eccentric rotator that creates vibration when turning at high speeds.

There are several examples around the web on how to use the vibration functionality, please use a search engine to find them out.

On Nokia Developer Wiki there are articles for :-

Flash Lite

Using Vibration to give user feedback in Flash Lite

Symbian C++

Archived:Vibration Control API on Symbian

Monitoring Tactile Feedback Vibration Mode

J2ME

Archived:Using backlight and vibration in Java on S60 2nd Edition (Known Issue)


[edit] Code examples

Flash Lite ActionScript

//add code here




Symbian C++

Your sample .h file looks like this :-

#include <HWRMVibra.h>
 
class CYourClass : public CBase, public MHWRMVibraObserver
{
public:
void StartVibrate();
void StopVibrate();
virtual void VibraModeChanged(CHWRMVibra::TVibraModeState aStatus);
virtual void VibraStatusChanged(CHWRMVibra::TVibraStatus aStatus);
 
private:
CHWRMVibra* iVibrate;
};

The sample cpp file looks like this :-

void CYourClass::StartVibrate()
{
CHWRMVibra::TVibraModeState vibrationState = iVibrate->VibraSettings();
 
if (vibrationState == CHWRMVibra::EVibraModeON)
{
TRAPD(leaveError, iVibrate->StartVibraL(2000)); //time you want to vibrate the device for
}
}
 
void CYourClass::VibraStatusChanged(CHWRMVibra::TVibraStatus aStatus)
{
//Blank implementation to avoid class abstraction
}
 
 
void CYourClass::VibraModeChanged(CHWRMVibra::TVibraModeState aStatus)
{
//Blank implementation to avoid class abstraction
}
 
void CYourClass::ConstructL()
{
iVibrate = CHWRMVibra::NewL(this); // Pass a reference of your class to get callbacks
}

The class CHWRMVibra links against HWRMVibraClient.lib, so add the following line to your mmp file

LIBRARY HWRMVibraClient.lib



Java

//add code here




Python

#add code here




[edit] Why is it used

[edit] Practical reasons

Tactile feedback is good for those times when auditive of visual feedback is unavailable or cannot be used for some other reason. The user might be visually impaired or have problems in hearing, either permanently like bad lighting or heavy background noise or permnanently like in cases of blindness or deafness. In theses cases tactile feedback is the best option for practical applications.

[edit] Enhanced user experience

Since most people live in a world of sound, light and touch, using tactile feedback in games and other applications gives a highly elevated experience and creates a wow effect for the user. Furthemore, in some cases, like the touch screen it is possible that tapping on a button does not immediately result in the UI, so it is a good idea to give the user some feedback trough vibration so they know the tap was registered.


[edit] Links

Haptic technology

Article about Nokia tactile feedback on Redferret

Braille pad


[edit] Please give feedback

Please use the Comment tab to give feedback to the author and ask for more focusing certain aspects of the tactile feedback issue.

This page was last modified on 31 July 2012, at 11:21.
120 page views in the last 30 days.