??xml version="1.0" encoding="utf-8" standalone="yes"?> Android Studio 0.8.2+ and above, could easily import modules. Thanks to TGMCains answer, is simplified, by using Android Studio itself to import OpenCV as a module. Step (6) is since Android studio expects native libs in OpenCV written is in C/C++. Java wrappers areapp/src/main/jniLibs
instead of older libs
folder. For those new to Android OpenCV, don't miss below stepsstatic{ System.loadLibrary("opencv_java"); }
]]>
@ResponseBody
public ResponseEntity<Post.Response> post(HttpServletRequest request) {
Post.Response resp = null;
Post.Request req = null;
String file = null;
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
try {
Collection<Part> parts = multiRequest.getParts();
boolean hasJSON = false;
boolean hasFile = false;
for (final Part p : parts) {
if (hasJSON) {
continue;
}
if (p.getContentType().contains("application/json")) {
ObjectMapper mapper = new ObjectMapper();
req = mapper.readValue(p.getInputStream(), Post.Request.class);
if (req != null) {
resp = new Post.Response();
resp.setX(100);
hasJSON = true;
}
} else if (p.getContentType().contains("image/jpeg")) {
++ index;
file = UPLOAD_ROOT + String.valueOf(index) + ".jpg";
InputStream is = p.getInputStream();
File localFile = new File(file);
OutputStream os = new FileOutputStream(localFile);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
hasFile = true;
}
if (hasJSON && hasFile) {
break;
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ServletException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if (req != null && file != null) {
resp = calc.calc(req, file);
}
if (resp != null) {
return new ResponseEntity<Post.Response>(resp, HttpStatus.OK);
} else {
return new ResponseEntity<Post.Response>(resp, HttpStatus.BAD_REQUEST);
}
}
]]>
1. download opencv zip packageQ?br /> 2. download cmake source zipQ?br /> 3. download ant binary packageQ?br /> 4. install ant binary;
5. make cmake;
6. unzip opencv;
7. cmake opencv source;
#mkdir build
#cd build
#cmake -D BUILD_SHARED_LIBS=OFF ../
#make
8. install opencv library into Maven;
9. update pom.xml to add openvn dependency;
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>2.4.11</version>
<systemPath>/Users/Jie/Downloads/opencv-2.4.11/build/bin/opencv-2411.jar</systemPath>
<scope>system</scope>
</dependency>
10. run webapp;
11. done;
M无数++的页面,p些~
]]>
早上很意外地收到一个留a, 说是需要LAC (LingosHook Android Client)和数据文? 不知大家是否q记得这? LAC敲完发布都已l过Mq了, 怎么使用看这?/a>, 需要的p里下载了.
c46.db3 - http://1drv.ms/1r436SDLAC.apk - http://1drv.ms/VzfFso
q段旉Google的服务都不可讉K, 我把q两个文仉C到OneDrive上了, q手把其中的广告给删了, ? 反正在Android上一炚w子也见不? 索性真需要的拿d...
? 实际都忘记这个LAC? x自己在Android也敲了三q半? 应用, 游戏敲了几个, 但现在想换䆾跟Android相关的工作竟然无? 各种阴差阳错DLd? 看来转行q是不对?..
敲了几晚SnakeGo, 原型出来? 大家来看看不...
不错, q货是---贪吃?..哈哈...别? q还是原? 好玩的在后面?..(以我敲字速度, 大约再等不到六个月应该可以完成了...)
今天q里记录下用LIBGDXq程中碰到的两个问题:
1. 调整屏幕比例;
2. Ud观察镜头;
一, 调整屏幕比例
LIBGDX是跨q_? 一大好处就是直接在PC上测? 那是非常的方? 但这有两个问题需要考虑, 一, 手机?280x768, 但我PC只有1280x1024? 而且真要开个跟手机一样大的一样大的屏幕, 那还怎么看log输出? 二就是不同的手机有着不同的分辨率, 长宽比也不一? 那怎么保证囑Ş不变形呢?
q个问题不难解决, 只需要在屏幕寸发生变化? 即resize()(W一ơ启动也会调用此函数)? 重新调整镜头(Camera)的参数即? 如下代码:
@Override public void resize(int width, int height) { Vector2 size = Scaling.fit.apply(WIDTH, HEIGHT, width, height); camera = new OrthographicCamera(size.x, size.y); camera.update(); batch.setProjectionMatrix(camera.combined); int viewportX = (int)(width - size.x) / 2; int viewportY = (int)(height - size.y) / 2; int viewportWidth = (int)size.x; int viewportHeight = (int)size.y; Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight); super.resize(width, height); }
q里采用的是重新创徏camera实例的方? 另外用改变已有camera实例的参数方式也是一L. 很简? 而且q样一ơ就解决了上面两个问?-- PCZ使用M寸的窗? 都可以获得跟讄{比例的H口, 手机上亦是如? ?a href="http://m.shnenglu.com/codejie/category/20828.html">I;P是采用的这U方式来保持其在L手机上都?280:768的比?
q种Ҏ只是改变?视图'的大? 但ƈ不会改变其中的图形的大小, q样Z保持囑Ş昄比例, 需要在输出囑Ş时做相应的比例放~? 可以在resize()获得q个比例, 染在囑Ş输出时用这个比?
screenScaling = new Vector2((size.x / WIDTH), (size.y / HEIGHT));
... ... batch.draw(img, (- WIDTH / 2) * screenScaling.x, (- HEIGHT / 2) * screenScaling.y, WIDTH * screenScaling.x, HEIGHT * screenScaling.y);
? Ud观察镜头
在SnakeGo? Z不让Snake'跑出'屏幕, 需要镜头camera跟Snake本n保持'同步'Ud, q样看v来Snake保持在屏q的中间, 但其它Object是移动的. Ҏ'相对q行'原理, 使整个看h像是Snake在Object中穿? 所? Udcamaera是必ȝ, 代码也简? 如下:
...
final OrthographicCamera camera = game.getCamera();
camera.translate(0.0f, 32.0f, 0.0f);
camera.update();
game.getSpriteBatch().setProjectionMatrix(camera.combined);
...
<----心烦意ؕ的分割线---->
q几天在扑ַ? 前面去面了一? 其中没一个App或者Game的问? 倒全是C++相关? L傻g...虽说׃是C++'n'?不然Blog也不会在q里不是), 但也许真的是'?? 才三q不用C++,竟然忘记的只剩下个auto_ptr?..更悲剧的是咱用的C++98标准已经变成C++11? auto_ptr变成smart_ptr?..
都说现在是个'跨界'的时? 但咱q还没有跨界, 只是同行转个方向而已, 为啥p么悲剧了...好吧, 估计学艺不精才是Ҏ...
同学"'大数?的博?周五来电, 问我要不要跟她一起做?囑փ搜烦', 有些犹U, 要说三年? 也许干? 但现?..再{ơ嘛...
恰逢I;P敲完, 心烦意ؕ的一? 只好赶紧抓vSnakeGo? 夜夜疯敲, 来安抚砰砰躁动的?..是的, 臛_敲字可以让自己^静些...
吐槽而已, q里惌 ---- E序员们? 转行要趁着q轻赶紧?..
老爷子心不? 依然在勤勤恳恛_敲着书和代码...没错, 是source code. 像老爷子这L老一辈会用电脑的都不? 而我亲爱的老爷子那是会Turbo Basic的顶高手啊...每次惛_q个, 内心都倍感自豪...
当年?H口"~程极其J琐, 如果不看看那一?lt;Win32 API大全>, 再加上个<Visual C++技术内q?gt;, 都不保证能敲个Window出来, 什么HWND, hInstance, 以及׃八糟的各cȝ口和消息的struct...反正我是早早忘光光?..x现在在的Android上弄?H口"出来, ?那真?太小儿科"?..
? 跑远?..我意思是 ---- 老爷子止步于Windows~程, 各类代码全部q行在DOS? 随着Windows的不断改q? l于, Windows下再也不能运行老爸手中的无敌神?-- Turbo Basic?..
曾跟老爷子说q? 他的代码都U至到Android? 但老爷子不同意, 因ؓ, 他老h家还要改些参数的, 改些参数, 些参? 参数...看着老爷子在Win7上装个VM跑XP再打开CommandH口q行Turbo Basic, 甚是辛苦. 作ؓ知原? 会Google的程序员我来? 帮老爷子弄个DOS虚拟环境来跑TB.EXE, 那是必须?..
于是有了下面的截图.
创徏SnakeGo工程的时? 忽然发现一?天大'的新?-- Libgdx竟然1.0.1?/a>?!! 无数?.99版的日子? 一直认版本p变成永恒?..
昨天把I;P?a >Release版本l于提交上去? ȝ完成了自q一个目?-- 发布一个Game应用! (EL是第一个目?-- 发布一个App应用 :) )
所以昨晚终于可以开始敲W二个Game? 是前面说到? 可以作弊的无脑游?-- SnakeGo ! q样再也不怕因为IQq低而在里被刺Ȁ?-- '再笑我就开无敌状态了,灭哈?(台词都想好了....), 所? 现在l于知道一个游戏界?潜规? -- "可以作弊"是必ȝ! (I;P没法作弊, q?q是多么'?的领悟啊....)
好吧, 不就?.0.1?再学习一ơ就是了...
虚拟逛街 : I行与虚拟化的店铺间, 通过q告什么的, 来找指定商品, 或者参加什么的zd, 完成? 获得一定的金币, U分或者成׃么的, 然后可以在-- 真正的实体店铺或taobao店中折h购买或者免费获得商?
你看q创意如? x阉K肯定会通过q个q_打通这条虚拟游戏到实体交易的通道? 那么q个q_到底会如何实现这个通道? 于是赶紧L -- 才发? 在新ȝ中还有个关键字我没有看清 -- "?. 好吧, 我心急了, 原来阉K的这个^台还没有开攑֑. 那么也好, 作ؓ业余游戏开放? 可以好好x, 到底惌个怎样的手游^台呢?
关于阉Kq个q_的是是非非已l在各大ȝ的帖子已l够多了, 今天不说哪些, 只从?-- 一个纯_的业余游戏E序员自w情况和理解来说...
q_只是一个概? 而且对于开发者来? q_是一片Q? 而真正能看到? 真正惌的都是些实实在在的东?---- APIs. 一个^台能够ؓ应用带来什么样的接口支撑才是最最l于的参?
一. q_情况
因ؓ对于游戏只是个业余h? q_q真没太xq各大^? 今天Ҏq次新闻提到的几?指标"做了下比?(最后一列不在其? 只是本脓需?
优势 | 云服?/td> | 支付 | 虚拟货币 | 用户?/td> | 开攑^?APIs | |
阉K | 交易 | 阉K?br> | 支付?/td> | ? | 淘宝 | ? |
癑ֺ | 内容 | 癑ֺ?br> | 癑ֺ钱包 | ? | ? | open.baidu.com 个h数据存储 推?br>W三方̎L?br>C会化分?br>Udl计 |
腾讯 | C交 | 腾讯?/td> | 财付?/td> | Q?/td> | QQ 微信 | open.qq.com 用户信息 关系铄 应用推广 支付 营销 |
如上表可以看? 其实各个q_该有的都有了, 没有的也都没?q话说的..) . 图表中也没包含像360, |易{? q不是说他们的手游^C强大, q里只是做个Ҏ? 各个的fans表认真了.
好了, 现在说重?..实际作ؓ一个业务开发? 我最兛_的是表中最后一?-- "开攑^?APIs" . 阉Kq_q找不到, 所以空着? 当然q也正是我们可以"?想的地方. 我们来看看其它两个^C要提供的APIs.
癑ֺ:
没有自己的用L, 没有支付方向(不是通道), 所以更多地?默默"地干着"实事", 像推? 数据存储{?做ؓ开发? 我比较欣赏百度提供的q些API);
腾讯:
依托庞大的的用户? 其APIs更們与社交交互和业务推广, 但多q通过Q币培养v来的"内购"們, 所以也有专门的支付接口;
那么, 我们推测(希望)阉Kq_会有怎么的APIs提供? 话说阉K有taobao, 支付? 再加上个L"W一"的阿里云, q要是三个都打通了, 实能把腾讯下个一大蟩. 但阿里在C交上不是强? 虽然强推了半q多?来往", 感觉q是晚了, g一D|间内完全不在微信的眼? 那么早期应该更关?交易"?支付"相关的APIs; 但作为后Lq_, 也不得不考虑下如何吸引和扶持开发? 所?
阉K:
1. 买家d/理
2. 商家d/理
3. 商家讉K
4. 商品理/展示/讉K
5. 安全支付/内购接口
6. 消息/q告推?br> 7. 事g记录/触发
8. 应用数据存储
9. 应用数据分析/理
够多? q真?站着说话不腰?不是...好了, 那么作ؓ一个野生的业余游戏开发者来?急切"?最?需要什么呢?
? 个h开发者需?/p>
实际作ؓ野生?独立?业余的游戏开发者来? 多数应该被限制在"?目? 那么作ؓq_, 提供的服?支撑丰? 灵zd受欢q? 因此, ??目的共性来? 希望q_能提供如下支?
1. q_服务
a. 应用发布: q个是必ȝ不是?
b. 应用数据l计与分? 通过攉到的应用数据, 如安装数? 安装分布{信? 可以非常有效Cؓ应用自n改善提供数据参?
c. q告理: 应用的广告接入与qo;
d. 钱包理: 应用收入情况展示与分? 内购数据理;
e. 信息推? 是GCM的功? 但要能弄个群发支持的? 阉K云应该搞?
f. 应用共性数据需求支? 例如应用的排行榜数据的存储和展示, 成就数据讄与触? 应用的配套论?IM{SNSq_{?阉K云就在那? 是不是呢?);
2. APIs支持
a. 用户数据讉K: 支持用户d, 获取用户自n数据;
b. 商家数据讉K: 获取商家信息;
c. 商品数据讉K: 获取商品信息;
d. 支付宝接? 支持用户购买商品;
e. 内购接口: 支持用户购买应用内商?q个跟支付宝接口应该不一?;
f. q告接口: 实现传统的哪U广告发布的接口好;
g. 消息/事g推送接? 支持通过应用的服务端下发消息/事g到应?
? q些应该够了(实际目前我的游戏只需要其中一?.), C?.. 多用户交? 用户状态数据维持什么的, 那是高开发者想要的? 他们应该自己可以搞定q些? 新闻?阉K?:2分成方式是对开发者的扶持, 实际也有挖墙脚之? ? 如果q_的功能灵zd? 2:8的分成一样可以引人入伙不?
说到对开发者的扶持, 或者叫做拉Z水也? 反正都是Z增加人气不是? 那么阉K可以考虑下下面的法子.
? 扶持
1. 交流q_
开发中? 交流论坛什么的, 各种行的模式也没啥好说? 很多时? 我觉得一个好的交^C仅给开发??的温暖感? 反倒是能提供找个解决问题地? 而减挫败感来的更重?-- 话说, N你不喜欢stackoverflow.com?
2. 虚拟团队l徏
不得不承? 当下的游戏不再是一个h可以搞定? 臛_如我q样? 只会code, 完全不懂PS的程序员, 敲打出来的游戏基本都是用?吓h"? 但目前看, pU野生的业余E序员还混不到游戏队伍中, 所?..Z不出头考虑建立虚拟团队的方案呢?
杭州在动漫方面也前? 敲代码的也以万计, 而多数的游戏都?短^?的项? 所以呢...当创新出现时, 阉K只需z个D的PM出来, 协调l徏个时团? 引导团队使用自nq_, 协助应用创徏发布什么的...q对于业余游戏开发者和q_自n来说, 不是一件功h? 一矛_? 普大喜奔的好事吗?
<---- 求扩散的分割U?---->
都说隔六个h可以跟奥巴马搭上关p? 要是觉得"?想的有些道理, 那就扩散它吧, 说不定就能被某个做^台的大{看到, 然后q真的这么做? ? 那咱q样的的野生业余游戏开发者们可以笑醒了啊不?...
"ƣ喜若狂"发货? 今天查看状态发? LingosHook捐赠插g竟然?q规"删除?..忽然来了感慨: 捐赠? 感谢你下手比taobao? 嘿嘿... 于是"赶紧"删除"q规"字眼, 重新发布上去...
LingosHook从开始敲打到今天已四q的旉? q里感谢各位捐赠? 各位使用? 感谢你们的支持和使用 !