Changing Bluetooth discoverability in Java ME
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot change of template (Template:CodeSnippet) - now using Template:ArticleMetaData) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update) |
||
| Line 1: | Line 1: | ||
| − | + | {{ArticleMetaData <!-- v1.2 --> | |
| − | + | |sourcecode= [[Media:BtDiscoverabilityMode.zip]] [[Media:BtDiscoverabilityMode.diff.zip]] | |
| − | + | ||
| − | {{ArticleMetaData | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | |sourcecode= | + | |
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
| − | |sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> | + | |devices= Nokia N78, Nokia 5800 XpressMusic, Nokia 6131 |
| − | |devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) --> | + | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| − | |signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | + | |platform= S60 3rd Edition, FP2, S60 5th Edition, S40 3rd Edition, FP1 |
| − | |capabilities=<!-- Capabilities required (e.g. Location, NetworkServices. --> | + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> |
| − | |author=[[User:Olkazmin]] | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| + | |signing= <!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | ||
| + | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| + | |keywords= javax.bluetooth.BluetoothStateException, javax.bluetooth.DiscoveryAgent, javax.bluetooth.LocalDevice | ||
| + | |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= 20090219 | ||
| + | |author= [[User:Olkazmin]] | ||
| + | <!-- The following are not in current metadata --> | ||
| + | |subcategory= Bluetooth | ||
| + | |id= CS001310 | ||
}} | }} | ||
| Line 25: | Line 30: | ||
The following code snippet demonstrates how to change discoverability using the Bluetooth API. | The following code snippet demonstrates how to change discoverability using the Bluetooth API. | ||
| − | Discoverability mode can be set using the | + | Discoverability mode can be set using the {{Icode|LocalDevice.setDiscoverable}} |
method. This method takes discoverability Id as a parameter. This parameter must | method. This method takes discoverability Id as a parameter. This parameter must | ||
have one of the following values: | have one of the following values: | ||
Revision as of 07:48, 10 May 2012
Article Metadata
Code Example
Tested with
Compatibility
Article
Contents |
Overview
The following code snippet demonstrates how to change discoverability using the Bluetooth API.
Discoverability mode can be set using the LocalDevice.setDiscoverable method. This method takes discoverability Id as a parameter. This parameter must have one of the following values:
DiscoveryAgent.GIAC;
DiscoveryAgent.LIAC;
DiscoveryAgent.NOT_DISCOVERABLE;
More information on discoverability modes can be found in the JSR-82 specification.
Source file: BtDiscoverabilityMode.java
/**
* Allows to select discover mode from Bluetooth device.
*/
private List listModes;
/**
* Discoverability mode id array.
*/
private int[] modeArray;
/**
* Instantiates a listModes.
*/
private void setupModeList() {
listModes = new List( "Mode list", Choice.IMPLICIT );
listModes.setSelectCommand( CHANGE_COMMAND );
listModes.addCommand( BACK_COMMAND );
listModes.setCommandListener( this );
// adding discoverability modes to the list
listModes.append( "GIAC", null );
listModes.append( "LIAC", null );
listModes.append( "NOT DISCOVERABLE", null );
//setting mode id array values
modeArray[0] = DiscoveryAgent.GIAC;
modeArray[1] = DiscoveryAgent.LIAC;
modeArray[2] = DiscoveryAgent.NOT_DISCOVERABLE;
}
/**
* From CommandListener.
* Called by the system to indicate that a command has been invoked on a
* particular displayable.
* @param command the command that was invoked
* @param displayable the displayable where the command was invoked
*/
public void commandAction(Command command, Displayable displayable) {
if (command == EXIT_COMMAND) {
// Exit the MIDlet
exit();
} else if (command == EXECUTE_COMMAND) {
// Open discoverability mode list
display.setCurrent( listModes );
} else if ( command == CHANGE_COMMAND ) {
//get currently selected contact
int i = listModes.getSelectedIndex();
String item = listModes.getString( i );
printString( "Selected mode: " + item );
// Bringing back main form to the foreground
display.setCurrent( mainForm );
// Changing discoverability mode
changeMode( i );
} else if ( command == BACK_COMMAND ) {
display.setCurrent( mainForm );
}
}
/**
*
* @param modeIndex
*/
private void changeMode( int modeIndex ) {
LocalDevice devLocal = null;
try {
printString( "Getting local device ..." );
devLocal = LocalDevice.getLocalDevice();
} catch ( BluetoothStateException e ) {
printString( e.toString() );
return;
}
try {
printString( "Changing discoverability mode" );
devLocal.setDiscoverable( modeArray[ modeIndex ] );
} catch ( BluetoothStateException e ) {
printString( e.toString() );
return;
}
printString( "Discoverability mode changed." );
}
Postconditions
When the MIDlet is started, the main form with a text field will be displayed. To change the current bluetooth device mode, you should press the 'Modes' softkey, which displays a list of available modes.
When the list appears, select a specific mode and press the 'Change' softkey. The main form will be brought to the foreground. If the discoverability mode change procedure is successful, a 'Discoverability mode changed' message will appear.
Supplementary material
This code snippet is part of the stub concept, which means that it has been patched on top of a template application in order to be more useful for developers. The version of the Java ME stub application used as a template in this snippet is v1.1.
- The patched, executable application that can be used to test the features described in this snippet is available for download at Media:BtDiscoverabilityMode.zip.
- You can view all the changes that are required to implement the above-mentioned features. The changes are provided in unified diff and colour-coded diff (HTML) formats in Media:BtDiscoverabilityMode.diff.zip.
- For general information on applying the patch, see Using Diffs.
- For unpatched stub applications, see Example stub.

