⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 morsecodeconverter.java

📁 Android Source Code. An gallary program.
💻 JAVA
字号:
/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.android.apis.os;/** Class that implements the text to morse code coversion */class MorseCodeConverter {    private static final long SPEED_BASE = 100;    static final long DOT = SPEED_BASE;    static final long DASH = SPEED_BASE * 3;    static final long GAP = SPEED_BASE;    static final long LETTER_GAP = SPEED_BASE * 3;    static final long WORD_GAP = SPEED_BASE * 7;    /** The characters from 'A' to 'Z' */    private static final long[][] LETTERS = new long[][] {        /* A */ new long[] { DOT, GAP, DASH },        /* B */ new long[] { DASH, GAP, DOT, GAP, DOT, GAP, DOT },        /* C */ new long[] { DASH, GAP, DOT, GAP, DASH, GAP, DOT },        /* D */ new long[] { DASH, GAP, DOT, GAP, DOT },        /* E */ new long[] { DOT },        /* F */ new long[] { DOT, GAP, DOT, GAP, DASH, GAP, DOT },        /* G */ new long[] { DASH, GAP, DASH, GAP, DOT },        /* H */ new long[] { DOT, GAP, DOT, GAP, DOT, GAP, DOT },        /* I */ new long[] { DOT, GAP, DOT },        /* J */ new long[] { DOT, GAP, DASH, GAP, DASH, GAP, DASH },        /* K */ new long[] { DASH, GAP, DOT, GAP, DASH },        /* L */ new long[] { DOT, GAP, DASH, GAP, DOT, GAP, DOT },        /* M */ new long[] { DASH, GAP, DASH },        /* N */ new long[] { DASH, GAP, DOT },        /* O */ new long[] { DASH, GAP, DASH, GAP, DASH },        /* P */ new long[] { DOT, GAP, DASH, GAP, DASH, GAP, DOT },        /* Q */ new long[] { DASH, GAP, DASH, GAP, DOT, GAP, DASH },        /* R */ new long[] { DOT, GAP, DASH, GAP, DOT },        /* S */ new long[] { DOT, GAP, DOT, GAP, DOT },        /* T */ new long[] { DASH },        /* U */ new long[] { DOT, GAP, DOT, GAP, DASH },        /* V */ new long[] { DOT, GAP, DOT, GAP, DASH },        /* W */ new long[] { DOT, GAP, DASH, GAP, DASH },        /* X */ new long[] { DASH, GAP, DOT, GAP, DOT, GAP, DASH },        /* Y */ new long[] { DASH, GAP, DOT, GAP, DASH, GAP, DASH },        /* Z */ new long[] { DASH, GAP, DASH, GAP, DOT, GAP, DOT },    };    /** The characters from '0' to '9' */    private static final long[][] NUMBERS = new long[][] {        /* 0 */ new long[] { DASH, GAP, DASH, GAP, DASH, GAP, DASH, GAP, DASH },        /* 1 */ new long[] { DOT, GAP, DASH, GAP, DASH, GAP, DASH, GAP, DASH },        /* 2 */ new long[] { DOT, GAP, DOT, GAP, DASH, GAP, DASH, GAP, DASH },        /* 3 */ new long[] { DOT, GAP, DOT, GAP, DOT, GAP, DASH, GAP, DASH },        /* 4 */ new long[] { DOT, GAP, DOT, GAP, DOT, GAP, DOT, GAP, DASH },        /* 5 */ new long[] { DOT, GAP, DOT, GAP, DOT, GAP, DOT, GAP, DOT },        /* 6 */ new long[] { DASH, GAP, DOT, GAP, DOT, GAP, DOT, GAP, DOT },        /* 7 */ new long[] { DASH, GAP, DASH, GAP, DOT, GAP, DOT, GAP, DOT },        /* 8 */ new long[] { DASH, GAP, DASH, GAP, DASH, GAP, DOT, GAP, DOT },        /* 9 */ new long[] { DASH, GAP, DASH, GAP, DASH, GAP, DASH, GAP, DOT },    };    private static final long[] ERROR_GAP = new long[] { GAP };    /** Return the pattern data for a given character */    static long[] pattern(char c) {        if (c >= 'A' && c <= 'Z') {            return LETTERS[c - 'A'];        }        if (c >= 'a' && c <= 'z') {            return LETTERS[c - 'a'];        }        else if (c >= '0' && c <= '9') {            return NUMBERS[c - '0'];        }        else {            return ERROR_GAP;        }    }    static long[] pattern(String str) {        boolean lastWasWhitespace;        int strlen = str.length();        // Calculate how long our array needs to be.        int len = 1;        lastWasWhitespace = true;        for (int i=0; i<strlen; i++) {            char c = str.charAt(i);            if (Character.isWhitespace(c)) {                if (!lastWasWhitespace) {                    len++;                    lastWasWhitespace = true;                }            } else {                if (!lastWasWhitespace) {                    len++;                }                lastWasWhitespace = false;                len += pattern(c).length;            }        }        // Generate the pattern array.  Note that we put an extra element of 0        // in at the beginning, because the pattern always starts with the pause,        // not with the vibration.        long[] result = new long[len+1];        result[0] = 0;        int pos = 1;        lastWasWhitespace = true;        for (int i=0; i<strlen; i++) {            char c = str.charAt(i);            if (Character.isWhitespace(c)) {                if (!lastWasWhitespace) {                    result[pos] = WORD_GAP;                    pos++;                    lastWasWhitespace = true;                }            } else {                if (!lastWasWhitespace) {                    result[pos] = LETTER_GAP;                    pos++;                }                lastWasWhitespace = false;                long[] letter = pattern(c);                System.arraycopy(letter, 0, result, pos, letter.length);                pos += letter.length;            }        }        return result;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -