视频地址:http://www.verycd.com/files/0939a15c475c93832b4d1acd104c9df4135088640
百度地图移动版介绍:
1.百度地图移动版API是一套基于移动互联网设备的应用程序接口,支持ios/android平台。
2.通过该接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图移动API不仅包含构建地图的基本接口,还提供了诸如定位服务、本地搜索、路线规划等数据服务,你可以根据自己的需要进行选择。
关于百度地图修改的BUG
1.百度地图移动版API 1.3.3版本(Android)
2.修改国外gps坐标转为百度坐标错误的问题
3.添加搜索在线建议词功能
4.关于1.3.3版本升级的详细内容和历史升级请参考更新日志。在类参考文档中,我们也增加了接口说明。
百度地图官网地址:http://dev.baidu.com/wiki/imap/index.php
新地址:http://developer.baidu.com/map/
1. 配置Manifest.xml 文件
添加百度地图开发的授权:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission> <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.WRITE_EXTERNAL_STORAGE" ></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" ></uses-permission>
添加对屏幕的支持:
<supports-screens
android:largeScreens="true"android:normalScreens="true" android:smallScreens="true"android:resizeable="true"
android:anyDensity="true"/>
2. 在libs中添加 百度地图的jar包 baidumapapi.jar
3. 在布局文件main.xml中添加显示
<com.baidu.mapapi.MapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true"/>
4 .Activity中的定义
类 BMapManager 是一个地图引擎管理类,通过此类的start()方法,可以打开地图API;通过此类的stop()方法,可以终止百度地图API,调用此函数后,不会再发生回调。 通过init(String strKey,MKGeneralListener listener)方法初始化。在程序退出的时候调用此类中destory()方法。
接口 MKGeneralListener 用于监听授权之后的结果,察看Key的状态是否正确。300 表示验证失败。
类MapActivity 用来显示管理MapView类中activity处理逻辑的基础类。其中的initMapActivity(BMapManager bmapMan)用于初始化Activity。
类GeoPoint 表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储
注意事项:
地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init,start,stop,destory。建议在Appliaction里生成BMapManager对象并初始化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start,onDestory调用stop,或者onResume/onPause分别调用start和stop方法。
MainActivity:
package com.android.android_baidu_demo; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends MapActivity { //添加百度地图的相关控件 private MapView mapView; //加载地图的引擎 private BMapManager bMapManager; //百度地图的key private String KeyString = "8C426377B3526B6BF3672C9BA3BB544D1E8289CD"; //在百度地图上添加一些控件,比如是放大或者缩小的控件 private MapController mapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mapView = (MapView) this.findViewById(R.id.bmapView); bMapManager = new BMapManager(MainActivity.this ); //必须要加载key bMapManager.init(KeyString, new MKGeneralListener() { public void onGetPermissionState(int arg0) { if(arg0==300){ Toast.makeText(MainActivity.this, "输入的key有错,请核实!!", 1).show(); } } public void onGetNetworkState(int arg0) { } }); this.initMapActivity(bMapManager); //表示可以设置缩放功能 mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); //需要定义一个经纬度:北京天安门 GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); mapController.setCenter(geoPoint);//设置一个中心点 mapController.setZoom(12);//设置缩放级别是12级别 } @Override protected void onDestroy() { super.onDestroy(); if(bMapManager!=null){ bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { super.onResume(); if(bMapManager!=null){ bMapManager.start(); } } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if(bMapManager!=null){ bMapManager.stop(); } } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
源代码下载:http://download.csdn.net/detail/wenquan125/4786152
自己在Xcode4.5上写的ios小程序,由于在两台机器上进行了修改。当从一台机器上把源码拷贝到另一台机器上时,出现了如下错误。
fatal error: file'/Volumes/work/iosdev/LoveWeather/LoveWeather/LoveWeather-Prefix.pch' has beenmodified since the precompiled header was built
在网上没有找到合适的解决方法之后,自己试着做了如下修改,程序运行正常了。
错误修改
找到***-Prefix.pch文件,把中间的
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
注释掉。运行程序。Bulid success之后。程序停止运行。解开注释。再运行一次就好了。
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark。
一:触发方式
STM32 的外部中断是通过边沿来触发的,不支持电平触发;
二:外部中断分组
STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。
STM32 分组和对应中断处理函数分配:
管脚
中断标志
中断处理函数分配
PA0~PG0
EXTI0
EXTI0_IRQHandler
PA1~PG1
EXTI1
EXTI1_IRQHandler
PA2~PG2
EXTI2
EXTI2_IRQHandler
PA3~PG3
EXTI3
EXTI3_IRQHandler
PA4~PG4
EXTI4
EXTI4_IRQHandler
PA5~PG5
EXTI5
EXTI9_5_IRQHandler
PA6~PG6
EXTI6
PA7~PG7
EXTI7
PA8~PG8
EXTI8
PA9~PG9
EXTI9
PA10~PG10
EXTI10
EXTI15_10_IRQHandler
PA11~PG11
EXTI11
PA12~PG12
EXTI12
PA13~PG13
EXTI13
PA14~PG14
EXTI14
PA15~PG15
EXTI15
三:外部中断的配置过程
l 配置触发源 -GPIO
触发源为通过GPIO端口输入,所以,要配置GPIO的模式,输入方式,输入方式有以下几种:
1.GPIO_Mode_AIN ,模拟输入(ADC模拟输入,或者低功耗下省电)
2.GPIO_Mode_IN_FLOATING ,浮空输入
3.GPIO_Mode_IPD = 0x28,带下拉输入
4.GPIO_Mode_IPU = 0x48,带上拉输入
l 引脚与外部中断关联
l 外部中断AFIO时钟开启
l 外部中断配置
这个主要是中断线路选择,中断触发方式,中断使能。
l 中断优先级配置 NVIC
l 中断处理函数的编写。
四:外部中断函数不能进入的原因分析
结合我工作中的遇到的问题可以分为:
1)GPIO或者AFIO的时钟没有开启;
2)GPIO和配置的中断线路不匹配;
3)中断触发方式和实际不相符合;
4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线;
5)外部中断是沿触发,有可能不能检测到沿,比如 中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平;
6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;,因为软件中断先于边沿中断处理。