关于html5plus的资料参考http://www.html5plus.org/

最近通过html5做手机app,其中涉及到网络通过,必须采用原生的socket,websocket无法满足要求,html5plus可以调用java包,java包封装了socket,以多线程的方式工作,收到数据之后,以event的方式通知js,开发工具包括hbuilder和eclipse。

java代码:

ClientSocket类:

package io.dcloud.net;

import java.io.IOException;
import java.net.Socket;
import java.io.*; public class ClientSocket { public ClientSocket(String site, int port) {
try {
socket = new Socket(site, port); BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream()); BufferedReader userin = new BufferedReader(new InputStreamReader(
System.in));
//new SendThread(out, userin, false).start();
m_recThread = new ReceiveTread(socket, in, out, userin);
m_recThread.start();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} } ReceiveTread m_recThread=null; public void test() {
return;
}
public void setEventOberver(DataArrivedEvent event) { m_recThread.setEventOberver(event);
} private Socket socket;
//发送消息
public Boolean sendMsg(String msg){
try{
//BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(msg);
out.flush(); }catch(IOException e){
e.printStackTrace();
return false;
}
return true;
} }

DataArrivedEvent接口:

package io.dcloud.net;

public interface DataArrivedEvent {
//public void onDataArrived(char [] data,int nsize);
public void onDataArrivedString(String data);
}

ReceiveTread类:

package io.dcloud.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; public class ReceiveTread extends Thread{
BufferedReader in ;
ServerSocket server;
PrintWriter out;
BufferedReader userin;
Socket client; public ReceiveTread(ServerSocket server,BufferedReader in,PrintWriter out,BufferedReader userin,Socket client) {
this.in = in;
this.server = server;
this.client = client;
this.out = out;
this.userin = userin;
} public ReceiveTread(Socket client ,BufferedReader in,PrintWriter out,BufferedReader userin) {
this.in = in;
this.client = client;
this.out = out;
this.userin = userin;
} DataArrivedEvent m_event=null;
public void setEventOberver(DataArrivedEvent event) {
m_event=event;
} @Override
public void run() {
try {
while(true){ String info = in.readLine();
if(info !=null){
//System.out.println(info);
if(m_event!=null)
m_event.onDataArrivedString(info); if(info.equals("end"))
break;
} }
in.close();
out.close();
userin.close();
if(client != null){
client.close();
}
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

html5plus代码:

function plusReady(){
// 隐藏滚动条
plus.webview.currentWebview().setStyle({scrollIndicator:'none'});
// Android处理返回键
plus.key.addEventListener('backbutton',function(){
if(confirm('确认退出吗?')){
plus.runtime.quit();
}
},false);
compatibleAdjust(); //添加测试代码
var ClientSocket=plus.android.importClass("io.dcloud.net.ClientSocket");
var hevent = plus.android.implements( "io.dcloud.
htnet.DataArrivedEvent", { "onDataArrivedString":function( info ){
console.log( "onDataArrivedString: "+info ); // 输出“Invoked Object’s name: Tester”
if(confirm('开到接收数据了吗:'+info)){ };
}
} ); //创建ClientSocket
var clientSocket=new ClientSocket("192.168.2.139",20000);
clientSocket.test();
clientSocket.setEventOberver(hevent);
}

小米3手机调试通过。

在android手机上通过Html5Plus调用java类。的更多相关文章

  1. Android手机上监听短信的两种方式

    Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...

  2. android 手机上运行图像算法

    在pc上调试好的图像处理算法想要在android手机上跑一下看看速度需要一下几个步骤 1.建立一个android application,通过ndk调用你写好的图像算法的c/c++ code 2. 然 ...

  3. xe5 android 手机上使用sqlite [转]

    在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank applicatio ...

  4. Android 手机上获取手机当前上网IP地址

      [转] 原文              Android 手机上获取手机当前上网IP地址                (手机网关给手机号分配的IP) 每个手机上网通过移动网关的时候,网关都会给该手 ...

  5. android webView开发之js调用java代码示例

    1.webView设置 webView.getSettings().setJavaScriptEnabled(true);//设置支持js webView.addJavascriptInterface ...

  6. 如何通过wifi在android手机上安装调试应用

    如何通过wifi在android手机上安装调试应用 1. 首先还是要打开手机的usb调试选项,并通过usb线连接手机.2. 然后执行“adb tcpip 5555”,把adb从usb模式切换到tcpi ...

  7. delphi xe5 android 手机上使用sqlite

    本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...

  8. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...

  9. Android 手机上安装并运行 Ubuntu 12.04

    ubuntu.sh脚本的原地址变动了,导致下载不了,现在更新了网盘地址.小技巧:遇到一些下载失效的时候可以试一试p2p下载工具(如 easyMule.迅雷等)试一试,说不定有人分享过~* —————— ...

随机推荐

  1. 利用Junit实现eclipse单元测试

    在eclipse中使用Junit进行单元测试 今天学会了用Junit在eclipse中进行单元测试,代码的测试工作,在整个软件开发中占有总要的地位,无论是代码开发阶段,还是代码维护阶段.另外边开发边测 ...

  2. Jq_input file标签上传图片到服务器

    引入jQuery库引入ajaxfileupload.js上传插件库(这也是jQuery的一个插件)以ASP.NET为例 <input type="file" id=" ...

  3. 每个国家对应的语言Locale和国家代码对照表(转)

    转载 jacksoft DNN3支持多语言,希望下面的语言代码与对应国家能对你有所帮助 语言代码 国家/ 地区 "" (空字符串) 无变化的文化 af 公用荷兰语 af-ZA 公用 ...

  4. Apache Ignite 学习笔记(二): Ignite Java Thin Client

    前一篇文章,我们介绍了如何安装部署Ignite集群,并且尝试了用REST和SQL客户端连接集群进行了缓存和数据库的操作.现在我们就来写点代码,用Ignite的Java thin client来连接集群 ...

  5. 关于运行“基于极限学习机ELM的人脸识别程序”代码犯下的一些错误

    代码来源 基于极限学习机ELM的人脸识别程序 感谢文章主的分享 我的环境是 win10 anaconda Command line client (version 1.6.5)(conda 4.3.3 ...

  6. 《Linux内核分析》第四周:扒开系统调用的三层皮

    杨舒雯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " 一. 用户 ...

  7. Daily Scrum – 12/10

    Meeting Minutes 完了了部分页面设计,可能是没有完成的原因,感觉好丑= =: 完成了调整速度的条: 讨论了页面翻转的实现方式,以及可能的简化方式: 进一步整合各个组件: 改进页面上移的按 ...

  8. Daily Scrum - 12/01

    Meeting Minutes 今天重阳去和UI设计团队的人去讨论UI方面的事宜了,剩下的人主要还是在讨论文件输入输出的事.目前总算是能实现文件存取了,尽量在明天前把文件的格式内容都弄好. Burnd ...

  9. Visual Studio 2015的安装和简单的单元测试

    何为单元测试 绝大多数的软件都是由多人合作完成的,大家的工作相互有依赖关系.软件的很多错误都来源于程序员对模块功能的误解.疏忽或不了解其他模块的变化.如何能让自己负责的模块功能的定义尽量的明确,模块内 ...

  10. [百家号]华为:最强ARM服务器芯片,华为鲲鹏920处理器发布

    华为:最强ARM服务器芯片,华为鲲鹏920处理器发布   泡泡网 百家号2019-01-0716:11 https://baijiahao.baidu.com/s?id=162198839753232 ...