进度条Tian 2020-02-11 09:30 采纳率: 55.6%
浏览 1848
已结题

基于Android 实现局域网内设备之间的通信(物联网)

1.硬件设备有,称重机器,网络摄像头,还有主控机器(单片机,modbus协议),主要是通过手机端的Android应用程序去控制主控设备进行拍照和称重等操作,然后把数据上传到服务器,除了手机把采集到的信息上传到服务器以外的一切操作是基于局域网去完成的,不需要外网。我现在遇到的问题是不知道怎么在android 应用程序(已经开发了的)当中添加这部分功能。该怎么上手?有没有大神可以帮我分析一下?小型局域网,用tcp协议好还是udp协议好?

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-02-11 11:54
    关注

    最简单的是做一个web服务器(jsp+tomcat),客户端android使用httpclient提交数据以及得到返回的结果,再显示出来

    这里有个例子代码:

    public class HttpClient_Get_Activity extends Activity {
    
       public TextView myTextView = null;
    
       @Override
    
       protected void onCreate(Bundle savedInstanceState) {
    
          // TODO Auto-generated method stub
    
          super.onCreate(savedInstanceState);
    
          this.setContentView(R.layout.httpget_httpclient_activity);
    
    
    
          Button btn = (Button)this.findViewById(R.id.button1);
    
          btn.setOnClickListener(new Button.OnClickListener(){
    
    
    
             @Override
    
             public void onClick(View v) {
    
                  new ReadHttpGet().execute("http://190.160.10.79:7890/handler1.ashx");
    
             }
    
    
    
          });
    
       }
    
        class ReadHttpGet extends AsyncTask<Object, Object, Object>
    
        {
    
    
    
          @Override
    
          protected Object doInBackground(Object... params) {
    
             // TODO Auto-generated method stub
    
    
    
             HttpGet httpRequest = new HttpGet(params[0].toString());
    
             try
    
             {
    
                HttpClient httpClient = new DefaultHttpClient();
    
                HttpResponse httpResponse = httpClient.execute(httpRequest);
    
    
    
                if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
    
                {
    
                    String strResult = EntityUtils.toString(httpResponse.getEntity());
    
                    return strResult;
    
                }
    
                else
    
                {
    
                    return "请求出错";
    
                }
    
             }
    
             catch(ClientProtocolException e)
    
             {
    
    
    
             }
    
             catch (IOException e) {
    
                // TODO Auto-generated catch block
    
                e.printStackTrace();
    
             }
    
    
    
             return null;
    
          }
    
    
    
          @Override
    
          protected void onCancelled(Object result) {
    
             // TODO Auto-generated method stub
    
             super.onCancelled(result);
    
          }
    
    
    
          @Override
    
          protected void onPostExecute(Object result) {
    
             // TODO Auto-generated method stub
    
             super.onPostExecute(result);
    
    
    
             try
    
             {
    
                //创建一个JSON对象
    
                JSONObject jsonObject = new JSONObject(result.toString()).getJSONObject("parent");
    
                //获取某个对象的JSON数组
    
                JSONArray jsonArray = jsonObject.getJSONArray("children");
    
    
    
                StringBuilder builder = new StringBuilder();
    
    
    
                for(int i = 0; i<jsonArray.length(); i++)
    
                {
    
                    //新建一个JSON对象,该对象是某个数组里的其中一个对象
    
                    JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
    
    
    
                    builder.append(jsonObject2.getString("id")); //获取数据
    
                    builder.append(jsonObject2.getString("title"));
    
                    builder.append(jsonObject2.getString("name"));
    
                }
    
                myTextView.setText(builder.toString());
    
             }
    
             catch (JSONException e) {
    
                // TODO Auto-generated catch block
    
                e.printStackTrace();
    
             }
    
    
    
          }
    
    
    
          @Override
    
          protected void onPreExecute() {
    
             // TODO Auto-generated method stub
    
             //super.onPreExecute();
    
             Toast.makeText(getApplicationContext(), "开始HTTP GET请求", Toast.LENGTH_LONG).show();
    
          }
    
    
    
          @Override
    
          protected void onProgressUpdate(Object... values) {
    
             // TODO Auto-generated method stub
    
             super.onProgressUpdate(values);
    
          }
    
    
    
        }
    
    }
    

    https://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab求解平差
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现
  • ¥85 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?