【问题标题】:Right approach for simple Android app [closed]简单Android应用程序的正确方法[关闭]
【发布时间】:2014-02-18 20:31:46
【问题描述】:

我最近研究了很多关于 Android 开发的知识,为了真正了解它,我想开始构建一个简单的应用程序来让我继续前进。不幸的是,我认为我读的越多,我就越困惑。

我想构建一个应用程序来扫描和读取条形码,使用从条形码读取的 EAN 查询 RESTful Web 服务并输出产品名称。

现在,扫描部分很容易,因为我将 zxing 库用作意图服务。然后,我玩了很多名为 Volley 的框架,该框架应该处理与 Web 服务的网络通信并解析 JSON 结果。不幸的是,我无法将 Volley 与我的应用程序集成,但也许这个方便的工具超出了我的实际需要。

实现上述目标的正确方法是什么?我需要内容提供商吗?我需要服务吗?这些将如何相互关联?

【问题讨论】:

    标签: android web-services zxing android-volley


    【解决方案1】:

    我自己没有与 Volley 合作过,所以如果它对于你想要实现的目标来说太先进了,我无法给你答案。一般来说,在与服务器进行 HTTP 通信时,我更喜欢使用AndroidAsyncHttpClient

    “一个基于异步回调的 Android Http 客户端,构建在 Apache 的 HttpClient 库之上。所有请求都在应用程序的主 UI 线程之外发出,但任何回调逻辑都将在使用创建回调的同一线程上执行Android 的 Handler 消息传递。”

    与您想做的事情相关的示例:

    public class YourActivity extends Activity {
    
        private void handleScannedBardcode(String barcode) {
            // you need to make the request match the REST API you are using
            RequestParams params = new RequestParams();
            params.put("A_KEY_TO_IDENTIFY_THE_PARAMETER", barcode);
    
            AsyncHttpClient client = new AsyncHttpClient();
            client.post("http://www.yourserver.com", params, new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(String response) {
                    // you need to add parsing of JSON data to match the response
                    JSONObject jo = new JSONObject(response);
                    String productName = jo.getString("productname");
                    updateProductView(productName);
                }
            }); 
        }
    
        private void updateProductView(String productName) {
            // you need to use a view id that corresponds to a textview in your layout xml 
            TextView tv = (TextView)findViewById(R.id.productName);
            tv.setText(productName);
        }
    }
    

    根据 JSON 响应的复杂程度,您可以选择 GSONJackson 来解析大量 JSON 或纯 JSONObject

    【讨论】:

    • 这似乎是一个不错的库,而且绝对看起来比 Volley 更容易使用。然而,这仍然是问题的一部分。这将如何与我的概念验证应用程序的其余部分集成?
    • 我添加了一条关于 JSON 解析的评论。您将在上面的 onSuccess() 方法中解析 JSON。获得解析后的 JSON 后,您需要使用解析后的数据更新视图。我将更加充实我的示例。
    • 更新了一个更相关的例子。如果还不够清楚,您需要发布一些代码。
    • 谢谢。你的例子非常有启发性和清晰性。那么服务和内容提供商呢?我需要那些吗?
    • 嗯,条形码扫描器库需要它们吗?如果不是,那么不,我不明白您为什么需要服务或内容提供商。
    【解决方案2】:

    我使用这个库来处理与我的 API 的通信:https://github.com/koush/ion

    它易于使用,有示例和代码示例。

    【讨论】:

      【解决方案3】:

      先用简单的解决方案:

      • 使用HttpURLConnection连接网络服务,
      • 然后使用InputStreamReaderBufferedInputStream 从连接中读取输入流。
      • 创建一个 JSON 模型类,类似于您从 Web 服务获得的模型类。
      • 使用Google GSON 库将响应解析为JSONResponse,然后使用数据。

      我相信您将能够在 SO 上找到足够的帮助来帮助您入门。

      【讨论】:

        猜你喜欢
        • 2012-03-23
        • 2013-08-05
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        • 2012-03-08
        相关资源
        最近更新 更多