关于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. dubbo见解

    调用关系说明 服务容器负责启动,加载,运行服务提供者. 服务提供者在启动时,向注册中心注册自己提供的服务. 服务消费者在启动时,向注册中心订阅自己所需的服务. 注册中心返回服务提供者地址列表给消费者, ...

  2. AngularJS 的异步服务测试与Mocking

    测试 AngularJS 的异步服务 最近,在做项目时掉进了 AngularJS 异步调用 $q 测试的坑中,直接躺枪了.折腾了许久日子,终于想通了其中的道道,但并不确定是最佳的解决方案,最后还是决定 ...

  3. Word或者WPS里证件照的背景底色和像素调整

    证件照的背景底色调整和像素调整         关于证件照的背景底色自行调整,比较方便的方法是用Word或者WPS来进行调整,当然也可以利用两者相结合的方法来进行调整,下面来系统的说一下这两种方式.此 ...

  4. Kafka高性能吞吐关键技术分析

    Apache Kafka官网提供的性能说明: Benchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machin ...

  5. EOS开发基础之二:使用cleos命令行客户端操作EOS(钱包wallet基础操作)

    不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...

  6. 使用HTTP协议向服务器传参的方式及django中获取参数的方式

    使用HTTP协议向服务器传参的四种方式 URL路径携带参数,形如/weather/beijing/2018; 查询字符串(query string),形如key1=value1&key2=va ...

  7. NPM和Yarn添加淘宝镜像

    NPM设置淘宝镜像 1.查询当前配置的镜像 npm get registry > https://registry.npmjs.org/ 设置成淘宝镜像 npm config set regis ...

  8. Alpha冲刺第6天

    Alpha第六天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 03160 ...

  9. Linux命令(一) pwd ,cd

    1.pwd命令 以绝对路径的方式显示当前所处的工作目录,从根目录 / 开始,每一级目录用 / 分隔.第一个 / 表示根目录,最后一个目录是当前目录.当不知道当前处于哪个目录的时候,使用 pwd 命令就 ...

  10. linux虚拟机安装中出现的问题

    当虚拟机加载镜像时,出现下面的错误: vmware 已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 错误提示:已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法 ...