当前位置:编程学习 > wap >>

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有什么异常信息 --------------------编程问答--------------------
引用 2 楼 yinke22222 的回复:
看下logcat有什么异常信息

logcat没有任何异常啊,因为在模拟器上是可以正常运行,并能成功控制目标设备的,所以看不出有什么问题,但把apk装到手机上跑就控制不了。。。 --------------------编程问答-------------------- 高手在哪里呀高手在哪里? --------------------编程问答-------------------- 真的没有人能解释一下这个问题吗??我不相信。。。。 --------------------编程问答-------------------- 192.168.2.XX段一般是局域网的内部网址, wifi设备是不是在局域网内?
这个贴子供参考. http://bbs.csdn.net/topics/390316680 --------------------编程问答-------------------- LZ 问题解决了吗? --------------------编程问答-------------------- 楼主,问题解决了? --------------------编程问答-------------------- 学习了解一下,
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,