📄 gpscanvas.java~99~
字号:
package gps;
import java.io.IOException;
import gps.datatypes.Record;
import gps.exceptions.EmptyBufferException;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class GPSCanvas extends Canvas implements Runnable {
public static String s =null;
private final static String fileName = "gps";
private GPSReader gpsReader;
private MIDlet midlet;
private String url = "";
Record recorder = null;
private int m_screenWidth = getWidth();
private int m_screenHeight = getHeight();
private int m_imageWidth;
private int m_imageHeight;
private int m_x;
private int m_y;
private Image image;
private Image m_screenBuf;
private Graphics m_bufferGraphics;
int [] GPSPoint;
double a = 0;
double b = 0;
public GPSCanvas(MIDlet midlet, String url) {
this.midlet = midlet;
this.url = url;
recorder = new Record();
////
initPara();
m_x = (m_screenWidth - m_imageWidth) / 2;
m_y = (m_screenHeight - m_imageHeight) / 2;
m_screenBuf = Image.createImage(m_screenWidth, m_screenHeight); // Front graphics m_screenBuffer
m_bufferGraphics = m_screenBuf.getGraphics();
m_bufferGraphics.setColor(0, 0, 0);
m_bufferGraphics.fillRect(0, 0, m_screenWidth, m_screenHeight);
}
private Image loadImage(){
Image image = null;
try {
image = Image.createImage("/image/part.jpg");
}
catch (IOException ex) {
System.out.println("image file not found");
ex.printStackTrace();
}
return image;
}
private void initPara(){
image = loadImage();
m_imageWidth = image.getWidth();
m_imageHeight = image.getHeight();
}
// public Record getRecorder (){
// try {
// // GPSRecord.test();
// recorder = GPSRecord.getRecord();
// } catch (EmptyBufferException e) {
// e.printStackTrace();
// return null;
// }
// return recorder;
// }
public void drawGPS(Graphics g)
{
m_bufferGraphics.drawImage(image, m_x, m_y,
m_bufferGraphics.TOP | m_bufferGraphics.LEFT);
m_bufferGraphics.setColor(255, 0, 0);
g.setColor(255, 0, 0);
Font f = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_LARGE);
g.setFont(f);
g.drawString(m_x + " " + m_y, 0, 0, Graphics.TOP | Graphics.LEFT);
// recorder = getRecorder();
g.setColor(255, 255, 0);
a = Double.parseDouble(recorder.longitude);
b = Double.parseDouble(recorder.lattitude);
GPSPoint = changeCoorGPS(a,b);
g.setColor(255,0,0);
if (GPSPoint[0] != 0 && GPSPoint[1] != 0) {
m_bufferGraphics.fillRect(m_x + GPSPoint[0], m_y + GPSPoint[1], 2, 2);
// g.drawString("高度: " + recorder.altitude, 0, 40, g.LEFT | g.TOP);
// g.drawString("卫星: " + recorder.satelliteCount, 0, 60, g.LEFT | g.TOP);
// g.drawString("时间: " + recorder.dateTimeOfFix, 0, 80, g.LEFT | g.TOP);
}
g.drawImage(m_screenBuf, 0, 0, Graphics.TOP | Graphics.LEFT);
if (s != null) {
g.drawString(s, 0, 50, g.LEFT | g.TOP);
}
g.drawString("经度: " + a, 0, 80, g.LEFT | g.TOP);
g.drawString("纬度: " + b, 0, 100, g.LEFT | g.TOP);
}
private int[] changeCoorGPS(double x,double y)
{
int coor[] = new int[2];
int imageWidth = 400;
int imageHeight = 400;
// System.out.println((GPSCoor.imgUpLeftX < x && x < GPSCoor.imgDownRightX
// && GPSCoor.imgDownRightY < y && GPSCoor.imgUpLeftY > y));
if (GPSCoor.imgUpLeftX < x && x < GPSCoor.imgDownRightX
&& GPSCoor.imgDownRightY < y && GPSCoor.imgUpLeftY > y) {
coor[0] = (int) (imageWidth * (x - GPSCoor.imgUpLeftX) /
(GPSCoor.imgDownRightX - GPSCoor.imgUpLeftX));
coor[1] = (int) (imageHeight * ( GPSCoor.imgUpLeftY-y) /
(GPSCoor.imgUpLeftY - GPSCoor.imgDownRightY ));
System.out.println(coor[0]);
System.out.println(coor[1]);
}
return coor;
}
public void start()
{
gpsReader = new GPSReader(url);
gpsReader.start();
new Thread(this).start();
}
public void run() {
while(true)
{
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
protected void paint(Graphics g) {
drawGPS(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -