android判断键盘状态两种方法:
1:http://www.it165.net/pro/html/201206/2987.html
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
if(!mHasInit) {
mHasInit = true;
mHeight = b;
if(onKeyboardStateChangedListener != null) {
onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_INIT);
}
} else {
mHeight = mHeight < b ? b : mHeight;
}
if(mHasInit && mHeight > b) {
mHasKeyboard = true;
if(onKeyboardStateChangedListener != null) {
onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_SHOW);
}
}
if(mHasInit && mHasKeyboard && mHeight == b) {
mHasKeyboard = false;
if(onKeyboardStateChangedListener != null) {
onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_HIDE);
}
}
}
2.http://blog.csdn.net/h7870181/article/details/8332991
http://blog.csdn.net/yellowcath/article/details/8663527
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
if(imm.hideSoftInputFromWindow(editText.getWindowToken(), 0))
{
imm.showSoftInput(editText,0);
//软键盘已弹出
}
else
{
//软键盘未弹出
}
二,系统键盘事件捕获:
http://blog.csdn.net/yzzst/article/details/45747507
su
getevent –l
操作 | 输出信号 |
---|---|
按下电源键 | /dev/input/event0: EV_KEY KEY_POWER DOWN /dev/input/event0: EV_SYN SYN_REPORT 000000 /dev/input/event0: EV_KEY KEY_POWER UP /dev/input/event0: EV_SYN SYN_REPORT 000000 |
音量键下 | /dev/input/event8: EV_KEY KEY_VOLUMEDOWN DOWN /dev/input/event8: EV_SYN SYN_REPORT 00000000 /dev/input/event8: EV_KEY KEY_VOLUMEDOWN UP /dev/input/event8: EV_SYN SYN_REPORT 00000000 |
音量键上 | /dev/input/event8: EV_KEY KEY_VOLUMEUP DOWN /dev/input/event8: EV_SYN SYN_REPORT 00000000 /dev/input/event8: EV_KEY KEY_VOLUMEUP UP /dev/input/event8: EV_SYN SYN_REPORT 00000000 |
按下物理按键“1” | /dev/input/event0: EV_KEY KEY_1 DOWN /dev/input/event0: EV_KEY KEY_1 UP |
按下物理按键“q” | /dev/input/event0: EV_KEY KEY_Q DOWN /dev/input/event0: EV_KEY KEY_Q UP |
按下软键盘上的“q”字母 | /dev/input/event0: EV_ABS ABS_X 0000001b /dev/input/event0: EV_ABS ABS_Y 000001d5 /dev/input/event0: EV_KEY BTN_TOUCH DOWN /dev/input/event0: EV_SYN SYN_REPORT 00000000 /dev/input/event0: EV_KEY BTN_TOUCH UP /dev/input/event0: EV_SYN SYN_REPORT 00000000 |
按下软件键盘上的的“1”按键 | /dev/input/event0: EV_ABS ABS_X 00000019 /dev/input/event0: EV_ABS ABS_Y 000001d7 /dev/input/event0: EV_KEY BTN_TOUCH DOWN /dev/input/event0: EV_SYN SYN_REPORT 00000000 /dev/input/event0: EV_KEY BTN_TOUCH UP /dev/input/event0: EV_SYN SYN_REPORT 00000000 |
三:生成中间logo的二维码:
http://blog.csdn.net/jerehedu/article/details/45746369
/**
* 生成二维码
* @param string 二维码中包含的文本信息
* @param mBitmap logo图片
* @param format 编码格式
* @return Bitmap 位图
* @throws WriterException
*/
public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)
throws WriterException {
Matrix m = new Matrix();
float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
float sy = (float) 2 * IMAGE_HALFWIDTH
/ mBitmap.getHeight();
m.setScale(sx, sy);//设置缩放信息
//将logo图片按martix设置的信息缩放
mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,
mBitmap.getWidth(), mBitmap.getHeight(), m, false);
MultiFormatWriter writer = new MultiFormatWriter();
Hashtable<EncodeHintType, String> hst = new Hashtable<EncodeHintType, String>();
hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码
BitMatrix matrix = writer.encode(string, format, 400, 400, hst);//生成二维码矩阵信息
int width = matrix.getWidth();//矩阵高度
int height = matrix.getHeight();//矩阵宽度
int halfW = width / 2;
int halfH = height / 2;
int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息
for (int y = 0; y < height; y++) {//从行开始迭代矩阵
for (int x = 0; x < width; x++) {//迭代列
if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH
&& y > halfH - IMAGE_HALFWIDTH
&& y < halfH + IMAGE_HALFWIDTH) {//该位置用于存放图片信息
//记录图片每个像素信息
pixels[y * width + x] = mBitmap.getPixel(x - halfW
+ IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH); } else {
if (matrix.get(x, y)) {//如果有黑块点,记录信息
pixels[y * width + x] = 0xff000000;//记录黑块信息
}
}
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
// 通过像素数组生成bitmap
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}