Changing Bluetooth discoverability in Java ME
m (Mtilli -) |
m (Mtilli -) |
||
| Line 1: | Line 1: | ||
| − | [[Category:Java ME]][[Category:Code Examples]][[Category:Connectivity]] | + | [[Category:Java ME]][[Category:Code Examples]][[Category:Connectivity]][[Category:Series 40]][[Category:Symbian]][[Category:Bluetooth]][[Category:Bluetooth API (JSR-82)]][[Category:Java Runtime 2.3 for Symbian]][[Category:Nokia Belle]][[Category:S60 3rd Edition]][[Category:S60 5th Edition]][[Category:Series 40 Developer Platform 1.1]][[Category:Series 40 Developer Platform 2.0]] |
{{ArticleMetaData <!-- v1.2 --> | {{ArticleMetaData <!-- v1.2 --> | ||
|sourcecode= [[Media:BTDiscoverabilityModeSource.zip]] | |sourcecode= [[Media:BTDiscoverabilityModeSource.zip]] | ||
|installfile= [[Media:BTDiscoverabilityModeBinaries.zip]] | |installfile= [[Media:BTDiscoverabilityModeBinaries.zip]] | ||
|devices= Nokia N78, Nokia 5800 XpressMusic, Nokia 6131, Nokia 701, Nokia Asha 305 | |devices= Nokia N78, Nokia 5800 XpressMusic, Nokia 6131, Nokia 701, Nokia Asha 305 | ||
| − | |sdk= | + | |sdk= [http://www.developer.nokia.com/Develop/Java/Tools/ Nokia SDK 1.1 for Java], [http://www.developer.nokia.com/Develop/Java/Tools/ Nokia SDK 2.0 for Java] |
|platform= S60 3rd Edition, FP2, S60 5th Edition, S40 3rd Edition, FP1 | |platform= S60 3rd Edition, FP2, S60 5th Edition, S40 3rd Edition, FP1 | ||
|devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> | ||
Revision as of 14:11, 10 August 2012
Article Metadata
Code Example
Tested with
Compatibility
Article
Contents |
Overview
The following code snippet demonstrates how to change device 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 be 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.

