Como recuperar o número da versão do Java Runtime para S60
Dados do artigo
Exemplo de código
Artigo
Contents |
Resumo
Dispositivos Nokia S60 vem equipados com uma implementação do Java Platform Micro Edition (ME), declarado como Java Runtime xy para S60, ou tampouco JRT xy. A partir das implementações S60 3ª Edição FP2 o Java é versionado separadamente da plataforma S60 subjacente. Por exemplo, o Java Runtime 1.3 para S60 (JRT 1,3) é o transporte de versão atual com o Nokia 5800 XpressMusic (SW 20.0.012 e seguintes). A versão exata devolvida pelo ambiente Java é 1.3.4. Haverá liberação de documentos de nota disponível na página wiki do Fórum Nokia, que explicam as características da versão em detalhes. Por favor, leia o link "Veja também" abaixo para mais informações.
Atualmente a versão do JRT pode ser verificada através do sistema de propriedade padrão MIDP "microedition.platform". Por exemplo, na S60 5ª Edição em aparelho Nokia 5800 XpressMusic essa propriedade retorna ao sistema:
NokiaN5800d-1/20.0.012/sw_platform=S60;sw_platform_version=5.0;java_build_version=1.3.4
Aqui está um trabalho completo mostrando o código MIDlet abaixo. O VersionMIDlet lê a propriedade do sistema e analisa os detalhes (dispositivo, a sua versão de software, plataforma e sua versão e a versão JRT) e os imprime na tela.
Source code: VersionMIDlet.java
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
/**
* <p>Título: VersionMIDlet</p>
* <p>Descrição: Este MIDlet mostra o valor da "microedition.platform"
* propriedade do sistema e também os valores analisados os detalhes nele. Ele usa
* Os métodos na classe PlatformDetails para a análise.</p>
*/
public class VersionMIDlet extends MIDlet implements CommandListener {
private Form form;
private Command exitCommand;
private PlatformDetails details;
private String device = "";
private String sw = "";
private String platform = "";
private String platform_version = "";
private String java_version = "";
public void startApp() {
form = new Form("VersionMIDlet");
exitCommand = new Command("Exit", Command.EXIT, 1);
form.addCommand(exitCommand);
form.setCommandListener(this);
details = new PlatformDetails();
device = details.getDeviceName();
sw = details.getSwVersion();
platform = details.getPlatform();
platform_version = details.getPlatformVersion();
java_version = details.getJavaVersion();
form.append("microedition.platform = " + details.platformString + "\n\n");
form.append("Device: " + device + "\n");
form.append("Software version: " + sw + "\n");
form.append("Platform: " + platform + "\n");
form.append("Platform version: " + platform_version + "\n");
form.append("Java Runtime for S60: " + java_version + "\n");
Display.getDisplay(this).setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) this.notifyDestroyed();
}
}
Código fonte: PlatformDetails.java
/**o
* <p>Títul: PlatformDetails</p>
* <p>Descrição: Esta classe contém métodos para analisar os detalhes do
* valor da propriedade do sistema "microedition.platform". Na S60 3ª ed. FP2 (e mais recentes)
* Não há informações sobre o nome do dispositivo, versão de software, plataforma de software e sua
* Versão e a versão Java.</p>
* <p> Por exemplo em aparelhos S60 3.2 N85 esta é a propriedade do sistema o pedido poderia retornar:
* NokiaN5800d-1/20.0.012/sw_platform=S60;sw_platform_version=5.0;java_build_version=1.3.4</p>
* <p> Nos dispositivos mais antigos S60 (Series 40 e celulares) o valor devolvido é tipicamente
* Algo assim (mostrando o modelo do dispositivo e a versão do SW):
* NokiaE71-1/0.07.76</p>
* <p> Neste caso, os valores devolvidos para outros detalhes do nome do dispositivo e versão SW
* São "N/A".</p>
*/
public class PlatformDetails {
protected String platformString = System.getProperty("microedition.platform");
private int length = platformString.length();
public String getDeviceName() {
String device = "";
String string = "";
int index = 0;
char c = 'a';
while (device.equals("")) {
c = platformString.charAt(index);
if (c != '/') {
string += c;
index++;
}
else device = string;
}
return device;
}
public String getSwVersion() {
String sw = "";
String string = "";
int index = 0;
char c = 'a';
while (true) {
c = platformString.charAt(index);
if (c != '/') index++;
else break;
}
index++;
c = 'a';
while (c != '/') {
c = platformString.charAt(index);
string += c;
if (index < length) index++;
if (index == length) {
sw = string;
break;
}
}
if (sw.equals("")) sw = string.substring(0, string.length()-1);
return sw;
}
public String getPlatform() {
String platform = "";
String sw_platform = "sw_platform";
String test = "";
String s60 = "";
int sw_length = sw_platform.length();
int index = 0;
while (platform.equals("")) {
test = platformString.substring(index, index + sw_length);
if(test.equalsIgnoreCase(sw_platform)) {
index = index + sw_length + 1;
s60 = platformString.substring(index, index + 3);
if (s60.equalsIgnoreCase("s60")) platform = s60;
else platform = "N/A";
}
if (index < (length-sw_length)) index++;
else platform = "N/A";
}
return platform;
}
public String getPlatformVersion() {
String platformVersion = "";
int index = platformString.length()-1;
char c = 'a';
char temp_c = 'a';
while (platformVersion.equals("")) {
c = platformString.charAt(index);
if (c == ';') {
String temp = "";
int temp_i = index-1;
while (temp.equals("")) {
temp_c = platformString.charAt(temp_i);
if (temp_c == '=') temp = platformString.substring(temp_i + 1, index);
if (temp_i > 0) temp_i--;
}
platformVersion = temp;
}
if (index > 0) index--;
else platformVersion = "N/A";
}
return platformVersion;
}
public String getJavaVersion() {
String version = "";
String java = "java";
String test = "";
int index = length;
while (version.equals("")) {
test = platformString.substring(index - 4, index);
if(test.equalsIgnoreCase(java)) {
int c_index = 0;
int temp = 0;
char c;
for (int i = 1; i<12; i++) { // the version format is xxx.y.zzzzz
temp = length - i;
c = platformString.charAt(temp);
if (c == '=') c_index = temp;
}
version = platformString.substring(c_index + 1);
}
if (index > 4) index--;
else version = "N/A";
}
return version;
}
}
Há também os arquivos VersionMIDlet.jad e VersionMIDlet.jar disponíveis aqui.
Exemplo da aplicação
- VersionMIDlet.zip containing VersionMIDlet.jad and VersionMIDlet.jar


(no comments yet)