首先分享一个使用android studio常见的问题
手贱删了jdk,重装以后就遇到这个问题
Error: Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Vishnu Ruhela\AppData\Local\Android\sdk\build-tools\21.1.2\aapt.exe'' finished with non- zero exit value 1
相信这个问题还是比较常见的,如新建module时。。
解决方法:
详情见图,解决方法来自stackoverflow论坛
确实比度娘靠谱多了
接下来就是逆地理编码的一些问题记录
private void showLocation(final Location location) {
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection urlConnection=null;
try{
String sin="http://api.map.baidu.com/geocoder/v2/?ak=HVIGzbKMkxyCI3sKZwyjWnaRIdtudAtI&mcode=56:13:F6:43:D9:B8:61:E3:01:1B:01:26:2D:F4:5F:E9:B0:6A:A4:97;com.example.maplocationtest&location="
+39.983424+","+116.322987+"&output=json&pois=1";
URL url=new URL(sin);
urlConnection= (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(8000);
urlConnection.setReadTimeout(8000);
urlConnection.setRequestProperty("Charset","utf-8");
if(urlConnection.getResponseCode()==200) {
InputStream in=urlConnection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
String line ;
StringBuilder response = new StringBuilder();
line=reader.readLine();
while (line!= null) {
response.append(line);
line=reader.readLine();
}
Log.d("Succeed",response.toString());
JSONObject jsonObject1=new JSONObject(response.toString());
JSONObject jsonObject=jsonObject1.getJSONObject("result");
if(jsonObject!=null) {
String address = jsonObject.getString("formatted_address");
Message message = new Message();
message.what = SHOW_LOCATION;
message.obj = address.toString();
handler.sendMessage(message);
}
}
// JSONObject jsonObject=new JSONObject(response.toString());
// JSONArray array=jsonObject.getJSONArray("result");
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
耗时操作写在线程了这没啥好说,关键在定义URL地址是国内是用不了google Map,用了百度地图进行测试(PS:个人在这里卡了好久,android刚开始入门,见谅)ak位置填的是在百度地图API创建的密钥匙,若不改这里直接打开网址,会出现,{Status: 220,……} 乱码错误,第二个一定要添加mocode此位置填写安全码,不填会出现{Status:102,。。。。},此为验证开发者。location部分填写lat,lng地址(经纬度),output这里选择返回的数据类型。(PS:个人亲测使用win10 的IE打不开用json返回的数据类型 如:无法解析用户xx.js)换个浏览器就可以
HttpCilent在API22被废弃,所以这边使用httpUrlConnection发送http请求
tips:若坚持使用httpclient在File->project Structure->module->选择自己的module->Dependencies->选择加号->library dependency添加httpclient包名即可使用httpclient
然后是解析JSON数据格式,(这里也卡了挺久,开始没搞明白JSONObject and jsonArray的用法)它们的主要区别是,object用来解析对象,array解析数组,更直观的表现为array解析【】类型数据,object 解析{ },这里只返回一个地址直接使用jsonObject解析,使用getObject一层层进入result ->formatted address
最后在AndroidManifest添加
这个不能忘
PS:都是一些很小的问题,或许很简单,但是的确卡了自己很久,所以记录一番喽