蓝大模拟器器和真机的区别大吗?

android区分模拟器和真机-android100学习网
android区分模拟器和真机
最近在搞广告平台的插件,为了防止某些开发者在模拟机上刷数据,这就需要我们区分一下当前使用的是模拟机还是真机,在网上百度了一下,找到了一段代码,简单的测试了一下是可以达到我们的目的的(不过LD说...
最近在搞广告平台的插件,为了防止某些开发者在模拟机上刷数据,这就需要我们区分一下当前使用的是模拟机还是真机,在网上百度了一下,找到了一段代码,简单的测试了一下是可以达到我们的目的的(不过LD说这种方式不行,有漏洞),所以我先把我的代码贴一下,坐等我LD的方案。
获取手机的设备编号,模拟机的是000
[java]TelephonyManager telmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);&&
&&&&&& String deviceID = telmgr.getDeviceId();&&
&&&&&& boolean isEmulator = "000".equalsIgnoreCase(deviceID);&&
&&&&&& if (isEmulator) {&&
&&&&&&&& Log.i("xml","模拟器deviceID:"+deviceID);&
&&&&&& }&&
&&&&&& else {&&
&&&&&&&& Log.i("xml","真机deviceID:"+deviceID);&
&&&&&& }&&
&TelephonyManager telmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
&&&&&&& String deviceID = telmgr.getDeviceId();
&&&&&&& boolean isEmulator = "000".equalsIgnoreCase(deviceID);
&&&&&&& if (isEmulator) {
&&&&&&&&& Log.i("xml","模拟器deviceID:"+deviceID);
&&&&&&& else {
&&&&&&& & Log.i("xml","真机deviceID:"+deviceID);
&&&&&&& }&
返回的唯一的设备ID,例如,GSM和CDMA手机的ESN,MEID,或IMEI号。如果设备ID是没有返回null。
需要权限:READ_PHONE_STATE
摘自 agods--足迹iKingLai 的BLOG
用户名:iKingLai
文章数:90
评论数:33
访问量:173033
注册日期:
阅读量:5863
阅读量:12276
阅读量:378995
阅读量:1071509
51CTO推荐博文
在本章,你将学到下面这些内容:模拟器和真机测试环境的不同。内存管理是如何影响一个app的性能。检测app的工具和技术包括: & &1)基本的测试内存和性能的工具。 & &2)测试内存管理方面比较复杂的工具,比如内存泄露和bad access。 & &3)测试计算过程中性能方面比较复杂的工具,比如电池,文件加载,显示信息等。如何把你的程序分割成更小的部分,这样能够更简单的定位性能的瓶颈。为了提升性能,你需要非常小心的运行测试来查看问题出现在哪里。为了执行一个有用的测试,你需要知道程序或代码段可能运行慢的原因。在一开始,你应该注意两种基本的选择:模拟器和真机环境,内存优化和性能优化之间的平衡。首先,你需要知道模拟器和真机环境的不同。模拟器和真机iPhone应用性能的主要问题是他们运行在一个受限的,处理慢的环境中。iPhone模拟器开发环境比真机环境要更快;事实上,模拟器的环境跟在mac机器上运行它一样快。因此,你可能会非常的惊讶,当你的程序在模拟器上运行比较快,而在真机上比较慢。我观察到很多人抱怨在手机网络上应用比较慢。在某些情况下确实如此。但是,在很多情况下app的性能可能会下降很多,由于代码实现本身,而不是网络的问题。因此,用基本的工具何标准环境仔细的测试你的app,会使得你的app在性能和用户体验上更加自信。为了演示模拟器和真机的不同,我在模拟器和真机上测试了一个程序,结果让人吃惊。在模拟器上花了0.5秒完成了主要的计算。在真机上同样的计算花了7秒。程序很简单:我用两个数组中进行一个简单的测试,每个数组有1000个元素。然后,代码循环这两个数组,发现两个数相同就打印“hello”。在真实环境中,你可能不需要在一个数组中处理1000个元素或你可能不会选择循环一个数组来找到相同的数。但是,这不是重点。我主要是为了演示真机比模拟器运行慢的多。这引出了我在本书中将会多次提到的一个非常重要的点:你总是需要在模拟器和真机上同时测试。那为什么不只是在真机上测试呢?因为模拟器有以下优点:在模拟器上运行比较快,这意味着可以减少开发者被耽误的时间。比较好测试内存泄露和内存分配问题。内存和性能内存和性能是不同的。内存通常是指随机存储器,它代表了你使用了多少存储空间,以及你还剩多少存储空间。性能是指你运行一个指定的功能你的app有多快。内存可能会对性能产生巨大的影响。当你的设备有更多的RAM和更多的存储空间,你可以预加载和缓存更多的数据。相比文件存储和网络,RAM访问是非常快的。通过在RAM上预加载和缓存更多的数据,在很多情况下你可以显著的提升你的程序性能。例如,如果你的app是一个游戏,需要加载很多图片,你可以在必要的时候预加载和显示他们。从RAM中加载比从文件中加载要快10倍。但是,内存使用好并不意味着性能就好。有一些app不需要使用很多内存;因此,如果你只是优化内存,性能可能并不会提升。反之就不好了:一个app为了达到一个比较好的性能而使用了所有的内存,很快app就会把内存耗尽。因此,你应该总是要对内存和运行时性能进行仔细的测试,确保在内存使用和运行时性能有一个好的权衡。本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)iOS模拟器与真机区别 - 简书
iOS模拟器与真机区别
大小写敏感在做Document下文件移动时发觉在模拟器上运行正常,但是在真机上却找不到文件。这才发现真机与模拟器的大小写敏感不一致
iOS模拟器上大小写不敏感真机上大小写敏感
模拟器是i386处理器真机是arm系列。arm是嵌入式设备的cpu,理论上的确精度要差一些。所以在编写移动设备时应当充分的考虑这些因素。
iOS 模拟器没有硬件限制,比如内存。所以会有应用出现在模拟器上很快,真机很慢的情况,原因是真机的内存被用完了。帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:8&分页:海底两万里发信人: gameoverhit (海底两万里), 信区: MobileDev
标&&题: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 14:10:51 2013), 站内 && 在地图上添加标注,模拟器上正常,在真机上添加了却无显示。。
是何道理?二者不一样?
我总是在最深的绝望里,看见最美的风景。 && ※ 来源:·水木社区 ·[FROM: 180.110.60.*]
WinterSweet发信人: frosen (WinterSweet), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 14:50:07 2013), 站内 && 模拟器是ios6
手机不是?
【 在 gameoverhit 的大作中提到: 】
: 在地图上添加标注,模拟器上正常,在真机上添加了却无显示。。
: 是何道理?二者不一样?
&& -- && ※ 来源:·水木社区 ·[FROM: 124.207.138.*]
[FeN]RoCry发信人: RoCry ([FeN]RoCry), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 15:50:01 2013), 站内 && 一般来说这种问题都是大小写的问题 && 但是我不记得真机和模拟器是哪个忽略大小写, 那个不忽略了
&& ※ 来源:·水木社区 ·[FROM: 211.100.38.*]
海底两万里发信人: gameoverhit (海底两万里), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 17:10:12 2013), 站内 && iphone 是5.1.1
模拟器是5.1
【 在 frosen (WinterSweet) 的大作中提到: 】
: 模拟器是ios6
: 手机不是?
我总是在最深的绝望里,看见最美的风景。 && ※ 来源:·水木社区 ·[FROM: 180.110.60.*]
海底两万里发信人: gameoverhit (海底两万里), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 17:11:19 2013), 站内 && 没涉及到大小写啊,只是地图开发的标注添加不一样
在模拟器上添加正常,在真机上有添加操作,但无显示
【 在 RoCry ([FeN]RoCry) 的大作中提到: 】
: 一般来说这种问题都是大小写的问题
: 但是我不记得真机和模拟器是哪个忽略大小写, 那个不忽略了
我总是在最深的绝望里,看见最美的风景。 && ※ 来源:·水木社区 ·[FROM: 180.110.60.*]
WinterSweet发信人: frosen (WinterSweet), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Wed Jan 23 17:11:59 2013), 站内 && 话说真机也能debug啊,debug过去看不出来问题?
【 在 gameoverhit 的大作中提到: 】
: iphone 是5.1.1
: 模拟器是5.1
&& -- && ※ 来源:·水木社区 ·[FROM: 124.207.138.*]
[FeN]RoCry发信人: RoCry ([FeN]RoCry), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Thu Jan 24 09:25:05 2013), 站内 &&&& 【 在 gameoverhit 的大作中提到: 】
: 没涉及到大小写啊,只是地图开发的标注添加不一样
: 在模拟器上添加正常,在真机上有添加操作,但无显示
&& 那就不太清楚了...
&& ※ 来源:·水木社区 ·[FROM: 211.100.38.*]
北漂独行客,孑然善其身发信人: SpeShow (Drunk Odipus), 信区: MobileDev
标&&题: Re: ios开发,同样的程序simulator 上运行和真机调试不一样?
发信站: 水木社区 (Fri Jan 25 10:30:49 2013), 站内 && 虽然模拟器很强大,但真机还是必须的,有些具体的问题还是以真机为准的,你可以用真机debug.另模拟器和真机也都是有版本的.
【 在 gameoverhit (海底两万里) 的大作中提到: 】
: 在地图上添加标注,模拟器上正常,在真机上添加了却无显示。。
: 是何道理?二者不一样?
Gamer -& Programmer -& Designer
Focus on IOS development. &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 114.243.1.*]
文章数:8&分页:android模拟器和真机区别这么大?(摄像头问题) - ITeye问答
&& 我要做个传视频的应用,花了一天时间看了android摄像头的使用方法,然后费了九牛二虎之力把视频数据通过Socket传到pc上,好高兴能正确解码了,不过都是用的模拟器的摄像头,老是一个棋盘,中间一个棋子晃来晃去。我把这个程序传到手机上,却不能成功,开始怀疑是Socket的兼容问题,后来发现还是错怪他了。花几个小时查错,原来是Camera设置的一个回调函数根本就没有调用,在模拟器没有问题。
//添加回调类
camera.setPreviewCallback(new FrameCall());
class FrameCall implements Camera.PreviewCallback{
private Socket socket =
private java.io.OutputStream ous =
private java.io.DataOutputStream outputStream =
//[color=red]问题就在这里,真机上这个函数就是不会调用一次,模拟器上是反复调用,没有它我就得不到摄像头的视频流啊!这个问题可以解决吗?或者还有别的办法可以得到摄像头的视频帧?[/color]
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Auto-generated method stub
//Log.v("callback","frameCall");
if(data != null){
//Log.v("raw data Len:", Integer.toString(data.length));
int width = camera.getParameters().getPictureSize().
int height = camera.getParameters().getPictureSize().
byte[] rgbdata = new byte[3 * width * height];
decodeYUV420SP(rgbdata,data,width,height);
//Bitmap bitmap = BitmapFactory.decodeByteArray(rgbdata, 0, rgbdata.length);
//imageview.setImageBitmap(bitmap);
Log.v("bitmap Width:", Integer.toString(width));
Log.v("bitmap height:", Integer.toString(height));
sendimage(data,width,height,data.length);
问题补充:rayleeya 写道真机和模拟器当然不同,真机上有硬件,有驱动,而且opencore在编译的时候,会根据当前是模拟器还是真机执行不同的代码逻辑。虽然这部分我没有仔细看过,不过我建议你看一下JNI一层是怎么被调用的,甚至是opencore和JNI的衔接部分。
是不是要看java怎么调用c部分的?天哪,那是不是不叫android了
问题补充:rayleeya 写道准确的说:
1. 是看Java怎么调用C++的;
2. APP层和Framework层才是真正的Android,其他两层应该叫做Native层和Kernel层,
&& 只是我们概念上喜欢统称Android而已。Android本来就是一个整合体而已。
rayleeya应该对android很了解了, 那清楚c++摄像头部分吗?或者用c++写的一些示例、API。
NO! 我不懂C++,只是上学的时候学过,早就还给学校了。
准确的说:
1. 是看Java怎么调用C++的;
2. APP层和Framework层才是真正的Android,其他两层应该叫做Native层和Kernel层,
&& 只是我们概念上喜欢统称Android而已。Android本来就是一个整合体而已。
真机和模拟器当然不同,真机上有硬件,有驱动,而且opencore在编译的时候,会根据当前是模拟器还是真机执行不同的代码逻辑。虽然这部分我没有仔细看过,不过我建议你看一下JNI一层是怎么被调用的,甚至是opencore和JNI的衔接部分。
已解决问题
未解决问题

我要回帖

更多关于 蓝大模拟器 的文章

 

随机推荐