eclipse开发android手机定位
一、eclipse开发环境搭建
1. JDK安装和部署
1) JDK下载
地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
本案例下载jdk5.0
2) JDK安装
默认安装即可;
3) JDK部署
【我的电脑】—右键—【属性】—【高级】-【环境变量】:
JAVA_HOME= C:/Program Files/Java/jdk1.5.0_02,说明是jdk安装路径
CLASSPATH=%JAVA_HOME%/lib
Path增加:%JAVA_HOME%/bin
2. Eclipse安装
地址:http://www.eclipse.org/downloads/
本案例下载eclipse3.6.2
解压缩即可;
打开eclipse.exe,进入【Window】—【Preferences】—【Java】检查Jre安装,入没有则配置路径。
二、android sdk和adt嵌入eclispse
1.ADT安装
1)下载地址:http://www.android123.com.cn/android_kit.html
2)安装:启动Eclipse,选择【Help】 > 【install new software...】,打开界面上输入ADT解压地址,然后安装即可;
本案例安装ADT8.0.0
3. Android sdk安装
1)下载地址:http://developer.android.com/sdk/index.html
2)解压即可;
3)安装:启动Eclipse,选择【Window】 > 【Preferences】>【Android】,直接设定"SDK Location"为SDK的安装解压目录;
4)配置:选择【Window】>【Android SDK and AVD Manager】,安装SDK版本和
部署dvd;
本案例安装sdk2.2,API8
至此eclipse开发android即可;
5)android sdk升级Google API
如果要开发手机定位,则需要通过【Window】>【Android SDK and AVD Manager】安装Google API,本案例安装与SDK同样的API8的Google API;
三、创建android工程
1.创建mamdemo工程,包命名为cn..map,命名GMapsActivity的Activity;
2.AndroidManifest.xml配置
<uses-library android:name="com.google.android.maps"/>--含库,application内加
<uses-permission android:name="android.permission.INTERNET" />--网络访问权限,application外加
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>--GPS访问权限,application外加
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>--GPS访问权限,application外加
3. Main.xml配置
增加:<com.google.android.maps.MapView
android:id="@+id/MapView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0L8E3nd9sIKt0X7nSW8yOqMsAx9ftQlWotNgUXw"
/>
其中android:apiKey需要申请:
1) debug.keystore路径:
【Window】 > 【Preferences】>【Android】>【Build】页:default debug keystore框内路径即是;
2) Java的Keytool工具路径:
%JAVA_HOME%/bin路径下有keytool.exe;
3) 产生MD5
在cmd环境下,切换至debug.keystore路径,并执行命令:keytool -list -keystore debug.keystore,当提示你输入密码时,输入默认的密码android,这样就可以取得MD5值;
4) 获取API key
http://code.google.com/intl/zh-CN/android/maps-api-signup.html
输入MD5值获取APIkey,配置到main.xml中;
5.Activity开发
package cn.map;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.Toast;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapController;
import com.google.android.maps.Overlay;
public class GMapsActivity extends MapActivity {
private MapView mMapView;
private MapController mMapController;
private GeoPoint mGeoPoint;
double latitude,longitude;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.MapView1);
mMapView.setTraffic(true);//设置为交通模式
//mMapView.setSatellite(true); //设置为卫星模式
//mMapView.setStreetView(false);//设置为街景模式
mMapController = mMapView.getController(); //取得MapController对象(控制MapView)
mMapView.setEnabled(true);
mMapView.setClickable(true);
mMapView.setBuiltInZoomControls(true); //设置地图支持缩放
mGeoPoint = new GeoPoint((int) (23* 1000000), (int) (113* 1000000)); //设置起点为广州
mMapController.animateTo(mGeoPoint); //定位到指定坐标
mMapController.setZoom(12);//设置倍数(1-21)
//添加Overlay,用于显示标注信息
MyLocationOverlay myLocationOverlay = new MyLocationOverlay();
List<Overlay> list = mMapView.getOverlays();
list.add(myLocationOverlay);
//通过GPS获取指定坐标
openGPSSettings();
getLocation();
}
protected boolean isRouteDisplayed()
{
return false;
}
class MyLocationOverlay extends Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Paint paint = new Paint();
Point myScreenCoords = new Point();
// 将经纬度转换成实际屏幕坐标
mapView.getProjection().toPixels(mGeoPoint, myScreenCoords);
paint.setStrokeWidth(1);
paint.setARGB(255, 255, 0, 0);
paint.setStyle(Paint.Style.STROKE);
canvas.drawText("广州欢迎你", myScreenCoords.x, myScreenCoords.y, paint);
return true;
}
}
private void openGPSSettings() {
LocationManager alm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent,0); //此为设置完成后返回到获取界面
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
// log it when the location changes
if (location != null) {
latitude = location.getLatitude(); //维度
longitude= location.getLongitude(); //经度
mGeoPoint = new GeoPoint((int)latitude, (int)longitude);
mMapController.animateTo(mGeoPoint); //定位到指定坐标
mMapController.setZoom(12); //设置倍数(1-21)
}
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
// Provider被disable时触发此函数,比如GPS被关闭
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
//Provider被enable时触发此函数,比如GPS被打开
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
//Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
}
};
private void getLocation(){
// 获取位置管理服务
LocationManager locationManager;
String serviceName = Context.LOCATION_SERVICE;
locationManager = (LocationManager) this.getSystemService(serviceName);
// 查找到服务信息
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 高精度
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 低功耗
String provider = locationManager.getBestProvider(criteria, true);
// 获取GPS信息
Location location = locationManager.getLastKnownLocation(provider);
// 通过GPS获取位置
if (location != null) {
latitude = location.getLatitude(); //维度
longitude= location.getLongitude(); //经度
mGeoPoint = new GeoPoint((int)latitude, (int)longitude);
mMapController.animateTo(mGeoPoint); //定位到指定坐标
mMapController.setZoom(12); //设置倍数(1-21)
}
// 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000)或最小位移变化超过N米
locationManager.requestLocationUpdates(provider, 100*1000, 500,locationListener);
}
}
四、打包android工程
【Export】—【Android】或【Android Tools】—【Export unsigned/ signed Application package】,按步骤即可生产apk文件。关键步骤是重新生成API key:
1.生成生产的keystore:
【Android Tools】—【Export signed Application package】,步骤二中选择“create new keystore”,本案例中:Location=D:/android/workspace/mapdemo.keystore;Password=mapdemo。步骤三中输入keystore各项信息,本案例中:alias=mymapdemo;Password=mapdemo;其他各项照填即可;最后步骤生成apk,这个apk文件还不能发布,需要在后面加上生产API KEY后重新发布。
2.获取MD5和API Key
1)MD5:cmd命令下,切换到D:/android/workspace目录,然后执行命令:keytool –list –keystore mapdemo.keystore,输入密码:mapdemo,产生MD5:DA:D3:46:4F:3D:D9:BD:4C:80:B5:F2:0C:03:3B:A1:16
2)http://code.google.com/intl/zh-CN/android/maps-api-signup.html
输入MD5值获取APIkey:
android:apiKey="0L8E3nd9sIKvPOTtgAttDJpMlCynuALRiOzVz4g",
修改main.xml中原debug.keystore生产的API key;
3) 重新发布apk文件
【Android Tools】—【Export signed Application package】,步骤二中选择“Use Existing keystore”,本案例中:
Location=D:/android/workspace/mapdemo.keystore;Password=mapdemo;
步骤三中也是选择“Use existing keystore“,本案例中:alias=mymapdemo;Password=mapdemo;最后步骤生产apk文件,可发布。
说明:模拟器上演示地点地图通过,但手机移动GPS定位地图未测试!android2.1手机提示解析包出错,android2.2手机安装成功,和开发的skd2.2版本一致!
eclipse开发android手机定位相关推荐
- Eclipse开发Android程序如何在手机上运行
http://www.cnblogs.com/plwang1990/archive/2011/07/04/2097757.htm android开发不论是在真机上调试还是最终发布到真机上都非常简单,过 ...
- 用eclipse开发android小程序,【转】Eclipse 开发Android小程序遇到的问题总结
用Eclipse 开发Android小程序遇到些小问题,在一边学习的过程中,将遇到的问题就记录一下,方面挺杂的,有关于程序出错的,关于linux应用的,有eclipse设置等- 1.ERROR: Ap ...
- Eclipse开发Android常用快捷键
转载自王路情老师的博客 http://blog.csdn.net/wangloveall/article/details/8100701 在利用Eclipse进行Android开发的过程中,掌握一 ...
- Android开发——Android手机屏幕适配方案总结
0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...
- android手机定位
做移动互联网就不太可能不碰手机端的开发.上周为了项目需要,俺也挽袖子抡胳膊开始写起了android程序,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的. 网上也搜得到一些相关的 ...
- 如何使用eclipse开发android
本文示例代码下载地址: http://www.ibm.com/developerworks/cn/education/opensource/os-eclipse-android/downloads.h ...
- 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc
基于android平台的天气预报软件的设计与实现 摘 要 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备.因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项. ...
- python开发安卓程序-如何使用python开发Android手机应用?
在使用python开发android应用之前我们需要准备好环境,环境需要安装PythonForAndroid,然后开始编程,编程时打开eclipse, 创建一个新的android project &q ...
- Eclipse开发Android错误
安装完ADT 将androiddevtools下载好的zip压缩包,解压到想要安装的文件夹 打开压缩后的文件夹,启动SDK Manager,下载所需文件(未设置代理,未修改hosts) 情况: 如果不 ...
最新文章
- JS放在博客里面运行
- POJ1178枚举三个地方(所有点都去同一个点)
- Fescar锁和隔离级别的理解
- MyCat学习:使用MySQL搭建主从复制(双主双从模式)
- pythonanywhere.com的用法
- jq 控制td只显示一行_CSS让表格里的内容强制显示一行,超出长度显示省略号
- linux 调优系列
- FaceBoxes—官方开源CPU实时高精度人脸检测器
- Java基础学习总结(108)——Java常见面试题再总结
- 作为互联网面临的最大危险之一,当前的 DDoS 趋势如何?
- 接口的实际应用---制定标准
- 求数组中最大值和次大值
- 【笔记整理】电磁场复习——麦克斯韦四个方程组
- 阿里云热修复Sophix接入
- 最速降线问题——欧拉-拉格朗日方程的推导
- 经历了6面,终于入职蚂蚁金服
- 认知系列4: 《认知突围》笔记
- 变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
- [渝粤教育] 兰州文理学院 信息技术基础 参考 资料
- 【QT】Qt Compiler Detection(编译)
热门文章
- 泛域名解析怎么做php,nginx如何做泛域名解析
- data.push({name:'a',value:'a'});
- 学习OpenGL:笔记一
- 19、HTML5 新的 Input 类型
- 【转载】SQL执行计划
- BZOJ 2244: [SDOI2011]拦截导弹 DP+CDQ分治
- HttpClient使用方法(包括POST文件)
- 使用CSS3各个属性实现小人的动画
- 用于主题检测的临时日志(d94169f9-f1c0-45a2-82d4-6edc4bd35539 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
- phpstrtotime()对于31日求上个月有问题