tensorflow-white-2

使用Tensorflow在树莓派3实现人脸识别

Tensorflow经过一年的发展,背靠着Google这颗大树,功能越来越完善,对移动设备支持非常不错,官方提供了如何在Android、iOS和树莓派上编译的教程

按照官方提供的编译方法,很顺利的完成了Tensorflow的编译,并运行了label_image和camera两个Demo,使用了训练好的inception模型,对测试图片进行分类,目测速度还不错,详细的性能数据稍后补上。

github上有个FaceNet项目,用Tensorflow实现了人脸识别,人脸检测和对齐使用了dlib,用python实现,也可以运行在树莓派上。

1-1410487082668

美版Nexus 5破解支持联通4G

美版Nexus 5(D820)支持WCDMA,缺少了Band 3的支持,偏偏联通4G用的就是Band 3,网上有高手放出了破解的工具,http://bbs.gfan.com/android-7648826-1-1.html,高手的描述太深奥,对小白用户来说很难理解,有人录制个视频,http://bbs.gfan.com/android-7659472-1-1.html,讲解还算清楚,但略长,其实就几步能搞定,小编按照视频的方法搞定了,有图有真相。

device-2015-10-03-204751 device-2015-10-03-204825 Continue reading 美版Nexus 5破解支持联通4G

如何在机顶盒里安装VST全聚合

方法一、安装了Android开发环境的用户适用

  1. 下载安装adb
  2. 找到机顶盒的IP地址,可以通过路由器的客户端列表,或机顶盒的关于信息
  3. 在命令行里运行
    adb connect <your_device_ip_address> 
  4. 下载VST全聚合最新版本apk,http://www.91vst.com/download.php,建议下载稳定桌面版本(开机自启动)
  5. 在命令行里运行
    adb install -r VXL2.6.7.3_91vst_v1.apk

方法二、一般用户

  1. 安装python,下载链接
  2. 下载adb_install.zip (支持Windows和Mac系统),下载链接 (Chrome浏览器提示恶意文件,人格担保不会有任何问题)
  3. 找到机顶盒的IP地址,可以通过路由器的客户端列表,或机顶盒的关于信息
  4. 解压adb_install.zip
  5. 下载VST全聚合最新版本apk,http://www.91vst.com/download.php,建议下载稳定桌面版本(开机自启动),把下载的apk文件拷贝到adb_install.zip解压文件夹里
  6. 在解压后的目录下运行命令行
    python adb_install.py <your_device_ip_address>
  7. 等待安装完成
15235313_z0yP

Android JNI开发进阶

JNI调试技巧

写日志

  • 适用场合
    • 多线程环境,单步调试无法工作
    • 循环,查看中间结果
    • 关键点,影响运行结果的地方
  • 调用方式
    #include <android/log.h>
    #define LOG_TAG "System.out”
    
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
    #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
    
    LOGI("info\n");
    LOGD("debug\n");
    LOGD(“The string is %s”, p_str);
    

Eclipse IDE调试

Continue reading Android JNI开发进阶

15235313_z0yP

Android JNI开发基础(二)

如何使用JNI

调用Java函数

jclass cls = (*env)->GetObjectClass(env, thiz);
jmethodID methodId = (*env)->GetMethodID(env, cls, "getAout", "()I");
bool use_opensles = (*env)->CallIntMethod(env, thiz, methodId) == AOUT_OPENSLES;
// ...
(*env)->DeleteLocalRef(env, cls);
  • GetObjectClass获取得到调用JNI函数当前对象的类,如果不是当前对象的类,使用FindClass(JNIEnv *env, const char* className)
  • GetMethodID获取调用JNI函数当前对象的类函数,getAout为Java函数名,()I为输入参数和返回值签名,签名的规则见后文
  • CallIntMethod调用Java对象的getAout函数,返回值是int类型,无返回值函数调用CallVoidMethod,其他类型返回值依此类推,静态函数调用CallStaticTypeMethod
  • DeleteLocalRef删除引用,cls使用完后,记得删除引用计数

Continue reading Android JNI开发基础(二)

ysrb

如何反编译、修改、重新打包APK

Java语言特性注定了轻松被爆菊的命运,虽然有代码混淆,反编译后的代码还是具备一定的可读性,为反编译、修改代码提供了便利,下面祭出完爆APK的几大神器:

  1. Apktool,将APK里的资源和代码解压出来,将Binary XML还原成可读XML文件,class反编译成smali,连9.png也能还原;
  2. dex2jar,smali代码一样很难看懂,此神器将APK里的dex还原成jar,便于用JD GUI查看,如果你能牛到直接看懂smali代码,请忽略;
  3. JD GUI,反编译class的神器,也支持jar,没有混淆的代码几乎能直接编译,混淆后的代码,慢慢看也能看懂,用于找要修改的地方;
  4. Eclipse + ADT,这个就不介绍了,当然Android Studio也可以;
  5. APK签名工具,签名后的APK才能安装到Android系统。

Continue reading 如何反编译、修改、重新打包APK

Moto-360_Map-820x420

Moto 360使用心得

摩托罗拉发布了Moto 360后,第一时间在Google Play上抢了一台,用了半年多时间,算是较早使用Android Wear设备的用户,Android Wear目前还不完善,还不太实用,跟最近发布的Apple Watch相比,应用比较少,配置复杂,所有通讯都是通过蓝牙连接,尤其对天朝人民来来说,需要手机翻墙(伟大的GFW),很多人问我有什么功能,大致整理如下:

Continue reading Moto 360使用心得