📄 deviceinfos.java.svn-base
字号:
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
import java.io.*;
import java.util.*;
import java.lang.*;
public class DeviceInfos implements DeviceCoast
{
public static final int FONT_SMALL = 0;
public static final int FONT_MEDIUM = 1;
public static final int FONT_LARGE = 2;
public static final int SMLKEY_0 = 0;
public static final int SMLKEY_1 = 1;
public static final int SMLKEY_2 = 2;
public static final int SMLKEY_3 = 3;
public static final int SMLKEY_4 = 4;
public static final int SMLKEY_5 = 5;
public static final int SMLKEY_6 = 6;
public static final int SMLKEY_7 = 7;
public static final int SMLKEY_8 = 8;
public static final int SMLKEY_9 = 9;
public static final int SMLKEY_D = 10;
public static final int SMLKEY_U = 11;
public static final int SMLKEY_L = 12;
public static final int SMLKEY_R = 13;
public static final int SMLKEY_A = 14;
public static final int SMLKEY_LS = 15;
public static final int SMLKEY_RS = 16;
public static final int SMLKEY_STAR = 17;
public static final int SMLKEY_POUND = 18;
public static final int SMLKEY_C = 19;
public static final int SMLKEY_ANY = 20;
public static final int SMLKEY_MAX = 21;
private static DeviceInfos devInfos;
private DeviceInfos()
{
}
public static DeviceInfos getInstance()
{
if ( devInfos == null )
devInfos = new DeviceInfos();
return devInfos;
}
//设备参数定义
int fullScreenSizeW;
int fullScreenSizeH;
int canvasSizeW;
int canvasSizeH;
int[][] fontSystem = new int[3][3];
int[][] fontMonoSpace = new int[3][3];
int[][] fontProportional = new int[3][3];
public int[] keys = new int[SMLKEY_MAX];
//内部参数部分
int[] faces = { Font.FACE_SYSTEM,Font.FACE_MONOSPACE,Font.FACE_PROPORTIONAL };
int[] sizes = { Font.SIZE_LARGE,Font.SIZE_MEDIUM,Font.SIZE_SMALL };
String[] faceNames = {"System","MonoSpace","Proportional"};
String[] sizeNames = {"large","medium","small"};
int[] getFontWidth(int face,int style,int size )
{
int[] result = new int[3];
Font font = Font.getFont(face,style,size );
result[0] = font.charWidth('我');
result[1] = font.charWidth('a' );
result[2] = font.getHeight();
return result;
}
private void getFontParams()
{
for( int j=0;j<sizes.length;j++ )
{
int[] size = getFontWidth( faces[0],Font.STYLE_PLAIN,sizes[j] );
fontSystem[j] = size;
}
for( int j=0;j<sizes.length;j++ )
{
int[] size = getFontWidth( faces[1],Font.STYLE_PLAIN,sizes[j] );
fontMonoSpace[j] = size;
}
for( int j=0;j<sizes.length;j++ )
{
int[] size = getFontWidth( faces[2],Font.STYLE_PLAIN,sizes[j] );
fontProportional[j] = size;
}
}
private void getCanvasParams()
{
TestCanvas canvas = new TestCanvas(null,true);
fullScreenSizeW = canvas.getWidth();
fullScreenSizeH = canvas.getHeight();
canvas = new TestCanvas(null,false);
canvasSizeW = canvas.getWidth();
canvasSizeH = canvas.getHeight();
}
public String toString()
{
getCanvasParams();
StringBuffer buf = new StringBuffer();
buf.append( "FullScreen(W*H):" );
buf.append( ""+ fullScreenSizeW + "X" + fullScreenSizeH );
buf.append( "\n" );
buf.append( "CanvasSize(W*H):" );
buf.append( ""+canvasSizeW + "X" + canvasSizeH );
buf.append( "\n" );
getFontParams();
buf.append( faceNames[0] + ":\n" );
for( int j=0;j<sizes.length;j++ )
{
buf.append( sizeNames[j] + "(cw*ew*h):" + fontSystem[j][0] );
buf.append( "*" + fontSystem[j][1] );
buf.append( "*" + fontSystem[j][2] );
buf.append( "\n" );
}
buf.append( faceNames[1] + ":\n" );
for( int j=0;j<sizes.length;j++ )
{
buf.append( sizeNames[j] + "(cw*ew*h):" + fontMonoSpace[j][0] );
buf.append( "*" + fontMonoSpace[j][1] );
buf.append( "*" + fontMonoSpace[j][2] );
buf.append( "\n" );
}
buf.append( faceNames[2] + ":\n" );
for( int j=0;j<sizes.length;j++ )
{
buf.append( sizeNames[j] + "(cw*ew*h):" + fontProportional[j][0] );
buf.append( "*" + fontProportional[j][1] );
buf.append( "*" + fontProportional[j][2] );
buf.append( "\n" );
}
buf.append( "键值:\n" );
buf.append( "上方向键:" + keys[SMLKEY_U] + "\n" );
buf.append( "下方向键:" + keys[SMLKEY_D] + "\n" );
buf.append( "左方向键:" + keys[SMLKEY_L] + "\n" );
buf.append( "右方向键:" + keys[SMLKEY_R] + "\n" );
buf.append( "确认键:" + keys[SMLKEY_A] + "\n" );
buf.append( "左软键:" + keys[SMLKEY_LS] + "\n" );
buf.append( "右软键:" + keys[SMLKEY_RS] + "\n" );
buf.append( "删除键:" + keys[SMLKEY_C] + "\n" );
buf.append( "系统信息:\n" );
buf.append( "总内存: " + Runtime.getRuntime().totalMemory() );
return buf.toString();
}
String[][] font = {{FONT_SYS_LARGE,FONT_SYS_MEDIUM,FONT_SYS_SMALL},
{FONT_MONO_LARGE,FONT_MONO_MEDIUM,FONT_MONO_SMALL},
{FONT_PROP_LARGE,FONT_PROP_MEDIUM,FONT_PROP_SMALL}};
private final static int FONT_SIZE_LARGE = 0;
private final static int FONT_SIZE_MEDIUM = 1;
private final static int FONT_SIZE_SMALL = 2;
private final static int FACE_SYS = 0;
private final static int FACE_MONO = 1;
private final static int FACE_PROP = 2;
public String toXML()
{
getCanvasParams();
StringBuffer buf = new StringBuffer();
getStartElement(DEVICE,buf);
buf.append("\n" );
getCapabilityElement(FULLSCREEN,fullScreenSizeW + "X" + fullScreenSizeH ,buf);
buf.append("\n" );
getCapabilityElement(SCREEN, canvasSizeW + "X" + canvasSizeH , buf);
buf.append( "\n" );
getFontParams();
for(int i=FACE_SYS;i<=FACE_PROP;i++){
int[][] fontData = null;
switch(i){
case FACE_SYS: fontData=fontSystem; break;
case FACE_MONO: fontData=fontMonoSpace; break;
case FACE_PROP: fontData=fontProportional; break;
}
for(int j=FONT_SIZE_LARGE;j<=FONT_SIZE_SMALL;j++){
getFontElement(font[i][j],fontData[j],buf);
buf.append( "\n" );
}
}
getCapabilityElement(KEY_0,String.valueOf(keys[SMLKEY_0]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_UP,String.valueOf(keys[SMLKEY_U]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_DOWN,String.valueOf(keys[SMLKEY_D]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_LEFT,String.valueOf(keys[SMLKEY_L]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_RIGHT,String.valueOf(keys[SMLKEY_R]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_OK,String.valueOf(keys[SMLKEY_A]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_LEFTSOFT,String.valueOf(keys[SMLKEY_LS]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_RIGHTSOFT,String.valueOf(keys[SMLKEY_RS]),buf);
buf.append( "\n" );
getCapabilityElement(KEY_CANCEL,String.valueOf(keys[SMLKEY_C]),buf);
buf.append( "\n" );
getCapabilityElement(MEMORY,String.valueOf(Runtime.getRuntime().totalMemory()),buf);
buf.append( "\n" );
getEndElement(DEVICE,buf);
return buf.toString();
}
private void getStartElement(String element,StringBuffer sb)
{
sb.append("<");
sb.append(element);
sb.append(">");
}
private void getEndElement(String element,StringBuffer sb)
{
sb.append("</");
sb.append(element);
sb.append(">");
}
private void getCapabilityElement(String element,String value,StringBuffer sb)
{
sb.append("<");
sb.append("capability");
sb.append(" name=\"");
sb.append(element);
sb.append("\" value=\"");
sb.append(value);
sb.append("\"/>");
}
private void getFontElement(String element,int[] font,StringBuffer sb)
{
sb.append("<");
sb.append("capability");
sb.append(" name=\"");
sb.append(element);
sb.append("\" value=\"");
sb.append(font[0]);
sb.append("*");
sb.append(font[1]);
sb.append("*");
sb.append(font[2]);
sb.append("\"/>");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -