...
接sdk流程
1、java中代码
public class NativeCall {
public nativevoid onSdkCallResult(int code);
}
public staticint login() {
final Commplatform platform = Commplatform.getInstance();
instance.runOnUiThread(new Runnable() {
public void run() {
platform.Login(instance,new MiscCallbackListener.OnLoginProcessListener() {
public void finishLoginProcess(int code) {
NativeCall call = new NativeCall();
if(code==ErrorCode.COM_PLATFORM_SUCCESS)
{
call.onSdkCallResult(2);
}
else
{
call.onSdkCallResult(3);
}
}
});
}
});
return 0;
}
2、c++中调用java代码 -> login() ->c++ 调 java 补充-> jni使用事例(jstring char*相互转换)
3、c++中实现监听回调 onSdkCallResult() ->java 调 c++
碰到的问题:
1、
使用平台sdk实际是在和平台服务器进行交互 所以平台服务器可以识别sdk的接口方法 。比如init 支付 都是先和sdk平台服务器交互的
2、
call to OpenGl ES API with no current context(logged once per thread
渲染阻塞造成 不要在sdk登陆回调里直接replacecene 会造成渲染阻塞 写一个消息中心 保留noticeceter里消息 延迟update(update里post消息)
-> 对消息中心CCNotificationCenter的封装
3、
Android下如何获取Mac地址?
1、需要在AndroidManifest.xml文件中添加权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
2、Java代码(必须在Activity中使用)
public String getLocalMacAddress() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
return info.getMacAddress();
}
4、
在使用MD5加密时 大写转小写
#include <iostream>
#include <string>
#include <cctype>
using
namespace
std;
int
main()
{
string str=
"THIS IS A STRING"
;
for
(
int
i=0; i <str.size(); i++)
str[i] =
tolower
(str[i]);
cout<<str<<endl;
return
0;
}
技巧:
1、使用Log打印日志 System.out.println
2、eclipse里右击类名 选择xx 可以看到java类的实现的
3、编译.a是根据android.mk来编的 把修改过的cpp放在前面 如果出问题可以第一时间发现
4、接安卓sdk时 保留ios的sdk 做个判断 要不然ios不能调的话会很蛋疼
集成sdk的两种方式(将sdk加入工程)
方法1、
将sdk工程导入eclipse 通过库的形式导入游戏工程(Properties里设置)。 修改manifest
方法2、
a-将sdk工程导入eclipse并 run。这时 sdk工程的bin目录下会出现xx.jar 将这个文件放入游戏工程的lib文件夹下
b-将sdk 工程 lib res 目录下文件放入游戏工程相应目录
c-修改manifest