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;      }  












更多相关文章

  1. Android自动化测试初探(四): 模拟键盘鼠标事件(Socket+Instrumentat
  2. android 获取手机信息(device ip,os version etc.)
  3. Android 通过经纬度获取地理位置信息
  4. android 软键盘回车键捕获
  5. android 手机获取当前连接的wifi配置信息
  6. android 获取手机系统信息
  7. Android 隐藏底部导航栏和状态栏,动态调用导航栏,键盘收回时也收
  8. android 存储一些app配置信息
  9. android GPS JAVA应用程序编程-------获得经纬度,卫星信息等

随机推荐

  1. 【精品教程】Android应用开发入门教程(经
  2. android的触摸屏事件
  3. android音乐播放器源码
  4. Android VNC Server on G1 (PC 远程控制
  5. Android开发之android命令大全
  6. Theme.NoTitleBar问题
  7. 自定义android RadioButton样式
  8. Android 检测更新库
  9. android noTouch 事件
  10. 使用SDK Manager更新时出现问题