铅笔的个人博客

技术博客

存档: 2017 年 04 月 (13)

局域网内连接Android进行调试

准备工作 一部Androd手机 一台电脑 局域网 使用USB数据线将手机连接到电脑上 其次安装驱动 驱动可以使用手机助手进行安装 比如应用宝 360之类的。 给Android SDK的adb工具配置环境变量 (当然 也可以不进行配置在执行命令的时候指定目录也可以) 使用cmd输入指令 adb devices 查看已连接的设备 可以看到已经连接上电脑的设备 这时候进行重定向端口的操作 指令:adb tcpip 5555 指令操作成功之后 这时候已经可以断开USB连接了 接下来查看手机在局域网中的IP地址 电脑使用cmd指令 adb connect ip地址 连接手机的IP地址 如果不进行重定向端口的话 是无法连接上的 会被手机终端拒绝连接 连接上之后 就可以在开发工具当中查看到该设备 可以在该设备上安装软件 并且重定向成功一次后 只要没有调用kill-server指令 以后局域网连接手机是不需要再重定向端口的 连接成功后 可以为Android设备安装软件 和卸载软件 关机 或 重启 都可以做到 常见adb指令: adb install apk路径 /**安装apk文件 adb unins….

集成腾讯X5内核,初始化异常 有更新!

Application初始化X5的过程当中,QbSdk.initX5Environment(this, null); 抛出异常 btbs_crash_handler.so不存在。 解决方案 其实X5内核有一个so文件的,在demo工程当中的libs当中有。 解决办法:在libs目录下创建一个名为armeabi的文件夹,并且将该so文件复制到该目录下 PS:如果你在libs目录下还有arm开头的其他目录的话,那就都复制一份。亲测解决。 腾讯X5指南在下面找到SDK接入示例 解压,找到libs目录,下面就存放着一个so文件。

ScrollView嵌套RecyclerView不显示

ScrollView嵌套RecyclerView不显示 因为界面比较复杂 使用了ScrollView嵌套了RecyclerView RecyclerView显示正常 但是之后发现RecyclerView以下的所有布局全部消失了 查了下资料 谷歌的官方资料。 在ScrollView属性里面加上:android:fillViewport=“true” 以下是Google官方给的FillViewport解释: Indicates this ScrollView whether it should stretch its content height to fill the viewport or not.

View的onClick第一次按下不执行

在开发中 给LinearLayout布局设置了onClick事件 然而发现 在第一次被按下的时候 没有反应 之后才能正常执行到onClick 于是想给LinearLayout设置一下onTouch看看有没有执行到onTouch 于是我就设置了一下LinearLayout的onTouch事件,然后。。。。 它就神奇的好了,第一次按下也会执行onClick。。。懵了。 只是设置了一下onTouch的监听而已 但是什么代码都没写。 怀疑是在事件分发的时候被什么给拦截了 这个LinearLayout被嵌套了几层 总之,问题解决了就好。

Centos下git-pull免密码操作

服务器使用的centos部署的Java项目,使用git pull拉下代码的class文件的时候,经常会提示需要输入帐号和密码。然后在码云官方群里询问了下解决方案。 在终端输入以下指令。 git config –global credential.helper store 然后再次执行pull操作,还是会提示一次输入帐号与密码。 断开终端链接,重连,再次进行pull操作,直接就拉取代码了,不用再输入帐号密码了

使用JDK的API进行简单的Base64加密 有更新!

这几天在看一点JavaWeb,尝试自己写一个小项目,在用户注册的时候我想的是将用户的密码加密再存入到数据库当中的。 既然是加密用户的密码,那肯定还得有解密。于是开始查资料,查了一堆加密算法,RES,AES,DES,Base64加密。 找了挺久,发现都需要依赖第三方jar包,果断放弃,我只是想简单的加密一下而已。没太大的必要再去依赖一个jar。 最后发现在JDK的api里面藏着一个Base64的类。。。不扯了,直接上代码。 这是我封装了的加密解密方法 /** * Base64解密 * @param encoder * @return / public static String aesDecrypt(String encoder) { try { byte by[] = Base64.getDecoder().decode(encoder.getBytes(“UTF-8”)); return new String(by, “UTF-8”); } catch (Exception e) { e.printStackTrace(); } return null; } /* * Bas….

自定义org-json包 有更新!

原生的Json在封装的时候,如果value为空的话,则不会添加这条键值对,想实现如果value为空的话也记录下来。像这种(key:null)。 于是找到Json源码中的put方法,看到在put的时候有一个判断,如果value是空的话,则remove了key。把这条代码注释一下就好了。 贴上原JSON代码 /** * Put a key/value pair in the JSONObject. If the value is null, then the * key will be removed from the JSONObject if it is present. * * @param key * A key string. * @param value * An object which is the value. It should be of one of these * types: Boolean, Double, Integer, JSONArray, JSONObject, Long, * String, or the JSONObject.NULL obj….

Parcelable&Serializable序列化使用笔记

Parcelable序列化接口使用## 首先先实现Parcelable接口 以下是JavaBean的代码片段 import android.os.Parcel; import android.os.Parcelable; public class UserBean implements Parcelable { private int id; private String name; private int age; public UserBean(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } /** * 该方法为Parcelable接口中的抽象方法 这里的返回值 返回0即可 / @Override public int describeContents() { return 0; } /* * 该方法为Parcelable接口中的抽象方法 * * @param dest * 该对象为序列的操作对象 通过该对象 进行序列化属性 */ @Over….

原生Android项目嵌入ReactNative 有更新!

首先需要先安装环境 这里就直接引用官方文档地址了,如果没有配置环境的话,请先配置一下环境。 搭建开发环境 初始化项目## 使用Android新建项目 最低版本需要设置为16 因为RN只支持最低版本为16 打开CMD命令,切换到工程目录下面,执行npm init 这时候终端会提示输入一些内容。 name:工程名 (不能有大写 随意起就行了) version:(版本号 这里回车默认就好了) description:this is react native project(这里就是一个描述) entry point:index.android.js(这是入口的js文件名) test command:(回车使用默认值) git repository:(输入git地址或者回车) keywords:react native(关键词) author:pencilso(作者) license:(回车使用默认就好) 配置package.json文件 这时候你的项目根目录下应该有了一个package.json的文件,打开它,找到scripts这一栏,在text这个字段后面添加一个字段,“star….

基于原生JSON封装解析与生成工具 有更新!

将JavaBean 封装成JSON格式的字符串 封装JSON数据的代码片段 List listUser = new ArrayList<>(); //创建一个List集合 Map mapUser = new HashMap<>(); //创建一个Map集合 mapUser.put(“map-key”, new UserBean(4, “map-1”, 10, 2.456789, null,null, null)); //添加一个map的元素 listUser.add(new UserBean(3, “list-1”, 17, 1.456, null, null, null));//添加一个list的元素 UserBean[] arrayUser = { new UserBean(2, “array-1”, 16, 10.0123456,null, null, null) }; //创建一个对象数组并添加一个元素 UserBean us = new UserBean(1, “大白”, 18, 3.230, listUser, mapUser,arrayUse….

Android蓝牙4.0 Ble读写数据详解 -1 有更新!

Android蓝牙4.0 Ble读写数据详解 -1 Android蓝牙4.0 Ble读写数据详解 -2 因为最近公司在开发智能硬件这一块,于是就学习了下Android 4.0 Ble的蓝牙开发 刚开始的时候,网上找了很多博客,很多文章,但是大体都差不多,甚至很多一模一样的文章,找不到什么有用的资料,后来干脆放弃网上的资料了,自己动手,用代码来摸索。摸索了挺长时间。 首先 权限肯定是要的: <uses-permission android:name=“android.permission.BLUETOOTH” /> <uses-permission android:name=“android.permission.BLUETOOTH_ADMIN” /> <uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION” /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION….

Android蓝牙4.0 Ble读写数据详解 -2 有更新!

Android蓝牙4.0 Ble读写数据详解 -2 Android蓝牙4.0 Ble读写数据详解 -1 上一篇说了如何扫描与链接蓝牙 这篇文章讲讲与蓝牙的数据传输,与一些踩到的坑。 先介绍一款调试工具,专门调试Ble蓝牙的app。名字叫:nRF-Connect 谷歌应用商店也能下载到。 这里我先连接一个蓝牙设备 贴几个截图。 UUID的话 就相当于钥匙,蓝牙设备当中有通道,那么通道是需要UUID进行匹配的 当连接上设备之后,可以看到UUID的通道 接下来,按照设备厂商提供的文档,找到我们需要的UUID通道 比如说我这里需要的是0x6a的Service通道 然后点开最后一个Service通道查看 展开Service后 可以看到有两个Characteristic通道 我们看Properties属性 一个是NOTIFY 一个是WRITE 也有可能会有READ这个属性的通道 可以拿这个app输出写出指令给蓝牙,在不清楚是蓝牙的问题还是自己的问题的时候,这个工具还是挺好使的。 Notify的话,需要注意这个Descriptors的UUID 这个在注册Notify的时候,需要用到,这里….