小米 Mi 2 在 Windows 7 x64 下面的识别问题

买了小米几个月了,总是搞不定他在自己的64位Windows 7 下面的驱动,总是不能识别,用官网下载的驱动,根本不顶用。客服嘛,一个劲的劝你装32位系统。没办法自己分析了一下原因。 实质上,小米模拟的MTP模式是存在问题的,才会导致Windows 7 不能正常识别,这个应该是软件层面的问题,因为,当我们关机的时候,连接电脑,是能自动下载安装驱动的,并且识别为Android ,但是开机之后,就不行了,那么,问题就应该发生在手机识别部分,而不是存在于协议交互部分。

换句话说 ,小米就自身已经处于MTP 客户端状态了,但是却没有把状态准确的传递给OS,因此导致OS不能识别。

既然,手机已经准备妥当了,那么,我们强制安装MTP协议,应该是正常的,因此,尝试了如下操作

image

请注意选择 “便携设备”,坛子里官方说必须关闭调试模式才行,但是我这边实验了一下,关不关没什么鸟事。

接下来 选择

image

 

标准MTP设备”->“MTP USB 设备”,等他安装完成,这时候,我们应该可以读写手机里面的文件了。

 

但是,目前还是没有办法搞定在adb devices 命令中找到这个设备,换句话说,调试程序,只能是在Ubuntu下面折腾了。

Android继承View自定义控件调用输入法

希望从一个View上调用输入法和接收输入法传过来的字符串,可以通过调用EditText这个widget。但是,如果要做出很炫很个性的输入法,就必须自己去和EditText一样连接输入法,介绍如下:
首先,定义一个继承自BaseInputConnection的类。输入法是通过commitText来提交选中字符。

BaseInputConnection相当于一个InputMethodService和View之间的一个通道。每当 InputMethodService产生一个结果时,都会调用BaseInputConnection的commitText方法,把结果传递出来。

之后,采用如下方式,呼出输入法,并且把自定义的BaseInputConnection通道传递给InputMethodService。

低级界面上面,自己调用输入法并接收输入法的输出结果,就是这样的。

android模拟器运行cocos2d-x

从cocos2d-x 2.0之后,就改用OpenGL ES 2.0,但是android模拟器直到4.0.3版本开始才支持ES 2.0,所以需要新建一个高于4.0.3的模拟器

记得勾选那个Use host GPU

image

NDK请使用 r8之后的版本,早期的版本存在BUG ,真机可以,模拟器不行,另外 VM Heap默认只有16M ,如果程序出问题,这个修改大一些。

小米 2 adb remount failed解决办法

1. 确定是否正确连接手机了

2. 进入shell

3. shell中输入命令

4. 然后你就有系统目录的读写权限了,例如你就可以使用adb push 把文件push到系统目录中去了.

上面的/system 为要访问的目录,如果要访问data目录则替换成/data 即可

以上是针对/system 目录的情况,当时当我们希望把 /data/data目录下面的文件拷贝出来的时候,却发生了问题,提示没有权限

原因在于 chmod 的缘故,chmod仅仅对当前目录进行了权限修改,下面的子目录还是没有权限

怎么办呢

就可以了,这个 -R 参数就是所有子目录一并处理

每次关机,修改都无效的,需要重新修改。

如果以上的方法,仍然不能解决问题,则考虑执行如下命令,重新挂载

可以看得出/system的权限是ro即是read only。

可以看到/system的权限变了,变成read write了。

android之动态创建控件

之前在网上找有关动态创建控件的帖子,发现没有几个人说的很明白;所以,决定自己写篇日志,将其说清楚。

动态创建控件,还是创 建控件;只不过,是在程序中创建控件;创建控件就好像在屏幕上画画一样。首先,要一张纸;然后,再在这个框架里画自己想画的事物。在android里,这 张纸就是一个容器,常用的LinearLayout、RelativeLayout、FrameLayout等等;在android里,自己想画的事物就 是一些view,常用的TextView、EditView、Button等等。
知道了大体思路之后,就要说细节了;
  第一是容器,创建一个容器(这里用LinearLayout举例);

第二是容器的细节,也就是属性部分;比如,容器里的控件是怎样排的;


第三是容器里的控件,创建自己想要的控件;比如,

第四是容器的细节,就是设置容器的属性;
第五是将控件加入到容器当中去;
  第六是将容器将加入ContentView中;
源代码:这个代码就不注释了,看了上面的六步应该会清楚下面的程序的

import org.cocos2dx.lib cannot be resolved

在使用 cocos2dx 的时候,建立的工程在编译的时候提示 import org.cocos2dx.lib cannot be resolved ,研究了研究发现,工程里面缺少了相应的Java代码,目录都已经建立好了,但是似乎拷贝脚本出了问题,没有把源文件拷贝进去

解决方法就是 ,找到 cocos2dx 的释放目录,在目录下找到 cocos2dx目录 下面找到 platform 目录下面有个android 目录 下面有个java目录,如下图了

我们在工程目录下面也看到一个类似的空目录

对应的目录拷贝进去就可以了

Android NativeActivity samples crashes

Log

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.
native_activity/android.app.NativeActivity}: java.lang.IllegalArgumentException
: Unable to find native library: native-activity

Answer

Over!

Type 'EGL_DEFAULT_DISPLAY' could not be resolved error while constant is clearly defined

I'm working on a native activity app for Android 2.3.3. I've copied the code from the code samples, I have include paths set, but Eclipse (Indigo) still can't find this constant.

EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);//Type 'EGL_DEFAULT_DISPLAY' could not be resolved

However the compiler shows no error:

Compile++ thumb  :NativeTest<=NativeTest.cpp

This error has to do with Eclipse not having __ ANDROID__ defined which makes it not define EGLNativeDisplayType in EGL/eglplatform.h which causes EGL_DEFAULT_DISPLAY to also not be defined.

To fix this go to your projects properties and go to the "C/C++ General->Paths and Symbols" page, under the "Symbols" tab click on GNU C and then the "Add" button and put

__ANDROID__

in the name feild and click OK. You can do the same for GNU C++.

The 'adb' tool is not in your path. You can change your PATH variable, or use --adb= to point to a valid one

The ndk-gdb script relies on setting the adb path, either by setting it as
an environment variable or
explicitly as a parameter of the script call.
Thus, there are two probable solutions:

1) set the PATH environment variable to point out your android sdk tools
folder (e.g. "export PATH=$PATH:<your_android_sdk_path_here>/tools")

or

2) invoke the ndk-gdb command with the path to the adb as a parameter (e.g.
: "ndk-gdb --adb=<your_android_sdk_path_here>/tools/adb")

keep in mind that the 1) solution will only work for your current terminal
session. If you want to persist this new PATH value, you must set it up
in the ~.MacOSX/environment.plist.

Android+Eclipse,创建项目总是出现 invalid project description. overlaps the workspace location的解决办法

创建或者导入工程的时候总是提示invalid project description. overlaps the workspace location错误,到处查资料最后找到解决办法,就是把新创建的工程目录设为非Eclipse得workspace目录,具体原因未知。