当前位置:首页 > 黑客教程 > 正文内容

android获取天气(基于android的天气预报app)

hacker2年前 (2022-07-05)黑客教程59

本文目录一览:

android中如何获取当前位置的天气

1、首先获取位置(坐标或城市),可以使用百度地图API、高德地图API

2、利用坐标或城市获取天气。需要使用三方天气API。例如:Mob天气接口、天气接口、聚合数据接口、国家气象局

android怎么获取实时天气

准备工作:

1.下载华为能力SDK;

2.申请一个应用获取appId和appkey,待会要用到。

简单的思路就是先通过 *** 或者gps获取到当前位置的经纬度,然后通过sdk查询温度,获取结果。

具体步骤如下:

1.创建工程

把sdk中jar包拖到工程中的libs文件夹下面。

2.主类代码如下

package com.empty.weatherreport;

import com.empty.weatherreport.WeatherUtil.SCell;

import com.empty.weatherreport.WeatherUtil.SItude;

import com.imax.vmall.sdk.android.common.adapter.ServiceCallback;

import com.imax.vmall.sdk.android.entry.CapabilityService;

import com.imax.vmall.sdk.android.entry.CommonService;

import com.imax.vmall.sdk.android.huawei.weather.WeatherService;

import android.location.Location;

import android.location.LocationManager;

import android.os.Bundle;

import android.os.Handler;

import android.os.Looper;

import android.os.Message;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.ProgressDialog;

import android.content.Context;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;

import android.widget.Toast;

public class WeatherActivity extends Activity {

private MyHandler myHandler;

private ProgressDialog mProgressDialog;

private Location mLocation;

private boolean sdkStatus;

//Tool to get weather

/**

* CommonService

*/

private CommonService cs;

/**

* WeatherService

*/

private WeatherService weather;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_weather);

sdkStatus=false;

myHandler=new MyHandler();

//初始化业务接口实例

weather = CapabilityService.getWeatherServiceInstance();

//实例化CommonService

cs=CommonService.getInstance();

initSDK();

}

private void initSDK()

{

//应用ID,请去iMAX平台注册申请

String appId="******";

//应用Key

String appKey="******";

//通过CommonService调用鉴权接口,在调用其它能力前必须保证鉴权初始化成功

cs.init(WeatherActivity.this,appId, appKey, new ServiceCallback() {

public void onError(String arg0) {

// TODO Auto-generated method stub

//设置消息

Message msg = new Message();

msg = new Message();

msg.what = 2;

msg.obj = "SDK initialize failed!";

myHandler.sendMessage(msg);

}

public void onComplete(String arg0) {

// TODO Auto-generated method stub

//设置消息

Message msg = new Message();

msg = new Message();

msg.what = 2;

msg.obj = "SDK initialize success!";

sdkStatus=true;

myHandler.sendMessage(msg);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.activity_weather, menu);

return true;

}

@Override

public boolean onMenuItemSelected(int featureId, MenuItem item) {

// TODO Auto-generated method stub

if(item.getItemId()==R.id.menu_settings) Toast.makeText(getApplicationContext(), "Ha", Toast.LENGTH_SHORT).show();

if(item.getItemId()==R.id.menu_weather)

{

if(sdkStatus)

{

/** 弹出一个等待状态的框 */

mProgressDialog = new ProgressDialog(this);

mProgressDialog.setMessage("Waiting...");

mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

mProgressDialog.show();

WeatherThread m = new WeatherThread();

new Thread(m).start();

}

else

Toast.makeText(getApplicationContext(), "SDK not installed", Toast.LENGTH_SHORT).show();

}

return super.onMenuItemSelected(featureId, item);

}

/** 显示结果 */

private void showResult(String s) {

String tmp[]=s.split("\"");

for(int i=0;itmp.length;i++)

Log.i("tmp"+i, tmp[i]);

new AlertDialog.Builder(this) .setTitle("Weather") .setMessage("latitude:"+mLocation.getLatitude()+"\n longitude:"

+mLocation.getLongitude()+"\ntmperature:"+tmp[21]) .show();

}

class MyHandler extends Handler {

public MyHandler() {

}

public MyHandler(Looper L) {

super(L);

}

// 子类必须重写此 *** ,接管数据

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

Log.d("MyHandler", "handleMessage......");

/** 显示结果 */

switch(msg.what)

{

case 1:

Log.i("Error", "case1");

mProgressDialog.di *** iss();

showResult((String)msg.obj);

break;

case 2:

Toast.makeText(getApplicationContext(), (String)msg.obj, Toast.LENGTH_SHORT).show();

break;

default:;

}

super.handleMessage(msg);

// 此处可以更新UI

}

}

class WeatherThread implements Runnable {

public void run() {

final Message msg = new Message();

msg.what=1;

try {

mLocation=getLocation(WeatherActivity.this);

weather.getWeather(Double.toString(mLocation.getLongitude()),Double.toString(mLocation.getLatitude()), new ServiceCallback()

{

public void onError(String arg0)

{

//api接口调用错误响应

Log.i("Error", "getWeather error:"+arg0);

//设置消息

msg.obj = arg0;

/** 关闭对话框 */

myHandler.sendMessage(msg); // 向Handler发送消息,更新UI

}

public void onComplete(String arg0)

{

//api接口调用成功响应

Log.i("Complete", "getWeather complete:"+arg0);

//设置消息

msg.obj = arg0;

/** 关闭对话框 */

myHandler.sendMessage(msg); // 向Handler发送消息,更新UI

}

});

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

//Get the Location by GPS or WIFI

public Location getLocation(Context context) {

LocationManager locMan = (LocationManager) context

.getSystemService(Context.LOCATION_SERVICE);

Location location = locMan

.getLastKnownLocation(LocationManager.GPS_PROVIDER);

if (location == null) {

location = locMan

.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

}

return location;

}

}

3.载manifest文件中添加权限

uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"

/uses-permission

uses-permission android:name="android.permission.INTERNET"

/uses-permission

uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"

/uses-permission

uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /

uses-permission android:name="android.permission.READ_PHONE_STATE" /

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)){

//风向

}

}

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:http://w-123.com/187028.html

“android获取天气(基于android的天气预报app)” 的相关文章

Lapsus$ 再出手:泄漏 Globant 软件公司 70GB 数据

就在英国警方逮捕了 7 名嫌疑犯之后,近期非常猖獗的黑客组织 Lapsus$ 又有了新动作。在攻击微软、三星、NVIDIA 和 Okta 等公司之后,该组织再次宣布成功攻陷 Globant,后者是一家位于卢森堡的软件开发咨询公司。 在周三宣布自己“度假归来”之后,该组织在其 Telegram 频道...

TerraMaster 操作系统漏洞可能使 NAS 设备遭到远程黑客攻击

Hackernews 编译,转载请注明出处: 研究人员披露了 TerraMaster NAS设备的关键安全漏洞的细节,这些设备可以链接到未经身份验证的远程代码执行,且具有最高权限。 埃塞俄比亚网络安全研究公司 Octagon Networks 的 Paulos yibello 在分...

SentinelLabs:俄罗斯利用 AcidRain 擦除恶意软件攻击了 ViaSat

早些时候,美国卫星通信服务提供商 Viasat 遭受了一轮网络攻击,结果导致中东欧地区的服务出现了中断。而由 SentinelLabs 研究人员 Juan Andres Guerrero-Saade 和 Max van Amerongen 最新发布的安全研究报告可知,这口锅应该扣在一款名为“酸雨”(...

西班牙政府证实首相及防长手机被通过“飞马”间谍软件窃听

法新社消息,西班牙政府2日表示,该国首相桑切斯和国防部长罗伯斯的手机在一次“非法的、外部的 ”干预中被通过“飞马”间谍软件窃听。报道还称,西班牙首相府、议会关系与民主记忆大臣费利克斯·博拉尼奥斯·加西亚也证实说,“这不是推测,是非常严重的事实,希望司法部门进行调查。” 法新社报道截图 去年7月,这...

攻击者部署后门,窃取 Exchange 电子邮件

网络安全研究人员将该 APT 组织追踪为 UNC3524,并强调在某些情况下,该组织可以对受害者环境进行超过 18 个月的访问,展示了其 “先进 “的隐匿能力。 在每一个 UNC3524 受害者环境中,攻击者都会针对一个子集的邮箱,集中其注意力在执行团队和从事企业发展、兼并和收购的员工或 IT 安...

研究人员在十几个广泛使用的 URL 解析器库中发现了 bug

 Hackernews 编译,转载请注明出处: 研究员在对16种不同的URL解析库进行研究时发现了不一致和混淆,这可能被用来绕过验证,并且易受到黑客的攻击。 在一项由网络安全公司 Claroty 和 Synk 联合进行的深入分析中,他们在许多第三方库中发现八个安全漏洞,这些漏洞是用 C、 Jav...

评论列表

冢渊宠臣
2年前 (2022-07-05)

his adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_weather, menu); return true; } @Override pub

假欢鸢旧
2年前 (2022-07-05)

night        type多云/type        fengxiang无持续风向/fengxiang        fengli微风级/fengli      /night    /weather    weather      date9日星期三/da

孤央时窥
2年前 (2022-07-05)

ort android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.util.Log;import androi

冢渊惑心
2年前 (2022-07-05)

gli      /night    /weather    weather      date6日星期天/date      high高温 10℃/high      low低温 5℃/

孤鱼缪败
2年前 (2022-07-05)

gs) Toast.makeText(getApplicationContext(), "Ha", Toast.LENGTH_SHORT).show(); if(item.getItemId()==R.id

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。