sencha touch 2 kryonet socket phonegap 통신 저자:도시 포위

16448 단어 sencha touch2
sencha touch2 kryonet socket phonegap  통신 작성 자:도시 포위
저 는 글 쓰 는 것 을 그다지 좋아 하지 않 습 니 다.구체 적 으로 코드 를 보 세 요.
전재
http://www.cnblogs.com/solq
http://www.cnblogs.com/solq/archive/2012/04/21/2462208.html
http://files.cnblogs.com/solq/sencha-touch2-kryonet-socket-phonegap-%E9%80%9A%E4%BF%A1-(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.자바 확장 phonegap  종류
/*

 * sencha touch2 kryonet socket phonegap     

 *   :  (solq)

 * blog:http://www.cnblogs.com/solq/ * 

 * */

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 {



    @Override

    public 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
 
3.js 등록 자바 클래스
 
/*

 * sencha touch2 kryonet socket phonegap     

 *   :  (solq)

 * blog:http://www.cnblogs.com/solq/

 * */

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.자바 콜 js//phonegap 방식 으로
주의 handler 크로스 스 레 드 접근 해결
appView.loadUrl("javascript:alert('" + xxx + "')");

 6.main 붙 이 는 걸 깜빡 했 어 
/*

 * sencha touch2 kryonet socket phonegap     

 *   :  (solq)

 * blog:http://www.cnblogs.com/solq/

 * */

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;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

       

       

        super.loadUrl("file:///android_asset/chatTenchaTouch/index.html");

        appView.setFocusable(true);

        appView.setFocusableInTouchMode(true);

        handler = new Handler() {

            @Override

            public 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();

        

    }



    @Override

    public 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(); 



}


  

좋은 웹페이지 즐겨찾기