android应用中的wifi通信问题
如题,情况如下:我写了个应用,就是希望可以在手机上通过手机wifi连接目标设备后,发送指令去控制目标设备,目标设备上有个无线ap。应用已经写完了,我在我的笔记本电脑wifi连接上目标设备后,应用跑在android模拟器上可以控制目标设备,按理说这样的应用装到手机上应该也是可以正常运行(控制目标设备)的,但是我装到手机(小米手机,android V4.04)上,手机成功与目标设备通过wifi连接后,无法控制目标设备。不知道为什么呢?
目标设备的网段是192.168.2.XX段的,跑应用时,笔记本和手机都能正常获取到这个段的IP地址,但在笔记本上跑模拟器就能跑通,手机上就不行。。。
我的应用是基于android 1.6版本开发的,4.04应该可以向下兼容的吧,这个应该不成问题。求解。。。如饥似渴。。。
主程序部分代码如下:
package com.example.remote_stb;
import MyTestSocket.Client;
import MyTestSocket.FuncationsEvent;
import MyTestSocket.InputKeyMayS;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button up = null;
private Button down = null;
private Button left = null;
private Button right = null;
private Button ok = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
up = (Button)findViewById(R.id.up);
down = (Button)findViewById(R.id.down);
left = (Button)findViewById(R.id.left);
right = (Button)findViewById(R.id.right);
ok = (Button)findViewById(R.id.ok);
up.setText(R.string.up);
down.setText(R.string.down);
left.setText(R.string.left);
right.setText(R.string.right);
ok.setText(R.string.ok);
up.setOnClickListener(new ClickListener());
down.setOnClickListener(new ClickListener());
left.setOnClickListener(new ClickListener());
right.setOnClickListener(new ClickListener());
ok.setOnClickListener(new ClickListener());
}
class ClickListener implements OnClickListener{
FuncationsEvent funcationsEvent;
@Override
public void onClick(View arg0) {
Client client = new Client();
if(arg0 == up){
client.eventInfo(new InputKeyMayS(funcationsEvent.EIS_IRKEY_UP.getValue(),0xfc032c40));
}else if(arg0 == down){
client.eventInfo(new InputKeyMayS(funcationsEvent.EIS_IRKEY_DOWN.getValue(),0xfc032c40));
}else if(arg0 == left){
client.eventInfo(new InputKeyMayS(funcationsEvent.EIS_IRKEY_LEFT.getValue(),0xfc032c40));
}else if(arg0 == right){
client.eventInfo(new InputKeyMayS(funcationsEvent.EIS_IRKEY_RIGHT.getValue(),0xfc032c40));
}else if(arg0 == ok){
client.eventInfo(new InputKeyMayS(funcationsEvent.EIS_IRKEY_SELECT.getValue(),0xfc032c40));
}
}
}
与目标设备的socket服务端通信的client代码如下:
public void eventInfo(InputKeyMayS _inputKey){
Socket server = null;
try{
server = new Socket("192.168.2.1", 7500);
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
String str="0;" + _inputKey.getEvent();
System.out.println("event : " + str);
out.println(str);
out.flush();
server.close();
}catch(Exception ex){
System.out.println(ex.toString());
}
}
--------------------编程问答-------------------- 没想到这么快就沉了。。。 --------------------编程问答-------------------- 看下logcat有什么异常信息 --------------------编程问答--------------------
logcat没有任何异常啊,因为在模拟器上是可以正常运行,并能成功控制目标设备的,所以看不出有什么问题,但把apk装到手机上跑就控制不了。。。 --------------------编程问答-------------------- 高手在哪里呀高手在哪里? --------------------编程问答-------------------- 真的没有人能解释一下这个问题吗??我不相信。。。。 --------------------编程问答-------------------- 192.168.2.XX段一般是局域网的内部网址, wifi设备是不是在局域网内?
这个贴子供参考. http://bbs.csdn.net/topics/390316680 --------------------编程问答-------------------- LZ 问题解决了吗? --------------------编程问答-------------------- 楼主,问题解决了? --------------------编程问答-------------------- 学习了解一下,
补充:移动开发 , Android