天气预报android(天气预报7天)
Android上的天气预报软件哪个准一点呀? 谢谢
单以预报准确而言,个人最为推荐墨迹天气。一直在用,感觉很好。
1.墨迹天气
墨迹天气是一款以预报准确,覆盖城市广,流量少,界面华丽等为特点的桌面天气软件。
(支持语音播报天气,皮肤资源也非常丰富!)
另外还有几款好的软件,各有所长吧。
2.GO天气
GO天气是一款华丽炫酷的实时天气预报软件,可查看全球主要城市的天气。通过访问美国及全世界数万个地区中的最大的专业天气网,GO天气在任何时间任何地点,都可以获得最精确的天气信息。(Go团队出品,支持高清天气视频,十分华丽!)
3.MIUI天气
一款MIUI开发的天气软件,界面时尚大方美观,功能强大,支持全国城市,支持周边城市天气预报,支持天气提醒,支持污染指数等功能。
(提取自MIUI固件,高清皮肤,天气效果动态显示,给你最华丽的体验!)
4.天气通
天气通是一款免费手机天气预报软件。通过网络获取天气信息,以直观的图文方式显示,详尽的城市目录,支持多个预报网站。桌面图标典雅,天气网标则充满新意。
(功能全面,支持全屏动画,还有独特的日历备注功能!)
5.华丽动态天气
Animated Weather是Android手机上的天气预报应用程序,每日动态天气预报,逼真的动态天气特效,自定义背景,支持世界超过50000个城市的天气预报。
(可自定义背景,支持城市全面!)
希望对你有帮助。
android 如何实现获取天气预报信息?
方法步骤(以安卓5.0为例)
一、打开GPS
二、点主屏的“天气”图标
三、点右上角三个点的图标
四、点“设定”
五、在下图右侧的三个红圈处打上钩,然后点“自动刷新”。
六、根据自己的需要选择自动刷新的时间
七、点“确定”退出
八、可以随时点刷新图标来手动刷新天气。
九、提示
1.适时刷新天气需要开启GPS定位。
2.在没有WIFI的地方刷新天气需要消耗一定的流量,刷新频率越高,消耗流量越多。
android 高德2.10如何获取天气预报啊
使用搜索引擎可以得到很多的天气预报接口,这里以某个api为例
参数为city=城市名称
尝试获取南昌的天气预报
南昌
得到下面xml数据
?xml version="1.0" encoding="utf-8"?
resp
city南昌/city
updatetime16:55/updatetime
wendu5/wendu
fengli3级/fengli
shidu90%/shidu
fengxiang北风/fengxiang
sunrise_106:54/sunrise_1
sunset_117:19/sunset_1
sunrise_2/
sunset_2/
environment
aqi26/aqi
pm2513/pm25
suggest各类人群可自由活动/suggest
quality优/quality
MajorPollutants/
o344/o3
co1/co
pm1014/pm10
so24/so2
no227/no2
time16:00:00/time
/environment
yesterday
date_14日星期五/date_1
high_1高温 11℃/high_1
low_1低温 7℃/low_1
day_1
type_1阴/type_1
fx_1无持续风向/fx_1
fl_1微风/fl_1
/day_1
night_1
type_1小到中雨/type_1
fx_1北风/fx_1
fl_13-4级/fl_1
/night_1
/yesterday
forecast
weather
date5日星期六/date
high高温 7℃/high
low低温 5℃/low
day
type中到大雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type小到中雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date6日星期天/date
high高温 10℃/high
low低温 5℃/low
day
type阴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date7日星期一/date
high高温 13℃/high
low低温 6℃/low
day
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type晴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date8日星期二/date
high高温 13℃/high
low低温 7℃/low
day
type晴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date9日星期三/date
high高温 13℃/high
low低温 10℃/low
day
type小雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type小雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
/forecast
zhishus
zhishu
name晨练指数/name
value不宜/value
detail有较强降水,请避免户外晨练,建议在室内做适当锻炼,保持身体健康。/detail
/zhishu
zhishu
name舒适度/name
value较舒适/value
detail白天有雨,人们会感到有些凉意,但大部分人完全可以接受。/detail
/zhishu
zhishu
name穿衣指数/name
value较冷/value
detail建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。/detail
/zhishu
zhishu
name感冒指数/name
value极易发/value
detail将有一次强降温过程,天气寒冷,且空气湿度较大,极易发生感冒,请特别注意增加衣服保暖防寒。/detail
/zhishu
zhishu
name晾晒指数/name
value不宜/value
detail有较强降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。/detail
/zhishu
zhishu
name旅游指数/name
value较不宜/value
detail天气稍凉,有微风,同时有有较强降水,会给出行产生很多麻烦,建议好还是多选择在室内活动!。/detail
/zhishu
zhishu
name紫外线强度/name
value最弱/value
detail属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。/detail
/zhishu
zhishu
name洗车指数/name
value不宜/value
detail不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。/detail
/zhishu
zhishu
name运动指数/name
value较不宜/value
detail有较强降水,建议您选择在室内进行健身休闲运动。/detail
/zhishu
zhishu
name约会指数/name
value不适宜/value
detail较强降水天气会给室外约会增添许多麻烦,尽量不要外出约会,最好在室内促膝谈心。/detail
/zhishu
zhishu
name雨伞指数/name
value带伞/value
detail有较强降水,您在外出的时候一定要带雨伞,以免被雨水淋湿。/detail
/zhishu
/zhishus
/resp
得到数据后使用XML解析数据即可,最好是建立一个实体类来存储数据
下面是使用DOM方式解析部分数据代码
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//is是网络连接得到的输入流
Document doc = builder.parse(is);
if(doc==null) throw new Exception();
Element element = doc.getDocumentElement();
NodeList childList = element.getChildNodes();
for(int i=0; ichildList.getLength(); i++){
Element e = (Element) childList.item(i);
String tag = e.getTagName();
String text = e.getTextContent();
if("city".equals(tag)){
//城市
}else if("updatetime".equals(tag)){
//更新时间
}else if("wendu".equals(tag)){
//即时温度
}else if("fengli".equals(tag)){
//风力
}else if("shidu".equals(tag)){
//湿度
}else if("fengxiang".equals(tag)){
//风向
}
}
android怎样使用天气预报接口 实现天气预报
使用搜索引擎可以得到很多的天气预报接口,这里以某个api为例
参数为city=城市名称
尝试获取南昌的天气预报
南昌
得到下面xml数据
?xml version="1.0" encoding="utf-8"?
resp
city南昌/city
updatetime16:55/updatetime
wendu5/wendu
fengli3级/fengli
shidu90%/shidu
fengxiang北风/fengxiang
sunrise_106:54/sunrise_1
sunset_117:19/sunset_1
sunrise_2/
sunset_2/
environment
aqi26/aqi
pm2513/pm25
suggest各类人群可自由活动/suggest
quality优/quality
MajorPollutants/
o344/o3
co1/co
pm1014/pm10
so24/so2
no227/no2
time16:00:00/time
/environment
yesterday
date_14日星期五/date_1
high_1高温 11℃/high_1
low_1低温 7℃/low_1
day_1
type_1阴/type_1
fx_1无持续风向/fx_1
fl_1微风/fl_1
/day_1
night_1
type_1小到中雨/type_1
fx_1北风/fx_1
fl_13-4级/fl_1
/night_1
/yesterday
forecast
weather
date5日星期六/date
high高温 7℃/high
low低温 5℃/low
day
type中到大雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type小到中雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date6日星期天/date
high高温 10℃/high
low低温 5℃/low
day
type阴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date7日星期一/date
high高温 13℃/high
low低温 6℃/low
day
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type晴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date8日星期二/date
high高温 13℃/high
low低温 7℃/low
day
type晴/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type多云/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
weather
date9日星期三/date
high高温 13℃/high
low低温 10℃/low
day
type小雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/day
night
type小雨/type
fengxiang无持续风向/fengxiang
fengli微风级/fengli
/night
/weather
/forecast
zhishus
zhishu
name晨练指数/name
value不宜/value
detail有较强降水,请避免户外晨练,建议在室内做适当锻炼,保持身体健康。/detail
/zhishu
zhishu
name舒适度/name
value较舒适/value
detail白天有雨,人们会感到有些凉意,但大部分人完全可以接受。/detail
/zhishu
zhishu
name穿衣指数/name
value较冷/value
detail建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。/detail
/zhishu
zhishu
name感冒指数/name
value极易发/value
detail将有一次强降温过程,天气寒冷,且空气湿度较大,极易发生感冒,请特别注意增加衣服保暖防寒。/detail
/zhishu
zhishu
name晾晒指数/name
value不宜/value
detail有较强降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。/detail
/zhishu
zhishu
name旅游指数/name
value较不宜/value
detail天气稍凉,有微风,同时有有较强降水,会给出行产生很多麻烦,建议好还是多选择在室内活动!。/detail
/zhishu
zhishu
name紫外线强度/name
value最弱/value
detail属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。/detail
/zhishu
zhishu
name洗车指数/name
value不宜/value
detail不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。/detail
/zhishu
zhishu
name运动指数/name
value较不宜/value
detail有较强降水,建议您选择在室内进行健身休闲运动。/detail
/zhishu
zhishu
name约会指数/name
value不适宜/value
detail较强降水天气会给室外约会增添许多麻烦,尽量不要外出约会,最好在室内促膝谈心。/detail
/zhishu
zhishu
name雨伞指数/name
value带伞/value
detail有较强降水,您在外出的时候一定要带雨伞,以免被雨水淋湿。/detail
/zhishu
/zhishus
/resp
得到数据后使用XML解析数据即可,最好是建立一个实体类来存储数据
下面是使用DOM方式解析部分数据代码
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//is是网络连接得到的输入流
Document doc = builder.parse(is);
if(doc==null) throw new Exception();
Element element = doc.getDocumentElement();
NodeList childList = element.getChildNodes();
for(int i=0; ichildList.getLength(); i++){
Element e = (Element) childList.item(i);
String tag = e.getTagName();
String text = e.getTextContent();
if("city".equals(tag)){
//城市
}else if("updatetime".equals(tag)){
//更新时间
}else if("wendu".equals(tag)){
//即时温度
}else if("fengli".equals(tag)){
//风力
}else if("shidu".equals(tag)){
//湿度
}else if("fengxiang".equals(tag)){
//风向
}
}
如何自己动手做一个android天气预报的app
一个Android天气预报要用到的代码文件,可显示操作菜单,显示未来四天天气、将全国城市列表写入数据库、初始化数据解析类,界面控件,消息接收器Handler、线程消息接收器、左侧菜单选择事件监听、后退按钮监听等,代码为
227
if(mycitys.size()==1){
228
showToast("至少要保留一个城市");
229
}else{
230
mycitys.remove(position);
231
writeMyCitys();
232
sAdapter.notifyDataSetChanged();
233
currCityId=mycitys.get(0).get("cityId");
234
changeSearchState();
235
}
236
}
237
});
238
builder.setNegativeButton("取 消",
239
new DialogInterface.OnClickListener() {
240
public void onClick(DialogInterface dialog, int which) {
241
dialog.dismiss();
242
}
243
});
244
builder.show();
245
return false;
246
}
247
//
监听后退按钮
248
@Override
249
public boolean
onKeyDown(int
keyCode, KeyEvent event) {
250
if (keyCode ==
KeyEvent.KEYCODE_BACK) {
251
// 如果当前menu没有显示
252
if (!isBack) {
253
showToast("再按一次退出");
254
downTime = event.getDownTime();
255
isBack = true;
256
return true;
257
} else {
258
if (event.getDownTime() -
downTime = 2000) {
259
AppManager.getAppManager().AppExit(Weather.this);
260
} else {
261
showToast("再按一次退出");
262
downTime = event.getDownTime();
263
return true;
264
}
265
}
266
}
267
return super.onKeyDown(keyCode, event);
268
}
269
@Override
270
protected void
onDestroy() {
271
if(mVibrator!=null){
272
mVibrator.cancel();
273
}
274
super.onDestroy();
275
}
276
}
求Android天气预报的开发源代码
package com.nrzc.weatherstation;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
/**
* 环境传感器
* 气象站
*/
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
private TextView temperatureTextView;
private TextView pressureTextView;
private TextView lightTextView;
private float currentTemperature=Float.NaN;
private float currentPressure=Float.NaN;
private float currentLight=Float.NaN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
Timer updateTimer=new Timer("weatherUpdate");
updateTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
updateGUI();
}
},0,1000);
}
private void init(){
temperatureTextView=(TextView)findViewById(R.id.temperature);
pressureTextView=(TextView)findViewById(R.id.pressure);
lightTextView=(TextView)findViewById(R.id.light);
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
}
private final SensorEventListener tempSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentTemperature=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
private final SensorEventListener pressureSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentPressure=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
private final SensorEventListener lightSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentLight=event.values[0];
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
super.onResume();
Sensor lightSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (lightSensor!=null)
sensorManager.registerListener(lightSensorEventListener,
lightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
lightTextView.setText("Light Sensor Unavailable");
Sensor pressureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
if (pressureSensor!=null)
sensorManager.registerListener(pressureSensorEventListener,
pressureSensor,SensorManager.SENSOR_DELAY_NORMAL);
else
pressureTextView.setText("Barometer Unavailable");
Sensor temperatureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if (temperatureSensor!=null)
sensorManager.registerListener(tempSensorEventListener,
temperatureSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
temperatureTextView.setText("Thermometer Unavailable");
}
@Override
protected void onPause() {
sensorManager.unregisterListener(pressureSensorEventListener);
sensorManager.unregisterListener(tempSensorEventListener);
sensorManager.unregisterListener(lightSensorEventListener);
super.onPause();
}
private void updateGUI(){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(!Float.isNaN(currentPressure)){
pressureTextView.setText(currentPressure+"hPa");
pressureTextView.invalidate();
}
if (!Float.isNaN(currentLight)){
String lightStr="Sunny";
if (currentLight=SensorManager.LIGHT_CLOUDY)
lightStr="night";
else if (currentLight=SensorManager.LIGHT_OVERCAST)
lightStr="Cloudy";
else if (currentLight=SensorManager.LIGHT_SUNLIGHT)
lightStr="Overcast";
lightTextView.setText(lightStr);
lightTextView.invalidate();
}
if (!Float.isNaN(currentTemperature)){
temperatureTextView.setText(currentTemperature+"C");
temperatureTextView.invalidate();
}
}
});
}
}