【AIDE教程】APIStore移动开发SDK的使用for android
aide吧
全部回复
仅看楼主
level 12
APIStore移动开发SDK是百度APIStore为方便移动开发者快速、便捷调用APIStore服务所开发的SDK包,封装了完整的异步网络请求和回调逻辑。回调的好处就是,可以直接修改UI。
做个demo仅供参考
2016年06月02日 00点06分 1
level 12
新建工程,这里用的是Gradle
名字、包名随意起
2016年06月02日 00点06分 3
百度api最新sdk1.0.4下载地址,猛戳这里http://pan.baidu.com/share/link?shareid=1037568807&uk=4278446371
2016年06月11日 10点06分
level 12
新建libs文件夹,并将sdk复制粘贴至此文件夹中
2016年06月02日 01点06分 4
level 12
打开app文件下的build.gradle
插入compile files('libs/ApiStoreSDK1.0.4.jar')
并保存
2016年06月02日 01点06分 5
level 12
在配置清单中添加sdk所需权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
2016年06月02日 01点06分 6
level 12
添加
android:name=".APIStore"
android:supportsRtl="true"
APIStroe可以随意起
2016年06月02日 01点06分 7
level 12
新建类
类名和刚才添加的APIStore保持一致
删除掉3、4、5行的代码,复制粘贴以下代码
importandroid.app.Application;
// 请在AndroidManifest.xml中application标签下android:name中指定该类
public class APIStore extends Application {
@Override
publicvoid onCreate() {
// TODO您的其他初始化流程
ApiStoreSDK.init(this, "您的apikey");
super.onCreate();
}
}
正常的话只会报一个错,如果提示你在public处报错,则类名打错了,应和文件名一致
长按报错的地方,点击修复,会自动添加
2016年06月02日 01点06分 8
level 12
apikey可在apistore登录后,查看个人中心或者任何一个服务的详情页获得
具体这里不讲,如图
2016年06月02日 01点06分 9
level 12
在main.xml中进行简易布局设置
为省事,这里的id直接套用系统自定义
2016年06月02日 01点06分 11
level 12
打开MainActivity,将8~14行的代码删掉,复制粘贴以下代码
TextView mTextView;
Button test;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
intUI();
}
private void intUI() {
mTextView = (TextView) findViewById(R.id.mainTextView1);
test = (Button) findViewById(R.id.mainButton1);
test.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTextView.setText("");
apiTest();
}
});
}
private void apiTest() {
Parameters para = new Parameters();
para.put("citypinyin", "beijing");
ApiStoreSDK.execute("http://apis.baidu.com/apistore/weatherservice/weather",
ApiStoreSDK.GET,
para,
new ApiCallBack() {
@Override
public void onSuccess(int status, String responseString) {
Log.i("sdkdemo", "onSuccess");
mTextView.setText(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");
}
return str.toString();
}
}
挨个长按修复,选择import那项
ok,编译运行吧
2016年06月02日 01点06分 12
level 12
返回的数据中errmsg提示为apikey不存在,所以要将自己的apikey插入到APIStore中
再编译运行就好了,可以正常返回所需查询的信息
2016年06月02日 01点06分 13
怎么将自己的apikey插入到APIStore中,求告知,谢谢!
2018年04月09日 07点04分
level 12
可以看到,服务器返回的是json式的string数据,下面解析json
具体原理可以看这篇博客
http://blog.csdn.net/onlyonecoder/article/details/8490924
(android Json解析详解(详细代码))
这里只放代码
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();
}
}
点击长按修复相关错误后,在代码大概59行位置改成weathershow(responseString);
2016年06月02日 02点06分 14
level 12
编译运行,如图very ok
2016年06月02日 02点06分 15
level 11
好贴,mark
2016年06月02日 02点06分 16
level 12
在这里,点击按钮,只是固定的获取北京的天气信息,下面实现输入地名拼音查询天气信息
2016年06月02日 02点06分 17
1 2 尾页