当前位置:  编程技术>移动开发
本页文章导读:
    ▪WP7 获取运用版本号的方法        WP7 获取应用版本号的方法   Version version = new System.Reflection.AssemblyName( System.Reflection.Assembly.GetExecutingAssembly().FullName).Version; 通过ToString()方法就可以拿到在AssemblyInfo.cs中定义的版本号 ......
    ▪ Titanium中的socket通讯        Titanium中的socket通信 Titanium从1.7开始强化了TCP通信方面的功能。一般大家说的通信都指的是HTTP通信,今天我们使用TCP socket,就可以跟很多的service实现通信。在socket的同时,Titanium也支持二.........
    ▪ 施用ConnectivityManager监听网络状态变化       使用ConnectivityManager监听网络状态变化 mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); mReceiver = new BroadcastReceiver.........

[1]WP7 获取运用版本号的方法
    来源: 互联网  发布时间: 2014-02-18
WP7 获取应用版本号的方法

 

Version version = new System.Reflection.AssemblyName(
System.Reflection.Assembly.GetExecutingAssembly().FullName).Version;

通过ToString()方法就可以拿到在AssemblyInfo.cs中定义的版本号


    
[2] Titanium中的socket通讯
    来源: 互联网  发布时间: 2014-02-18
Titanium中的socket通信
Titanium从1.7开始强化了TCP通信方面的功能。一般大家说的通信都指的是HTTP通信,今天我们使用TCP socket,就可以跟很多的service实现通信。

在socket的同时,Titanium也支持二进制码的操作:
T.Buffer
Ti.Codec
但是稍微有些复杂,HTTP以外的协议也能够使用。

那么我们就尽早的看看socket通信的例子吧。
var win = Ti.UI.createWindow({ title: "Win1" });
var textarea = Ti.UI.createTextArea({value: ''});
win.add(textarea);
win.open();

// 读数据用Buffer
var readBuffer = Ti.createBuffer({length:1024});

// socket部分
var socket;
socket = Ti.Network.Socket.createTCP({
  host: "blog.masuidrive.jp",
  port: 80,
  connected: function(e) { // 连接到socket
    textarea.value += ">> Connected to host " + socket.host + "\n";
    // 组成要写入的二进制数据
    var data = Ti.createBuffer({value:"GET /tmp/test.html HTTP/1.1\r\n"+
      "Host: blog.masuidrive.jp\r\n\r\n"});
    // 写入到socket
    var bytesWritten = socket.write(data);

    var bytesRead;
    // 循环读取直到结束
    while( (bytesRead = socket.read(readBuffer)) >= 0 ) {
      // 将读取的二进制转化为字符串
	    var stringData = Ti.Codec.decodeString({
	      source: readBuffer, length: bytesRead });
  	  textarea.value += bytesRead + "> " + stringData + "\n";
  	  // 清空读取用Buffer
  	  readBuffer.clear();
    }
    // 关闭socket
    socket.close();
  },
  closed: function(e) { // socket关闭之后
    textarea.value += ">> Socket closed";
  }
});
socket.connect();




上边的代码中的socket是同步的。具体socket通信的详细内容这里就不说了,相信在其他的平台上使用过socket的人都能够理解。Titanium官方也有详细的说明,这里

但是我们在通常的应用中都是采用异步的socket通信。可惜这部分在官方文档中也没有。

异步的socket处理大概是下边这样的:
var win = Ti.UI.createWindow({ title: "Win1" });
var textarea = Ti.UI.createTextArea({value: ''});
win.add(textarea);
win.open();

var socket;
var readBuffer = Ti.createBuffer({length:1024});

// 数据被读入时调用
var readCallback = function(e) {
    // 数据完成后关闭socket
    if (e.bytesProcessed == -1) { // EOF
    	textarea.value += ">> Received socket closed\n";
    	socket.close();
        return;
    }

    // 显示读入的数据
    var str = Ti.Codec.decodeString({source:readBuffer, length:e.bytesProcessed});
    textarea.value += e.bytesProcessed + "> " + str + "\n";

    // 下回读入数据时设定Buffer和回调
    Ti.Stream.read(socket, readBuffer, readCallback);
};

socket = Ti.Network.Socket.createTCP({
    host: "blog.masuidrive.jp",
    port: 80,
    connected: function(e) {
        // 读入数据时Buffer和回调
	    Ti.Stream.read(socket, readBuffer, readCallback);

        textarea.value += ">> Connected to host " + socket.host + "\n";

        // 写入处理
        var data = Ti.createBuffer({value:"GET /tmp/test.html HTTP/1.1\r\nHost: blog.masuidrive.jp\r\n\r\n"});
        var bytesWritten = socket.write(data);
    },
    closed: function(e) {
        textarea.value += ">> Socket closed";
    }
});
socket.connect();


这次在读入数据时,调用了readCallback。使用这样的方法,利用TCP基本所有的协议都能实现通信。

WebSocket协议的一个例子:https://github.com/masuidrive/ti-websocket-client

实时聊天,或者不想上时间保持会话时候,不使用HTTP,而使用WebSocket实现是不错的选择。

【原文】Titanium Mobileでソケット通信

    
[3] 施用ConnectivityManager监听网络状态变化
    来源: 互联网  发布时间: 2014-02-18
使用ConnectivityManager监听网络状态变化
	mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
    mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    mReceiver = new BroadcastReceiver() {
			
		@Override
		public void onReceive(Context context, Intent intent) {

			if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
				Log.i(TAG, "netWork has lost");
			}
		
			NetworkInfo tmpInfo = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
			Log.i(TAG, tmpInfo.toString() + " {isConnected = " + tmpInfo.isConnected() + "}");
		}
	};


注册Receiver,监听网络变化:
registerReceiver(mReceiver, mIntenFilter);


取消注册,不再监听网络变化:
unregisterReceiver(mReceiver);



也可在AndroidManifest.xml中注册BroadcastReceiver
        <receiver android:name=".ConnectionReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>	


程序第一次启动时会收到一个Broadcast

从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI

从WIFI到GPRS,程序至少会收到2个Broadcast
第一个是断开Wifi
第二个是连接到GPRS


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android中实现为TextView添加多个可点击的文本 iis7站长之家
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3