使用android studio 写一个简易的武汉实时公交程序并给出详细的可直接使用源码
时间: 2024-04-01 18:34:22 浏览: 79
通过Android studio 编写的简易安卓项目
5星 · 资源好评率100%
好的,我可以帮您完成这个任务。首先,我们需要准备一些数据,包括武汉市公交线路和实时公交信息。您可以从武汉市交通运输局的网站或者其他公开数据源获取这些数据。假设我们已经获取到了这些数据,接下来就可以开始编写代码了。
1. 创建 Android Studio 项目并添加必要的依赖
在 Android Studio 中创建一个新项目,并在项目的 build.gradle 文件中添加以下依赖:
```
dependencies {
implementation 'com.android.volley:volley:1.1.1'
implementation 'com.google.code.gson:gson:2.8.6'
}
```
这些依赖将用于获取实时公交信息和解析 JSON 数据。
2. 创建 UI 布局
我们需要创建一个 UI 布局来显示公交线路和实时公交信息。在 res/layout 目录下创建一个名为 activity_main.xml 的布局文件,内容如下:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/route_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/bus_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
```
这个布局包含一个 Spinner 和一个 ListView,用于显示公交线路和实时公交信息。
3. 创建 Java 类
在 app/src/main/java 目录下创建一个名为 MainActivity 的 Java 类,并添加以下代码:
```
public class MainActivity extends AppCompatActivity {
private Spinner mRouteSpinner;
private ListView mBusList;
private ArrayAdapter<String> mRouteAdapter;
private ArrayAdapter<String> mBusAdapter;
private List<String> mRouteList = new ArrayList<>();
private List<BusInfo> mBusInfoList = new ArrayList<>();
private RequestQueue mRequestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRouteSpinner = findViewById(R.id.route_spinner);
mBusList = findViewById(R.id.bus_list);
mRouteAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mRouteList);
mRouteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mRouteSpinner.setAdapter(mRouteAdapter);
mBusAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mBusInfoList);
mBusList.setAdapter(mBusAdapter);
mRequestQueue = Volley.newRequestQueue(this);
loadRoutes();
}
private void loadRoutes() {
String url = "http://example.com/routes.json";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
response -> {
try {
JSONArray routes = response.getJSONArray("routes");
for (int i = 0; i < routes.length(); i++) {
String route = routes.getString(i);
mRouteList.add(route);
}
mRouteAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
},
error -> {
error.printStackTrace();
});
mRequestQueue.add(request);
}
private void loadBusInfo(String route) {
String url = "http://example.com/businfo.json?route=" + route;
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
response -> {
mBusInfoList.clear();
for (int i = 0; i < response.length(); i++) {
try {
JSONObject busInfoJson = response.getJSONObject(i);
BusInfo busInfo = new Gson().fromJson(busInfoJson.toString(), BusInfo.class);
mBusInfoList.add(busInfo);
} catch (JSONException e) {
e.printStackTrace();
}
}
mBusAdapter.notifyDataSetChanged();
},
error -> {
error.printStackTrace();
});
mRequestQueue.add(request);
}
}
```
这个类包含了加载公交线路和实时公交信息的方法,以及用于显示这些数据的 Spinner 和 ListView。具体实现细节如下:
- 在 onCreate 方法中,我们初始化 Spinner 和 ListView,并创建用于显示数据的 ArrayAdapter。同时,我们使用 Volley 创建一个 RequestQueue 对象,用于发送 HTTP 请求。
- loadRoutes 方法用于加载公交线路列表。我们发送一个 GET 请求到指定的 URL,获取到 JSON 数据后解析出公交线路列表,并将其添加到 Spinner 中。
- loadBusInfo 方法用于加载指定公交线路的实时公交信息。我们发送一个 GET 请求到指定的 URL,获取到 JSON 数据后解析出实时公交信息列表,并将其添加到 ListView 中。
4. 创建 BusInfo 类
我们需要创建一个 BusInfo 类来表示实时公交信息。在 app/src/main/java 目录下创建一个名为 BusInfo 的 Java 类,并添加以下代码:
```
public class BusInfo {
private String busNumber;
private String nextStop;
private String remainingTime;
public String getBusNumber() {
return busNumber;
}
public void setBusNumber(String busNumber) {
this.busNumber = busNumber;
}
public String getNextStop() {
return nextStop;
}
public void setNextStop(String nextStop) {
this.nextStop = nextStop;
}
public String getRemainingTime() {
return remainingTime;
}
public void setRemainingTime(String remainingTime) {
this.remainingTime = remainingTime;
}
@Override
public String toString() {
return busNumber + " - " + nextStop + " - " + remainingTime;
}
}
```
这个类包含了公交车辆编号、下一站名称和剩余时间等信息。
5. 运行程序
现在我们已经完成了编码工作,可以运行程序并测试它的功能了。在 Android Studio 中点击运行按钮,将应用程序安装到模拟器或连接的设备上。在应用程序中选择一个公交线路,然后就可以看到该线路的实时公交信息了。
以上就是一个简单的武汉实时公交程序的实现过程及源码。希望能够对您有所帮助。
阅读全文