关于手机连续按键的支持

关于手机连续按键的支持。
文章出处:[url]http://wuhua.3geye.net/[/url]
相信做手机开发的朋友都知道,手机上有一个连续按键的处理,j2me规范里面也提供了一个方法给予支持。现在市场上主流的机都支持了连续
按键,比如Nokia的S60系列,S40系列也是很多支持的,Nokia6600则不支持。国产品牌等机子的有些虚拟机不支持连续按键。
对于不支持连续按键的机子来说。用户操作时很不习惯的,特别是浏览一页比较大的文档,或者是玩手机游戏的用户来说。真是太不爽了,
有没有办法解决这个问题啊。有,那就是采用轮询的机制进行模拟连续按键。

说下原理吧:
其实很简单的,
只要在按下键盘的是做一个flag。
离开键盘的是做下flag。
启动一个线程进行监控,就可以了。
具体看代码吧。


import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Display;


public class TestCanvas extends MIDlet {
public TestCanvas() {
}

protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(new TCanvas());
}

protected void pauseApp() {
}

protected void destroyApp(boolean _boolean) throws
MIDletStateChangeException {
}


}


class TCanvas extends Canvas {
int key;
boolean supper;
boolean isKeyDown;
long timeOut;
public TCanvas() {
new Thread(
new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
}

if (isKeyDown) {
long curTime = System.currentTimeMillis();

if (curTime - timeOut >= 300) {
timeOut = curTime;

System.out.println("keyReleased==>" + key);
repaint();

}
}

}
}
}

).start();

}

protected void paint(Graphics graphics) {
graphics.setColor(0x0);
graphics.fillRect(0, 0, this.getWidth(), this.getHeight());
graphics.setColor(0xFFFFFF);
graphics.drawString("key==>" + key, 50, 50, 20);
// System.out.println("事件==>" + key);
}

protected void keyPressed(int keyCode) {
this.key = keyCode;
System.out.println("keyPressed==>" + key);
isKeyDown = true; //长按
this.repaint();
}

protected void keyRepeated(int keyCode) {

this.key = keyCode;
System.out.println("keyRepeated==>" + key);
this.repaint();

}

protected void keyReleased(int keyCode) {
isKeyDown = false;
this.key = keyCode;
System.out.println("keyReleased==>" + key);
this.repaint();
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值