android+studio天气预报项目
时间: 2024-01-01 21:05:02 浏览: 163
根据提供的引用内容,Android Studio可以用于开发天气预报项目。该项目的主要功能包括精确查询全国各地城市的实时天气状况和未来几天的天气预报,具有安全性、独立性和可靠性,同时界面设计也要优美。
以下是一个Android Studio天气预报项目的示例代码:
1. 创建一个新的Android项目,并在布局文件中添加必要的UI元素,例如文本框和按钮。
2. 在MainActivity.java文件中,使用网络访问中华万年历提供的端口获取实时天气和预测天气状况的数据。
```java
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private EditText cityEditText;
private Button searchButton;
private TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cityEditText = findViewById(R.id.cityEditText);
searchButton = findViewById(R.id.searchButton);
resultTextView = findViewById(R.id.resultTextView);
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String city = cityEditText.getText().toString();
new WeatherTask().execute(city);
}
});
}
private class WeatherTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String city = params[0];
String apiUrl = "http://api.weatherapi.com/v1/forecast.json?key=YOUR_API_KEY&q=" + city + "&days=3";
try {
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
return result.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null) {
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray forecastArray = jsonObject.getJSONObject("forecast").getJSONArray("forecastday");
StringBuilder weatherInfo = new StringBuilder();
for (int i = 0; i < forecastArray.length(); i++) {
JSONObject forecastObject = forecastArray.getJSONObject(i);
String date = forecastObject.getString("date");
String condition = forecastObject.getJSONObject("day").getString("condition");
String maxTemp = forecastObject.getJSONObject("day").getString("maxtemp_c");
String minTemp = forecastObject.getJSONObject("day").getString("mintemp_c");
weatherInfo.append("Date: ").append(date).append("\n");
weatherInfo.append("Condition: ").append(condition).append("\n");
weatherInfo.append("Max Temp: ").append(maxTemp).append("°C").append("\n");
weatherInfo.append("Min Temp: ").append(minTemp).append("°C").append("\n\n");
}
resultTextView.setText(weatherInfo.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
```
请注意,上述代码中的`YOUR_API_KEY`需要替换为您自己的天气API密钥。
这个示例代码中,我们使用了一个异步任务来执行网络请求,并解析返回的JSON数据以获取天气信息。然后,我们将天气信息显示在TextView中。
阅读全文