当前位置:首页 » 安卓系统 » 天气预报android源码

天气预报android源码

发布时间: 2022-07-09 09:14:42

1. 求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.scheleAtFixedRate(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();
}
}
});
}

}

2. android 做一个天气预报的步骤

这些问题还是建议你去其他专业的平台去问,那些csdn有很多大神在,他们会详细专业一点的回答道你,我的水平也就只是做过课程设计的而已,一般的步骤大概是规划好基础模型(就是要做出的基本功能)--做好框架控件那些(软件的话,我当时是用AS来做的)--然后就实现页面的跳转连接--最后就关联后台数据(这个可以说核心了,毕竟天气预报就是需要数据,实时更新的那种)

3. android怎样使用天气预报接口 实现天气预报

使用搜索引擎可以得到很多的天气预报接口,这里以某个api为例

http://wthrcdn.etouch.cn/WeatherApi

参数为city=城市名称

尝试获取南昌的天气预报

http://wthrcdn.etouch.cn/WeatherApi?city=南昌


得到下面xml数据

<?xmlversion="1.0"encoding="utf-8"?>

<resp>
<city>南昌</city>
<updatetime>16:55</updatetime>
<wen>5</wen>
<fengli>3级</fengli>
<shi>90%</shi>
<fengxiang>北风</fengxiang>
<sunrise_1>06:54</sunrise_1>
<sunset_1>17:19</sunset_1>
<sunrise_2/>
<sunset_2/>
<environment>
<aqi>26</aqi>
<pm25>13</pm25>
<suggest>各类人群可自由活动</suggest>
<quality>优</quality>
<MajorPollutants/>
<o3>44</o3>
<co>1</co>
<pm10>14</pm10>
<so2>4</so2>
<no2>27</no2>
<time>16:00:00</time>
</environment>
<yesterday>
<date_1>4日星期五</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_1>3-4级</fl_1>
</night_1>
</yesterday>
<forecast>
<weather>
<date>5日星期六</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>
<date>6日星期天</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>
<date>7日星期一</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>
<date>8日星期二</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>
<date>9日星期三</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>
<shus>
<shu>
<name>晨练指数</name>
<value>不宜</value>
<detail>有较强降水,请避免户外晨练,建议在室内做适当锻炼,保持身体健康。</detail>
</shu>
<shu>
<name>舒适度</name>
<value>较舒适</value>
<detail>白天有雨,人们会感到有些凉意,但大部分人完全可以接受。</detail>
</shu>
<shu>
<name>穿衣指数</name>
<value>较冷</value>
<detail>建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。</detail>
</shu>
<shu>
<name>感冒指数</name>
<value>极易发</value>
<detail>将有一次强降温过程,天气寒冷,且空气湿度较大,极易发生感冒,请特别注意增加衣服保暖防寒。</detail>
</shu>
<shu>
<name>晾晒指数</name>
<value>不宜</value>
<detail>有较强降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。</detail>
</shu>
<shu>
<name>旅游指数</name>
<value>较不宜</value>
<detail>天气稍凉,有微风,同时有有较强降水,会给出行产生很多麻烦,建议好还是多选择在室内活动!。</detail>
</shu>
<shu>
<name>紫外线强度</name>
<value>最弱</value>
<detail>属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。</detail>
</shu>
<shu>
<name>洗车指数</name>
<value>不宜</value>
<detail>不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。</detail>
</shu>
<shu>
<name>运动指数</name>
<value>较不宜</value>
<detail>有较强降水,建议您选择在室内进行健身休闲运动。</detail>
</shu>
<shu>
<name>约会指数</name>
<value>不适宜</value>
<detail>较强降水天气会给室外约会增添许多麻烦,尽量不要外出约会,最好在室内促膝谈心。</detail>
</shu>
<shu>
<name>雨伞指数</name>
<value>带伞</value>
<detail>有较强降水,您在外出的时候一定要带雨伞,以免被雨水淋湿。</detail>
</shu>
</shus>
</resp>


得到数据后使用XML解析数据即可,最好是建立一个实体类来存储数据

下面是使用DOM方式解析部分数据代码

DocumentBuilderbuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
//is是网络连接得到的输入流
Documentdoc=builder.parse(is);
if(doc==null)thrownewException();

Elementelement=doc.getDocumentElement();
NodeListchildList=element.getChildNodes();
for(inti=0;i<childList.getLength();i++){
Elemente=(Element)childList.item(i);
Stringtag=e.getTagName();
Stringtext=e.getTextContent();
if("city".equals(tag)){
//城市
}elseif("updatetime".equals(tag)){
//更新时间
}elseif("wen".equals(tag)){
//即时温度
}elseif("fengli".equals(tag)){
//风力
}elseif("shi".equals(tag)){
//湿度
}elseif("fengxiang".equals(tag)){
//风向
}
}

4. 跪求基于安卓平台的天气预报系统的设计与实现的源代码要没有乱码的,能在在模拟器上运行的。。。。

我做的项目中有从中国天气网获取的5日天气数据的,你要不要?因为目前处于功能设计阶段,界面不怎么美观,要后期才会美化!你如果有基础的话,我可以提供获取数据的代码,只要自己设计个界面,数据放上去显示就好。

5. 求安卓天气软件源代码!有载入界面、天气显示页面、未来几天天气界面、切换城市界面四个界面的

你要求太多了,除非是干这行的且有相关项目。即使如此也不会轻易给你。既然你是答辩,那么可以给你大概说下都是什么东西。关键就是一个后台service,设置成24小时一次访问网络,获取数据,至于天气预报信息,是从服务器请求下来的数据。其他的就是把这些数据适配到界面的问题了。‘
建议你去网络上搜下:
1,Activity组件
2,service组件
3,webService
4,Adapter
当让,以上都是安卓相关。
既然是毕业设计,就花点时间看下吧。记得当时我也选个自己不怎么会的项目,然后钻了一段时间,最后毕业答辩虽然说的不好,可是都是自己的东西,老师们也知道大学情况,看到有人能自己努力不去抄袭,也很感动的给了好评。我谢谢那些令人尊敬的老师给我的鼓励。加油吧... ...

6. 如何自己动手做一个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
}

7. android项目源码下载

对于读项目源代码来说,可能对大多数人是件困难的事。首先,第一个障碍:看到项目,就已经放弃! 如果有十个人,可能有5个人以上会是上面这种情况,分析其想法:这么多的代码,我要怎么读啊!我要读好久啊!算了,还是看小Demo吧,所以这样,他们也就只是把这个项目导入到eclipse中,点了几下鼠标,然后就没有下文了。 解决办法:其实他们终止的原因很简单,就是嫌麻烦,那好吧,告诉你,这点麻烦都能对你造成影响,其实你的开发之路也可以终止了。任何东西,你要学到它,你就必须花时间、花精力、还要有面对困难的准备。想一步登天,有可能,除非你是天才,但毕竟天才太少了!对于开发,不是学习1+1,所以,先摆正心态吧,那要具备怎样的心态呢?那就是:有面对困难的准备,也有解决苦难的信心。 心态问题解决了,那就是读代码的技巧了,很多人拿到一个项目不知道怎么入手,干脆就胡乱的一通看,看到一定时候发现,实在进行不下去了,又开始重新梳理自己的思路。这样是很浪费时间的,其实对于读一个项目,最好按照以下步骤进行( 个人意见,仅供参考 ): 1、使用这个应用或者游戏,直到熟悉它的使用流程和功能 2、根据自己的体验分析代码实现(整体) 3、如果有条件和原作者请教项目思路 4、从最先启动的Activity开始,弄懂每个Activity功能如何实现以及它的布局实现 5、遇到不懂的代码,首先找搜索引擎(一般都能解决)。还不行就可以请教他人了 6、对新学到的知识点,一定要总结下来,并且定期的去回顾 7、最重要的一点: 我认为要自己动手写,那怕是重新写一遍这个项目,或者自己设计一个类似的,再或者只写这个项目中的一部分。 为什么要自己动手呢?大家都知道coder这个东西,那怕你理论学得再好,不动手,那也是毫无意义的!所以,动手写一下,你会遇到问题,你就会解决问题,这样,你才能学到更多。这就是经验·······
以上回答你满意么?

8. 求andriod天气预报源码!!可以在eclipse运行的,不要走乱码的,感激不尽,拜托了联系方式

这个自己去下载。里面的天气接口已经过期,自己去网站申请一下

9. 求一个简单的android天气预报应用

2345天气预报。。连续用3年,真心好用

热点内容
超滤膜清洗剂怎么配置 发布:2025-04-06 10:13:11 浏览:974
存储过程什么时候用 发布:2025-04-06 10:12:17 浏览:36
混合型编程和 发布:2025-04-06 09:47:08 浏览:601
uc看缓存的视频 发布:2025-04-06 09:30:32 浏览:561
sql判断是否日期 发布:2025-04-06 09:29:12 浏览:316
存储过程参数空值 发布:2025-04-06 08:59:59 浏览:876
垃圾车压缩式垃圾车 发布:2025-04-06 08:55:00 浏览:209
如何给苹果iphone手机设置密码 发布:2025-04-06 08:49:17 浏览:814
安卓苹果王者荣耀数据转移在哪里 发布:2025-04-06 08:47:34 浏览:894
linux强制退出 发布:2025-04-06 08:47:33 浏览:667