sencha touch2 kryonet socket phonegap 通信 作者:围城

编程入门 行业动态 更新时间:2024-10-17 23:23:55

sencha touch2 kryonet socket phonegap  通信 作者:<a href=https://www.elefans.com/category/jswz/34/1724048.html style=围城"/>

sencha touch2 kryonet socket phonegap 通信 作者:围城

sencha touch2 kryonet socket phonegap  通信 作者:围城

我不太喜欢写文章,具体请看代码吧。

转载请注明。。。。

.html

(solq).rar

配置 phonegap  使用的是 phonegap 1.4版

1.引用 phonegap  .jar 包,

2.复制解压的 xml到 \res\xml\

3.配置 AndroidManifest.xml

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="true" 
android:resizeable="true" 
android:anyDensity="true" 
/> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 在activity 标签里加上 
android:configChanges="orientation|keyboardHidden"

 

 

1.java 扩展 phonegap  类

/** sencha touch2 kryonet socket phonegap  通信 * 作者:围城(solq)* blog:/ * * */
package org.solq.plugins;
import org.json.JSONArray;
import org.solq.deom.MyClient;
import org.solq.deom.Network.ChatMessage;import android.util.Log;import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;public class SendMsg extends Plugin {@Overridepublic PluginResult execute(String action, JSONArray jSONArray, String callbackId) {try {String t="hello";if(action.equals("sendMsg")) //发送消息
            {                //do code
            }ChatMessage request=new ChatMessage();request.text=jSONArray.getJSONObject(0).getString("text");//MyClient.getInstantiation().getClient().sendTCP(request);t="发送数据成功!!!";Log.v("action++++++++++", action);Log.v("jSONArray++++++++++", jSONArray.toString());return new PluginResult(PluginResult.Status.OK, request.text);} catch (Exception e) {return new PluginResult(PluginResult.Status.ERROR,"error");}}}

2.xml 注册扩展类

\res\xml\plugins.xml

 <plugin name="SendMsg" value="org.solq.plugins.SendMsg"/>

3.js 注册 java 类

 

/** sencha touch2 kryonet socket phonegap  通信 * 作者:围城(solq)* blog:/* */
var AndroidAPI=function(){};    
AndroidAPI.prototype.send = function(params, success, fail){return PhoneGap.exec(function(args){success(args);}, function(args){fail(args);}, 'SendMsg', //java类'sendMsg',    //action[params]    //params
    );
};PhoneGap.addConstructor(function() {PhoneGap.addPlugin('AndroidAPI', new AndroidAPI());
});

4. js call java

//调用 java 类window.plugins.AndroidAPI.send({text:text},function(r){//alert("发送消息成功:" + r);
},function(e){});        

5.java call js // 用 phonegap 方式

注意:用 handler 解决跨线程访问

appView.loadUrl("javascript:alert('" + xxx + "')");

 6.忘了贴上main 

/** sencha touch2 kryonet socket phonegap  通信 * 作者:围城(solq)* blog:/* */
package org.solq.deom;import org.solq.deom.Network.ChatMessage;
import org.solq.deom.Network.RegisterName;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;import com.esotericsoftware.kryonet.Client;
import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.phonegap.DroidGap;public class TestPhonegapPluginActivity extends DroidGap {public static Handler handler ;    Client client;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.loadUrl("file:///android_asset/chatTenchaTouch/index.html");appView.setFocusable(true);appView.setFocusableInTouchMode(true);handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0:appView.loadUrl("javascript:callJs('" + msg.obj + "')");break;default:break;}}};MyClient myClient=MyClient.getInstantiation();   client = myClient.getClient();}@Overridepublic void onDestroy() {    client.close();client.stop();Log.v("onDestroy", "onDestroy");android.os.Process.killProcess(android.os.Process.myPid());super.onDestroy();        //finish(); //强制在系统服务里 force stop
    }
}

 

程序退出了,系统里还挂着。当再运行程序时,,,会出错。解决方法:

1.当 onDestroy 时,不关闭 socket ,另做一个 退出处理

2.当 onDestroy 时,关闭 sokcet ,关闭程序进程 android.os.Process.killProcess(android.os.Process.myPid());

@Override
public void onDestroy() { client.close();
client.stop();
Log.v("onDestroy", "onDestroy");
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy(); }

  

转载于:.html

更多推荐

sencha touch2 kryonet socket phonegap 通信 作者:围城

本文发布于:2024-02-27 15:24:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707107.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:围城   通信   作者   sencha   kryonet

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!