【问题标题】:How to create a web server using android studio?如何使用 android studio 创建 Web 服务器?
【发布时间】:2015-11-22 07:45:41
【问题描述】:

我想通过互联网将应用程序收集的一些数据发送到计算机。其次,除此之外,还想通过互联网在电脑上显示摄像机的实时画面。

我认为制作一个网络服务器将是第一个要求的好选择。但是由于我是android开发的新手,所以请指导我。

对于实时提要选项,请建议如何实现。

【问题讨论】:

  • 你的安卓设备会和电脑连接到同一个网络吗?您的计算机运行的是什么操作系统?
  • 您的设备在哪里?到哪台电脑?为什么需要互联网? Web 服务器应该在哪里运行?在您的设备上?在电脑上?如果不在 Android 设备上,那么为什么要使用 Android Studio 来制作该 Web 服务器?你的故事很不清楚。
  • albinobat 是的,我的 android 将连接到与计算机相同的网络。计算机将运行 Windows。 @greenapps我的设备位于计算机附近,因此它们位于同一局域网上。 Web 服务器应该在设备上运行,响应计算机发出的所有请求。请询问任何其他详细信息。
  • want to send some data collected by the app to the computer through internet。重复:Why do you need internet?
  • 我正在尝试构建的应用程序正在获取移动设备上所有可用传感器的所有读数。现在我希望这些读数可以通过 Wi-Fi 无线提供给我。为此,我想在移动设备上创建一个网络服务器,所以每当我想查看读数时,我只需在笔记本电脑上输入网络服务器 ip 即可查看它们。现在我的错误中可能有很多错误,因为我对这一切完全陌生。如果我走错了路,请指导我。

标签: android web android-studio


【解决方案1】:

如果您是 android 新手,我不确定这是否是个好主意。也许从更简单的事情开始,但如果你确实打算这样做的话。

要发送应用程序收集的数据,您必须将其发送到某种后端,您必须制作它,我建议用 PHP 制作并将数据保存在 Mysql 数据库中。

对于发送部分,您可能希望使用 AsyncTask 在后台执行它,它看起来像这样:

public class Backend extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
    String server = "http://example.com/foo/bar"
    String uid = params[0];
    String name = params[1];
    String email = params[2];

    HttpClient httpClient = new DefaultHttpClient();


    HttpPost httpPost = new HttpPost(server+"NewUser.php");


    List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);
    nameValuePair.add(new BasicNameValuePair("uid", uid));
    nameValuePair.add(new BasicNameValuePair("email", email));
    nameValuePair.add(new BasicNameValuePair("name", name));

    try {
        // Probeer dat te zetten
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
    }
    catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }


    try {
        // Execute
        HttpResponse response = httpClient.execute(httpPost);
        // Zet response om naar String
        String responseBody = EntityUtils.toString(response.getEntity());
        return responseBody;

    } catch (ClientProtocolException e) {
        e.printStackTrace();
        return "0";
    } catch (IOException e) {
        e.printStackTrace();
        return "0";
    }
}

}

你可以像这样执行这个类:

new Backend().execute("1","maantje","email@example.com")

现在将 POST uid、电子邮件、名称发送到 example.com/foo/bar/NewUser.php 因此,您必须创建数据将在 $_POST['uid]、$_POST['email'] 和 $_POST['name'] 中。

也不要忘记清单中的互联网权限

<uses-permission android:name="android.permission.INTERNET" />

对于实时提要选项,我没有这方面的经验,但也许这是一个很好的起点https://github.com/fyhertz/libstreaming

【讨论】:

  • 您的精彩帖子是在 2015 年发送的。我不知道从那以后发生了多少变化。我正在尝试使用 Android Studio 转换 Simon Monk HomeAutomation github.com/simonmonk/arduino-android/blob/master/… 以适应新的 Android 标准,但我遇到了 URL = startWebServer();//Problema com essa linha de código 行代码的问题。调试一下,之前写一行,程序就ok了,之后就停止了。或许你能帮帮我?
【解决方案2】:

你是对的。您需要可以处理来自电话的请求的服务器。基本上你需要称为 api 的 web 服务。您可以使用 java、node.js 等创建这些 api,并且您需要数据库来存储您的数据。出于数据库目的,您可以使用 MongoDB 或任何其他数据库。

您的 api 将处理 POST 请求以保存来自应用程序的用户请求的数据。这就是您可以保存用户数据的方式。 对于相机的现场直播,我不确定。期待听到一些专家的意见。谢谢,祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多