`
wuhua
  • 浏览: 2112175 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于手机连续按键的支持

    博客分类:
  • J2ME
阅读更多
关于手机连续按键的支持。
文章出处:http://wuhua.3geye.net/
相信做手机开发的朋友都知道,手机上有一个连续按键的处理,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();
    }


}
分享到:
评论

相关推荐

    ADB命令控制安卓手机(虚拟按键、状态栏)显示隐藏,或者直接禁用。

    如果没有看到开发者选项,连续点击“关于手机”中的版本号七次即可解锁。 3. 检测连接:打开命令提示符或终端,输入`adb devices`,如果一切正常,你应该能看到设备的序列号,表示已成功连接。 4. 隐藏虚拟按键:...

    安卓T9实体按键中文输入法

    它通过将字母和数字分配到9个按键上,通过连续按下数字键来输入文字。在这款安卓输入法中,T9技术被巧妙地应用到了实体按键上,使用户能在小屏设备或有实体键盘的安卓设备上方便地输入中文。 尽管这款输入法不支持...

    按键扫描程序

    在许多应用场景中,如计算机键盘、手机屏幕、游戏控制器等,按键扫描程序都是至关重要的组成部分,因为它提供了与用户交互的基本途径。 单双击判断是该程序的核心功能之一。单击通常指的是用户短暂按下并释放一个...

    使用J2ME技术开发RPG游戏(二)——按键处理机制.doc

    这样做可以避免因为用户连续快速按键而导致的阻塞,提高游戏性能。 核心变量`keyStates`在这里扮演了重要角色,它是一个整数,通过二进制位表示每个按键的状态。例如,定义`KEY_UP`为1,`KEY_DOWN`为2(实际上为1...

    按键精炼连点器

    在使用过程中,它不会对用户的系统造成任何损害,同时支持多种操作系统,包括Windows和部分移动平台,让更多的用户能够享受到这一工具带来的便利。然而,值得注意的是,在游戏环境中使用连点器可能违反部分游戏的...

    009、一键多功能按键识别技术.zip

    - **移动设备**:手机和平板的虚拟按键也能实现类似功能,例如,长按电源键可能是唤醒语音助手,而短按则是锁屏。 8. **优化与挑战**: 虽然一键多功能按键提供了便利,但也可能带来误操作的问题。因此,设计时...

    智能手机全键盘控制器及其编程与设计.pdf

    在处理硬件中断时,需要连续读取FIFO寄存器,直到读取到所有按键的释放状态,以确保正确处理按键事件。对于MAX7349,由于它没有内置的按键释放检测,实现组合键和长短键功能需要软件配合,即在读取完FIFO后等待一段...

    浅谈单片机系统中的按键编

    无论是简单的设备按钮还是复杂的手机键盘,按键都是输入数据的关键途径。对于初学者来说,编写可靠的按键程序可能是一项挑战,但理解其工作原理和处理技巧是必要的。 首先,按键通常通过连接到单片机的输入引脚来...

    按键自动点击

    它允许用户通过软件或脚本来模拟人类的手指操作,实现快速、连续或重复的点击动作,极大地提高了效率和便利性。以下是对这个主题的详细解释: 1. **自动点击原理**: 自动点击技术主要基于事件模拟,它通过编程...

    智能手机全键盘控制器及其编程与设计.docx

    传统的手机键盘由于按键数量有限,输入汉字和复杂符号时较为不便,特别是在处理电子邮件和上网浏览时。为了解决这个问题,QWERTY全键盘应运而生,它的布局与PC键盘相似,包括26个英文字母、数字、方向键、回车键、...

    模拟手机键盘输入程序

    在本文中,我们将深入探讨如何使用C++编程语言来创建一个模拟手机键盘输入的程序,该程序能够支持中英文输入法。首先,我们要理解手机键盘输入的基本原理,然后我们会逐步介绍C++中实现这一功能的关键技术和步骤。 ...

    蓝桥杯stc15f2k61s2独立按键.zip

    流水灯是一种常见于电子项目中的效果,通过逐个点亮或熄灭LED灯来形成连续流动的视觉效果,而呼吸灯则模仿了某些设备(如手机、电脑)充电时LED指示灯的渐亮渐暗效果,通常需要通过延时函数来实现周期性的亮度变化。...

    Unity手机震动插件Vibration

    1. **多模式震动**:插件内包含多种预设的震动模式,例如轻触、强烈震动、连续震动等,可以根据游戏中的事件或用户交互选择合适的震动效果,为玩家带来更丰富的感官体验。 2. **平台兼容性**:此插件不仅支持...

    手机解锁的技巧手机解锁的技巧

    4. 指纹解锁:如今,许多手机都支持指纹解锁,一旦指纹识别出现问题,首先检查手指是否干净干燥,其次确保已录入的指纹信息覆盖全面。若指纹无法识别,可通过备份密码或PIN码解锁,然后重新录入指纹。 5. 面部识别...

    酷派手机清防盗锁kupai.rar

    总的来说,"酷派手机清防盗锁kupai" 是一个解决酷派手机防盗锁问题的工具或指南,为用户提供了解锁过程中的指导和支持。但使用前请仔细评估风险,并确保遵循正确的操作流程,以保护个人数据安全和设备完好。

    手机全屏滑动

    电容式触屏广泛应用于智能手机,它依赖人体的电容变化进行触控识别,具有多点触控、响应速度快、灵敏度高等优点,能够支持流畅的全屏滑动操作。 2. **用户交互设计**:全屏滑动是用户与手机进行交互的一种方式,...

    j2me 手机游戏 开发基础教程

    - **事件处理**:通过实现`CommandListener`接口,可以处理用户输入,如按键事件。 - **动画制作**:利用定时器更新画面,创建连续运动的视觉效果。 - **对象和状态管理**:游戏对象应封装其状态和行为,以保持代码...

    联想手机TD16说明书

    4. **电磁辐射**:虽然手机在设计时已经考虑到了电磁辐射对人体的影响,但建议用户尽可能减少长时间连续使用手机的情况,以降低潜在风险。 5. **医疗设备**:对于植入式心脏起搏器等医疗设备的使用者,在使用手机时...

Global site tag (gtag.js) - Google Analytics