访问数据以在Android应用中显示为搜索结果

时间:2012-05-20 09:43:32

标签: java android database google-maps

我正在开发一个Android应用程序,该应用程序获取用户的当前位置并显示靠近他/她位置的餐馆列表。餐厅的数据可供我使用(即我想在搜索结果中显示每个餐厅的纬度/长度)。我无法使用Google Places API,因为我只需要显示我们数据库中可用的餐馆(在我们的网站中)。我的问题是如何访问计算机上的数据库(甚至是URL)来提取餐馆的数据并在我的Android应用程序中显示为搜索结果?
我实际上正在为我的公司制作一个无缝(http://bit.ly/Jp7pUN)类型的应用程序。 我是Android应用程序开发的完全新手。所以,请原谅我,如果这真的是一个非常广泛或愚蠢的问题。请告诉我我需要研究哪些主题来实现这一点。我会自己学习和做。

感谢。

2 个答案:

答案 0 :(得分:1)

您将需要:

  • 一个 Sqlite数据库来存储餐馆及其经度/纬度
  • MapView 以显示地图(不要忘记注册您的Google地图 API密钥
  • 地图叠加以在地图上显示标记
  • GPS访问以获取用户的位置(需要相应的 Android权限
  • 一个简单的搜索算法,用于检索用户位置x距离内的餐馆结果集

修改

如果您的数据库存储在服务器上,则需要一种方法来查询服务器,最好使用基于HTTP的协议,例如 REST 。如果用户离线,那么缓存 Android设备上的餐馆位置(使用Sqlite)非常有用(但不是必需的)(好消息:因为您可以在Android和Android上使用Java服务器,90%的数据访问层,你只需要编写一次)。

对于从服务器到Android客户端的数据传输, JSON 是一种流行的格式。

答案 1 :(得分:1)

要访问计算机上的数据库(而不是Android上的SQLite),您应该使用url为您的数据库服务器将localhost更改为:10.0.2.2。但是,如果您的数据库将在Internet上 - 您应该创建一些REST API来获取所需的数据。然后使用HttpClient从服务器获取数据。

您需要的一切都在Developer Guide中:MapView 为了检索当前位置,我建议使用MyLocationOverlay

例如(url to server):

//public static final String SERVER_ADDRESS = "http://10.0.2.2:3000"; // for localhost server
public static final String SERVER_ADDRESS = "http://railsserver.herokuapp.com"; //for remote server

访问服务器上的数据 - 这取决于您如何实现(以及使用什么技术)您的服务器(REST API?,WebService?,纯HTML?)以及服务器响应的格式(JSON? XML?等。)

我建议使用JSON,因为使用Android SDK中包含的类很容易解析:

        String json = execute(new HttpGet(Constants.SERVER_URL + "/fetchData"));
        JSONObject responseJSON = new JSONObject(json);
        if(responseJSON.has("auth_error")) {
            throw new IOException("fetchData_error");
        }