当前位置:首页 > 代码 > 正文

gps中频模拟器源代码(gps中频信号)

admin 发布:2022-12-19 22:11 152


本篇文章给大家谈谈gps中频模拟器源代码,以及gps中频信号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

android 模拟器怎么模拟nmea

Android中提供了一个模拟器来模拟ARM核的移动设备。Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目 ,它可以提供一个虚拟的ARM移动设备。Android模拟器被命名为goldfish,用来模拟包括下面一些功能的ARM SoC:

* ARM926ej-S CPU

* Thumb support

* MMC

* RTC

* Keyboard

* USB Gadget

* framebuffer

* TTY driver

* NAND FLASH

Android模拟器所对应的源代码主要在external/qemu目录下。如果你想将Android移植到其他设备上,熟悉它目前所针对的模拟器环境可以提供一些参考。

对于应用程序的开发者,模拟器提供了很多开发和测试时的便利。无论在Windows下还是Linux下,Android模拟器都可以顺利运行,并且Google提供了Eclipse插件,可将模拟器集成到Eclipse的IDE环境。当然,你也可以从命令行启动Android模拟器。

这款模拟器功能非常齐全,电话本、通话等功能都可正常使用(当然你没办法真的从这里打电话)。甚至其内置的浏览器和Google Maps都可以联网。用户可以使用键盘输入,鼠标点击模拟器按键输入,甚至还可以使用鼠标点击、拖动屏幕进行操纵。

当然模拟器毕竟是模拟器,和真实的机子还是存在差别的,

android模拟器和真机的不同之处:

* 不支持呼叫和接听实际来电;但可以通过控制台模拟电话呼叫(呼入和呼出)

* 不支持USB连接

* 不支持相机/视频捕捉

* 不支持音频输入(捕捉);但支持输出(重放)

* 不支持扩展耳机

* 不能确定连接状态

* 不能确定电池电量水平和交流充电状态

* 不能确定SD卡的插入/弹出

* 不支持蓝牙

2、创建和启动Android模拟器

要玩GPhone的模拟器,当然需要先去(如果打不开就用)上面下载Android 的SDK,解压出来后在SDK的根目录下有一个tools文件夹,里面就是模拟器和一些非常有用的工具。(SDK详细的安装过程请参照 )

要正确的启动模拟,你必须先要创建一个 AVD( Android Virtual Device 虚拟设备 ),你可以利用AVD创建基于不同版本的模拟器,下面就介绍如何创建AVD:

(1) 查看当前支持版本(在列出的版本中我们需要记住id值,这个值在第2步中使用):

magicyu@magicyu-desktop:~$ android list target

你可以看到几个Available Android targets,比如:Name: Android 1.6,他们有各自的id号。

(2) 创建AVD:

magicyu@magicyu-desktop:~$ android create avd -n magicyu -t 2

-n后面接需要创建avd的名字,-t后面接需要创建虚拟器的类型,2即为步骤(1)中得到的类型id号。

(3) 查看是否创建成功(如果成功会显示刚才我们创建的avd信息):

magicyu@magicyu-desktop:~$ android list avd

(4) 启动模拟器:

magicyu@magicyu-desktop:~$ emulator @magicyu 或者

emulator -avd magicyu

其中@和-avd后接的是你创建过的avd名字

(5) 选择启动的皮肤

magicyu@magicyu-desktop:~$ emulator -avd magicyu -skin QVGA

skin后面接所要启动皮肤的类型,所有的类型可以在/ platforms/android-1.*/skins目录下找到,*为所指的版本。如在1.6版本的SDK下有HVGA,QVGA, WVGA800,WVGA854几种。按Ctrl+F11,可以直接改变模拟器的横纵摆放。

当然AVD也可以在Eclipse中创建和启动。关于Eclipse+ADT+SDK的安装请参见。

运行Eclipse,Window-Android SDK and AVD Manager,就能得到如下的界面,选择新建即可新建一个AVD。

3、Android模拟器的一些工具

(1)adb:

ADB(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态还可以进行以下的操作:

a、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;

b、在设备上运行shell命令;

c、管理设备或手机模拟器上的预定端口;

d、在设备或手机模拟器上复制或粘贴文件

一些常用的操作:

进入Shell: adb shell

通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:

adb shell [command]

如:adb shell dmesg会打印出内核的调试信息。

(Android的linux shell做了大量精简,很多linux常用指令都不支持)

上传文件: adb push

下载文件: adb pull

安装程序: adb install

卸载软件: adb shell rm /data/app/

补充一点,通过adb安装的软件(*.apk)都在”/data/app/”目录下,所以安装时不必制定路径,卸载只需要简单的执行”rm”就行。

结束adb: adb kill-server

显示android模拟器状态:

adb devices (端口信息)

adb get-product (设备型号)

adb get-serialno (序列号)

等待正在运行的设备: adb wait-for-device

端口转发: adb forward adb forward tcp:5555 tcp:1234

(将默认端口TCP 5555转发到1234端口上)

查看bug报告: adb bugreport

adb shell sqlite3 访问数据库SQLite3

adb shell logcat -b radio 记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录

应用程序配置文件:

“AndroidManifest.xml”中

“”

决定是否应用程序是否显示在Panel上

(2)am指令(在shell内使用am来加载android应用):

am [start|instrument]

am start [-a ]

[-d ]

[-t ]

[-c [-c ] …]

[-e [-e ...]

[-n ] [-D] []

am instrument [-e ]

[-p ]

[-w]

启动浏览器:

am start -a android.intent.action.VIEW -d

拨打电话:

am start -a android.intent.action.CALL -d tel:10086

启动google map直接定位到北京:

am start -a android.intent.action.VIEW geo:00?q=beijing

(3)为模拟器加上SD卡:

emulator -sdcard dcard.img

下面我们再来说说如何创建”sdcard.img”文件:

“tools”目录下还有另外一个很好用的工具mksdcard,一看名字就知道——make sdcard。对,就用它来创建一个“SD卡”。

命令为:

mksdcard 1024M D:dcard.img

OK这样一个容量为1G的SD卡就创建完毕了。

使用SDCard:

创建: mksdcard

(bytes(default),K,M)

连接到模拟器: emulator -sdcard

传文件到SDCard: adb push

(4)Android模拟器打电话发短信

GPhone的模拟器有个特有的号码:15555218135,这个就类似我们实体手机的SIM卡号码啦。要实现拨号,用手机?当然不行!

更简单,三步:

1.打开终端

2.连接: telnet localhost 5554(5554是你打开模拟器后上面显示的数字)

3.命令:gsm call 15555218135

look!是不是模拟器上显示来电了?接听/挂断和实体手机一样。

发短信也一样简单,重复上面1,2两步,第三部命令改一下:

sms send 15555218135 Hellothis is a Message.

4、Android模拟器主要命令参数介绍

emulator [- []] … [-]

下面的表总结了可用的参数

Help

-help打印模拟器参数列表。

-help-all打印所有启动参数明细。

-help-打印指定启动参数的信息。

-help-debug-tags打印所有被-debug 打开的列表。

-help-disk-images打印正在使用的磁盘镜像信息。

-help-environment打印模拟器环境变量信息。

-help-keys打印当前的键盘映射。

-help-keyset-file打印一个自定义的键盘映射文件的定义。

Disk Images

-cache 使用 指定网络缓存分区镜像。

自定义,您可以指定一个当前工作目录的相对路径。如果没有指定缓存文件,模拟器会指定一个零时文件作为缓存文件。更多信息请参考-help-disk-images.

-data 使用作为用户数据磁盘镜像。

自定义,您可以指定一个当前工作目录的相对路径。如果-data没有被使用,模拟器会在指定的目录下寻找名叫”userdata-qemu.img”的镜像文件。默认情况下,模拟器会寻找~/.android (on Linux/Mac)或者C:Documents and Settings/Local SettingsApplication DataAndroid (on Windows)。

如果您使用了-data ,但是文件并不存在,模拟器将创建同名文件。

更多信息请参见运行多个模拟器实例和-help-disk-images。

-image 使用作为系统镜像。

自定义,您可以指定一个当前工作目录的相对路径。默认为/system.img。

-initdata

重写用户数据镜像时,(使用 -wipe-data),复制此文件内容到新用户数据文件镜像中。默认方式下,模拟器拷贝/userdata.img。

自定义,您可以指定一个当前工作目录的相对路径。参见-wipe-data。

更多信息请参见-help-disk-images。

-kernel 使用作为模拟器内核。自定义,您可以指定一个当前工作目录的相对路径。

-nocache启动模拟器时无缓存分区。参见-cache 。

-ramdisk 使用作为虚拟内存镜像。默认为/ramdisk.img. 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见-help-disk-images。

-sdcard 使用作为SD卡镜像。默认为/sdcard.img. 自定义,您可以指定一个当前工作目录的相对路径。更多信息请参见-help-disk-images。

-system 在指定的下搜索系统、虚拟内存和用户数据镜像文件。为当前路径的相对目录。

-wipe- data重至用户数据镜像文件。(that is the file specified by -datadir and -data or the default file). 模拟器删除所有用户数据,然后复制右-inidata参数指定的数据到镜像文件,在启动之前。参见-initdata. 更多信息请参见-help-disk-images。

Debug

-debug 开启/关闭指定tag的调试信息。

是一个被空格/逗号/纵列所分割的调试组建名称列表。更多信息参见-help-debug-tags。

-debug-开启/关闭指定tag的调试信息。使用-help-debug-tags获得您可以指定为的调试组件列表。

-debug-no-关闭指定tag的调试信息。

-logcat 打开指定tag的日志输出。如果环境变量ANDROID_LOG_TAGS被指定且不为空,她的值将成为日志输出的默认值。

-shell创建一个拥有root权限的命令行窗口。即使模拟器的UI界面无法使用了,您依然可以使用命令行窗口。按Ctr-c键中断模拟器运行。

-shell-serial 打开具有root权限的脚本窗口。必须是一个QEMU类型的设备。参见’serial -dev’在 上关于设备类型的列表信息。这儿有一些例子:

· -shell-serial stdio is identical to -shell

· -shell-serial tcp::4444servernowait 让您的shell可以通过4444端口通讯。

· -shell-serial fdpair:3:6 让模拟器可以使用3 (in)和6(out)磁碟机。

· -shell-serial fdpair:0:1 uses the normal stdin and stdout fds except that QEMU won’t tty-cook the data.

-show-kernel 显示内核信息。

-trace Enable code profiling (press F9 to start) written to a specified file.

-verbose 开启冗长输出。Equivalent to -debug-init. 您可以定义ANDROID_VERBOSE环境变量作为冗长输出参数。定义你想用到的参数,用逗号分割。这样可以省略像-debug-这样的参数。下面是一个设置ANDROID_VERBOSE的例子,它带有-debug-init和 -debug-modem 参数:

ANDROID_VERBOSE=initmodem更多信息参见.

Media

-audio 使用指定的音频后端。

-audio-in 使用指定的音频输入后端。

-audio-out 使用指定的音频输出后端。

-noaudio在当前虚拟机实例中关闭音频支持。

-radio 重新定向收音机接口到本地的字节设备。

-useaudio打开模拟器实例的音频支持。默认为打开。

Network

-dns-server 使用指定的DNS服务器。必须是以逗号分割,多于4个的服务器名或IP地址。

-http-proxy 配置TCP连接使用HTTP/HTTPS代理。

必须符合以下格式:http://:

: 前缀http://可以被忽略。如果-http-proxy 未被指定,模拟器将寻找http_proxy环境变量,并且自动寻找所有符号格式要求的 值。

-netdelay 设置网络延迟默认值为none。参见Network Delay Emulation中关于的值。

-netfast快捷的 -netspeed full -netdelay none

-netspeed 指定模拟器网络速度为.默认值为full。参见表格Network Speed Emulation 中的值。

-port 指定模拟器网络端口为.控制台端口号必须介于5554和5584之间,并且+1必须留作ADB使用。

-report-console 启动前向第三方同志此模拟器实例的网络端口。 必须是以下几种格式

tcp:[server][max=]

unix:[server][max=]

更多信息参见 -help-report-console

System

-cpu-delay 降低模拟器CPU的速度到。支持0到100的整数。注意与具体的时钟或其他的绝对频率无关。它只表现为一种抽象的,相对于当前模拟器运行状况的速度调节。

-gps 重定向NMEA GPS到字节设备。

使用此参数通知模拟器模拟一个NMEA-compatible GPS,连接到一个扩展的设备或socket端口。格式必须符合QEMU-specific所指定的设备格式。更多信息参见’serial -dev’ 和 .

-nojni在Dalvik运行时关闭JNI检查

-qemu传递参数到qemu。

-qemu -h关闭qemu帮助。

-radio 重定向录音机模块到制定的字符设备。格式必须符合QEMU规定的序列设备。详情参见.

-timezone 设定模拟器时区为,替换为系统时区。必须按照时区格式指定。比如:”America/Los_Angeles”,”Europe/Paris”

-version显示模拟器版本号。

UI

-dpi-device 修改模拟器的分辨率适配物理设备。默认值为165。参见-scale.

-no-boot-anim关闭模拟器启动时的动画。禁用启动动画可以加快启动速度。

-no-window关闭模拟器的绘制窗口。

-scale 调整模拟器窗口。 是介于0.1到3的数字,它是调整屏幕的比例因子。您也可以指定一个DPI值,在添加dpi前缀的情况下。Auto参数告诉模拟器选择自己最合适的尺寸。

-raw-keys关闭Unicode键盘reverse-mapping.

-noskin不使用任何模拟器皮肤。

-keyset 用指定的键盘设置文件代替默认。指定宿主键盘和模拟器之间的键盘映射文件。更多信息参见-help-keyset。

-onion 用图片覆盖屏幕。不支持JPEG,只支持PNG

-onion-alpha 指定onion皮肤透明值(百分比) 默认为50.

-onion-rotation 指定onion皮肤旋转。 必须是 0 1 2 3中的一个。

-skin 启动模拟器,搭配指定皮肤。

-skindir 在指定目录下搜索皮肤

我写了GPS代码,如何android 模拟器上显示我的所在位置,模拟器是能够上网的。

DBMS那里发个坐标即可测试,如果是要真实地点那除非通过网络从你的手机获取,不过需要在你的手机上安装个服务软件,并且电脑需通过手机的热点连接,即手机和电脑处于同一个局域网。

如何利用Android编程实现GPS定位

您好,很高兴为您解答。

一、准备工作

需要如下三种软件:

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的布局和定制视图联合了起来。并可以使用滚动条、地图以及其他的组件。所以 的这一切都可以被重载,或由开发人员来定制。但它所提供的文档非常粗糙。在文档中并没有象SMS等技术,但是从整体上来看Android SDK,还是非常有希望的。也非常符合Google承诺的“First Look”SDK。现在我们要做的就是等待Google发布第一个基于Android的手机,并使用它。

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~

雷电模拟器的脚本源码怎么看

雷电模拟器的脚本源码用按键精灵进行查看。

查看方法如下:

1、先点击左边的按键精灵脚本属性,后写脚本描述和脚本的文件名,方便以后查看脚本功能,在热键栏里面可以更改脚本启动的热键。

2、然后最小化其他窗口,这个时候将鼠标移到需要打开的文件夹处。

3、回到脚本编辑窗口,点击鼠标命令,可以选择源代码查看这个命令的源代码。

4、然后点击两行命令的中间,在其他命令里面插入一个500毫秒的命令。

5、保存以后调试,成功后,按键精灵脚本源码即使用成功。

如何给android4.2模拟器开启多用户

转载 上周同时拿到了android4.2的SDK和源代码,启动了个手机版的模拟器,结果发现多用户用不起来,后来查看源代码发现卡在一个地方:

#vi frameworks/base/core/java/android/os/UserManager.java

/**

* Returns the maximum number of users that can be created on this device. A return value

* of 1 means that it is a single user device.

* @hide

* @return a value greater than or equal to 1

*/

public static int getMaxSupportedUsers() {

// Don't allow multiple users on certain builds

if (android.os.Build.ID.startsWith("JVP")) return 1;

return SystemProperties.getInt("fw.max_users",

Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));

}

如果是JVP的build,任你怎么折腾都不能用multi-user这个新feature,除非把buildid改掉,然后看呆了两个关键字:fw.max_users和multiuserMaximumUsers

于是去源代码搜索一把:

#grep -r -n fw.max_users .

./frameworks/base/core/java/android/os/UserManager.java:334: return SystemProperties.getInt("fw.max_users",

#grep -r -n multiuserMaximumUsers .

./frameworks/base/core/res/res/values/config.xml:937: integer name="config_multiuserMaximumUsers"1/integer

./frameworks/base/core/res/res/values/symbols.xml:295: java-symbol type="integer" name="config_multiuserMaximumUsers" /

./frameworks/base/core/java/android/os/UserManager.java:335: Resources.getSystem().getInteger(R.integer.config_multiuserMaximumUsers));

./device/asus/grouper/overlay/frameworks/base/core/res/res/values/config.xml:233: integer name="config_multiuserMaximumUsers"8/integer

./device/asus/tilapia/overlay/frameworks/base/core/res/res/values/config.xml:236: integer name="config_multiuserMaximumUsers"8/integer

./device/samsung/manta/overlay/frameworks/base/core/res/res/values/config.xml:169: integer name="config_multiuserMaximumUsers"8/integer

嘿嘿,如果是asus的grouper(Nexus 7)和tilapia,还有samsung的manta的话,是支持多用户的,最多8个,其余的暂时免谈,那么想要在模拟器上玩多用户怎么办?

笔者手动搞了个办法,有看到fw.max_users这个system property吗?办法来了

启动android4.2的模拟器,然后连上adb

在adb shell下敲如下命令:

# setprop fw.max_users 8 (最大支持的用户数,数字你想多大设多大)

# stop (停掉android java虚拟机)

# start (启动android java虚拟机)

然后用pm/am命令添加/切换用户是不是发现已经可以工作了?

不过这个方法只是临时之策,重启模拟器(snapshot的除外)后。发现又不能添加用户了(除非再做一次上面的事情),怎么办?笔者想过把fw.max_users写到/data/local.prop里面发现没作用,后来看源代码发现

宏ALLOW_LOCAL_PROP_OVERRIDE阻止了读取/data/local.prop里面的内容。

# vi system/core/init/property_service.c

static void load_override_properties() {

#ifdef ALLOW_LOCAL_PROP_OVERRIDE

const char *debuggable = property_get("ro.debuggable");

if (debuggable (strcmp(debuggable, "1") == 0)) {

load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE);

}

#endif /* ALLOW_LOCAL_PROP_OVERRIDE */

}

好吧,那就只能从别的prop文件做文章了,或者修改config.xml

/default.prop (改这个文件只需重做ramdisk.img)

/system/build.prop (改这个文件要重做system.img)

/system/default.prop (改这个文件要重做system.img)

/data/local.prop (模拟器不支持)

/data/property (只支持读persist开头的system property)

config.xml (改这个文件要重做system.img)

选择改代价最小的/default.prop吧

# cd /tmp

# mkdir ramdisk

# gzip -dc /opt/android-sdk-update-manager/add-ons/addon-google_apis-google-17/images/armeabi-v7a/ramdisk.img | cpio -i

# vi default.prop

添加fw.max_users=100 (数字自己想写多大写多大)

# find . | cpio -o -H newc | gzip ../ramdisk.img

将新生成的ramdisk.img替换avd下的那个,

重启模拟器,发现是不是可以添加/切换用户了?

gps信号和干扰的matlab仿真代码

x1=10.23;y1=6.24;z1=17.8; %假设的卫星位置参数

Code1=fGenerateNavigationData(x1,y1,z1);%产生导航电文,通过调用子函数fGenerateNavigationData实现

%将产生的Code1中的0找出转换为-1

index1=find(Code1==0);

Code1(index1)=-ones(1,length(index1));

SvNum=12; %设定卫星编号为12

Code2=zeros(1,1); %定义Code2的初值为0

Temp=fGenerateCAcode3(SvNum); %将编号为SvNum的卫星通过调用子函数fGenerateCAcode3生成C/A码

%将Temp中的0找出并转换为-1

index1=find(Temp==0);

Temp(index1)=-ones(1,length(index1));

Temp=[Temp Temp];

%生成Code2

for i=1:length(Code1)

Code2=[Code2 Code1(1,i)*Temp];

end

Code2=Code2(2:length(Code2));

%每位数据通过正弦波来调制

SinWave=sin([0:2*pi/8:2*pi*3/8]);

SinWave=single(SinWave);

GPSsignals=zeros(1,1);

SinWave=[SinWave SinWave];

for i=1:length(Code2)

GPSsignals=[GPSsignals Code2(1,i)*SinWave];

end

whos;

GPSsignals=GPSsignals(2:length(GPSsignals));

figure(2);

plot(GPSsignals);axis([100,4000,-1.5 1.5]);

figure(3);

plot(10*log10(abs(fft(GPSsignals))));

产生C/A码的方法

clc;

clear all;

%产生C/A码的方法一

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%,%%%%%%%

k1=2;k2=6;delay=5; %定义参数k1、k2以及延迟

Reg=-ones(1,10); %定义寄存器1~10的初始值都为-1

%通过循环产生长度为1024的MLS序列以及G2序列

for j=1:1023

MLS(j)=Reg(10); %将士0号寄存器的输出作为MLS输出

modulo=Reg(2)*Reg(3)*Reg(6)*Reg(8)*Reg(9)*Reg(10);

Reg(2:10)=Reg(1:9);

Reg(1)=modulo;

g2(j)=Reg(k1)*Reg(k2); %将参数k1和k2所代表的寄存器模2相加后作为G2输出

%g2即为输出

end

%将G2与MLS进行延迟检验

if MLS == g2([delay:1023 1:delay-1])

disp('OK') ;

else

disp('not match')

end

%在G2序列中找出-1并转换为0,找出1并转换为1

ind1=find(g2==1);

ind2=find(g2==1);

g2(ind1)=ones(1,length(ind1));

g2(ind2)=zeros(1,length(ind2));

temp=g2(1:120);

x(1)=0;

Show(1)=temp(1);

P=2;

%下面的循环是为了将结果显示成方波形式

for i=2:length(temp)

if temp(i)==temp(i-1)

x(P)=i-1;

Show(P)=temp(i-1);

x(P+1)=i-1+0.01;

Show(P+1)=temp(i);

P=P+2;

else

Show(P)=temp(i);

x(P)=i;

P=P+1;

end

end

%画出仿真结果图

plot(x,Show+1);

axis([0 length(x)-60 -0.1 1.1]);

grid on;

子程序:

%子函数fGenerateNavigationData

function y=fGenerateNavigationData(x1,y1,z1);

%将传进的参数转换为十六进制数

%x=x1;

%y=y1;

%z=z1;

x=10.23;

y=6.24;

z=17.8;

str1=num2hex(x);

str2=num2hex(y);

str3=num2hex(z);

Table1=[0 0 0 0;

0 0 0 1;

0 0 1 0;

0 0 1 1;

0 1 0 0;

0 1 0 1;

0 1 1 0;

0 1 1 1;

1 0 0 0;

1 0 0 1;

1 0 1 0;

1 0 1 1;

1 1 0 0;

1 1 0 1;

1 1 1 0;

1 1 1 1;];

TotalStr=[str1 str2 str3];

DataCode=zeros(1,1);

l=length(TotalStr);

%将TotalStr中的数转换为ASCⅡ码表中的数值

for i=1:l

temp=int8(TotalStr(i));

if (temp58)

temp=temp-96+10;

else

temp=temp-47;

end

DataCode=[DataCode Table1(temp,:)];

end

y=DataCode(2:length(DataCode));

figure(1);

subplot(2,1,1);

plot(y);axis([0 195 -0.5 1.5]);title('导航电文数据(0 1)');

%将产生的Code1中的0找出转换为-1

index1=find(y==0);

y(index1)=-ones(1,length(index1));

subplot(2,1,2);plot(y);axis([0 195 -1.5 1.5]);title('导航电文数据(-1 1)');

自己慢慢理解吧

pudn上面有相关资料可以下载,可以参考一下

关于gps中频模拟器源代码和gps中频信号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/26930.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载