适用于简单Android应用的正确方法

时间:2014-02-18 20:31:47

标签: android web-services zxing android-volley

我最近一直在研究很多关于Android开发的内容,并且真正了解它,我想开始构建一个简单的应用程序,让我开始。不幸的是,我觉得我读的越多,我就越困惑。

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我自己没有和Volley一起工作,所以如果你想要实现的目标太过先进,我就无法给你一个答案。通常,当涉及到与服务器的HTTP通信时,我更喜欢使用AndroidAsyncHttpClient

“基于Apache的HttpClient库构建的基于异步回调的Android Http客户端。所有请求都是在应用程序的主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

答案 2 :(得分:1)

首先使用简单的解决方案:

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

我相信你能够找到足够的关于这些个人观点的帮助来帮助你入门。