Android中获取网络天气数据
16lz
2021-01-22
//这是主类MainActivity,大部分操作在这里面完成,还有另一类MyApplication也很重要,有最重要 的ApiKey在里面
package com.example.day020c;
import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.apistore.sdk.ApiCallBack;
import com.baidu.apistore.sdk.ApiStoreSDK;
import com.baidu.apistore.sdk.network.Parameters;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity{
TextView mTextView;
EditText mEditText;
Button test;
Context context;
String cityname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
intUI();
}
private void intUI() {
mTextView = (TextView) findViewById(R.id.mainTextView);
test = (Button) findViewById(R.id.mainButton);
test.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mEditText=(EditText) findViewById(R.id.mainEditText);
cityname=mEditText.getText().toString().trim();
mTextView.setText("");
apiTest();
}
});
}
@SuppressWarnings("unchecked")
private void apiTest() {
Parameters para = new Parameters();
para.put("citypinyin", cityname);
ApiStoreSDK.execute("http://apis.baidu.com/apistore/weatherservice/weather"
//ApiStoreSDK.execute("http://apis.baidu.com/3023/weather/weather"
,ApiStoreSDK.GET,para,new ApiCallBack(){
@Override
public void onSuccess(int status, String responseString)
{
Log.i("sdkdemo", "onSuccess");
weathershow(responseString);
//mTextView.setText(responseString);
System.out.println(responseString);
}
@Override
public void onComplete() {
Log.i("sdkdemo", "onComplete");
}
@Override
public void onError(int status, String responseString, Exception e) {
Log.i("sdkdemo", "onError, status: " + status);
Log.i("sdkdemo", "errMsg: " + (e == null ? "" : e.getMessage()));
mTextView.setText(getStackTrace(e));
}
});
}
String getStackTrace(Throwable e)
{
if (e == null)
{
return "";
}
StringBuilder str = new StringBuilder();
str.append(e.getMessage()).append("\n");
for (int i = 0; i < e.getStackTrace().length; i++)
{
str.append(e.getStackTrace()[i]).append("\n");
}
System.out.println(str.toString());
return str.toString();
}
private void weathershow(String json){
try {
JSONObject retData = new JSONObject(json).getJSONObject("retData");
String postCode = retData.getString("postCode");
String cityCode = retData.getString("citycode");
String city = retData.getString("city");
String pinyin = retData.getString("pinyin");
String date = retData.getString("date");
String time = retData.getString("time");
String longitude = retData.getString("longitude");
String latitude = retData.getString("latitude");
String weather = retData.getString("weather");
String temp = retData.getString("temp");
String l_tmp = retData.getString("l_tmp");
String h_tmp = retData.getString("h_tmp");
String WD = retData.getString("WD");
String WS = retData.getString("WS");
String sunrise = retData.getString("sunrise");
String sunset = retData.getString("sunset");
mTextView.setText("\n城市:"+city+"\n拼音:"+pinyin+"\n城市编码:"+cityCode+"\n日期:"+date+"\n更新时间:"+time+"\n邮编:"+postCode
+"\n经度:"+longitude+"\n纬度:"+latitude+"\n天气:"+weather+"\n温度:"+temp+"\n最低温度:"+l_tmp+"\n最高温度:"+h_tmp+"\n风向:"+WD
+"\n风力:"+WS+"\n日出时间:"+sunrise+"\n日落时间:"+sunset);
} catch (JSONException e) {
System.out.println("Json parse error");
e.printStackTrace();
}
}
}
//MyApplication,里面的ApiKey必须每个开发者自己去ApiStore申请一个唯一的ApiKey才可以,
package com.example.day020c;
import com.baidu.apistore.sdk.ApiStoreSDK;
import android.app.Application;
public class MyApplication extends Application {
public void onCreate() {
// TODO 您的其他初始化流程
ApiStoreSDK.init(this, "你自己的ApiKey");//一定要记得写自己的ApiKey
super.onCreate();
}
}
更多相关文章
- ffmpeg从视频中提取帧时间戳
- js实现把整数秒转化为"hh:mm:ss"的时间格式.
- Java获得文件的创建时间(精确到秒)
- Java中累计时间的计算(以小时为最终结果)
- 如果服务器位于不同的位置,如何保存客户端机器时间
- java时间转换,long , string和date和时间戳的互转
- Java时区转换与时间格式