html5怎么调用java_在android手机上通过Html5Plus调用java类。

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

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

java代码:

ClientSocket类:

packageio.dcloud.net;importjava.io.IOException;importjava.net.Socket;import java.io.*;public classClientSocket {public ClientSocket(String site, intport) {try{

socket= newSocket(site, port);

BufferedReader in= new BufferedReader(newInputStreamReader(

socket.getInputStream()));

PrintWriter out= newPrintWriter(socket.getOutputStream());

BufferedReader userin= new BufferedReader(newInputStreamReader(

System.in));//new SendThread(out, userin, false).start();

m_recThread = newReceiveTread(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 voidtest() {return;

}public voidsetEventOberver(DataArrivedEvent event) {

m_recThread.setEventOberver(event);

}privateSocket socket;//发送消息

publicBoolean sendMsg(String msg){try{//BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = newPrintWriter(socket.getOutputStream());

out.println(msg);

out.flush();

}catch(IOException e){

e.printStackTrace();return false;

}return true;

}

}

DataArrivedEvent接口:

packageio.dcloud.net;public interfaceDataArrivedEvent {//public void onDataArrived(char [] data,int nsize);

public voidonDataArrivedString(String data);

}

ReceiveTread类:

packageio.dcloud.net;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;public class ReceiveTread extendsThread{

BufferedReader in ;

ServerSocket server;

PrintWriter out;

BufferedReader userin;

Socket client;publicReceiveTread(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;

}publicReceiveTread(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 voidsetEventOberver(DataArrivedEvent event) {

m_event=event;

}

@Overridepublic voidrun() {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代码:

functionplusReady(){//隐藏滚动条

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手机调试通过。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值