1、字节数组转换为字符串

byte[] byBuffer = new byte[20];
... ...
String strRead = new String(byBuffer);
strRead = String.copyValueOf(strRead.toCharArray(), 0, byBuffer.length]);

2、字符串转换成字节数组

byte[] byBuffer = new byte[200];
String strInput="abcdefg";
byBuffer= strInput.getBytes();

注意:如果字符串里面含有中文,要特别注意,在Android系统下,默认是UTF8编码,一个中文字符相当于3个字节,只有gb2312下一个中文相当于2字节。这种情况下可采取以下办法:

byte[] byBuffer = new byte[200];
String strInput="我是字符串";
byBuffer= strInput.getBytes("gb2312");

主界面代码

package my.work.Library;

import java.util.Timer;
import java.util.TimerTask;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView; public class WsnActivty extends Activity {
/** Called when the activity is first created. */
private Button btnNetwork;
private String strIpAddr = null;
static TextView textTips,seat;
private ClientThread clientThread = null;
private Message MainMsg;
public static Handler mainHandler;
static final int TIPS_UPDATE_UI = 3; //tips_update_ui
static final int SEAT_UPDATE_UI = 6; //seat_update_ui static final int MAX_NODE = 4;
static byte NodeData[][] = new byte[MAX_NODE][5];; // [5] 0=温度 1=湿度 2=气体 3=灯
static final int RX_DATA_UPDATE_UI = 1; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initControl();
initMainHandler(); }
private void initControl() {
// TODO Auto-generated method stub
btnNetwork = (Button) findViewById(R.id.btn_network);
btnNetwork.setOnClickListener(new ButtonClick()); textTips = (TextView) findViewById(R.id.Tips);
textTips.setText(R.string.init_tips); seat = (TextView) findViewById(R.id.statc001);
seat.setText(R.string.people1); }
class ButtonClick implements OnClickListener {
@Override
public void onClick(View v) { switch (v.getId()) {
case R.id.btn_network: // 连接网络
showDialog(WsnActivty.this);
break;
}
}
} // 显示连接对话框
private void showDialog(Context context) {
final EditText editIP = new EditText(context);
editIP.setText("192.168.0.10"); AlertDialog.Builder builder = new AlertDialog.Builder(context);
// builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请输入服务器IP地址");
builder.setView(editIP);
builder.setPositiveButton("连接", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
strIpAddr = editIP.getText().toString();
boolean ret = isIPAddress(strIpAddr); if (ret) {
textTips.setText("服务器IP地址:" + strIpAddr);
} else {
strIpAddr = null;
textTips.setText("IP地址不合法,请重新设置");
return;
} clientThread = new ClientThread(strIpAddr);// 建立客户端线程
clientThread.start(); //mainTimer = new Timer();// 定时查询所有终端信息
//setTimerTask();
}
});
builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
if (clientThread != null) {
MainMsg = ClientThread.childHandler
.obtainMessage(ClientThread.RX_EXIT);
ClientThread.childHandler.sendMessage(MainMsg);
textTips.setText("与服务器断开连接");
}
}
}); builder.show();
} // 判断输入IP是否合法
private boolean isIPAddress(String ipaddr) {
boolean flag = false;
Pattern pattern = Pattern
.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher m = pattern.matcher(ipaddr);
flag = m.matches();
return flag;
} void initMainHandler() {
mainHandler = new Handler() { // 主线程消息处理中心
public void handleMessage(Message msg) {
switch (msg.what) {
case TIPS_UPDATE_UI:
String str = (String) msg.obj; //连接成功
textTips.setText(str);
break;
case SEAT_UPDATE_UI:
String strseat = (String) msg.obj; //连接成功
seat.setText(strseat);
break;
}
super.handleMessage(msg);
}
};
} }

子线程代码

package my.work.Library;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress; import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.Toast; public class ClientThread extends Thread { private OutputStream outputStream = null;
private InputStream inputStream = null;
private Socket socket;
private SocketAddress socketAddress;
public static Handler childHandler;
private boolean RxFlag = true;
final int TEXT_INFO = 12;
static final int RX_EXIT = 11;
static final int TX_DATA = 10;
Context mainContext;
Message msg;
private String strIP;
final int SERVER_PORT = 33333;
byte cNodeData[][] = new byte[4][5]; // [5] 0=温度 1=湿度 2=气体 3=灯
int RxCount = 0, nRecvLen, index = 0;
byte CheckSum;
// byte strRxBuf[] = new byte[256];
int ucRecvLen = 7; private RxThread rxThread; //获取WsnActivty.java 开辟子线程clientThread对象线程传递过来的ip地址
public ClientThread(String ip) {
strIP = ip;
} // 连接网络
void connect() {
RxFlag = true;
socketAddress = new InetSocketAddress(strIP, SERVER_PORT);
socket = new Socket(); try {
socket.connect(socketAddress, SERVER_PORT);
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream(); msg = WsnActivty.mainHandler.obtainMessage(
WsnActivty.TIPS_UPDATE_UI, "连接成功");
WsnActivty.mainHandler.sendMessage(msg); rxThread = new RxThread();
rxThread.start(); } catch (IOException e) {
try {
sleep(10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
msg = WsnActivty.mainHandler.obtainMessage(
WsnActivty.TIPS_UPDATE_UI, "无法连接到服务器");
WsnActivty.mainHandler.sendMessage(msg);
e.printStackTrace();
} catch (NumberFormatException e) { }
} void initChildHandler() { Looper.prepare(); // 在子线程中创建Handler必须初始化Looper childHandler = new Handler() {
// 子线程消息处理中心
public void handleMessage(Message msg) { // 接收主线程及其他线程的消息并处理...
/**
* MainMsg = ClientThread.childHandler.obtainMessage(ClientThread.TX_DATA,
* len, 0, (Object) buffer);
* SendData(SendBuf, 7);
*/
switch (msg.what) { case RX_EXIT:
RxFlag = false;
try {
if (socket.isConnected()) {
inputStream.close();
outputStream.close();
socket.close();
} } catch (IOException e1) {
e1.printStackTrace();
} childHandler.getLooper().quit();// 结束消息队列 break; default:
break;
} }
}; // 启动该线程的消息队列
Looper.loop(); } public void run() {
connect();
initChildHandler();
msg = WsnActivty.mainHandler.obtainMessage(WsnActivty.TIPS_UPDATE_UI,
"与服务器断开连接");
WsnActivty.mainHandler.sendMessage(msg);
} // socket 接收线程
public class RxThread extends Thread {
public void run() {
try {
while (socket.isConnected() && RxFlag) {
byte strRxBuf[] = new byte[30];
byte i;
int RxIndex, len, readBytes = 0;
// msg = WsnActivty.mainHandler.obtainMessage(
// WsnActivty.SEAT_UPDATE_UI, "有人");
// WsnActivty.mainHandler.sendMessage(msg);
//
len = inputStream.read(strRxBuf, readBytes, ucRecvLen
- readBytes); String strRead = new String(strRxBuf);
strRead = String.copyValueOf(strRead.toCharArray(), 0, strRxBuf.length); msg = WsnActivty.mainHandler.obtainMessage(
WsnActivty.SEAT_UPDATE_UI, strRead);
WsnActivty.mainHandler.sendMessage(msg); }
if (socket.isConnected())
socket.close(); } catch (IOException e) {
e.printStackTrace();
}
}
} byte GetDataLen(byte fc) {
byte len = 0; switch (fc) {
case 0x01:
len = 22;
break;
case 0x07:
case 0x08:
case 0x0A:
case 0x0B:
case 0x0C:
case 0x0D:
len = 7;
break;
} return len;
} }

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/Tips"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/init_tips"
android:textSize="40px"
android:textColor="#00ff00"
/>
<Button
android:id="@+id/btn_network"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login"
android:textSize="40px"
android:textColor="#00ff00"
/> <TextView
android:id="@+id/statc001"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="40px"
android:textColor="#00ff00"
/>
<TextView
android:id="@+id/statc002"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="40px"
android:textColor="#00ff00"
/>
<TextView
android:id="@+id/statc003"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="40px"
android:textColor="#00ff00"
/>
<TextView
android:id="@+id/statc004"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="40px"
android:textColor="#00ff00"
/>
<TextView
android:id="@+id/statc005"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="40px"
android:textColor="#00ff00"
/> </LinearLayout>

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="login">连接服务器</string>
<string name="app_name">梧州学院图书馆刷卡入座系统</string>
<string name="move">获取视频流</string>
<string name="init_tips">提示:请先打开WiFi或GPRS再连接网络</string>
<string name="people1">空座</string>
<string name="people2">有人</string> </resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.work.Library"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".WsnActivty"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>

Android接收wifi路由器发送过来的一组字节数据的更多相关文章

  1. android 发送短信的两种方式,以及接收报告和发送报告

               android发送短信,以及接收报告和发送报告          android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下:    一.调起系统发短信功能    ...

  2. android.net.wifi的简单使用方法

    获取Wifi的控制类WifiManager.  WifiManager  wm=(WifiManager)getSystemService(Context.WIFI_SERVICE); 接下来可以对w ...

  3. Android 8 wifi 扫描时间间隔

    wifi setting界面扫描时间间隔:10s 不在wifi setting界面,扫描时间间隔,最小20s,然后按找2倍的间隔进行递增,40s,60s..., 最大160s PNO 即Preferr ...

  4. Android 8 Wifi 初始化过程

    记录一下wifi初始化过程. packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java public void on ...

  5. Android Wi-Fi Peer-to-Peer(Android的Wi-Fi P2P对等网络)

    Wi-Fi peer-to-peer(P2P,对等网络),它同意具备对应硬件的Android 4.0(API level 14)或者更高版本号的设备能够直接通过wifi而不须要其他中间中转节点就能直接 ...

  6. Android软件开发之发送短信与系统短信库解析

    今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDM ...

  7. 【移动开发】Android中WIFI开发总结(二)

    搞了好几天终于有点眉目了,这里接着总结一下Android中WiFi的使用,在前面(http://smallwoniu.blog.51cto.com/3911954/1334951)我们已经简单了解了W ...

  8. android 获取wifi列表,如果你忽略了这个细节,可能你的软件会崩溃

    一:业务描述 最近公司有一个小需求,用户点击wifi扫描按钮(注意:是用户主动点击wifi扫描按钮),app去扫描附近的wifi,显示在listView中,仅此而已,app都不用去连接某个wifi,看 ...

  9. android 8 wifi wifi 扫描过程

    查看一下android wifi扫描的过程. packages\apps\Settings\src\com\android\settings\wifi\WifiSettings.java public ...

随机推荐

  1. [ An Ac a Day ^_^ ] CodeForces 586C Gennady the Dentist 模拟

    题意: n个小朋友去拔牙 每个小朋友在拔牙的时候会哭 哭声是vi分贝 距离门口vi远的小朋友听到了哭声会害怕 他们的勇气值p会减少d 如果勇气值p小于等于零 他们就会在门外哭并立即离开拔牙队列(回家找 ...

  2. sharepoint2010配置个人网站的offical方法 来自Jetluning的专栏

    Configuring My Site in SharePoint 201   SharePoint My Sites are commonly referred to as “Facebook fo ...

  3. 【入门一】一些简单的C程序及VS的安装

    实例1 用 printf 函数打印字符串 # include <stdio.h> // 预处理指令,结尾不加 ';' int main(void) // int表示该函数将返回一个整数值, ...

  4. mnesia

    1.模式创建 mnesia:create_schema([node()|nodes()]).集群的节点之间创建模式 2.启动和停止 application:start(mnesia). applica ...

  5. 依赖跟踪如何工作的(How dependency tracking works)

    这一块主要是理论的讲解,本人刚接触这块不久,就不敢翻译了,请参见园子里其他人的现有文章 http://www.cnblogs.com/TomXu/archive/2011/11/22/2256820. ...

  6. c语言_头文件

    传统 C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <assert.h> //设定插入点 #include <ctyp ...

  7. java返回json数据日期为一串数字字符串 js 转义

    var time = "2514484555"; //这只是事例,并不是实际的数据 function timeToString(time) { var datetime = new ...

  8. 中国内地、台湾、香港、澳门和国外DNS服务器地址列表

    中国内地.台湾.香港.澳门和国外DNS服务器地址列表 详细内容 作者:网路岗 来源:局域网监控软件 DNS(Domain Name System)是域名解析服务器的意思,它在互联网的作用是把域名转换成 ...

  9. 有了SSL证书,如何在IIS环境下部署https?【转载】

    昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么 ...

  10. MySQL 视图 总结

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...