android局域网通信( 一)

一 .问题

           最近合集游戏上线了,由于不同的盒子电视的遥控器差异性很大,造成我们游戏在操作体验上没法达到一致,所以老大又有一个新的想法,就是做一个手机遥控器,可以控制的我们游戏的,这样就可以统一操作体验。

二.方案 

        因为蓝牙有距离限制,所以直接pass了。那就只剩下局域网这个方案,而且老大要求ios和android都要上,但是我们组只有android开发,因为目前的电视和盒子基本都是基于android系统的(apple tv国内暂时没法用),没办法只能用c socket去实现通信,cocos2d-lua做界面,这样java和oc部分只需要写很少一部分代码,维护起来就很方面了

三.具体实现

      用c  socket去实现的话就得配置好ndk环境,这个网上教程很多,ndk 7以上的就可以直接在window下编译成so库了。因为android是基于linux系统的,所以这部分代码其实可以直接移植linux socket,只是回调部分会涉及到java的放射机制(我在这部分纠结了很久很久,最好发现是一个地方的参数写错了)。先大概了解一下jni的语法 

JNI的类型

1、基本数据类型

以下是java的基本数据类型和jni中的基本数据类型的比较,及各类型的字节。

2、引用类型

Java中不同的引用类型在JNI当中也有对应的引用类型,以下树形表示:

当在C语言中使用时,所有的JNI引用类型都被定义为jobject类型。typedef jobject jclass;

 

jvalue 类型

jvalue类型是一个基本数据类型和引用类型的集合,定义方式如下:

 typedef union jvalue {     jboolean z;     jbyte    b;     jchar    c;     jshort   s;     jint     i;     jlong    j;     jfloat   f;     jdouble  d;     jobject  l; } jvalue;

class的说明

(1).类和接口的描述符在java当中使用”.”,如:java.lang.String

而在JNI当中是用”/”,如:java/lang/String

(2).数组类型的引用类型用”[”表示。如  int[](java中的表示法)   ß---à  [I([ 大写的i 是JNI中的表示法,[ 的个数表示数组的维数  二维则是  [[ I )

 

(3)域的说明,和java比较如下表:

注意:引用类型的域 用L开头,并且以”;”作为结尾。数组类型和class说明的一样。

 

(4).Method说明

JNI中的方法的声明规则:先写参数列表,再写返回类型,以下是例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值