,登刚刚那个网站,把基站代码输入进去,就可以基本定位了,但是基站不是特别精确,附近1000米都有可能,不能更精确了,除非你用三个基站代码综合定位。
重定位过程和 ***
3.1 nor flash启动-----只重定位 .data
为了实现修改,我们考虑将g_char保存在外部的sdram中,修改Makefile如下:
all:
arm-linux-gcc -c -o led.o led.c
arm-linux-gcc -c -o uart.o uart.c
arm-linux-gcc -c -o init.o init.c
arm-linux-gcc -c -o main.o main.c
arm-linux-gcc -c -o start.ostart.S
arm-linux-ld -Ttext 0 -Tdata 0x30000000 start.o led.ouart.o init.omain.o -o sdram.elf
arm-linux-objcopy -O binary -Ssdram.elf sdram.bin
arm-linux-objdump -D sdram.elf sdram.dis
clean:
rm *.bin *.o *.elf *.dis
编译之后,发现bin文件为800多M,显然这是不合理的
BIN文件的数值为什么是805306369?我们发现805306369=0x30000001,的确,我们在Makefile中就是指明了全局变量保存在SDRAM中,所以BIN文件的保存地址是从0~0x30000000,其大小正好是0x30000001,因此,这个时候,我们的代码段和数据段的存储格式如下:(中间产生了巨大的空洞hole)
为了解决上面的 *** ,代码过大的问题,有两种方式来解决:
A. 将data段重定位到SDRAM中,text段仍在NOR Flash中
1. 仍然将全局变量数据段和代码段烧写到nor flash中
2. 在运行时,代码段代码要能实现将数据段拷贝(重定位)到SDRAM中;
3. 以后每次访问全局变量,都是去SDRAM中去访问,不去nor flash中访问
您好,很高兴为您解答。
一、准备工作
需要如下三种软件:
1. Eclipse
2. Android SDK
3. 开发Android程序的Eclipse 插件
为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。
二、Activity类
每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造 *** ,键盘处理,挂起来恢复功能,以 及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编 写Android程序。下面是一个简单的继承Activity的例子。
public class LocateMe extends Activity{
public void onCreate(Bundle params){
super.onCreate(params);
setContentView(R.layout.main);
}
public boolean onKeyDown(int keyCode, KeyEvent event){
return true;
}
}
三 View类
View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用 来进行任意扩展。本文为了方便起见,只涉及到了两个主要的View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。
如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。这个 简单的xml文件的内容如下:
?xml version="1.0" encoding="utf-8"?
RelativeLayout xmlns:android=""
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHoriz
android:text="ress the center key to locate yourself"
/
/RelativeLayout
上面的内容的功能看起来非常明显。这个特殊文件定义了一个相关的布局,这就意味着通过一个元素到另一个元素的关系或是它们父元素的关系来描述。对于视图来 说,有一些用于布局的 *** ,但是在本文中只关注于上述的xml文件。
RealtiveLayout中包含了一个填充整个屏幕的文本框(也就是我们的LocateMe activity)。这个LocateMe activity在默认情况下是全屏的,因此,文本框将继承这个属性,并且文本框将在屏幕的左上角显示。另外,必须为这个XML文件设置一个引用数,以便 Android可以在源代码中找到它。在默认情况下,这些引用数被保存在R.java中,代码如下:
public final class R{
public static final class layout{
public static final int main=0x7f030001;
}
}
视图也可以被嵌套,但和J2ME不同,我们可以将定制的视图和Android团队发布的Widgets一起使用。在J2ME中,开发人员被迫选择 GameCanvas和J2ME应用程序画布。这就意味着如果我们想要一个定制的效果,就必须在GameCanvas上重新设计我们所有的widget。 Android还不仅仅是这些,视图类型也可以混合使用。Android还带了一个 widget库,这个类库包括了滚动条,文本实体,进度条以及其他很多控件。这些标准的widget可以被重载或被按着我们的习惯定制。现在让我们来进入 我们的例子。
四、Android实例
这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造 *** 将和上面的例子基本相同,除了在其中加入了键盘处理,现在 让我们看一下onKeyDown的代码。
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode != KeyEvent.KEYCODE_DPAD_CENTER || m_bLoading)
{
return true;
}
m_bLoading = true;
getLocation();
return true;
}
下面让我们来解释一下这段代码,首先,这段代码检查了当前被按下的键,但还没有开始处理。而是在getLocation *** 中处理这一切的。然后,将装载 flag标志以及调用getLocation *** ,下面是getLocation *** 的代码。
private void getLocation(){
Location loc;
LocationManager locMan;
LocationProvider locPro;
ListLocationProvider proList;
setContentView(R.layout.laoding);
locMan = (LocationManager) getSystemService(LOCATION_SERVICE);
proList = locMan.getProviders();
locPro = proList.get(0);
loc = locMan.getCurrentLocation(locPro.getName());
Lat = (float)loc.getLatitude();
Lon = (float)loc.getLongitude();
CreateView();
setContentView(customView);
}
到这为止,程序开始变得更有趣了。但是不幸的是,Google关于之方面的文档还是比较少了。在程序的变量声明之后,我们需要演示一些装载信息。 R.layout.loading符合了另一个简单的XML布局视图。通过简单地调用setContentView *** 可以使用转载信息重绘屏幕。
读者要注意的是:在编译时,Android会预先将所有的XML布局数据包装起来。如果我们想在编译后变化布局属性,按着规定,我们必须在源程序中做这些 事。
获得LocationManager的唯一 *** 是通过getSystemService() *** 的调用。通过使用LocationManager, 我们可以获得一个位置提供者的列表。在一个真实的手持设备中,这个列表包含了一些GPS服务。实际上,我们希望选择更强大,更精确,最后不带有其他附加服 务的GPS。现在,在模拟器中提供了一个用于测试的GPS,这个GPS来自San Francisco。定制的GPS文件可以可以被上传,并进行测试。如果我们要测试更复杂的应用,来自San Francisco的GPS可能并不适合。
目前我们可以使用位置管理器和位置提供者进行getCurrentLocation的调用。这个 *** 返回本机的当前位置的一个快照,这个快照将以 Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。现在,使用这个虚拟的手持设备,我们可以获得这个例子程序的最终结果: 建立了显示一个定制的视图。
五、使用定制视图
在最简单的窗体中,一个Android中的视图仅仅需要重载一个onDraw *** 。定制视图可以是复杂的3D实现或是非常简单的文本形式。下面的 CreateView *** 列出了上面看到的内容。
public void CreateView(){
customView = new CustomView(this);
}
这个 *** 简单地调用了CustomView对象的构造 *** 。CustomView类的定义如下:
public class CustomView extends View{
LocateMe overlord;
public CustomView(LocateMe pCtx){
super(pCtx);
overlord = pCtx;
}
public void onDraw(Canvas cvs){
Paint p = new Paint();
String sLat = "Latitude: " + overlord.getLat();
String sLon = "Longitude: " + overlord.getLon();
cvs.drawText(sLat , 32, 32, p);
cvs.drawText(sLon, 32, 44, p);
}
}
这个定制的Android视图获得了经度和违度的测试数据,并将这些数据显示在屏幕上。这要求一个指向LocateMe的指针,Activity类是整 个应用程序的核心。它的两个 *** 是构造 *** 和onDraw *** 。这个构造 *** 调用了超类的构造 *** 以及引起了Activity指针的中断。onDraw方 法将建立一个新的Paint对象(这个对象封装了颜色、透明度以及其他的主题信息),这个对象将会访问颜色主题。在本程序中,安装了用于显示的字符串,并 使用画布指针将它们画到屏幕上。这个和我们了解的J2ME游戏的画布看起来非常类似。
六、Android展望
从纯粹的开发观点看,Android是一个非常强大的SDK。它使用基于XML的布局和定制视图联合了起来。并可以使用滚动条、地图以及其他的组件。所以 的这一切都可以被重载,或由开发人员来定制。但它所提供的文档非常粗糙。在文档中并没有象 *** S等技术,但是从整体上来看Android SDK,还是非常有希望的。也非常符合Google承诺的“First Look”SDK。现在我们要做的就是等待Google发布之一个基于Android的手机,并使用它。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
1、可以换一个手机地图试试,特别是腾讯地图,直接打开后就可以自动定位当前位置,不用代码什么的
2、普通模式启动全程联网,支持全部功能;
3、开启离线零流量模式可断开 *** ,支持浏览地图、搜索地点、查询公交和驾车路线、语音导航、路口实景图和步行导航等用户核心功能。注意:零流量地图使用需要提前下载好城市的离线地图数据包。
1、首先打开一个需要编辑的电子表格,如下图:
2、然后在电子表格中输入数据资料,如下图:
3、然后选中需要挑选空值表格的数据表格(注意需要把整个数据表选中),如下图:
4、选中数据表之后,在“开始”菜单中,选择“查找”,如下图:
5、在倒三角中选择“定位”,进入到一个边框中“定位”,如下图:
6、接下来需要选择"空值“点击确定,
7、即可选择所有的空白表格,如下图:
欧洲央行前行长德拉吉将出任意大利总理 新华社罗马2月12日电(记者陈占杰)欧洲央行前行长马里奥·德拉吉12日晚宣布,他已正式接受意大利总统马塔雷拉的任命,作为总理领导意大利新一届政府。 ...
相信大家的"钱包"也相应的不同程度的缩水。咋眼间快到年底了,大家都知道每逢年底都是用钱高峰期,但是银行等各类金融机构也会相应的在年底收紧贷款政策,尤其是房贷一般过了11月份基本就不审批了,那么在"钱荒...
知道个人o499号可以查看到两个人的开房信息如何查找别人已删除的好友扣扣聊天记录除开水饺,它很好吃。水饺怎么样在于水饺的馅 。假如你肯定不会卷饺皮也没事儿。假如你买现有的水饺 ,你务必学好自己做。混和...
20、!@#$%^&* (新呈现)这儿,咱们引证回形针PaperClip的视频来介绍一下关于“智能机器人”运转办法的解说。 在这一年之中,APT进犯最值得注意的展开是什么?咱们能够从中学到什么...
北宋行政:1005年到1008年,今青海、甘肃、陕西的州府 1、相州,北魏置,北魏天兴四年(401年)以邺行台所辖六郡(魏郡、阳平、广平、汲郡、顿丘、清河)改设为相州,位于今河南北部安阳市与河北省临漳...
能够应用优化系统开机速度。打开软件,点一下优化加速,点一下全方位加快,马上提升,启用选中,点一下确定提升,等候提升进行就可以。 知名品牌型号规格:想到GeekPro 2020 系统软件:win...