当前位置: 编程技术>移动开发
本页文章导读:
▪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通信的例子吧。
上边的代码中的socket是同步的。具体socket通信的详细内容这里就不说了,相信在其他的平台上使用过socket的人都能够理解。Titanium官方也有详细的说明,这里
但是我们在通常的应用中都是采用异步的socket通信。可惜这部分在官方文档中也没有。
异步的socket处理大概是下边这样的:
这次在读入数据时,调用了readCallback。使用这样的方法,利用TCP基本所有的协议都能实现通信。
WebSocket协议的一个例子:https://github.com/masuidrive/ti-websocket-client
实时聊天,或者不想上时间保持会话时候,不使用HTTP,而使用WebSocket实现是不错的选择。
【原文】Titanium Mobileでソケット通信
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监听网络状态变化
注册Receiver,监听网络变化:
取消注册,不再监听网络变化:
也可在AndroidManifest.xml中注册BroadcastReceiver
程序第一次启动时会收到一个Broadcast
从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI
从WIFI到GPRS,程序至少会收到2个Broadcast
第一个是断开Wifi
第二个是连接到GPRS
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
最新技术文章: